diff options
author | redmatrix <git@macgirvin.com> | 2016-07-07 18:47:18 -0700 |
---|---|---|
committer | redmatrix <git@macgirvin.com> | 2016-07-07 18:47:18 -0700 |
commit | eef40cb3fdb119425848e5e6cfa4680a2b5d85d9 (patch) | |
tree | d169f8b9bfb76ff49d7188912b457523ed134e35 | |
parent | 9f413ed17435b06806fb83ede640554008410ccb (diff) | |
download | volse-hubzilla-eef40cb3fdb119425848e5e6cfa4680a2b5d85d9.tar.gz volse-hubzilla-eef40cb3fdb119425848e5e6cfa4680a2b5d85d9.tar.bz2 volse-hubzilla-eef40cb3fdb119425848e5e6cfa4680a2b5d85d9.zip |
duplicate supression SQL query was horribly inefficient and could cause issues in resource deprived environments.
-rw-r--r-- | Zotlabs/Module/Item.php | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/Zotlabs/Module/Item.php b/Zotlabs/Module/Item.php index 369dd3948..7167d218e 100644 --- a/Zotlabs/Module/Item.php +++ b/Zotlabs/Module/Item.php @@ -93,7 +93,7 @@ class Item extends \Zotlabs\Web\Controller { $origin = (($api_source && array_key_exists('origin',$_REQUEST)) ? intval($_REQUEST['origin']) : 1); - // To represent message-ids on other networks - this will create an item_id record + // To represent message-ids on other networks - this will create an iconfig record $namespace = (($api_source && array_key_exists('namespace',$_REQUEST)) ? strip_tags($_REQUEST['namespace']) : ''); $remote_id = (($api_source && array_key_exists('remote_id',$_REQUEST)) ? strip_tags($_REQUEST['remote_id']) : ''); @@ -535,7 +535,7 @@ class Item extends \Zotlabs\Web\Controller { } /** - * fix naked links by passing through a callback to see if this is a red site + * fix naked links by passing through a callback to see if this is a hubzilla site * (already known to us) which will get a zrl, otherwise link with url, add bookmark tag to both. * First protect any url inside certain bbcode tags so we don't double link it. */ @@ -834,21 +834,23 @@ class Item extends \Zotlabs\Web\Controller { if($orig_post) $datarray['edit'] = true; + // suppress duplicates, *unless* you're editing an existing post. This could get picked up + // as a duplicate if you're editing it very soon after posting it initially and you edited + // some attribute besides the content, such as title or categories. + if(feature_enabled($profile_uid,'suppress_duplicates') && (! $orig_post)) { - $z = q("select created from item where uid = %d and body = '%s'", + $z = q("select created from item where uid = %d and created > %s - INTERVAL %s and body = '%s' limit 1", intval($profile_uid), - dbesc($body) + dbutcnow(), + db_quoteinterval('2 MINUTE'), + dbesc($body), ); if($z) { - foreach($z as $zz) { - if($zz['created'] > datetime_convert('UTC','UTC', 'now - 2 minutes')) { - $datarray['cancel'] = 1; - notice( t('Duplicate post suppressed.') . EOL); - logger('Duplicate post. Faking plugin cancel.'); - } - } + $datarray['cancel'] = 1; + notice( t('Duplicate post suppressed.') . EOL); + logger('Duplicate post. Faking plugin cancel.'); } } |