]> git.mxchange.org Git - friendica.git/commitdiff
Merge branch 'master' of https://github.com/annando/friendica
authorMichael - piratica.eu <ike@piratenpartei.de>
Sun, 20 Jan 2013 13:17:09 +0000 (14:17 +0100)
committerMichael - piratica.eu <ike@piratenpartei.de>
Sun, 20 Jan 2013 13:17:09 +0000 (14:17 +0100)
Conflicts:
include/poller.php

1  2 
include/diaspora.php
include/poller.php

diff --combined include/diaspora.php
index 8e77f03336bd935614062cdde64cc19d816a887f,18d37c243e212a992419f2de80a0dd09a54f096e..5bf45e241fe1013b230f041bbd7b498918f05eac
@@@ -16,7 -16,9 +16,9 @@@ function diaspora_dispatch_public($msg
                return;
        }
  
-       $r = q("SELECT `user`.* FROM `user` WHERE `user`.`uid` IN ( SELECT `contact`.`uid` FROM `contact` WHERE `contact`.`network` = '%s' AND `contact`.`addr` = '%s' ) AND `account_expired` = 0 AND `account_removed` = 0 ",
+       $r = q("SELECT `user`.* FROM `user` WHERE `user`.`uid` IN
+               ( SELECT `contact`.`uid` FROM `contact` WHERE `contact`.`network` = '%s' AND `contact`.`addr` = '%s' )
+               AND `account_expired` = 0 AND `account_removed` = 0 ",
                dbesc(NETWORK_DIASPORA),
                dbesc($msg['author'])
        );
@@@ -32,7 -34,7 +34,7 @@@
  
  
  
- function diaspora_dispatch($importer,$msg) {
+ function diaspora_dispatch($importer,$msg,$attempt=1) {
  
        $ret = 0;
  
@@@ -88,7 -90,7 +90,7 @@@
                $ret = diaspora_signed_retraction($importer,$xmlbase->relayable_retraction,$msg);
        }
        elseif($xmlbase->photo) {
-               $ret = diaspora_photo($importer,$xmlbase->photo,$msg);
+               $ret = diaspora_photo($importer,$xmlbase->photo,$msg,$attempt);
        }
        elseif($xmlbase->conversation) {
                $ret = diaspora_conversation($importer,$xmlbase->conversation,$msg);
@@@ -557,7 -559,7 +559,7 @@@ function diaspora_decode($importer,$xml
  
  }
  
 -      
 +
  function diaspora_request($importer,$xml) {
  
        $a = get_app();
  
        if(! $sender_handle || ! $recipient_handle)
                return;
 -       
 +
        $contact = diaspora_get_contact_by_handle($importer['uid'],$sender_handle);
  
        if($contact) {
  }
  
  function diaspora_post_allow($importer,$contact) {
 +
 +      // perhaps we were already sharing with this person. Now they're sharing with us.
 +      // That makes us friends.
 +      // Normally this should have handled by getting a request - but this could get lost
 +      if($contact['rel'] == CONTACT_IS_FOLLOWER && $importer['page-flags'] != PAGE_COMMUNITY) {
 +              q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d LIMIT 1",
 +                      intval(CONTACT_IS_FRIEND),
 +                      intval($contact['id']),
 +                      intval($importer['uid'])
 +              );
 +              $contact['rel'] = CONTACT_IS_FRIEND;
 +              logger('diaspora_post_allow: defining user '.$contact["nick"].' as friend');
 +      }
 +
        if(($contact['blocked']) || ($contact['readonly']) || ($contact['archive']))
                return false;
        if($contact['rel'] == CONTACT_IS_SHARING || $contact['rel'] == CONTACT_IS_FRIEND)
@@@ -1669,7 -1657,7 +1671,7 @@@ function diaspora_message($importer,$xm
  }
  
  
- function diaspora_photo($importer,$xml,$msg) {
+ function diaspora_photo($importer,$xml,$msg,$attempt=1) {
  
        $a = get_app();
  
                dbesc($status_message_guid)
        );
        if(! count($r)) {
-               logger('diaspora_photo: parent item not found: parent: ' . $parent_guid . ' item: ' . $guid);
+               if($attempt <= 3) {
+                       q("INSERT INTO dsprphotoq (uid, msg, attempt) VALUES (%d, '%s', %d)",
+                          intval($importer['uid']),
+                          dbesc(serialize($msg)),
+                          intval($attempt + 1)
+                       );
+               }
+               logger('diaspora_photo: attempt = ' . $attempt . '; status message not found: ' . $status_message_guid . ' for photo: ' . $guid);
                return;
        }
  
@@@ -2333,13 -2328,15 +2342,15 @@@ function diaspora_send_followup($item,$
        $myaddr = $owner['nickname'] . '@' .  substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
  //    $theiraddr = $contact['addr'];
  
-       // Diaspora doesn't support threaded comments
-       /*if($item['thr-parent']) {
+       // Diaspora doesn't support threaded comments, but some
+       // versions of Diaspora (i.e. Diaspora-pistos) support
+       // likes on comments
+       if($item['verb'] === ACTIVITY_LIKE && $item['thr-parent']) {
                $p = q("select guid, type, uri, `parent-uri` from item where uri = '%s' limit 1",
                        dbesc($item['thr-parent'])
                      );
        }
-       else {*/
+       else {
                // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
                // return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
                // The only item with `parent` and `id` as the parent id is the parent item.
                        intval($item['parent']),
                        intval($item['parent'])
                );
-       //}
+       }
        if(count($p))
                $parent = $p[0];
        else
@@@ -2409,13 -2406,15 +2420,15 @@@ function diaspora_send_relay($item,$own
        $body = $item['body'];
        $text = html_entity_decode(bb2diaspora($body));
  
-       // Diaspora doesn't support threaded comments
-       /*if($item['thr-parent']) {
+       // Diaspora doesn't support threaded comments, but some
+       // versions of Diaspora (i.e. Diaspora-pistos) support
+       // likes on comments
+       if($item['verb'] === ACTIVITY_LIKE && $item['thr-parent']) {
                $p = q("select guid, type, uri, `parent-uri` from item where uri = '%s' limit 1",
                        dbesc($item['thr-parent'])
                      );
        }
-       else {*/
+       else {
                // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
                // return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
                // The only item with `parent` and `id` as the parent id is the parent item.
                       intval($item['parent']),
                       intval($item['parent'])
                      );
-       //}
+       }
        if(count($p))
                $parent = $p[0];
        else
diff --combined include/poller.php
index cc5f2a9834adabc75f8914cabcc8cbd165491d86,692335aab2f3cd3038cb306387bb96c4683a4267..c9c46188f632c9f555c4a7aa17e99fb59e66709e
@@@ -9,7 -9,7 +9,7 @@@ function poller_run(&$argv, &$argc)
        if(is_null($a)) {
                $a = new App;
        }
 -  
 +
        if(is_null($db)) {
            @include(".htconfig.php");
        require_once("include/dba.php");
        load_hooks();
  
        logger('poller: start');
 -      
 +
        // run queue delivery process in the background
  
        proc_run('php',"include/queue.php");
 -      
 +
+       // run diaspora photo queue process in the background
+       proc_run('php',"include/dsprphotoq.php");
 -      
++
        // expire any expired accounts
  
        q("UPDATE user SET `account_expired` = 1 where `account_expired` = 0 
                AND `account_expires_on` != '0000-00-00 00:00:00' 
                AND `account_expires_on` < UTC_TIMESTAMP() ");
 -      
 +
        // delete user and contact records for recently removed accounts
  
        $r = q("SELECT * FROM `user` WHERE `account_removed` = 1 AND `account_expires_on` < UTC_TIMESTAMP() - INTERVAL 3 DAY");
                        q("DELETE FROM `user` WHERE `uid` = %d", intval($user['uid']));
                }
        }
 -  
 +
        $abandon_days = intval(get_config('system','account_abandon_days'));
        if($abandon_days < 1)
                $abandon_days = 0;
  
 -      
 +
  
        // once daily run birthday_updates and then expire in background