예제 #1
0
 /**
  * {@inheritdoc}
  */
 public function save($entity)
 {
     $is_update = !empty($entity->developerId);
     if (!$is_update) {
         // Force Developer object to figure out if it's an update or insert.
         $is_update = NULL;
     }
     if ($entity->email) {
         $uid = db_select('users', 'u')->fields('u', array('uid'))->condition('mail', $entity->email)->execute()->fetchField();
     } else {
         $uid = 0;
     }
     $default_config = devconnect_default_org_config();
     $old_entity = (array) $entity;
     if (empty($entity->orgNames)) {
         $entity->orgNames = array('default');
     }
     $overall_success = TRUE;
     foreach ($entity->orgNames as $org) {
         if ($org == 'default' || $org == $default_config->orgName) {
             $config = $default_config;
         } else {
             $config = devconnect_default_org_config($org);
         }
         $dev = new Developer($config);
         $dev->fromArray($old_entity);
         try {
             $dev->save($is_update);
             $new_entity = new DeveloperEntity($dev->toArray());
             if ($new_entity->email && $uid > 1) {
                 $new_entity->uid = $uid;
                 // Prevent cache from being rewritten.
                 $uid = 0;
             }
             $this->devCache[$new_entity->developerId] = $new_entity;
         } catch (ResponseException $e) {
             $overall_success = FALSE;
         }
     }
     if (!$overall_success) {
         return FALSE;
     }
     return $is_update ? SAVED_UPDATED : SAVED_NEW;
 }