aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorredmatrix <git@macgirvin.com>2016-07-07 18:47:18 -0700
committerredmatrix <git@macgirvin.com>2016-07-07 18:47:18 -0700
commiteef40cb3fdb119425848e5e6cfa4680a2b5d85d9 (patch)
treed169f8b9bfb76ff49d7188912b457523ed134e35
parent9f413ed17435b06806fb83ede640554008410ccb (diff)
downloadvolse-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.php24
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.');
}
}