mirror of
https://github.com/friendica/friendica
synced 2024-12-22 22:00:16 +00:00
prevent double posting of status updates and comments
This commit is contained in:
parent
6ecccf6830
commit
e9b26ffbb3
27 changed files with 62 additions and 13 deletions
7
boot.php
7
boot.php
|
@ -1796,3 +1796,10 @@ function curPageURL() {
|
|||
return $pageURL;
|
||||
}
|
||||
|
||||
function random_digits($digits) {
|
||||
$rn = '';
|
||||
for($i = 0; $i < $digits; $i++) {
|
||||
$rn .= rand(0,9);
|
||||
}
|
||||
return $rn;
|
||||
}
|
||||
|
|
|
@ -993,7 +993,8 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) {
|
|||
'$profile_uid' => $x['profile_uid'],
|
||||
'$preview' => t('Preview'),
|
||||
'$sourceapp' => t($a->sourcename),
|
||||
'$cancel' => t('Cancel')
|
||||
'$cancel' => t('Cancel'),
|
||||
'$rand_num' => random_digits(12)
|
||||
));
|
||||
|
||||
|
||||
|
|
|
@ -701,7 +701,8 @@ function render_content(&$a, $items, $mode, $update, $preview = false) {
|
|||
'$edvideo' => t('Video'),
|
||||
'$preview' => t('Preview'),
|
||||
'$sourceapp' => t($a->sourcename),
|
||||
'$ww' => (($mode === 'network') ? $commentww : '')
|
||||
'$ww' => (($mode === 'network') ? $commentww : ''),
|
||||
'$rand_num' => random_digits(12)
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -139,7 +139,8 @@ function editpost_content(&$a) {
|
|||
'$preview' => t('Preview'),
|
||||
'$jotplugins' => $jotplugins,
|
||||
'$sourceapp' => t($a->sourcename),
|
||||
'$cancel' => t('Cancel')
|
||||
'$cancel' => t('Cancel'),
|
||||
'$rand_num' => random_digits(12)
|
||||
));
|
||||
|
||||
return $o;
|
||||
|
|
27
mod/item.php
27
mod/item.php
|
@ -46,6 +46,19 @@ function item_post(&$a) {
|
|||
$return_path = ((x($_REQUEST,'return')) ? $_REQUEST['return'] : '');
|
||||
$preview = ((x($_REQUEST,'preview')) ? intval($_REQUEST['preview']) : 0);
|
||||
|
||||
|
||||
// Check for doubly-submitted posts, and reject duplicates
|
||||
// Note that we have to ignore previews, otherwise nothing will post
|
||||
// after it's been previewed
|
||||
if(!$preview && x($_REQUEST['post_id_random'])) {
|
||||
if(x($_SESSION['post-random']) && $_SESSION['post-random'] == $_REQUEST['post_id_random']) {
|
||||
logger("item post: duplicate post", LOGGER_DEBUG);
|
||||
item_post_return($a->get_baseurl(), $api_source, $return_path);
|
||||
}
|
||||
else
|
||||
$_SESSION['post-random'] = $_REQUEST['post_id_random'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Is this a reply to something?
|
||||
*/
|
||||
|
@ -98,7 +111,7 @@ function item_post(&$a) {
|
|||
|
||||
// multi-level threading - preserve the info but re-parent to our single level threading
|
||||
//if(($parid) && ($parid != $parent))
|
||||
$thr_parent = $parent_uri;
|
||||
$thr_parent = $parent_uri;
|
||||
|
||||
if($parent_item['contact-id'] && $uid) {
|
||||
$r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||
|
@ -873,30 +886,32 @@ function item_post(&$a) {
|
|||
|
||||
logger('post_complete');
|
||||
|
||||
item_post_return($a->get_baseurl(), $api_source, $return_path);
|
||||
// NOTREACHED
|
||||
}
|
||||
|
||||
function item_post_return($baseurl, $api_source, $return_path) {
|
||||
// figure out how to return, depending on from whence we came
|
||||
|
||||
if($api_source)
|
||||
return;
|
||||
|
||||
if($return_path) {
|
||||
goaway($a->get_baseurl() . "/" . $return_path);
|
||||
goaway($baseurl . "/" . $return_path);
|
||||
}
|
||||
|
||||
$json = array('success' => 1);
|
||||
if(x($_REQUEST,'jsreload') && strlen($_REQUEST['jsreload']))
|
||||
$json['reload'] = $a->get_baseurl() . '/' . $_REQUEST['jsreload'];
|
||||
$json['reload'] = $baseurl . '/' . $_REQUEST['jsreload'];
|
||||
|
||||
logger('post_json: ' . print_r($json,true), LOGGER_DEBUG);
|
||||
|
||||
echo json_encode($json);
|
||||
killme();
|
||||
// NOTREACHED
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function item_content(&$a) {
|
||||
|
||||
if((! local_user()) && (! remote_user()))
|
||||
|
|
|
@ -1406,7 +1406,8 @@ function photos_content(&$a) {
|
|||
'$submit' => t('Submit'),
|
||||
'$preview' => t('Preview'),
|
||||
'$sourceapp' => t($a->sourcename),
|
||||
'$ww' => ''
|
||||
'$ww' => '',
|
||||
'$rand_num' => random_digits(12)
|
||||
));
|
||||
}
|
||||
}
|
||||
|
@ -1449,7 +1450,8 @@ function photos_content(&$a) {
|
|||
'$submit' => t('Submit'),
|
||||
'$preview' => t('Preview'),
|
||||
'$sourceapp' => t($a->sourcename),
|
||||
'$ww' => ''
|
||||
'$ww' => '',
|
||||
'$rand_num' => random_digits(12)
|
||||
));
|
||||
}
|
||||
}
|
||||
|
@ -1520,7 +1522,8 @@ function photos_content(&$a) {
|
|||
'$submit' => t('Submit'),
|
||||
'$preview' => t('Preview'),
|
||||
'$sourceapp' => t($a->sourcename),
|
||||
'$ww' => ''
|
||||
'$ww' => '',
|
||||
'$rand_num' => random_digits(12)
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -567,7 +567,8 @@ class Item extends BaseObject {
|
|||
'$preview' => t('Preview'),
|
||||
'$indent' => $indent,
|
||||
'$sourceapp' => t($a->sourcename),
|
||||
'$ww' => (($conv->get_mode() === 'network') ? $ww : '')
|
||||
'$ww' => (($conv->get_mode() === 'network') ? $ww : ''),
|
||||
'$rand_num' => random_digits(12)
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
<input type="hidden" name="return" value="$return_path" />
|
||||
<input type="hidden" name="jsreload" value="$jsreload" />
|
||||
<input type="hidden" name="preview" id="comment-preview-inp-$id" value="0" />
|
||||
<input type="hidden" name="post_id_random" value="$rand_num" />
|
||||
|
||||
<div class="comment-edit-photo" id="comment-edit-photo-$id" >
|
||||
<a class="comment-edit-photo-link" href="$mylink" title="$mytitle"><img class="my-comment-photo" src="$myphoto" alt="$mytitle" title="$mytitle" /></a>
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
<input type="hidden" name="coord" id="jot-coord" value="" />
|
||||
<input type="hidden" name="post_id" value="$post_id" />
|
||||
<input type="hidden" name="preview" id="jot-preview" value="0" />
|
||||
<input type="hidden" name="post_id_random" value="$rand_num" />
|
||||
<div id="jot-title-wrap"><input name="title" id="jot-title" type="text" placeholder="$placeholdertitle" value="$title" class="jothidden" style="display:none"></div>
|
||||
<div id="jot-category-wrap"><input name="category" id="jot-category" type="text" placeholder="$placeholdercategory" value="$category" class="jothidden" style="display:none" /></div>
|
||||
<div id="jot-text-wrap">
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<input type="hidden" name="return" value="$return_path" />
|
||||
<input type="hidden" name="jsreload" value="$jsreload" />
|
||||
<input type="hidden" name="preview" id="comment-preview-inp-$id" value="0" />
|
||||
<input type="hidden" name="post_id_random" value="$rand_num" />
|
||||
|
||||
<div class="comment-edit-photo" id="comment-edit-photo-$id" >
|
||||
<a class="comment-edit-photo-link" href="$mylink" title="$mytitle"><img class="my-comment-photo" src="$myphoto" alt="$mytitle" title="$mytitle" /></a>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<input type="hidden" name="return" value="$return_path" />
|
||||
<input type="hidden" name="jsreload" value="$jsreload" />
|
||||
<input type="hidden" name="preview" id="comment-preview-inp-$id" value="0" />
|
||||
<input type="hidden" name="post_id_random" value="$rand_num" />
|
||||
|
||||
<div class="comment-edit-photo" id="comment-edit-photo-$id" >
|
||||
<a class="comment-edit-photo-link" href="$mylink" title="$mytitle"><img class="my-comment-photo" src="$myphoto" alt="$mytitle" title="$mytitle" /></a>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<input type="hidden" name="return" value="$return_path" />
|
||||
<input type="hidden" name="jsreload" value="$jsreload" />
|
||||
<input type="hidden" name="preview" id="comment-preview-inp-$id" value="0" />
|
||||
<input type="hidden" name="post_id_random" value="$rand_num" />
|
||||
|
||||
<div class="comment-edit-photo" id="comment-edit-photo-$id" >
|
||||
<a class="comment-edit-photo-link" href="$mylink" title="$mytitle"><img class="my-comment-photo" src="$myphoto" alt="$mytitle" title="$mytitle" /></a>
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
<input type="hidden" name="coord" id="jot-coord" value="" />
|
||||
<input type="hidden" name="post_id" value="$post_id" />
|
||||
<input type="hidden" name="preview" id="jot-preview" value="0" />
|
||||
<input type="hidden" name="post_id_random" value="$rand_num" />
|
||||
<input name="title" id="jot-title" type="text" placeholder="$placeholdertitle" value="$title" class="jothidden" style="display:none">
|
||||
<div id="jot-category-wrap"><input name="category" id="jot-category" type="text" placeholder="$placeholdercategory" value="$category" class="jothidden" style="display:none" /></div>
|
||||
<div id="character-counter" class="grey"></div>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<input type="hidden" name="return" value="$return_path" />
|
||||
<input type="hidden" name="jsreload" value="$jsreload" />
|
||||
<input type="hidden" name="preview" id="comment-preview-inp-$id" value="0" />
|
||||
<input type="hidden" name="post_id_random" value="$rand_num" />
|
||||
|
||||
<div class="comment-edit-photo" id="comment-edit-photo-$id" >
|
||||
<a class="comment-edit-photo-link" href="$mylink" title="$mytitle"><img class="my-comment-photo" src="$myphoto" alt="$mytitle" title="$mytitle" /></a>
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<input type="hidden" name="coord" id="jot-coord" value="" />
|
||||
<input type="hidden" name="post_id" value="$post_id" />
|
||||
<input type="hidden" name="preview" id="jot-preview" value="0" />
|
||||
<input type="hidden" name="post_id_random" value="$rand_num" />
|
||||
<div id="jot-title-wrap"><input name="title" id="jot-title" type="text" placeholder="$placeholdertitle" value="$title" class="jothidden" style="display:none" /></div>
|
||||
<div id="character-counter" class="grey jothidden"></div>
|
||||
<div id="jot-category-wrap"><input name="category" id="jot-category" type="text" placeholder="$placeholdercategory" value="$category" class="jothidden" style="display:none" /></div>
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
<input type="hidden" name="return" value="$return_path" />
|
||||
<input type="hidden" name="jsreload" value="$jsreload" />
|
||||
<input type="hidden" name="preview" id="comment-preview-inp-$id" value="0" />
|
||||
<input type="hidden" name="post_id_random" value="$rand_num" />
|
||||
|
||||
<div class="comment-edit-photo" id="comment-edit-photo-$id" >
|
||||
<a class="comment-edit-photo-link" href="$mylink" title="$mytitle"><img class="my-comment-photo" src="$myphoto" alt="$mytitle" title="$mytitle" /></a>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<input type="hidden" name="return" value="$return_path" />
|
||||
<input type="hidden" name="jsreload" value="$jsreload" />
|
||||
<input type="hidden" name="preview" id="comment-preview-inp-$id" value="0" />
|
||||
<input type="hidden" name="post_id_random" value="$rand_num" />
|
||||
|
||||
<div class="comment-edit-photo" id="comment-edit-photo-$id" >
|
||||
<a class="comment-edit-photo-link" href="$mylink" title="$mytitle"><img class="my-comment-photo" src="$myphoto" alt="$mytitle" title="$mytitle" /></a>
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
<input type="hidden" name="coord" id="jot-coord" value="" />
|
||||
<input type="hidden" name="post_id" value="$post_id" />
|
||||
<input type="hidden" name="preview" id="jot-preview" value="0" />
|
||||
<input type="hidden" name="post_id_random" value="$rand_num" />
|
||||
<div id="jot-title-wrap"><input name="title" id="jot-title" type="text" placeholder="$placeholdertitle" value="$title" class="jothidden" style="display:none"></div>
|
||||
<div id="jot-text-wrap">
|
||||
<img id="profile-jot-text-loading" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
<input type="hidden" name="return" value="$return_path" />
|
||||
<input type="hidden" name="jsreload" value="$jsreload" />
|
||||
<input type="hidden" name="preview" id="comment-preview-inp-$id" value="0" />
|
||||
<input type="hidden" name="post_id_random" value="$rand_num" />
|
||||
|
||||
<!--<div class="comment-edit-photo" id="comment-edit-photo-$id" >-->
|
||||
<a class="comment-edit-photo comment-edit-photo-link" id="comment-edit-photo-$id" href="$mylink" title="$mytitle"><img class="my-comment-photo" src="$myphoto" alt="$mytitle" title="$mytitle" /></a>
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
<input type="hidden" name="post_id" value="$post_id" />
|
||||
<input type="hidden" name="source" value="$sourceapp" />
|
||||
<input type="hidden" name="preview" id="jot-preview" value="0" />
|
||||
<input type="hidden" name="post_id_random" value="$rand_num" />
|
||||
<div id="jot-title-wrap"><input name="title" id="jot-title" type="text" placeholder="$placeholdertitle" value="$title" class="jothidden" style="display:none"></div>
|
||||
<div id="jot-category-wrap"><input name="category" id="jot-category" type="text" placeholder="$placeholdercategory" value="$category" class="jothidden" style="display:none" /></div>
|
||||
<div id="jot-text-wrap">
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
<input type="hidden" name="return" value="$return_path" />
|
||||
<input type="hidden" name="jsreload" value="$jsreload" />
|
||||
<input type="hidden" name="preview" id="comment-preview-inp-$id" value="0" />
|
||||
<input type="hidden" name="post_id_random" value="$rand_num" />
|
||||
|
||||
<!-- <div class="comment-edit-photo" id="comment-edit-photo-$id" >-->
|
||||
<a class="comment-edit-photo comment-edit-photo-link" id="comment-edit-photo-$id" href="$mylink" title="$mytitle"><img class="my-comment-photo" src="$myphoto" alt="$mytitle" title="$mytitle" /></a>
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
<input type="hidden" name="coord" id="jot-coord" value="" />
|
||||
<input type="hidden" name="post_id" value="$post_id" />
|
||||
<input type="hidden" name="preview" id="jot-preview" value="0" />
|
||||
<input type="hidden" name="post_id_random" value="$rand_num" />
|
||||
<div id="jot-title-wrap"><input name="title" id="jot-title" type="text" placeholder="$placeholdertitle" value="$title" class="jothidden" style="display:none"></div>
|
||||
<div id="jot-category-wrap"><input name="category" id="jot-category" type="text" placeholder="$placeholdercategory" value="$category" class="jothidden" style="display:none" /></div>
|
||||
<div id="jot-text-wrap">
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<input type="hidden" name="return" value="$return_path" />
|
||||
<input type="hidden" name="jsreload" value="$jsreload" />
|
||||
<input type="hidden" name="preview" id="comment-preview-inp-$id" value="0" />
|
||||
<input type="hidden" name="post_id_random" value="$rand_num" />
|
||||
|
||||
<div class="comment-edit-photo" id="comment-edit-photo-$id" >
|
||||
<a class="comment-edit-photo-link" href="$mylink" title="$mytitle"><img class="my-comment-photo" src="$myphoto" alt="$mytitle" title="$mytitle" /></a>
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
<input type="hidden" name="coord" id="jot-coord" value="" />
|
||||
<input type="hidden" name="post_id" value="$post_id" />
|
||||
<input type="hidden" name="preview" id="jot-preview" value="0" />
|
||||
<input type="hidden" name="post_id_random" value="$rand_num" />
|
||||
|
||||
<textarea rows="5" cols="64" class="profile-jot-text" id="profile-jot-text" name="body" >{{ if $content }}$content{{ else }}$share{{ endif }}</textarea>
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
<input type="hidden" name="coord" id="jot-coord" value="" />
|
||||
<input type="hidden" name="post_id" value="$post_id" />
|
||||
<input type="hidden" name="preview" id="jot-preview" value="0" />
|
||||
<input type="hidden" name="post_id_random" value="$rand_num" />
|
||||
<div id="jot-title-wrap">
|
||||
<input name="title" id="jot-title" type="text" placeholder="$placeholdertitle" value="$title" class="jothidden" style="display:none">
|
||||
</div>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<input type="hidden" name="return" value="$return_path" />
|
||||
<input type="hidden" name="jsreload" value="$jsreload" />
|
||||
<input type="hidden" name="preview" id="comment-preview-inp-$id" value="0" />
|
||||
<input type="hidden" name="post_id_random" value="$rand_num" />
|
||||
|
||||
<div class="comment-edit-photo" id="comment-edit-photo-$id" >
|
||||
<a class="comment-edit-photo-link" href="$mylink" title="$mytitle"><img class="my-comment-photo" src="$myphoto" alt="$mytitle" title="$mytitle" /></a>
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
<input type="hidden" name="coord" id="jot-coord" value="" />
|
||||
<input type="hidden" name="post_id" value="$post_id" />
|
||||
<input type="hidden" name="preview" id="jot-preview" value="0" />
|
||||
<input type="hidden" name="post_id_random" value="$rand_num" />
|
||||
<div id="jot-title-wrap"><input name="title" id="jot-title" type="text" placeholder="$placeholdertitle" value="$title" class="jothidden" style="display:none"></div>
|
||||
<div id="jot-text-wrap">
|
||||
<img id="profile-jot-text-loading" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
|
||||
|
|
Loading…
Reference in a new issue