public static function save_object($type, $data, $belongs_to = false)
 {
     $object = array();
     foreach (self::$core_scopes[$type] as $allowed) {
         if (isset($data[$allowed]) && !empty($data[$allowed])) {
             $object[$allowed] = is_array($data[$allowed]) && count($data[$allowed]) == 1 ? current($data[$allowed]) : $data[$allowed];
         }
     }
     switch ($type) {
         case 'post':
             $id = isset($object['ID']) ? wp_update_post($object) : wp_insert_post($object);
             break;
         case 'comment':
             if (!empty($object['comment_content'])) {
                 $id = isset($object['ID']) ? wp_update_comment($object) : wp_insert_comment($object);
             }
             break;
         case 'user':
             if (isset($object['user_pass']) && empty($object['user_pass'])) {
                 unset($object['user_pass']);
             }
             $id = isset($object['ID']) ? wp_update_user($object) : wp_insert_user($object);
             if ($object['user_role'] && $id) {
                 piklist_user::multiple_roles($id, $object['user_role']);
             }
             break;
     }
     if ($belongs_to && $id) {
         self::relate($belongs_to, $id);
     }
     return isset($id) ? $id : false;
 }
예제 #2
0
 /**
  * save_object
  * Save a core WordPress object (post, user, comment)
  *
  * @param string $type The type of object
  * @param array $data The object
  *
  * @return int The object id.
  *
  * @access public
  * @static
  * @since 1.0
  */
 public static function save_object($type, $data)
 {
     global $wpdb;
     $object = array();
     foreach (self::$scopes[$type] as $allowed) {
         if (isset($data[$allowed]) && !empty($data[$allowed])) {
             $object[$allowed] = is_array($data[$allowed]) && count($data[$allowed]) == 1 ? current($data[$allowed]) : $data[$allowed];
         }
     }
     switch ($type) {
         case 'post':
             $id = isset($object['ID']) ? wp_update_post($object) : wp_insert_post($object);
             break;
         case 'comment':
             if (!empty($object['comment_content'])) {
                 $id = isset($object['comment_ID']) ? wp_update_comment($object) : wp_insert_comment($object);
             }
             break;
         case 'user':
             $re_auth_cookie = false;
             if (isset($object['user_pass']) && empty($object['user_pass'])) {
                 unset($object['user_pass']);
             }
             if (isset($object['ID']) && isset($object['user_login']) && !empty($object['user_login'])) {
                 $user_login = $object['user_login'];
                 $increment = 0;
                 $user_login_check = $wpdb->get_var($wpdb->prepare("SELECT ID FROM {$wpdb->users} WHERE user_login = %s LIMIT 1", $user_login, $user_login));
                 if ($user_login_check != $object['ID']) {
                     while ($user_login_check) {
                         $user_login = $object['user_login'] . '-' . ++$increment;
                         $user_login_check = $wpdb->get_var($wpdb->prepare("SELECT ID FROM {$wpdb->users} WHERE user_login = %s LIMIT 1", $user_login, $user_login));
                     }
                     $result = $wpdb->query($wpdb->prepare("UPDATE {$wpdb->users} SET user_login = %s WHERE ID = %d ", $user_login, $object['ID']));
                     unset($object['user_login']);
                     if (!isset($object['user_nicename'])) {
                         $object['user_nicename'] = $user_login;
                     }
                     $re_auth_cookie = true;
                 }
             }
             if (isset($object['ID'])) {
                 $id = wp_update_user($object);
             } elseif (isset($object['user_pass']) && isset($object['user_login'])) {
                 $id = wp_insert_user($object);
             }
             if (isset($id) && !is_wp_error($id)) {
                 if ($re_auth_cookie) {
                     wp_set_auth_cookie($id);
                 }
                 if (isset($object['user_role'])) {
                     piklist_user::multiple_roles($id, $object['user_role']);
                 }
             }
             break;
     }
     return isset($id) ? $id : false;
 }