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; }
/** * 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; }