/** * Deletes meta data from the database * * @internal */ function gp_delete_meta($object_id = 0, $meta_key, $meta_value, $type, $global = false) { global $wpdb; if (!is_numeric($object_id) || empty($object_id) && !$global) { return false; } $cache_object_id = $object_id = (int) $object_id; switch ($type) { case 'option': $object_type = 'gp_option'; break; case 'user': return delete_user_meta($object_id, $meta_key, $meta_value); default: $object_type = $type; break; } $meta_key = gp_sanitize_meta_key($meta_key); $meta_tuple = compact('object_type', 'object_id', 'meta_key', 'meta_value', 'type'); $meta_tuple = apply_filters('gp_delete_meta', $meta_tuple); extract($meta_tuple, EXTR_OVERWRITE); $meta_value = maybe_serialize($meta_value); if (empty($meta_value)) { $meta_sql = $wpdb->prepare("SELECT `meta_id` FROM `{$wpdb->gp_meta}` WHERE `object_type` = %s AND `object_id` = %d AND `meta_key` = %s", $object_type, $object_id, $meta_key); } else { $meta_sql = $wpdb->prepare("SELECT `meta_id` FROM `{$wpdb->gp_meta}` WHERE `object_type` = %s AND `object_id` = %d AND `meta_key` = %s AND `meta_value` = %s", $object_type, $object_id, $meta_key, $meta_value); } if (!($meta_id = $wpdb->get_var($meta_sql))) { return false; } $wpdb->query($wpdb->prepare("DELETE FROM `{$wpdb->gp_meta}` WHERE `meta_id` = %d", $meta_id)); if ($object_type == 'gp_option') { $cache_object_id = $meta_key; wp_cache_delete($cache_object_id, 'gp_option_not_set'); } wp_cache_delete($cache_object_id, $object_type); return true; }
/** * Retrieves and returns the requested bbPress option from the meta table * * @param string The option to be echoed * @return void */ function gp_get_option_from_db($option) { global $gpdb; $option = gp_sanitize_meta_key($option); if (wp_cache_get($option, 'gp_option_not_set')) { $r = null; } elseif (false !== ($_r = wp_cache_get($option, 'gp_option'))) { $r = $_r; } else { if (defined('GP_INSTALLING') && GP_INSTALLING) { $gpdb->suppress_errors(); } $row = $gpdb->get_row($gpdb->prepare("SELECT `meta_value` FROM `{$gpdb->meta}` WHERE `object_type` = 'gp_option' AND `meta_key` = %s", $option)); if (defined('GP_INSTALLING') && GP_INSTALLING) { $gpdb->suppress_errors(false); } if (is_object($row)) { $r = maybe_unserialize($row->meta_value); } else { $r = null; } } if ($r === null) { wp_cache_set($option, true, 'gp_option_not_set'); } else { wp_cache_set($option, $r, 'gp_option'); } return apply_filters('gp_get_option_from_db_' . $option, $r, $option); }
/** * @dataProvider data_meta_keys */ function test_gp_sanitize_meta_key($expected, $meta_key) { $this->assertSame($expected, gp_sanitize_meta_key($meta_key)); }
function get_meta($key) { global $wp_users_object; if (!($user = $wp_users_object->get_user($this->id))) { return; } $key = gp_sanitize_meta_key($key); if (!isset($user->{$key})) { return; } return $user->{$key}; }
/** * Deletes meta data from the database. * * @since 1.0.0 * * @internal * * @param int $object_id ID of the object metadata is for. * @param string $meta_key Metadata key. * @param mixed $meta_value The value to store. * @param string $type The object type. * @param bool $global Overrides the requirement of $object_id to be a number OR not empty. * * @return bool */ function gp_delete_meta($object_id = 0, $meta_key, $meta_value, $type, $global = false) { global $wpdb; if (!is_numeric($object_id) || empty($object_id) && !$global) { return false; } $cache_object_id = $object_id = (int) $object_id; $object_type = $type; $meta_key = gp_sanitize_meta_key($meta_key); $meta_tuple = compact('object_type', 'object_id', 'meta_key', 'meta_value', 'type'); /** * Filter the meta data before it gets deleted. * * @since 1.0.0 * * @param array $meta_tuple Key value pairs of database columns and their values according to delete meta values from the database. */ $meta_tuple = apply_filters('gp_delete_meta', $meta_tuple); extract($meta_tuple, EXTR_OVERWRITE); $meta_value = maybe_serialize($meta_value); if (empty($meta_value)) { $meta_sql = $wpdb->prepare("SELECT `meta_id` FROM `{$wpdb->gp_meta}` WHERE `object_type` = %s AND `object_id` = %d AND `meta_key` = %s", $object_type, $object_id, $meta_key); } else { $meta_sql = $wpdb->prepare("SELECT `meta_id` FROM `{$wpdb->gp_meta}` WHERE `object_type` = %s AND `object_id` = %d AND `meta_key` = %s AND `meta_value` = %s", $object_type, $object_id, $meta_key, $meta_value); } if (!($meta_id = $wpdb->get_var($meta_sql))) { // WPCS: unprepared SQL ok. return false; } $wpdb->query($wpdb->prepare("DELETE FROM `{$wpdb->gp_meta}` WHERE `meta_id` = %d", $meta_id)); wp_cache_delete($cache_object_id, $object_type); return true; }