Browse Source

prevent double posting of status updates and comments

pull/521/head
Zach Prezkuta 9 years ago
parent
commit
e9b26ffbb3
  1. 7
      boot.php
  2. 3
      include/conversation.php
  3. 3
      mod/content.php
  4. 3
      mod/editpost.php
  5. 27
      mod/item.php
  6. 9
      mod/photos.php
  7. 3
      object/Item.php
  8. 1
      view/comment_item.tpl
  9. 1
      view/jot.tpl
  10. 1
      view/theme/comix-plain/comment_item.tpl
  11. 1
      view/theme/comix/comment_item.tpl
  12. 1
      view/theme/diabook/comment_item.tpl
  13. 1
      view/theme/diabook/jot.tpl
  14. 1
      view/theme/dispy/comment_item.tpl
  15. 1
      view/theme/dispy/jot.tpl
  16. 1
      view/theme/duepuntozero/comment_item.tpl
  17. 1
      view/theme/facepark/comment_item.tpl
  18. 1
      view/theme/facepark/jot.tpl
  19. 1
      view/theme/frost-mobile/comment_item.tpl
  20. 1
      view/theme/frost-mobile/jot.tpl
  21. 1
      view/theme/frost/comment_item.tpl
  22. 1
      view/theme/frost/jot.tpl
  23. 1
      view/theme/quattro/comment_item.tpl
  24. 1
      view/theme/quattro/jot.tpl
  25. 1
      view/theme/smoothly/jot.tpl
  26. 1
      view/theme/testbubble/comment_item.tpl
  27. 1
      view/theme/testbubble/jot.tpl

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;
}

3
include/conversation.php

@ -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)
));

3
mod/content.php

@ -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)
));
}
}

3
mod/editpost.php

@ -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

@ -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()))

9
mod/photos.php

@ -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)
));
}
}

3
object/Item.php

@ -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)
));
}

1
view/comment_item.tpl

@ -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>

1
view/jot.tpl

@ -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">

1
view/theme/comix-plain/comment_item.tpl

@ -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>

1
view/theme/comix/comment_item.tpl

@ -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>

1
view/theme/diabook/comment_item.tpl

@ -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>

1
view/theme/diabook/jot.tpl

@ -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>

1
view/theme/dispy/comment_item.tpl

@ -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>

1
view/theme/dispy/jot.tpl

@ -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>

1
view/theme/duepuntozero/comment_item.tpl

@ -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>

1
view/theme/facepark/comment_item.tpl

@ -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>

1
view/theme/facepark/jot.tpl

@ -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;" />

1
view/theme/frost-mobile/comment_item.tpl

@ -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>

1
view/theme/frost-mobile/jot.tpl

@ -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">

1
view/theme/frost/comment_item.tpl

@ -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>

1
view/theme/frost/jot.tpl

@ -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">

1
view/theme/quattro/comment_item.tpl

@ -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>

1
view/theme/quattro/jot.tpl

@ -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>

1
view/theme/smoothly/jot.tpl

@ -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>

1
view/theme/testbubble/comment_item.tpl

@ -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>

1
view/theme/testbubble/jot.tpl

@ -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…
Cancel
Save