PodsForm::number_field_types PHP Method

number_field_types() public static method

Get list of available number field types
Since: 2.3
public static number_field_types ( ) : array
return array Number field types
    public static function number_field_types()
    {
        static $field_types = null;
        if (null === $field_types) {
            $field_types = array('currency', 'number');
            $field_types = apply_filters('pods_tableless_field_types', $field_types);
        }
        return $field_types;
    }

Usage Example

Example #1
0
 /**
  * Remove an item from the values of a relationship field, remove a value from a number field (field-1), remove time to a date field
  *
  * @see PodsAPI::save_pod_item
  *
  * @param string $field Field name
  * @param mixed $value ID(s) to add, int|float to add to number field, string for dates (-1 week), or string for text
  * @param int $id (optional) ID of the pod item to update
  *
  * @return int The item ID
  *
  * @since 2.3.3
  */
 public function remove_from($field, $value = null, $id = null)
 {
     $pod =& $this;
     $fetch = false;
     if (null === $id) {
         $fetch = true;
         $id = $this->id();
     } elseif ($id != $this->id()) {
         $pod = pods($this->pod, $id);
     }
     $this->do_hook('remove_from', $field, $value, $id);
     if (!isset($this->fields[$field])) {
         return $id;
     }
     // Tableless fields
     if (in_array($this->fields[$field]['type'], PodsForm::tableless_field_types())) {
         if (empty($value)) {
             $value = array();
         }
         if (!empty($value)) {
             if (!is_array($value)) {
                 $value = explode(',', $value);
             }
             if ('pick' == $this->fields[$field]['type'] && in_array($this->fields[$field]['pick_object'], PodsForm::field_method('pick', 'simple_objects'))) {
                 $current_value = $pod->raw($field);
                 if (!empty($current_value)) {
                     $current_value = (array) $current_value;
                 }
                 foreach ($current_value as $k => $v) {
                     if (in_array($v, $value)) {
                         unset($current_value[$k]);
                     }
                 }
                 $value = $current_value;
             } else {
                 $related_ids = $this->api->lookup_related_items($this->fields[$field]['id'], $this->pod_data['id'], $id, $this->fields[$field], $this->pod_data);
                 foreach ($value as $k => $v) {
                     if (!preg_match('/[^0-9]/', $v)) {
                         $value[$k] = (int) $v;
                     } else {
                     }
                 }
                 foreach ($related_ids as $k => $v) {
                     if (in_array($v, $value)) {
                         unset($related_ids[$k]);
                     }
                 }
                 $value = $related_ids;
             }
             if (!empty($value)) {
                 $value = array_filter(array_unique($value));
             } else {
                 $value = array();
             }
         }
     } elseif (in_array($this->fields[$field]['type'], PodsForm::number_field_types())) {
         // Date fields don't support empty for removing
         if (empty($value)) {
             return $id;
         }
         $current_value = (double) $pod->raw($field);
         $value = $current_value - (double) $value;
     } elseif (in_array($this->fields[$field]['type'], PodsForm::date_field_types())) {
         // Date fields don't support empty for removing
         if (empty($value)) {
             return $id;
         }
         $current_value = $pod->raw($field);
         if (0 < strlen($current_value)) {
             $value = strtotime($value, strtotime($current_value));
         } else {
             $value = strtotime($value);
         }
         $value = date_i18n('Y-m-d h:i:s', $value);
     }
     // @todo handle object fields and taxonomies
     $params = array('pod' => $this->pod, 'id' => $id, 'data' => array($field => $value));
     $id = $this->api->save_pod_item($params);
     if (0 < $id && $fetch) {
         $pod->fetch($id, false);
     }
     return $id;
 }