]> git.mxchange.org Git - friendica.git/commitdiff
moveme: send and receive DFRN "relocate" message (WIP)
authorFabrixxm <fabrix.xm@gmail.com>
Mon, 29 Oct 2012 16:48:08 +0000 (17:48 +0100)
committerFabrixxm <fabrix.xm@gmail.com>
Mon, 29 Oct 2012 16:50:55 +0000 (17:50 +0100)
include/items.php
include/notifier.php
include/uimport.php
view/atom_relocate.tpl [new file with mode: 0644]

index 9203f663cfa8ba3a5638977a21aa48228df08c66..0ca385c44a528fb92671c640c4266d047cc75001 100755 (executable)
@@ -2305,7 +2305,7 @@ function local_delivery($importer,$data) {
        }
 
 
-/*
+
        // Currently unsupported - needs a lot of work
        $reloc = $feed->get_feed_tags( NAMESPACE_DFRN, 'relocate' );
        if(isset($reloc[0]['child'][NAMESPACE_DFRN])) {
@@ -2315,23 +2315,71 @@ function local_delivery($importer,$data) {
                $newloc['cid'] = $importer['id'];
                $newloc['name'] = notags(unxmlify($base['name'][0]['data']));
                $newloc['photo'] = notags(unxmlify($base['photo'][0]['data']));
+               $newloc['thumb'] = notags(unxmlify($base['thumb'][0]['data']));
+               $newloc['micro'] = notags(unxmlify($base['micro'][0]['data']));
                $newloc['url'] = notags(unxmlify($base['url'][0]['data']));
                $newloc['request'] = notags(unxmlify($base['request'][0]['data']));
                $newloc['confirm'] = notags(unxmlify($base['confirm'][0]['data']));
                $newloc['notify'] = notags(unxmlify($base['notify'][0]['data']));
                $newloc['poll'] = notags(unxmlify($base['poll'][0]['data']));
                $newloc['site-pubkey'] = notags(unxmlify($base['site-pubkey'][0]['data']));
-               $newloc['pubkey'] = notags(unxmlify($base['pubkey'][0]['data']));
-               $newloc['prvkey'] = notags(unxmlify($base['prvkey'][0]['data']));
+               /*$newloc['pubkey'] = notags(unxmlify($base['pubkey'][0]['data']));
+               $newloc['prvkey'] = notags(unxmlify($base['prvkey'][0]['data']));*/
                
+        log("items:relocate contact ".print_r($newloc, true), LOGGER_DEBUG);
+        
+        // update contact
+        $r = q("SELECT photo, url FROM contact WHERE WHERE id=%d AND uid=%d;",
+                    intval($importer['importer_uid']),
+                    intval($importer['id']));
+        $old = $r[0];
+        
+        $x = q("UPDATE contact SET
+                        name = '%s',
+                        photo = '%s',
+                        thumb = '%s',
+                        micro = '%s',
+                        url = '%s',
+                        request = '%s',
+                        confirm = '%s',
+                        notify = '%s',
+                        poll = '%s',
+                        site-pubkey = '%s'
+                WHERE id=%d AND uid=%d;",
+                    dbesc($newloc['name']),
+                    dbesc($newloc['photo']),
+                    dbesc($newloc['thumb']),
+                    dbesc($newloc['micro']),
+                    dbesc($newloc['url']),
+                    dbesc($newloc['request']),
+                    dbesc($newloc['confirm']),
+                    dbesc($newloc['notify']),
+                    dbesc($newloc['poll']),
+                    dbesc($newloc['site-pubkey']),
+                    intval($importer['importer_uid']),
+                    intval($importer['id']));
+        
+        // update items
+        $fields = array(
+            'owner-link' => array($old['url'], $newloc['url']),
+            'author-link' => array($old['url'], $newloc['url']),
+            'owner-avatar' => array($old['photo'], $newloc['photo']),
+            'author-avatar' => array($old['photo'], $newloc['photo']),
+        );
+        foreach ($fields as $n=>$f)
+            $x = q("UPDATE item SET `%s`='%s' WHERE `%s`='%s' AND uid=%d",
+                        $n, dbesc($f[1]),
+                        $n, dbesc($f[0]),
+                        intval($importer['importer_uid']));
+        
                // TODO
                // merge with current record, current contents have priority
                // update record, set url-updated
                // update profile photos
                // schedule a scan?
-
+        return 0;
        }
-*/
+
 
        // handle friend suggestion notification
 
