]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
YammerImport: fix for importing over existing user/group nicknames; copies the new...
authorBrion Vibber <brion@pobox.com>
Tue, 28 Sep 2010 20:24:25 +0000 (13:24 -0700)
committerBrion Vibber <brion@pobox.com>
Tue, 28 Sep 2010 22:59:29 +0000 (15:59 -0700)
plugins/YammerImport/lib/yammerimporter.php

index ae916dc2211559378a60a5612eae9255a34d5ac5..ed11915259843a1c09b04c943adf60e8764de2e3 100644 (file)
@@ -41,13 +41,22 @@ class YammerImporter
     function importUser($item)
     {
         $data = $this->prepUser($item);
+        $nickname = $data['options']['nickname'];
 
         $profileId = $this->findImportedUser($data['orig_id']);
         if ($profileId) {
             return Profile::staticGet('id', $profileId);
         } else {
-            $user = User::register($data['options']);
-            $profile = $user->getProfile();
+            $user = User::staticGet('nickname', $nickname);
+            if ($user) {
+                common_log(LOG_WARN, "Copying Yammer profile info onto existing user $nickname");
+                $profile = $user->getProfile();
+                $this->savePropertiesOn($profile, $data['options'],
+                        array('fullname', 'homepage', 'bio', 'location'));
+            } else {
+                $user = User::register($data['options']);
+                $profile = $user->getProfile();
+            }
             if ($data['avatar']) {
                 try {
                     $this->saveAvatar($data['avatar'], $profile);
@@ -69,12 +78,21 @@ class YammerImporter
     function importGroup($item)
     {
         $data = $this->prepGroup($item);
+        $nickname = $data['options']['nickname'];
 
         $groupId = $this->findImportedGroup($data['orig_id']);
         if ($groupId) {
             return User_group::staticGet('id', $groupId);
         } else {
-            $group = User_group::register($data['options']);
+            $local = Local_group::staticGet('nickname', $nickname);
+            if ($local) {
+                common_log(LOG_WARN, "Copying Yammer group info onto existing group $nickname");
+                $group = User_group::staticGet('id', $local->group_id);
+                $this->savePropertiesOn($group, $data['options'],
+                        array('fullname', 'description'));
+            } else {
+                $group = User_group::register($data['options']);
+            }
             if ($data['avatar']) {
                 try {
                     $this->saveAvatar($data['avatar'], $group);
@@ -87,6 +105,19 @@ class YammerImporter
         }
     }
 
+    private function savePropertiesOn($target, $options, $propList)
+    {
+        $changed = 0;
+        $orig = clone($target);
+        foreach ($propList as $prop) {
+            if (!empty($options[$prop]) && $target->$prop != $options[$prop]) {
+                $target->$prop = $options[$prop];
+                $changed++;
+            }
+        }
+        $target->update($orig);
+    }
+
     /**
      * Load or create an imported notice from Yammer data.
      *