From 356414846b473c217ed0abf2157623b307a59525 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 17 Oct 2016 19:17:11 +0000 Subject: [PATCH 1/2] Check for duplicated postings from connectors --- mod/item.php | 48 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/mod/item.php b/mod/item.php index e9056d08cc..a28cc90d1b 100644 --- a/mod/item.php +++ b/mod/item.php @@ -175,6 +175,19 @@ function item_post(&$a) { $app = ((x($_REQUEST,'source')) ? strip_tags($_REQUEST['source']) : ''); $extid = ((x($_REQUEST,'extid')) ? strip_tags($_REQUEST['extid']) : ''); + // Check for multiple posts with the same message id (when the post was created via API) + if (($message_id != "") AND ($profile_uid != 0)) { + $r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", + dbesc($message_id), + intval($profile_uid) + ); + + if(count($r)) { + logger("Message with URI ".$message_id." already exists for user ".$profile_uid, LOGGER_DEBUG); + return; + } + } + $allow_moderated = false; // here is where we are going to check for permission to post a moderated comment. @@ -992,16 +1005,35 @@ function item_post(&$a) { // Insert an item entry for UID=0 for global entries // We have to remove or change some data before that, // so that the post appear like a regular received post. - unset($datarray['self']); - unset($datarray['wall']); - unset($datarray['origin']); + // Additionally there is some data that isn't a database field. + $arr = $datarray; - if (in_array($datarray['type'], array("net-comment", "wall-comment"))) - $datarray['type'] = 'remote-comment'; - elseif ($datarray['type'] == 'wall') - $datarray['type'] = 'remote'; + $arr['app'] = $arr['source']; + unset($arr['source']); - add_shadow_entry($datarray); + unset($arr['self']); + unset($arr['wall']); + unset($arr['origin']); + unset($arr['api_source']); + unset($arr['message_id']); + unset($arr['profile_uid']); + unset($arr['post_id']); + unset($arr['dropitems']); + unset($arr['commenter']); + unset($arr['return']); + unset($arr['preview']); + unset($arr['post_id_random']); + unset($arr['emailcc']); + unset($arr['pubmail_enable']); + unset($arr['category']); + unset($arr['jsreload']); + + if (in_array($arr['type'], array("net-comment", "wall-comment"))) + $arr['type'] = 'remote-comment'; + elseif ($arr['type'] == 'wall') + $arr['type'] = 'remote'; + + add_shadow_entry($arr); } // This is a real juggling act on shared hosting services which kill your processes From 4c5a7fac837672b1022831972f525af8321805ec Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Fri, 21 Oct 2016 21:32:27 +0000 Subject: [PATCH 2/2] Some stuff to make Hypolite happy :) --- mod/item.php | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/mod/item.php b/mod/item.php index a28cc90d1b..5befa8c01a 100644 --- a/mod/item.php +++ b/mod/item.php @@ -130,7 +130,7 @@ function item_post(&$a) { intval($parent_item['contact-id']), intval($uid) ); - if(count($r)) + if (dbm::is_result($r)) $parent_contact = $r[0]; // If the contact id doesn't fit with the contact, then set the contact to null @@ -176,13 +176,13 @@ function item_post(&$a) { $extid = ((x($_REQUEST,'extid')) ? strip_tags($_REQUEST['extid']) : ''); // Check for multiple posts with the same message id (when the post was created via API) - if (($message_id != "") AND ($profile_uid != 0)) { + if (($message_id != '') AND ($profile_uid != 0)) { $r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", dbesc($message_id), intval($profile_uid) ); - if(count($r)) { + if (dbm::is_result($r)) { logger("Message with URI ".$message_id." already exists for user ".$profile_uid, LOGGER_DEBUG); return; } @@ -233,7 +233,7 @@ function item_post(&$a) { $r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($profile_uid) ); - if(count($r)) + if (dbm::is_result($r)) $user = $r[0]; if($orig_post) { @@ -398,7 +398,7 @@ function item_post(&$a) { } } - if(count($r)) { + if (dbm::is_result($r)) { $author = $r[0]; $contact_id = $author['id']; } @@ -412,7 +412,7 @@ function item_post(&$a) { $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1", intval($profile_uid) ); - if(count($r)) + if (dbm::is_result($r)) $contact_record = $r[0]; } @@ -495,7 +495,7 @@ function item_post(&$a) { intval($profile_uid), intval($attach) ); - if(count($r)) { + if (dbm::is_result($r)) { $r = q("UPDATE `attach` SET `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s' WHERE `uid` = %d AND `id` = %d", dbesc($str_contact_allow), @@ -636,7 +636,7 @@ function item_post(&$a) { intval($profile_uid), intval($mtch) ); - if(count($r)) { + if (dbm::is_result($r)) { if(strlen($attachments)) $attachments .= ','; $attachments .= '[attach]href="' . $a->get_baseurl() . '/attach/' . $r[0]['id'] . '" length="' . $r[0]['filesize'] . '" type="' . $r[0]['filetype'] . '" title="' . (($r[0]['filename']) ? $r[0]['filename'] : '') . '"[/attach]'; @@ -1028,11 +1028,11 @@ function item_post(&$a) { unset($arr['category']); unset($arr['jsreload']); - if (in_array($arr['type'], array("net-comment", "wall-comment"))) + if (in_array($arr['type'], array("net-comment", "wall-comment"))) { $arr['type'] = 'remote-comment'; - elseif ($arr['type'] == 'wall') + } elseif ($arr['type'] == 'wall') { $arr['type'] = 'remote'; - + } add_shadow_entry($arr); }