]> git.mxchange.org Git - friendica.git/blobdiff - include/diaspora.php
Merge branch 'master' into notify
[friendica.git] / include / diaspora.php
index 3ab4542462f8a0852ace3f91360baf0a80efff7a..d1e975a89f9987dc12982a5eba7c0f262db7bebf 100644 (file)
@@ -69,7 +69,7 @@ function diaspora_dispatch($importer,$msg) {
                $ret = diaspora_retraction($importer,$xmlbase->retraction,$msg);
        }
        elseif($xmlbase->signed_retraction) {
-               $ret = diaspora_signed_retraction($importer,$xmlbase->retraction,$msg);
+               $ret = diaspora_signed_retraction($importer,$xmlbase->signed_retraction,$msg);
        }
        elseif($xmlbase->photo) {
                $ret = diaspora_photo($importer,$xmlbase->photo,$msg);
@@ -1569,6 +1569,7 @@ EOT;
 
 function diaspora_retraction($importer,$xml) {
 
+
        $guid = notags(unxmlify($xml->guid));
        $diaspora_handle = notags(unxmlify($xml->diaspora_handle));
        $type = notags(unxmlify($xml->type));
@@ -1600,7 +1601,8 @@ function diaspora_retraction($importer,$xml) {
        // NOTREACHED
 }
 
-function diaspora_signed_retraction($importer,$xml) {
+function diaspora_signed_retraction($importer,$xml,$msg) {
+
 
        $guid = notags(unxmlify($xml->target_guid));
        $diaspora_handle = notags(unxmlify($xml->sender_handle));
@@ -1608,8 +1610,10 @@ function diaspora_signed_retraction($importer,$xml) {
        $sig = notags(unxmlify($xml->target_author_signature));
 
        $contact = diaspora_get_contact_by_handle($importer['uid'],$diaspora_handle);
-       if(! $contact)
+       if(! $contact) {
+               logger('diaspora_signed_retraction: no contact');
                return;
+       }
 
        // this may not yet work for comments. Need to see how the relaying works
        // and figure out who signs it.
@@ -1628,7 +1632,7 @@ function diaspora_signed_retraction($importer,$xml) {
 
        if($type === 'StatusMessage') {
                $r = q("select * from item where guid = '%s' and uid = %d limit 1",
-                       dbesc('guid'),
+                       dbesc($guid),
                        intval($importer['uid'])
                );
                if(count($r)) {
@@ -1640,6 +1644,8 @@ function diaspora_signed_retraction($importer,$xml) {
                        }
                }
        }
+       else
+               logger('diaspora_signed_retraction: unknown type: ' . $type);
 
        return 202;
        // NOTREACHED
@@ -1679,6 +1685,12 @@ function diaspora_profile($importer,$xml) {
 
        $birthday = datetime_convert('UTC','UTC',$birthday,'Y-m-d');
 
+       // this is to prevent multiple birthday notifications in a single year
+       // if we already have a stored birthday and the 'm-d' part hasn't changed, preserve the entry, which will preserve the notify year
+
+       if(substr($birthday,5) === substr($contact['bd'],5))
+               $birthday = $contact['bd'];
+
        $r = q("UPDATE `contact` SET `name` = '%s', `name-date` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s', `avatar-date` = '%s' , `bd` = '%s' WHERE `id` = %d AND `uid` = %d LIMIT 1",
                dbesc($name),
                dbesc(datetime_convert()),