EP_API::prepare_meta_value_types PHP Method

prepare_meta_value_types() public method

Prepare meta types for meta value
public prepare_meta_value_types ( mixed $meta_value ) : array
$meta_value mixed
return array
    public function prepare_meta_value_types($meta_value)
    {
        $max_java_int_value = 9223372036854775807;
        $meta_types = array();
        if (is_array($meta_value) || is_object($meta_value)) {
            $meta_value = serialize($meta_value);
        }
        $meta_types['value'] = $meta_value;
        $meta_types['raw'] = $meta_value;
        if (is_numeric($meta_value)) {
            $long = intval($meta_value);
            if ($max_java_int_value < $long) {
                $long = $max_java_int_value;
            }
            $double = floatval($meta_value);
            if (!is_finite($double)) {
                $double = 0;
            }
            $meta_types['long'] = $long;
            $meta_types['double'] = $double;
        }
        $meta_types['boolean'] = filter_var($meta_value, FILTER_VALIDATE_BOOLEAN);
        if (is_string($meta_value)) {
            $timestamp = strtotime($meta_value);
            $date = '1971-01-01';
            $datetime = '1971-01-01 00:00:01';
            $time = '00:00:01';
            if (false !== $timestamp) {
                $date = date_i18n('Y-m-d', $timestamp);
                $datetime = date_i18n('Y-m-d H:i:s', $timestamp);
                $time = date_i18n('H:i:s', $timestamp);
            }
            $meta_types['date'] = $date;
            $meta_types['datetime'] = $datetime;
            $meta_types['time'] = $time;
        }
        return $meta_types;
    }

Usage Example

Example #1
0
 /**
  * Test meta preparation
  *
  * Tests meta perparation
  *
  * @since 1.7
  */
 public function testMetaValueTypes()
 {
     $api = new EP_API();
     $intval = $api->prepare_meta_value_types(13);
     $floatval = $api->prepare_meta_value_types(13.43);
     $textval = $api->prepare_meta_value_types('some text');
     $bool_false_val = $api->prepare_meta_value_types(false);
     $bool_true_val = $api->prepare_meta_value_types(true);
     $dateval = $api->prepare_meta_value_types('2015-01-01');
     $this->assertTrue(is_array($intval) && 5 === sizeof($intval));
     $this->assertTrue(is_array($intval) && array_key_exists('long', $intval) && 13 === $intval['long']);
     $this->assertTrue(is_array($floatval) && 5 === sizeof($floatval));
     $this->assertTrue(is_array($floatval) && array_key_exists('double', $floatval) && 13.43 === $floatval['double']);
     $this->assertTrue(is_array($textval) && 6 === sizeof($textval));
     $this->assertTrue(is_array($textval) && array_key_exists('raw', $textval) && 'some text' === $textval['raw']);
     $this->assertTrue(is_array($bool_false_val) && 3 === sizeof($bool_false_val));
     $this->assertTrue(is_array($bool_false_val) && array_key_exists('boolean', $bool_false_val) && false === $bool_false_val['boolean']);
     $this->assertTrue(is_array($bool_true_val) && 3 === sizeof($bool_true_val));
     $this->assertTrue(is_array($bool_true_val) && array_key_exists('boolean', $bool_true_val) && true === $bool_true_val['boolean']);
     $this->assertTrue(is_array($dateval) && 6 === sizeof($dateval));
     $this->assertTrue(is_array($dateval) && array_key_exists('datetime', $dateval) && '2015-01-01 00:00:00' === $dateval['datetime']);
 }