]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/Diaspora.php
Better english
[friendica.git] / src / Protocol / Diaspora.php
index 321df6d28cd4f1f35eecba09b1c08387b3cae23f..a0d99959bb46ebd88fee456828f471ad926c7458 100644 (file)
@@ -665,7 +665,6 @@ class Diaspora
                        } elseif (!in_array($fieldname, array("author_signature", "parent_author_signature", "target_author_signature"))) {
                                if ($signed_data != "") {
                                        $signed_data .= ";";
-                                       $signed_data_parent .= ";";
                                }
 
                                $signed_data .= $entry;
@@ -2311,16 +2310,18 @@ class Diaspora
                                $A = "[url=".$self[0]["url"]."]".$self[0]["name"]."[/url]";
                                $B = "[url=".$contact["url"]."]".$contact["name"]."[/url]";
                                $BPhoto = "[url=".$contact["url"]."][img]".$contact["thumb"]."[/img][/url]";
-                               $arr["body"] = sprintf(t("%1$s is now friends with %2$s"), $A, $B)."\n\n\n".$Bphoto;
+                               $arr["body"] = sprintf(t('%1$s is now friends with %2$s'), $A, $B)."\n\n\n".$BPhoto;
 
                                $arr["object"] = self::constructNewFriendObject($contact);
 
                                $arr["last-child"] = 1;
 
-                               $arr["allow_cid"] = $user[0]["allow_cid"];
-                               $arr["allow_gid"] = $user[0]["allow_gid"];
-                               $arr["deny_cid"]  = $user[0]["deny_cid"];
-                               $arr["deny_gid"]  = $user[0]["deny_gid"];
+                               $user = dba::select('user', ['allow_cid', 'allow_gid', 'deny_cid', 'deny_gid'], ['uid' => $importer["uid"]], ['limit' => 1]);
+
+                               $arr["allow_cid"] = $user["allow_cid"];
+                               $arr["allow_gid"] = $user["allow_gid"];
+                               $arr["deny_cid"]  = $user["deny_cid"];
+                               $arr["deny_gid"]  = $user["deny_gid"];
 
                                $i = item_store($arr);
                                if ($i) {
@@ -3209,7 +3210,7 @@ class Diaspora
                        $return_code = self::transmit($owner, $contact, $envelope, $public_batch, false, $guid);
                }
 
-               logger("guid: ".$item["guid"]." result ".$return_code, LOGGER_DEBUG);
+               logger("guid: ".$guid." result ".$return_code, LOGGER_DEBUG);
 
                return $return_code;
        }
@@ -3962,6 +3963,62 @@ class Diaspora
                return self::buildAndTransmit($owner, $contact, $type, $message, false, $item["guid"]);
        }
 
+       /**
+        * @brief Split a name into first name and last name
+        *
+        * @param string $name The name
+        *
+        * @return array The array with "first" and "last"
+        */
+       public static function splitName($name) {
+               $name = trim($name);
+
+               // Is the name longer than 64 characters? Then cut the rest of it.
+               if (strlen($name) > 64) {
+                       if ((strpos($name, ' ') <= 64) && (strpos($name, ' ') !== false)) {
+                               $name = trim(substr($name, 0, strrpos(substr($name, 0, 65), ' ')));
+                       } else {
+                               $name = substr($name, 0, 64);
+                       }
+               }
+
+               // Take the first word as first name
+               $first = ((strpos($name, ' ') ? trim(substr($name, 0, strpos($name, ' '))) : $name));
+               $last = (($first === $name) ? '' : trim(substr($name, strlen($first))));
+               if ((strlen($first) < 32) && (strlen($last) < 32)) {
+                       return ['first' => $first, 'last' => $last];
+               }
+
+               // Take the last word as last name
+               $first = ((strrpos($name, ' ') ? trim(substr($name, 0, strrpos($name, ' '))) : $name));
+               $last = (($first === $name) ? '' : trim(substr($name, strlen($first))));
+
+               if ((strlen($first) < 32) && (strlen($last) < 32)) {
+                       return ['first' => $first, 'last' => $last];
+               }
+
+               // Take the first 32 characters if there is no space in the first 32 characters
+               if ((strpos($name, ' ') > 32) || (strpos($name, ' ') === false)) {
+                       $first = substr($name, 0, 32);
+                       $last = substr($name, 32);
+                       return ['first' => $first, 'last' => $last];
+               }
+
+               $first = trim(substr($name, 0, strrpos(substr($name, 0, 33), ' ')));
+               $last = (($first === $name) ? '' : trim(substr($name, strlen($first))));
+
+               // Check if the last name is longer than 32 characters
+               if (strlen($last) > 32) {
+                       if (strpos($last, ' ') <= 32) {
+                               $last = trim(substr($last, 0, strrpos(substr($last, 0, 33), ' ')));
+                       } else {
+                               $last = substr($last, 0, 32);
+                       }
+               }
+
+               return ['first' => $first, 'last' => $last];
+       }
+
        /**
         * @brief Create profile data
         *
@@ -3985,11 +4042,12 @@ class Diaspora
                }
 
                $profile = $r[0];
-
                $handle = $profile["addr"];
-               $first = ((strpos($profile['name'], ' ')
-                       ? trim(substr($profile['name'], 0, strpos($profile['name'], ' '))) : $profile['name']));
-               $last = (($first === $profile['name']) ? '' : trim(substr($profile['name'], strlen($first))));
+
+               $split_name = self::splitName($profile['name']);
+               $first = $split_name['first'];
+               $last = $split_name['last'];
+
                $large = System::baseUrl().'/photo/custom/300/'.$profile['uid'].'.jpg';
                $medium = System::baseUrl().'/photo/custom/100/'.$profile['uid'].'.jpg';
                $small = System::baseUrl().'/photo/custom/50/'  .$profile['uid'].'.jpg';
@@ -4050,6 +4108,11 @@ class Diaspora
                        return;
                }
 
+               $owner = User::getOwnerDataById($uid);
+               if (!$owner) {
+                       return;
+               }
+
                if (!$recips) {
                        $recips = q(
                                "SELECT `id`,`name`,`network`,`pubkey`,`notify` FROM `contact` WHERE `network` = '%s'
@@ -4068,7 +4131,7 @@ class Diaspora
 
                foreach ($recips as $recip) {
                        logger("Send updated profile data for user ".$uid." to contact ".$recip["id"], LOGGER_DEBUG);
-                       self::buildAndTransmit($profile, $recip, "profile", $message, false, "", true);
+                       self::buildAndTransmit($owner, $recip, "profile", $message, false, "", true);
                }
        }