prevent double posting of status updates and comments

This commit is contained in:
Zach Prezkuta 2012-11-01 17:14:42 -06:00
commit e9b26ffbb3
27 changed files with 62 additions and 13 deletions

View file

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

View file

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

View file

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

View file

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