示例#1
0
文件: meta.php 项目: akirk/GlotPress
/**
 * 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;
}
示例#2
0
/**
 * 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);
}
示例#3
0
 /**
  * @dataProvider data_meta_keys
  */
 function test_gp_sanitize_meta_key($expected, $meta_key)
 {
     $this->assertSame($expected, gp_sanitize_meta_key($meta_key));
 }
示例#4
0
文件: user.php 项目: rmccue/GlotPress
 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};
 }
示例#5
0
/**
 * 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;
}