PodsForm::field_loader PHP Method

field_loader() public static method

Autoload a Field Type's class
Since: 2.0
public static field_loader ( string $field_type, string $file = '' ) : string
$field_type string Field Type indentifier
$file string The Field Type class file location
return string
    public static function field_loader($field_type, $file = '')
    {
        if (isset(self::$loaded[$field_type])) {
            $class_vars = get_class_vars(get_class(self::$loaded[$field_type]));
            // PHP 5.2.x workaround
            self::$field_group = isset($class_vars['group']) ? $class_vars['group'] : '';
            self::$field_type = $class_vars['type'];
            if ('Unknown' != $class_vars['label']) {
                return self::$loaded[$field_type];
            }
        }
        include_once PODS_DIR . 'classes/PodsField.php';
        $field_type = self::clean($field_type, true, true);
        $class_name = ucfirst($field_type);
        $class_name = "PodsField_{$class_name}";
        $content_dir = realpath(WP_CONTENT_DIR);
        $plugins_dir = realpath(WP_PLUGIN_DIR);
        $muplugins_dir = realpath(WPMU_PLUGIN_DIR);
        $abspath_dir = realpath(ABSPATH);
        $pods_dir = realpath(PODS_DIR);
        if (!class_exists($class_name)) {
            if (isset(self::$field_types[$field_type]) && !empty(self::$field_types[$field_type]['file'])) {
                $file = realpath(self::$field_types[$field_type]['file']);
            }
            if (!empty($file) && 0 === strpos($file, $abspath_dir) && file_exists($file)) {
                include_once $file;
            } else {
                $file = str_replace('../', '', apply_filters('pods_form_field_include', PODS_DIR . 'classes/fields/' . basename($field_type) . '.php', $field_type));
                $file = realpath($file);
                if (file_exists($file) && (0 === strpos($file, $pods_dir) || 0 === strpos($file, $content_dir) || 0 === strpos($file, $plugins_dir) || 0 === strpos($file, $muplugins_dir) || 0 === strpos($file, $abspath_dir))) {
                    include_once $file;
                }
            }
        }
        if (class_exists($class_name)) {
            $class = new $class_name();
        } else {
            $class = new PodsField();
            $class_name = 'PodsField';
        }
        $class_vars = get_class_vars($class_name);
        // PHP 5.2.x workaround
        self::$field_group = isset($class_vars['group']) ? $class_vars['group'] : '';
        self::$field_type = $class_vars['type'];
        self::$loaded[$field_type] =& $class;
        return self::$loaded[$field_type];
    }

Usage Example

global $pods_i;
$api = pods_api();
$pod = $api->load_pod(array('id' => $obj->id));
if ('taxonomy' == $pod['type'] && 'none' == $pod['storage'] && 1 == pods_var('enable_extra_fields', 'get')) {
    $api->save_pod(array('id' => $obj->id, 'storage' => 'table'));
    $pod = $api->load_pod(array('id' => $obj->id));
    unset($_GET['enable_extra_fields']);
    pods_message(__('Extra fields were successfully enabled for this Custom Taxonomy.', 'pods'));
}
$field_types = PodsForm::field_types();
$field_types_select = array();
foreach ($field_types as $type => $field_type_data) {
    /**
     * @var $field_type PodsField
     */
    $field_type = PodsForm::field_loader($type, $field_type_data['file']);
    $field_type_vars = get_class_vars(get_class($field_type));
    if (!isset($field_type_vars['pod_types'])) {
        $field_type_vars['pod_types'] = true;
    }
    // Only show supported field types
    if (true !== $field_type_vars['pod_types']) {
        if (empty($field_type_vars['pod_types'])) {
            continue;
        } elseif (is_array($field_type_vars['pod_types']) && !in_array(pods_var('type', $pod), $field_type_vars['pod_types'])) {
            continue;
        } elseif (!is_array($field_type_vars['pod_types']) && pods_var('type', $pod) != $field_type_vars['pod_types']) {
            continue;
        }
    }
    if (!empty(PodsForm::$field_group)) {
All Usage Examples Of PodsForm::field_loader