]> git.mxchange.org Git - friendica.git/commitdiff
working on long-term solution to relay issue
authorFriendika <info@friendika.com>
Sat, 15 Oct 2011 10:26:37 +0000 (03:26 -0700)
committerFriendika <info@friendika.com>
Sat, 15 Oct 2011 10:26:37 +0000 (03:26 -0700)
boot.php
database.sql
include/items.php
include/notifier.php
update.php

index 2f2a2127f6b36d33e94653b87f491acfca02a00a..9f382b3022c21ed3b425464a8982caf2710be024 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -8,9 +8,9 @@ require_once("include/pgettext.php");
 require_once('include/nav.php');
 
 define ( 'FRIENDIKA_PLATFORM',     'Free Friendika');
-define ( 'FRIENDIKA_VERSION',      '2.3.1133' );
+define ( 'FRIENDIKA_VERSION',      '2.3.1134' );
 define ( 'DFRN_PROTOCOL_VERSION',  '2.21'    );
-define ( 'DB_UPDATE_VERSION',      1096      );
+define ( 'DB_UPDATE_VERSION',      1097      );
 
 define ( 'EOL',                    "<br />\r\n"     );
 define ( 'ATOM_TIME',              'Y-m-d\TH:i:s\Z' );
index 2b9be34e06a59b632704450af9b280bd4b0d05b7..c9e239075c6eb0915dd5bdc4c013f17925f281d0 100644 (file)
@@ -214,6 +214,7 @@ CREATE TABLE IF NOT EXISTS `item` (
   `bookmark` tinyint(1) NOT NULL DEFAULT '0',
   `unseen` tinyint(1) NOT NULL DEFAULT '1',
   `deleted` tinyint(1) NOT NULL DEFAULT '0',
+  `origin` tinyint(1) NOT NULL DEFAULT '0',
   `last-child` tinyint(1) unsigned NOT NULL DEFAULT '1',
   PRIMARY KEY (`id`),
   KEY `guid` (`guid`),
@@ -231,6 +232,7 @@ CREATE TABLE IF NOT EXISTS `item` (
   KEY `visible` (`visible`),
   KEY `starred` (`starred`),
   KEY `deleted` (`deleted`),
+  KEY `origin`  (`origin`),
   KEY `last-child` (`last-child`),
   KEY `unseen` (`unseen`),
   FULLTEXT KEY `title` (`title`),
index 36851b01f593b322cbca58b8a63ad9d114abcf94..0c3c8b1d7aa8cd341c4dcc6beaaf9c51bad41b11 100644 (file)
@@ -818,18 +818,10 @@ function item_store($arr,$force_parent = false) {
 
        // find the item we just created
 
-       $r = q("SELECT `id` FROM `item` WHERE `uri` = '%s' AND `uid` = %d ORDER BY `id` ASC LIMIT 1",
+       $r = q("SELECT `id` FROM `item` WHERE `uri` = '%s' AND `uid` = %d ORDER BY `id` ASC ",
                $arr['uri'],           // already dbesc'd
                intval($arr['uid'])
        );
-       if(! count($r)) {
-               // This is not good, but perhaps we encountered a rare race/cache condition, so back off and try again. 
-               sleep(3);
-               $r = q("SELECT `id` FROM `item` WHERE `uri` = '%s' AND `uid` = %d ORDER BY `id` ASC LIMIT 1",
-                       $arr['uri'],           // already dbesc'd
-                       intval($arr['uid'])
-               );
-       }
 
        if(count($r)) {
                $current_post = $r[0]['id'];
@@ -1873,13 +1865,14 @@ function local_delivery($importer,$data) {
 
                        $r = q("select `item`.`id`, `contact`.`name`, `contact`.`url`, `contact`.`thumb` from `item` 
                                LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` 
-                               WHERE `contact`.`self` = 1 AND `item`.`wall` = 1 AND `item`.`uri` = '%s' AND `item`.`uid` = %d LIMIT 1",
+                               WHERE `contact`.`self` = 1 AND `item`.`wall` = 1 AND `item`.`uri` = '%s' AND `item`.`parent-uri` = '%s'
+                               AND `item`.`uid` = %d LIMIT 1",
+                               dbesc($parent_uri),
                                dbesc($parent_uri),
                                intval($importer['importer_uid'])
                        );
                        if($r && count($r)) {   
 
-
                                logger('local_delivery: received remote comment');
                                $is_like = false;
                                // remote reply to our post. Import and then notify everybody else.
@@ -2388,6 +2381,9 @@ function atom_entry($item,$type,$author,$owner,$comment = false) {
 
        $a = get_app();
 
+       if(! $item['parent'])
+               return;
+
        if($item['deleted'])
                return '<at:deleted-entry ref="' . xmlify($item['uri']) . '" when="' . xmlify(datetime_convert('UTC','UTC',$item['edited'] . '+00:00',ATOM_TIME)) . '" />' . "\r\n";
 
index bbddee10972120c1b72cd1a023c884832f245665..18ad070120e95908c6e49da998317cc6180fdd8d 100644 (file)
@@ -142,7 +142,7 @@ function notifier_run($argv, $argc){
                                $item['deleted'] = 1;
                }
 
-               if((count($items) == 1) && ($items[0]['uri'] === $items[0]['parent-uri'])) {
+               if((count($items) == 1) && ($items[0]['id'] === $target_item['id']) && ($items[0]['uri'] === $items[0]['parent-uri'])) {
                        logger('notifier: top level post');
                        $top_level = true;
                }
@@ -205,13 +205,20 @@ function notifier_run($argv, $argc){
 
                /**
                 *
-                * Be VERY CAREFUL if you make any changes to the following line. Seemingly innocuous changes 
+                * Be VERY CAREFUL if you make any changes to the following lines. Seemingly innocuous changes 
                 * have been known to cause runaway conditions which affected several servers, along with 
                 * permissions issues. 
                 *
                 */
  
+               $relay_to_owner = false;
+
                if((! $top_level) && ($parent['wall'] == 0) && (! $expire) && (stristr($target_item['uri'],$localhost))) {
+                       $relay_to_owner = true;
+               }
+
+
+               if($relay_to_owner) {
                        logger('notifier: followup', LOGGER_DEBUG);
                        // local followup to remote post
                        $followup = true;
index 06bbb8b41fcb4ec6aeeb9f2ce694afe305f332c1..ed6b9e05eb0e536eb6309dda56230d2f855f5821 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-define( 'UPDATE_VERSION' , 1096 );
+define( 'UPDATE_VERSION' , 1097 );
 
 /**
  *
@@ -795,3 +795,9 @@ function update_1094() {
 function update_1095() {
        q("ALTER TABLE `contact` ADD `bd` DATE NOT NULL AFTER `bdyear` ");
 }
+
+function update_1096() {
+       q("ALTER TABLE `item` ADD `origin` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `deleted` , ADD INDEX ( `origin` ) ");
+}
+
+