index 171b55fc37425f0fa513be5266cbfeab0933c7ad..88c90a856f06b4412c6a83d803e7770a0d146138 100644 (file)
@@ -89,6 +89,7 @@ function notifier_run($argv, $argc){
        $expire = false;
        $mail = false;
        $fsuggest = false;
+    $relocate = false;
        $top_level = false;
        $recipients = array();
        $url_recipients = array();
@@ -134,6 +135,11 @@ function notifier_run($argv, $argc){
                $recipients[] = $suggest[0]['cid'];
                $item = $suggest[0];
        }
+    elseif($cmd === 'relocate') {
+        $normal_mode = false;
+               $relocate = true;
+        $uid = $item_id;
+    }
        else {
 
                // find ancestors
@@ -404,6 +410,29 @@ function notifier_run($argv, $argc){
                );
 
        }
+    elseif($relocate) {
+        $public_message = false;  // suggestions are not public
+
+               $sugg_template = get_markup_template('atom_relocate.tpl');
+
+        $atom .= replace_macros($sugg_template, array(
+            '$name' => xmlfy($owner['name']),
+            '$photo' => xmlfy($owner['photo']),
+            '$thumb' => xmlfy($owner['thumb']),
+            '$micro' => xmlfy($owner['micro']),
+            '$url' => xmlfy($owner['url']),
+            '$request' => xmlfy($owner['request']),
+            '$confirm' => xmlfy($owner['confirm']),
+            '$notify' => xmlfy($owner['notify']),
+            '$poll' => xmlfy($owner['poll']),
+            '$site-pubkey' => xmlfy(get_config('system','site_pubkey')),
+            //'$pubkey' => xmlfy($owner['pubkey']),
+            //'$prvkey' => xmlfy($owner['prvkey']),
+               )); 
+        $recipients_relocate = q("SELECT * FROM contacts WHERE uid = %d  AND self = 0 AND network = '%s'" , intval($uid), NETWORK_DFRN);
+        
+        
+    }
        else {
                if($followup) {
                        foreach($items as $item) {  // there is only one item
@@ -479,9 +508,12 @@ function notifier_run($argv, $argc){
        else
                $recip_str = implode(', ', $recipients);
 
-       $r = q("SELECT * FROM `contact` WHERE `id` IN ( %s ) AND `blocked` = 0 AND `pending` = 0 ",
-               dbesc($recip_str)
-       );
+    if ($relocate)
+        $r = $recipients_relocate;
+    else
+        $r = q("SELECT * FROM `contact` WHERE `id` IN ( %s ) AND `blocked` = 0 AND `pending` = 0 ",
+            dbesc($recip_str)
+        );
 
 
        require_once('include/salmon.php');
index 0de6652401338ff4a7904b5b66b1e2a89c14330a..9427931687f81596e31329a05b4f71635e249eb0 100644 (file)
@@ -125,7 +125,7 @@ function import_account(&$a, $file) {
          if ($contact['uid'] == $olduid && $contact['self'] == '0') {\r
             switch ($contact['network']){\r
                 case NETWORK_DFRN:\r
-                    // send moved message\r
+                    //  send relocate message (below)\r
                     break;\r
                 case NETWORK_ZOT:\r
                     // TODO handle zot network\r
@@ -226,10 +226,12 @@ function import_account(&$a, $file) {
             logger("uimport:insert pconfig ".$pconfig['id']. " : ERROR : ".last_error(), LOGGER_NORMAL);\r
         }\r
     } \r
-     \r
+    \r
+    // send relocate messages\r
+    proc_run('php', 'include/notifier.php', 'relocate' , $newuid);\r
     \r
     info(t("Done. You can now login with your username and password"));\r
     goaway( $a->get_baseurl() ."/login");\r
     \r
     \r
-}
\ No newline at end of file
+}\r
diff --git a/view/atom_relocate.tpl b/view/atom_relocate.tpl
new file mode 100644 (file)
index 0000000..f7f8db9
--- /dev/null
@@ -0,0 +1,17 @@
+
+<dfrn:relocate>
+
+       <dfrn:url>$url</dfrn:url>
+       <dfrn:name>$name</dfrn:name>
+       <dfrn:photo>$photo</dfrn:photo>
+       <dfrn:photo>$thumb</dfrn:photo>
+       <dfrn:photo>$micro</dfrn:photo>
+       <dfrn:request>$request</dfrn:request>
+       <dfrn:confirm>$confirm</dfrn:confirm>
+       <dfrn:notify>$notify</dfrn:notify>
+       <dfrn:poll>$poll</dfrn:poll>
+       <dfrn:site-pubkey>$site-pubkey</dfrn:site-pubkey>
+
+
+</dfrn:relocate>
+