]> git.mxchange.org Git - friendica.git/commitdiff
handle diaspora profile update message
authorFriendika <info@friendika.com>
Fri, 14 Oct 2011 01:32:02 +0000 (18:32 -0700)
committerFriendika <info@friendika.com>
Fri, 14 Oct 2011 01:32:02 +0000 (18:32 -0700)
include/diaspora.php

index 968aa2fd2d6a5b7046a35fcb84e74e1fc9fa74cd..7207daf0cd1c7b6e6a6c310736db3e4c2eac2936 100644 (file)
@@ -38,6 +38,9 @@ function diaspora_dispatch($importer,$msg) {
        elseif($xmlbase->status_message) {
                $ret = diaspora_post($importer,$xmlbase->status_message);
        }
+       elseif($xmlbase->profile) {
+               $ret = diaspora_profile($importer,$xmlbase->profile);
+       }
        elseif($xmlbase->comment) {
                $ret = diaspora_comment($importer,$xmlbase->comment,$msg);
        }
@@ -994,6 +997,81 @@ function diaspora_retraction($importer,$xml) {
        return 202;
        // NOTREACHED
 }
+
+function diaspora_profile($importer,$xml) {
+
+       $a = get_app();
+       $diaspora_handle = notags(unxmlify($xml->diaspora_handle));
+
+       $contact = diaspora_get_contact_by_handle($importer['uid'],$diaspora_handle);
+       if(! $contact)
+               return;
+
+       if($contact['blocked']) {
+               logger('diaspora_post: Ignoring this author.');
+               return 202;
+       }
+
+       $name = unxmlify($xml->first_name) . ((strlen($xml->last_name)) ? ' ' . unxmlify($xml->last_name) : '');
+       $image_url = unxmlify($xml->image_url);
+       $birthday = unxmlify($xml->birthday);
+
+       $r = q("SELECT DISTINCT ( `resource-id` ) FROM `photo` WHERE  `uid` = %d AND `contact-id` = %d AND `album` = 'Contact Photos' ",
+               intval($importer['uid']),
+               intval($contact['id'])
+       );
+       $oldphotos = ((count($r)) ? $r : null);
+
+       $images = import_profile_photo($image_url,$importer['uid'],$contact['id']);
+       
+       // TODO handle birthdays - even though we don't know the original timezone (grrr.)
+
+       $r = q("UPDATE `contact` SET `name` = '%s', `name-date` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s', `avatar-date` = '%s' WHERE `id` = %d AND `uid` = %d LIMIT 1",
+               dbesc($name),
+               dbesc(datetime_convert()),
+               dbesc($images[0]),
+               dbesc($images[1]),
+               dbesc($images[2]),
+               dbesc(datetime_convert()),
+               intval($contact['id']),
+               intval($importer['uid'])
+       ); 
+       if($r) {
+               if($oldphotos) {
+                       foreach($oldphotos as $ph) {
+                               q("DELETE FROM `photo` WHERE `uid` = %d AND `contact-id` = %d AND `album` = 'Contact Photos' AND `resource-id` = '%s' ",
+                                       intval($importer['uid']),
+                                       intval($contact['id']),
+                                       dbesc($ph['resource-id'])
+                               );
+                       }
+               }
+       }       
+
+       return;
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 function diaspora_share($me,$contact) {
        $a = get_app();