Example #1
0
 /**
  * Check to see if Pod Page exists and return data
  *
  * $uri not required, if NULL then returns REQUEST_URI matching Pod Page
  *
  * @param string $uri The Pod Page URI to check if exists
  *
  * @return array|bool
  */
 public static function exists($uri = null)
 {
     if (null === $uri) {
         $uri = parse_url(pods_current_url());
         $uri = $uri['path'];
     } else {
         $uri = explode('?', $uri);
         $uri = explode('#', $uri[0]);
         $uri = $uri[0];
     }
     $home = parse_url(get_home_url());
     if (!empty($home) && isset($home['path']) && '/' != $home['path']) {
         $uri = substr($uri, strlen($home['path']));
     }
     $uri = trim($uri, '/');
     $uri_depth = count(array_filter(explode('/', $uri))) - 1;
     $pods_page_exclusions = array('wp-admin', 'wp-content', 'wp-includes', 'index.php', 'wp-login.php', 'wp-signup.php');
     $pods_page_exclusions = apply_filters('pods_page_exclusions', $pods_page_exclusions);
     if (is_admin() || empty($uri)) {
         return false;
     }
     foreach ($pods_page_exclusions as $exclusion) {
         if (0 === strpos($uri, $exclusion)) {
             return false;
         }
     }
     $object = false;
     if (false === strpos($uri, '*') && !apply_filters('pods_page_regex_matching', false)) {
         $object = pods_by_title($uri, ARRAY_A, '_pods_page', 'publish');
     }
     $wildcard = false;
     if (empty($object)) {
         if (false === strpos($uri, '*')) {
             $object = pods_cache_get($uri, 'pods_object_page_wildcard');
             if (!empty($object)) {
                 return $object;
             }
         }
         $pod_page_rewrites = pods_transient_get('pods_object_page_rewrites');
         if (empty($pod_page_rewrites)) {
             $pod_page_rewrites = self::flush_rewrites();
         } else {
             $pod_page_rewrites = array_flip($pod_page_rewrites);
         }
         $found_rewrite_page_id = 0;
         if (!empty($pod_page_rewrites)) {
             foreach ($pod_page_rewrites as $pod_page => $pod_page_id) {
                 if (!apply_filters('pods_page_regex_matching', false)) {
                     if (false === strpos($pod_page, '*')) {
                         continue;
                     }
                     $depth_check = strlen($pod_page) - strlen(str_replace('/', '', $pod_page));
                     $pod_page = preg_quote($pod_page, '/');
                     $pod_page = str_replace('\\*', '(.*)', $pod_page);
                     if ($uri_depth == $depth_check && preg_match('/^' . $pod_page . '$/', $uri)) {
                         $found_rewrite_page_id = $pod_page_id;
                         break;
                     }
                 } elseif (preg_match('/^' . str_replace('/', '\\/', $pod_page) . '$/', $uri)) {
                     $found_rewrite_page_id = $pod_page_id;
                     break;
                 }
             }
             if (!empty($found_rewrite_page_id)) {
                 $object = get_post($found_rewrite_page_id, ARRAY_A);
                 if (empty($object) || '_pods_page' != $object['post_type']) {
                     $object = false;
                 }
             }
         }
         $wildcard = true;
     }
     if (!empty($object)) {
         $object = array('id' => $object['ID'], 'uri' => $object['post_title'], 'code' => $object['post_content'], 'phpcode' => $object['post_content'], 'precode' => get_post_meta($object['ID'], 'precode', true), 'page_template' => get_post_meta($object['ID'], 'page_template', true), 'title' => get_post_meta($object['ID'], 'page_title', true), 'options' => array('admin_only' => (bool) get_post_meta($object['ID'], 'admin_only', true), 'restrict_role' => (bool) get_post_meta($object['ID'], 'restrict_role', true), 'restrict_capability' => (bool) get_post_meta($object['ID'], 'restrict_capability', true), 'roles_allowed' => get_post_meta($object['ID'], 'roles_allowed', true), 'capability_allowed' => get_post_meta($object['ID'], 'capability_allowed', true), 'restrict_redirect' => (bool) get_post_meta($object['ID'], 'restrict_redirect', true), 'restrict_redirect_login' => (bool) get_post_meta($object['ID'], 'restrict_redirect_login', true), 'restrict_redirect_url' => get_post_meta($object['ID'], 'restrict_redirect_url', true), 'pod' => get_post_meta($object['ID'], 'pod', true), 'pod_slug' => get_post_meta($object['ID'], 'pod_slug', true)));
         if ($wildcard) {
             pods_cache_set($uri, $object, 'pods_object_page_wildcard', 3600);
         }
         return $object;
     }
     return false;
 }
Example #2
0
 /**
  * Load the pod item object
  *
  * $params['pod'] string The datatype name
  * $params['id'] int (optional) The item's ID
  *
  * @param array $params An associative array of parameters
  *
  * @return bool|\Pods
  *
  * @uses pods()
  *
  * @since 2.0
  */
 public function load_pod_item($params)
 {
     $params = (object) pods_sanitize($params);
     if (!isset($params->pod) || empty($params->pod)) {
         return pods_error(__('Pod name required', 'pods'), $this);
     }
     if (!isset($params->id) || empty($params->id)) {
         return pods_error(__('Item ID required', 'pods'), $this);
     }
     $pod = false;
     if (pods_api_cache()) {
         $pod = pods_cache_get($params->id, 'pods_item_object_' . $params->pod);
     }
     if (false !== $pod) {
         return $pod;
     }
     $pod = pods($params->pod, $params->id);
     if (pods_api_cache()) {
         pods_cache_set($params->id, $pod, 'pods_item_object_' . $params->pod);
     }
     return $pod;
 }
Example #3
0
 /**
  * Fetch a new row for the current pod_data
  *
  * @param int $row Row number to fetch
  * @param bool $explicit_set Whether to set explicitly (use false when in loop)
  *
  * @return mixed
  *
  * @since 2.0
  */
 public function fetch($row = null, $explicit_set = true)
 {
     global $wpdb;
     if (null === $row) {
         $explicit_set = false;
     }
     $id = $row;
     $tableless_field_types = PodsForm::tableless_field_types();
     if (null === $row) {
         $this->row_number++;
         $this->row = false;
         if (isset($this->data[$this->row_number])) {
             $this->row = get_object_vars($this->data[$this->row_number]);
             $current_row_id = false;
             if (in_array($this->pod_data['type'], array('post_type', 'media'))) {
                 $current_row_id = pods_var_raw('ID', $this->row);
             } elseif ('taxonomy' == $this->pod_data['type']) {
                 $current_row_id = pods_var_raw('term_id', $this->row);
             } elseif ('user' == $this->pod_data['type']) {
                 $current_row_id = pods_var_raw('ID', $this->row);
             } elseif ('comment' == $this->pod_data['type']) {
                 $current_row_id = pods_var_raw('comment_ID', $this->row);
             } elseif ('settings' == $this->pod_data['type']) {
                 $current_row_id = $this->pod_data['id'];
             }
             if (0 < $current_row_id) {
                 $row = $current_row_id;
             }
         }
     }
     if (null !== $row || 'settings' == $this->pod_data['type']) {
         if ($explicit_set) {
             $this->row_number = -1;
         }
         $mode = 'id';
         $id = pods_absint($row);
         if (!is_numeric($row) || 0 === strpos($row, '0') || $row != preg_replace('/[^0-9]/', '', $row)) {
             $mode = 'slug';
             $id = $row;
         }
         $row = false;
         // @todo Figure out why taking out this in_array() causes cached data issues in User edit screen
         if (!empty($this->pod) && in_array($this->pod_data['type'], array('pod', 'table'))) {
             $row = pods_cache_get($id, 'pods_items_' . $this->pod);
         }
         $current_row_id = false;
         $get_table_data = false;
         $old_row = $this->row;
         if (false !== $row && is_array($row)) {
             $this->row = $row;
         } elseif (in_array($this->pod_data['type'], array('post_type', 'media'))) {
             if ('post_type' == $this->pod_data['type']) {
                 if (empty($this->pod_data['object'])) {
                     $post_type = $this->pod_data['name'];
                 } else {
                     $post_type = $this->pod_data['object'];
                 }
             } else {
                 $post_type = 'attachment';
             }
             if ('id' == $mode) {
                 $this->row = get_post($id, ARRAY_A);
                 if (is_array($this->row) && $this->row['post_type'] != $post_type) {
                     $this->row = false;
                 }
             } else {
                 $args = array('post_type' => $post_type, 'name' => $id, 'numberposts' => 5);
                 $find = get_posts($args);
                 if (!empty($find)) {
                     $this->row = get_object_vars($find[0]);
                 }
             }
             if (is_wp_error($this->row) || empty($this->row)) {
                 $this->row = false;
             } else {
                 $current_row_id = $this->row['ID'];
             }
             $get_table_data = true;
         } elseif ('taxonomy' == $this->pod_data['type']) {
             $taxonomy = $this->pod_data['object'];
             if (empty($taxonomy)) {
                 $taxonomy = $this->pod_data['name'];
             }
             // Taxonomies are registered during init, so they aren't available before then
             if (!did_action('init')) {
                 // hackaround :(
                 if ('id' == $mode) {
                     $term_where = 't.term_id = %d';
                 } else {
                     $term_where = 't.slug = %s';
                 }
                 $filter = 'raw';
                 $term = $id;
                 if ('id' != $mode || !($_term = wp_cache_get($term, $taxonomy))) {
                     $_term = $wpdb->get_row($wpdb->prepare("SELECT t.*, tt.* FROM {$wpdb->terms} AS t INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s AND {$term_where} LIMIT 1", $taxonomy, $term));
                     if ($_term) {
                         wp_cache_add($term, $_term, $taxonomy);
                     }
                 }
                 $_term = apply_filters('get_term', $_term, $taxonomy);
                 $_term = apply_filters("get_{$taxonomy}", $_term, $taxonomy);
                 $_term = sanitize_term($_term, $taxonomy, $filter);
                 if (is_object($_term)) {
                     $this->row = get_object_vars($_term);
                 }
             } elseif ('id' == $mode) {
                 $this->row = get_term($id, $taxonomy, ARRAY_A);
             } else {
                 $this->row = get_term_by('slug', $id, $taxonomy, ARRAY_A);
             }
             if (is_wp_error($this->row) || empty($this->row)) {
                 $this->row = false;
             } else {
                 $current_row_id = $this->row['term_id'];
             }
             $get_table_data = true;
         } elseif ('user' == $this->pod_data['type']) {
             if ('id' == $mode) {
                 $this->row = get_userdata($id);
             } else {
                 $this->row = get_user_by('slug', $id);
             }
             if (is_wp_error($this->row) || empty($this->row)) {
                 $this->row = false;
             } else {
                 // Get other vars
                 $roles = $this->row->roles;
                 $caps = $this->row->caps;
                 $allcaps = $this->row->allcaps;
                 $this->row = get_object_vars($this->row->data);
                 // Set other vars
                 $this->row['roles'] = $roles;
                 $this->row['caps'] = $caps;
                 $this->row['allcaps'] = $allcaps;
                 unset($this->row['user_pass']);
                 $current_row_id = $this->row['ID'];
             }
             $get_table_data = true;
         } elseif ('comment' == $this->pod_data['type']) {
             $this->row = get_comment($id, ARRAY_A);
             // No slug handling here
             if (is_wp_error($this->row) || empty($this->row)) {
                 $this->row = false;
             } else {
                 $current_row_id = $this->row['comment_ID'];
             }
             $get_table_data = true;
         } elseif ('settings' == $this->pod_data['type']) {
             $this->row = array();
             if (empty($this->fields)) {
                 $this->row = false;
             } else {
                 foreach ($this->fields as $field) {
                     if (!in_array($field['type'], $tableless_field_types)) {
                         $this->row[$field['name']] = get_option($this->pod_data['name'] . '_' . $field['name'], null);
                     }
                 }
                 // Force ID
                 $this->id = $this->pod_data['id'];
                 $this->row['option_id'] = $this->id;
             }
         } else {
             $params = array('table' => $this->table, 'where' => "`t`.`{$this->field_id}` = " . (int) $id, 'orderby' => "`t`.`{$this->field_id}` DESC", 'page' => 1, 'limit' => 1, 'search' => false);
             if ('slug' == $mode && !empty($this->field_slug)) {
                 $id = pods_sanitize($id);
                 $params['where'] = "`t`.`{$this->field_slug}` = '{$id}'";
             }
             $this->row = pods_data()->select($params);
             if (empty($this->row)) {
                 $this->row = false;
             } else {
                 $current_row = (array) $this->row;
                 $this->row = get_object_vars((object) @current($current_row));
             }
         }
         if (!$explicit_set && is_array($this->row) && !empty($this->row) && !empty($old_row)) {
             $this->row = array_merge($old_row, $this->row);
         }
         if ('table' == $this->pod_data['storage'] && false !== $get_table_data && is_numeric($current_row_id)) {
             $params = array('table' => $wpdb->prefix . "pods_", 'where' => "`t`.`id` = {$current_row_id}", 'orderby' => "`t`.`id` DESC", 'page' => 1, 'limit' => 1, 'search' => false, 'strict' => true);
             if (empty($this->pod_data['object'])) {
                 $params['table'] .= $this->pod_data['name'];
             } else {
                 $params['table'] .= $this->pod_data['object'];
             }
             $row = pods_data()->select($params);
             if (!empty($row)) {
                 $current_row = (array) $row;
                 $row = get_object_vars((object) @current($current_row));
                 if (is_array($this->row) && !empty($this->row)) {
                     $this->row = array_merge($row, $this->row);
                 } else {
                     $this->row = $row;
                 }
             }
         }
         // @todo Figure out why taking out this in_array() causes cached data issues in User edit screen
         if (!empty($this->pod) && in_array($this->pod_data['type'], array('pod', 'table'))) {
             pods_cache_set($id, $this->row, 'pods_items_' . $this->pod, 0);
         }
     }
     $this->row = $this->do_hook('fetch', $this->row, $id, $this->row_number);
     return $this->row;
 }
/**
 * Return a variable (if exists)
 *
 * @param mixed $var The variable name, can also be a modifier for specific types
 * @param string|array|object $type (optional) Super globals, url/url-relative, constants, globals, options, transients, cache, user data, Pod field values, dates
 * @param mixed $default (optional) The default value to set if variable doesn't exist
 * @param bool $strict (optional) Only allow values (must not be empty)
 * @param array $params (optional) Set 'casting'=>true to cast value from $default, 'allowed'=>$allowed to restrict a value to what's allowed
 *
 * @return mixed The variable (if exists), or default value
 * @since 2.3.10
 */
function pods_v($var = null, $type = 'get', $default = null, $strict = false, $params = array())
{
    $defaults = array('casting' => false, 'allowed' => null);
    $params = (object) array_merge($defaults, (array) $params);
    $output = null;
    if (null === $type || '' === $type) {
        // Invalid $type
    } elseif (is_array($type)) {
        if (isset($type[$var])) {
            $output = $type[$var];
        }
    } elseif (is_object($type)) {
        if (isset($type->{$var})) {
            $output = $type->{$var};
        }
    } else {
        $type = strtolower((string) $type);
        switch ($type) {
            case 'get':
                if (isset($_GET[$var])) {
                    $output = pods_unslash($_GET[$var]);
                }
                break;
            case 'post':
                if (isset($_POST[$var])) {
                    $output = pods_unslash($_POST[$var]);
                }
                break;
            case 'request':
                if (isset($_REQUEST[$var])) {
                    $output = pods_unslash($_REQUEST[$var]);
                }
                break;
            case 'url':
            case 'uri':
                $url = parse_url(pods_current_url());
                $uri = trim($url['path'], '/');
                $uri = array_filter(explode('/', $uri));
                if ('first' == $var) {
                    $var = 0;
                } elseif ('last' == $var) {
                    $var = -1;
                }
                if (is_numeric($var)) {
                    $output = $var < 0 ? pods_v(count($uri) + $var, $uri) : pods_v($var, $uri);
                }
                break;
            case 'url-relative':
                $url_raw = pods_current_url();
                $prefix = get_site_url();
                if (substr($url_raw, 0, strlen($prefix)) == $prefix) {
                    $url_raw = substr($url_raw, strlen($prefix) + 1, strlen($url_raw));
                }
                $url = parse_url($url_raw);
                $uri = trim($url['path'], '/');
                $uri = array_filter(explode('/', $uri));
                if ('first' == $var) {
                    $var = 0;
                } elseif ('last' == $var) {
                    $var = -1;
                }
                if (is_numeric($var)) {
                    $output = $var < 0 ? pods_v(count($uri) + $var, $uri) : pods_v($var, $uri);
                }
                break;
            case 'template-url':
                $output = get_template_directory_uri();
                break;
            case 'stylesheet-url':
                $output = get_stylesheet_directory_uri();
                break;
            case 'site-url':
                $blog_id = $scheme = null;
                $path = '';
                if (is_array($var)) {
                    if (isset($var[0])) {
                        $blog_id = $var[0];
                    } elseif (isset($var[1])) {
                        $path = $var[1];
                    } elseif (isset($var[2])) {
                        $scheme = $var[2];
                    }
                } else {
                    $blog_id = $var;
                }
                $output = get_site_url($blog_id, $path, $scheme);
                break;
            case 'home-url':
                $blog_id = $scheme = null;
                $path = '';
                if (is_array($var)) {
                    if (isset($var[0])) {
                        $blog_id = $var[0];
                    } elseif (isset($var[1])) {
                        $path = $var[1];
                    } elseif (isset($var[2])) {
                        $scheme = $var[2];
                    }
                } else {
                    $blog_id = $var;
                }
                $output = get_home_url($blog_id, $path, $scheme);
                break;
            case 'admin-url':
                $blog_id = $scheme = null;
                $path = '';
                if (is_array($var)) {
                    if (isset($var[0])) {
                        $blog_id = $var[0];
                    } elseif (isset($var[1])) {
                        $path = $var[1];
                    } elseif (isset($var[2])) {
                        $scheme = $var[2];
                    }
                } else {
                    $blog_id = $var;
                }
                $output = get_admin_url($blog_id, $path, $scheme);
                break;
            case 'includes-url':
                $output = includes_url($var);
                break;
            case 'content-url':
                $output = content_url($var);
                break;
            case 'plugins-url':
                $path = $plugin = '';
                if (is_array($var)) {
                    if (isset($var[0])) {
                        $path = $var[0];
                    } elseif (isset($var[1])) {
                        $plugin = $var[1];
                    }
                } else {
                    $path = $var;
                }
                $output = plugins_url($path, $plugin);
                break;
            case 'network-site-url':
                $path = '';
                $scheme = null;
                if (is_array($var)) {
                    if (isset($var[0])) {
                        $path = $var[0];
                    } elseif (isset($var[1])) {
                        $scheme = $var[1];
                    }
                } else {
                    $path = $var;
                }
                $output = network_site_url($path, $scheme);
                break;
            case 'network-home-url':
                $path = '';
                $scheme = null;
                if (is_array($var)) {
                    if (isset($var[0])) {
                        $path = $var[0];
                    } elseif (isset($var[1])) {
                        $scheme = $var[1];
                    }
                } else {
                    $path = $var;
                }
                $output = network_home_url($path, $scheme);
                break;
            case 'network-admin-url':
                $path = '';
                $scheme = null;
                if (is_array($var)) {
                    if (isset($var[0])) {
                        $path = $var[0];
                    } elseif (isset($var[1])) {
                        $scheme = $var[1];
                    }
                } else {
                    $path = $var;
                }
                $output = network_admin_url($path, $scheme);
                break;
            case 'user-admin-url':
                $path = '';
                $scheme = null;
                if (is_array($var)) {
                    if (isset($var[0])) {
                        $path = $var[0];
                    } elseif (isset($var[1])) {
                        $scheme = $var[1];
                    }
                } else {
                    $path = $var;
                }
                $output = user_admin_url($path, $scheme);
                break;
            case 'prefix':
                global $wpdb;
                $output = $wpdb->prefix;
                break;
            case 'server':
                if (!pods_strict()) {
                    if (isset($_SERVER[$var])) {
                        $output = pods_unslash($_SERVER[$var]);
                    } elseif (isset($_SERVER[strtoupper($var)])) {
                        $output = pods_unslash($_SERVER[strtoupper($var)]);
                    }
                }
                break;
            case 'session':
                if (isset($_SESSION[$var])) {
                    $output = $_SESSION[$var];
                }
                break;
            case 'global':
            case 'globals':
                if (isset($GLOBALS[$var])) {
                    $output = $GLOBALS[$var];
                }
                break;
            case 'cookie':
                if (isset($_COOKIE[$var])) {
                    $output = pods_unslash($_COOKIE[$var]);
                }
                break;
            case 'constant':
                if (defined($var)) {
                    $output = constant($var);
                }
                break;
            case 'user':
                if (is_user_logged_in()) {
                    $user = get_userdata(get_current_user_id());
                    if (isset($user->{$var})) {
                        $value = $user->{$var};
                    } elseif ('role' == $var) {
                        $value = '';
                        if (!empty($user->roles)) {
                            $value = array_shift($user->roles);
                        }
                    } else {
                        $value = get_user_meta($user->ID, $var);
                    }
                    if (is_array($value) && !empty($value)) {
                        $output = $value;
                    } elseif (!is_array($value) && 0 < strlen($value)) {
                        $output = $value;
                    }
                }
                break;
            case 'option':
                $output = get_option($var, $default);
                break;
            case 'site-option':
                $output = get_site_option($var, $default);
                break;
            case 'transient':
                $output = get_transient($var);
                break;
            case 'site-transient':
                $output = get_site_transient($var);
                break;
            case 'cache':
                if (isset($GLOBALS['wp_object_cache']) && is_object($GLOBALS['wp_object_cache'])) {
                    $group = 'default';
                    $force = false;
                    if (!is_array($var)) {
                        $var = explode('|', $var);
                    }
                    if (isset($var[0])) {
                        if (isset($var[1])) {
                            $group = $var[1];
                        }
                        if (isset($var[2])) {
                            $force = $var[2];
                        }
                        $var = $var[0];
                        $output = wp_cache_get($var, $group, $force);
                    }
                }
                break;
            case 'pods-transient':
                $callback = null;
                if (!is_array($var)) {
                    $var = explode('|', $var);
                }
                if (isset($var[0])) {
                    if (isset($var[1])) {
                        $callback = $var[1];
                    }
                    $var = $var[0];
                    $output = pods_transient_get($var, $callback);
                }
                break;
            case 'pods-site-transient':
                $callback = null;
                if (!is_array($var)) {
                    $var = explode('|', $var);
                }
                if (isset($var[0])) {
                    if (isset($var[1])) {
                        $callback = $var[1];
                    }
                    $var = $var[0];
                    $output = pods_site_transient_get($var, $callback);
                }
                break;
            case 'pods-cache':
                if (isset($GLOBALS['wp_object_cache']) && is_object($GLOBALS['wp_object_cache'])) {
                    $group = 'default';
                    $callback = null;
                    if (!is_array($var)) {
                        $var = explode('|', $var);
                    }
                    if (isset($var[0])) {
                        if (isset($var[1])) {
                            $group = $var[1];
                        }
                        if (isset($var[2])) {
                            $callback = $var[2];
                        }
                        $var = $var[0];
                        $output = pods_cache_get($var, $group, $callback);
                    }
                }
                break;
            case 'pods-option-cache':
                $group = 'default';
                $callback = null;
                if (!is_array($var)) {
                    $var = explode('|', $var);
                }
                if (isset($var[0])) {
                    if (isset($var[1])) {
                        $group = $var[1];
                    }
                    if (isset($var[2])) {
                        $callback = $var[2];
                    }
                    $var = $var[0];
                    $output = pods_option_cache_get($var, $group, $callback);
                }
                break;
            case 'date':
                $var = explode('|', $var);
                if (!empty($var)) {
                    $output = date_i18n($var[0], isset($var[1]) ? strtotime($var[1]) : false);
                }
                break;
            case 'pods':
            case 'pods_display':
                /**
                 * @var $pods Pods
                 */
                global $pods;
                if (is_object($pods) && 'Pods' == get_class($pods)) {
                    if ('pods' === $type) {
                        $output = $pods->field($var);
                        if (is_array($output)) {
                            $options = array('field' => $var, 'fields' => $pods->fields);
                            $output = pods_serial_comma($output, $options);
                        }
                    } elseif ('pods_display' === $type) {
                        $output = $pods->display($var);
                    }
                }
                break;
            default:
                $output = apply_filters('pods_var_' . $type, $default, $var, $strict, $params);
        }
    }
    if (null !== $default) {
        // Set default
        if (null === $output) {
            $output = $default;
        }
        // Casting
        if (true === $params->casting) {
            $output = pods_cast($output, $default);
        }
    }
    // Strict defaults for empty values
    if (true === $strict) {
        if (empty($output)) {
            $output = $default;
        }
    }
    // Allowed values
    if (null !== $params->allowed) {
        if (is_array($params->allowed)) {
            // Not in array and is not the same array
            if (!in_array($output, $params->allowed) && (!is_array($output) || $output !== $params->allowed)) {
                $output = $default;
            }
        } elseif ($output !== $params->allowed) {
            // Value doesn't match
            $output = $default;
        }
    }
    return $output;
}
Example #5
0
/**
 * Return a variable (if exists)
 *
 * @param mixed $var The variable name, can also be a modifier for specific types
 * @param string|array|object $type (optional) Super globals, url/url-relative, constants, globals, options, transients, cache, user data, Pod field values, dates
 * @param mixed $default (optional) The default value to set if variable doesn't exist
 * @param bool $strict (optional) Only allow values (must not be empty)
 * @param array $params (optional) Set 'casting'=>true to cast value from $default, 'allowed'=>$allowed to restrict a value to what's allowed
 *
 * @return mixed The variable (if exists), or default value
 * @since 2.3.10
 */
function pods_v($var = null, $type = 'get', $default = null, $strict = false, $params = array())
{
    $defaults = array('casting' => false, 'allowed' => null);
    $params = (object) array_merge($defaults, (array) $params);
    $output = null;
    if (null === $type || '' === $type) {
        // Invalid $type
    } elseif (is_array($type)) {
        if (isset($type[$var])) {
            $output = $type[$var];
        }
    } elseif (is_object($type)) {
        if (isset($type->{$var})) {
            $output = $type->{$var};
        }
    } else {
        $type = strtolower((string) $type);
        switch ($type) {
            case 'get':
                if (isset($_GET[$var])) {
                    $output = pods_unslash($_GET[$var]);
                }
                break;
            case 'post':
                if (isset($_POST[$var])) {
                    $output = pods_unslash($_POST[$var]);
                }
                break;
            case 'request':
                if (isset($_REQUEST[$var])) {
                    $output = pods_unslash($_REQUEST[$var]);
                }
                break;
            case 'url':
            case 'uri':
                $url = parse_url(pods_current_url());
                $uri = trim($url['path'], '/');
                $uri = array_filter(explode('/', $uri));
                if ('first' == $var) {
                    $var = 0;
                } elseif ('last' == $var) {
                    $var = -1;
                }
                if (is_numeric($var)) {
                    $output = $var < 0 ? pods_v(count($uri) + $var, $uri) : pods_v($var, $uri);
                }
                break;
            case 'url-relative':
                $url_raw = pods_current_url();
                $prefix = get_site_url();
                if (substr($url_raw, 0, strlen($prefix)) == $prefix) {
                    $url_raw = substr($url_raw, strlen($prefix) + 1, strlen($url_raw));
                }
                $url = parse_url($url_raw);
                $uri = trim($url['path'], '/');
                $uri = array_filter(explode('/', $uri));
                if ('first' == $var) {
                    $var = 0;
                } elseif ('last' == $var) {
                    $var = -1;
                }
                if (is_numeric($var)) {
                    $output = $var < 0 ? pods_v(count($uri) + $var, $uri) : pods_v($var, $uri);
                }
                break;
            case 'template-url':
                $output = get_template_directory_uri();
                break;
            case 'stylesheet-url':
                $output = get_stylesheet_directory_uri();
                break;
            case 'site-url':
                $blog_id = $scheme = null;
                $path = '';
                if (is_array($var)) {
                    if (isset($var[0])) {
                        $blog_id = $var[0];
                    } elseif (isset($var[1])) {
                        $path = $var[1];
                    } elseif (isset($var[2])) {
                        $scheme = $var[2];
                    }
                } else {
                    $blog_id = $var;
                }
                $output = get_site_url($blog_id, $path, $scheme);
                break;
            case 'home-url':
                $blog_id = $scheme = null;
                $path = '';
                if (is_array($var)) {
                    if (isset($var[0])) {
                        $blog_id = $var[0];
                    } elseif (isset($var[1])) {
                        $path = $var[1];
                    } elseif (isset($var[2])) {
                        $scheme = $var[2];
                    }
                } else {
                    $blog_id = $var;
                }
                $output = get_home_url($blog_id, $path, $scheme);
                break;
            case 'admin-url':
                $blog_id = $scheme = null;
                $path = '';
                if (is_array($var)) {
                    if (isset($var[0])) {
                        $blog_id = $var[0];
                    } elseif (isset($var[1])) {
                        $path = $var[1];
                    } elseif (isset($var[2])) {
                        $scheme = $var[2];
                    }
                } else {
                    $blog_id = $var;
                }
                $output = get_admin_url($blog_id, $path, $scheme);
                break;
            case 'includes-url':
                $output = includes_url($var);
                break;
            case 'content-url':
                $output = content_url($var);
                break;
            case 'plugins-url':
                $path = $plugin = '';
                if (is_array($var)) {
                    if (isset($var[0])) {
                        $path = $var[0];
                    } elseif (isset($var[1])) {
                        $plugin = $var[1];
                    }
                } else {
                    $path = $var;
                }
                $output = plugins_url($path, $plugin);
                break;
            case 'network-site-url':
                $path = '';
                $scheme = null;
                if (is_array($var)) {
                    if (isset($var[0])) {
                        $path = $var[0];
                    } elseif (isset($var[1])) {
                        $scheme = $var[1];
                    }
                } else {
                    $path = $var;
                }
                $output = network_site_url($path, $scheme);
                break;
            case 'network-home-url':
                $path = '';
                $scheme = null;
                if (is_array($var)) {
                    if (isset($var[0])) {
                        $path = $var[0];
                    } elseif (isset($var[1])) {
                        $scheme = $var[1];
                    }
                } else {
                    $path = $var;
                }
                $output = network_home_url($path, $scheme);
                break;
            case 'network-admin-url':
                $path = '';
                $scheme = null;
                if (is_array($var)) {
                    if (isset($var[0])) {
                        $path = $var[0];
                    } elseif (isset($var[1])) {
                        $scheme = $var[1];
                    }
                } else {
                    $path = $var;
                }
                $output = network_admin_url($path, $scheme);
                break;
            case 'user-admin-url':
                $path = '';
                $scheme = null;
                if (is_array($var)) {
                    if (isset($var[0])) {
                        $path = $var[0];
                    } elseif (isset($var[1])) {
                        $scheme = $var[1];
                    }
                } else {
                    $path = $var;
                }
                $output = user_admin_url($path, $scheme);
                break;
            case 'prefix':
                global $wpdb;
                $output = $wpdb->prefix;
                break;
            case 'server':
                if (!pods_strict()) {
                    if (isset($_SERVER[$var])) {
                        $output = pods_unslash($_SERVER[$var]);
                    } elseif (isset($_SERVER[strtoupper($var)])) {
                        $output = pods_unslash($_SERVER[strtoupper($var)]);
                    }
                }
                break;
            case 'session':
                if (isset($_SESSION[$var])) {
                    $output = $_SESSION[$var];
                }
                break;
            case 'global':
            case 'globals':
                if (isset($GLOBALS[$var])) {
                    $output = $GLOBALS[$var];
                }
                break;
            case 'cookie':
                if (isset($_COOKIE[$var])) {
                    $output = pods_unslash($_COOKIE[$var]);
                }
                break;
            case 'constant':
                if (defined($var)) {
                    $output = constant($var);
                }
                break;
            case 'user':
                if (is_user_logged_in()) {
                    $user = get_userdata(get_current_user_id());
                    if (isset($user->{$var})) {
                        $value = $user->{$var};
                    } elseif ('role' == $var) {
                        $value = '';
                        if (!empty($user->roles)) {
                            $value = array_shift($user->roles);
                        }
                    } else {
                        $value = get_user_meta($user->ID, $var);
                    }
                    if (is_array($value) && !empty($value)) {
                        $output = $value;
                    } elseif (!is_array($value) && 0 < strlen($value)) {
                        $output = $value;
                    }
                }
                break;
            case 'option':
                $output = get_option($var, $default);
                break;
            case 'site-option':
                $output = get_site_option($var, $default);
                break;
            case 'transient':
                $output = get_transient($var);
                break;
            case 'site-transient':
                $output = get_site_transient($var);
                break;
            case 'cache':
                if (isset($GLOBALS['wp_object_cache']) && is_object($GLOBALS['wp_object_cache'])) {
                    $group = 'default';
                    $force = false;
                    if (!is_array($var)) {
                        $var = explode('|', $var);
                    }
                    if (isset($var[0])) {
                        if (isset($var[1])) {
                            $group = $var[1];
                        }
                        if (isset($var[2])) {
                            $force = $var[2];
                        }
                        $var = $var[0];
                        $output = wp_cache_get($var, $group, $force);
                    }
                }
                break;
            case 'pods-transient':
                $callback = null;
                if (!is_array($var)) {
                    $var = explode('|', $var);
                }
                if (isset($var[0])) {
                    if (isset($var[1])) {
                        $callback = $var[1];
                    }
                    $var = $var[0];
                    $output = pods_transient_get($var, $callback);
                }
                break;
            case 'pods-site-transient':
                $callback = null;
                if (!is_array($var)) {
                    $var = explode('|', $var);
                }
                if (isset($var[0])) {
                    if (isset($var[1])) {
                        $callback = $var[1];
                    }
                    $var = $var[0];
                    $output = pods_site_transient_get($var, $callback);
                }
                break;
            case 'pods-cache':
                if (isset($GLOBALS['wp_object_cache']) && is_object($GLOBALS['wp_object_cache'])) {
                    $group = 'default';
                    $callback = null;
                    if (!is_array($var)) {
                        $var = explode('|', $var);
                    }
                    if (isset($var[0])) {
                        if (isset($var[1])) {
                            $group = $var[1];
                        }
                        if (isset($var[2])) {
                            $callback = $var[2];
                        }
                        $var = $var[0];
                        $output = pods_cache_get($var, $group, $callback);
                    }
                }
                break;
            case 'pods-option-cache':
                $group = 'default';
                $callback = null;
                if (!is_array($var)) {
                    $var = explode('|', $var);
                }
                if (isset($var[0])) {
                    if (isset($var[1])) {
                        $group = $var[1];
                    }
                    if (isset($var[2])) {
                        $callback = $var[2];
                    }
                    $var = $var[0];
                    $output = pods_option_cache_get($var, $group, $callback);
                }
                break;
            case 'date':
                $var = explode('|', $var);
                if (!empty($var)) {
                    $output = date_i18n($var[0], isset($var[1]) ? strtotime($var[1]) : false);
                }
                break;
            case 'pods':
            case 'pods_display':
                /**
                 * @var $pods Pods
                 */
                global $pods;
                if (is_object($pods) && 'Pods' == get_class($pods)) {
                    if ('pods' === $type) {
                        $output = $pods->field($var);
                        if (is_array($output)) {
                            $options = array('field' => $var, 'fields' => $pods->fields);
                            $output = pods_serial_comma($output, $options);
                        }
                    } elseif ('pods_display' === $type) {
                        $output = $pods->display($var);
                    }
                }
                break;
            case 'post_id':
                if (empty($var)) {
                    if (!empty($default)) {
                        $post_id = $default;
                    } else {
                        // If no $var and no $default then use current post ID
                        $post_id = get_the_ID();
                    }
                } else {
                    $post_id = $var;
                }
                if (did_action('wpml_loaded')) {
                    /* Only call filter if WPML is installed */
                    $post_type = get_post_type($post_id);
                    $post_id = apply_filters('wpml_object_id', $post_id, $post_type, true);
                } elseif (function_exists('pll_get_post')) {
                    $polylang_id = pll_get_post($post_id);
                    if (!empty($polylang_id)) {
                        $post_id = $polylang_id;
                    }
                }
                // Add other translation plugin specific code here
                /**
                 * Filter to override post_id
                 *
                 * Generally used with language translation plugins in order to return the post id of a
                 * translated post
                 *
                 * @param  int $post_id The post ID of current post
                 * @param  mixed $default The default value to set if variable doesn't exist
                 * @param  mixed $var The variable name, can also be a modifier for specific types
                 * @param  bool $strict Only allow values (must not be empty)
                 * @param  array $params Set 'casting'=>true to cast value from $default, 'allowed'=>$allowed to restrict a value to what's allowed
                 *
                 * @since 2.6.6
                 */
                $output = apply_filters('pods_var_post_id', $post_id, $default, $var, $strict, $params);
                break;
            default:
                $output = apply_filters('pods_var_' . $type, $default, $var, $strict, $params);
        }
    }
    if (null !== $default) {
        // Set default
        if (null === $output) {
            $output = $default;
        }
        // Casting
        if (true === $params->casting) {
            $output = pods_cast($output, $default);
        }
    }
    // Strict defaults for empty values
    if (true === $strict) {
        if (empty($output)) {
            $output = $default;
        }
    }
    // Allowed values
    if (null !== $params->allowed) {
        if (is_array($params->allowed)) {
            // Not in array and is not the same array
            if (!in_array($output, $params->allowed) && (!is_array($output) || $output !== $params->allowed)) {
                $output = $default;
            }
        } elseif ($output !== $params->allowed) {
            // Value doesn't match
            $output = $default;
        }
    }
    return $output;
}
Example #6
0
 /**
  * Take over the avatar served from WordPress
  *
  * @param string $avatar Default Avatar Image output from WordPress
  * @param int|string|object $id_or_email A user ID, email address, or comment object
  * @param int $size Size of the avatar image
  * @param string $default URL to a default image to use if no avatar is available
  * @param string $alt Alternate text to use in image tag. Defaults to blank
  * @return string <img> tag for the user's avatar
  */
 public function get_avatar($avatar, $id_or_email, $size, $default = '', $alt = '')
 {
     $_user_ID = 0;
     if (is_numeric($id_or_email) && 0 < $id_or_email) {
         $_user_ID = (int) $id_or_email;
     } elseif (is_object($id_or_email) && isset($id_or_email->user_id) && 0 < $id_or_email->user_id) {
         $_user_ID = (int) $id_or_email->user_id;
     } elseif (is_object($id_or_email) && isset($id_or_email->ID) && isset($id_or_email->user_login) && 0 < $id_or_email->ID) {
         $_user_ID = (int) $id_or_email->ID;
     } elseif (!is_object($id_or_email) && false !== strpos($id_or_email, '@')) {
         $_user = get_user_by('email', $id_or_email);
         if (!empty($_user)) {
             $_user_ID = (int) $_user->ID;
         }
     }
     if (0 < $_user_ID && !empty(PodsMeta::$user)) {
         $avatar_cached = pods_cache_get($_user_ID . '-' . $size, 'pods_avatars');
         if (!empty($avatar_cached)) {
             $avatar = $avatar_cached;
         } else {
             $avatar_field = pods_transient_get('pods_avatar_field');
             $user = current(PodsMeta::$user);
             if (empty($avatar_field)) {
                 foreach ($user['fields'] as $field) {
                     if ('avatar' == $field['type']) {
                         $avatar_field = $field['name'];
                         pods_transient_set('pods_avatar_field', $avatar_field);
                         break;
                     }
                 }
             } elseif (!isset($user['fields'][$avatar_field])) {
                 $avatar_field = false;
             }
             if (!empty($avatar_field)) {
                 $user_avatar = get_user_meta($_user_ID, $avatar_field . '.ID', true);
                 if (!empty($user_avatar)) {
                     $attributes = array('alt' => '', 'class' => 'avatar avatar-' . $size . ' photo');
                     if (!empty($alt)) {
                         $attributes['alt'] = $alt;
                     }
                     $user_avatar = pods_image($user_avatar, array($size, $size), 0, $attributes);
                     if (!empty($user_avatar)) {
                         $avatar = $user_avatar;
                         pods_cache_set($_user_ID . '-' . $size, $avatar, 'pods_avatars');
                     }
                 }
             }
         }
     }
     return $avatar;
 }
Example #7
0
 /**
  * Fetch a new row for the current pod_data
  *
  * @param int $row Row number to fetch
  * @param bool $explicit_set Whether to set explicitly (use false when in loop)
  *
  * @return mixed
  *
  * @since 2.0
  */
 public function fetch($row = null, $explicit_set = true)
 {
     global $wpdb;
     if (null === $row) {
         $explicit_set = false;
     }
     $id = $row;
     $tableless_field_types = PodsForm::tableless_field_types();
     if (null === $row) {
         $this->row_number++;
         $this->row = false;
         if (isset($this->data[$this->row_number])) {
             $this->row = get_object_vars($this->data[$this->row_number]);
             $current_row_id = false;
             if (in_array($this->pod_data['type'], array('post_type', 'media'))) {
                 $current_row_id = pods_var_raw('ID', $this->row);
             } elseif ('taxonomy' == $this->pod_data['type']) {
                 $current_row_id = pods_var_raw('term_id', $this->row);
             } elseif ('user' == $this->pod_data['type']) {
                 $current_row_id = pods_var_raw('ID', $this->row);
             } elseif ('comment' == $this->pod_data['type']) {
                 $current_row_id = pods_var_raw('comment_ID', $this->row);
             } elseif ('settings' == $this->pod_data['type']) {
                 $current_row_id = $this->pod_data['id'];
             }
             if (0 < $current_row_id) {
                 $row = $current_row_id;
             }
         }
     }
     if (null !== $row || 'settings' == $this->pod_data['type']) {
         if ($explicit_set) {
             $this->row_number = -1;
         }
         $mode = 'id';
         $id = pods_absint($row);
         if (!is_numeric($row) || 0 === strpos($row, '0') || $row != preg_replace('/[^0-9]/', '', $row)) {
             $mode = 'slug';
             $id = $row;
         }
         $row = false;
         if (!empty($this->pod)) {
             $row = pods_cache_get($id, 'pods_items_' . $this->pod);
         }
         $current_row_id = false;
         $get_table_data = false;
         if (false !== $row && is_array($row)) {
             $this->row = $row;
         } elseif (in_array($this->pod_data['type'], array('post_type', 'media'))) {
             if ('post_type' == $this->pod_data['type']) {
                 $post_type = $this->pod_data['object'];
                 if (empty($post_type)) {
                     $post_type = $this->pod_data['name'];
                 }
             } else {
                 $post_type = 'attachment';
             }
             if ('id' == $mode) {
                 $this->row = get_post($id, ARRAY_A);
                 if (is_array($this->row) && $this->row['post_type'] != $post_type) {
                     $this->row = false;
                 }
             } else {
                 $args = array('post_type' => $post_type, 'name' => $id, 'numberposts' => 5);
                 $find = get_posts($args);
                 if (!empty($find)) {
                     $this->row = get_object_vars($find[0]);
                 }
             }
             if (empty($this->row)) {
                 $this->row = false;
             }
             $current_row_id = $this->row['ID'];
             $get_table_data = true;
         } elseif ('taxonomy' == $this->pod_data['type']) {
             $taxonomy = $this->pod_data['object'];
             if (empty($taxonomy)) {
                 $taxonomy = $this->pod_data['name'];
             }
             if ('id' == $mode) {
                 $this->row = get_term($id, $taxonomy, ARRAY_A);
             } else {
                 $this->row = get_term_by('slug', $id, $taxonomy, ARRAY_A);
             }
             if (empty($this->row)) {
                 $this->row = false;
             }
             $current_row_id = $this->row['term_id'];
             $get_table_data = true;
         } elseif ('user' == $this->pod_data['type']) {
             if ('id' == $mode) {
                 $this->row = get_userdata($id);
             } else {
                 $this->row = get_user_by('slug', $id);
             }
             if (empty($this->row)) {
                 $this->row = false;
             } else {
                 $this->row = get_object_vars($this->row);
             }
             $current_row_id = $this->row['ID'];
             $get_table_data = true;
         } elseif ('comment' == $this->pod_data['type']) {
             $this->row = get_comment($id, ARRAY_A);
             // No slug handling here
             if (empty($this->row)) {
                 $this->row = false;
             }
             $current_row_id = $this->row['comment_ID'];
             $get_table_data = true;
         } elseif ('settings' == $this->pod_data['type']) {
             $this->row = array();
             if (empty($this->fields)) {
                 $this->row = false;
             } else {
                 foreach ($this->fields as $field) {
                     if (!in_array($field['type'], $tableless_field_types)) {
                         $this->row[$field['name']] = get_option($this->pod_data['name'] . '_' . $field['name'], null);
                     }
                 }
                 // Force ID
                 $this->id = $this->pod_data['id'];
                 $this->row['option_id'] = $this->id;
             }
         } else {
             $params = array('table' => $this->table, 'where' => "`t`.`{$this->field_id}` = " . (int) $id, 'orderby' => "`t`.`{$this->field_id}` DESC", 'page' => 1, 'limit' => 1, 'search' => false);
             if ('slug' == $mode && !empty($this->field_slug)) {
                 $id = esc_sql($id);
                 $params['where'] = "`t`.`{$this->field_slug}` = '{$id}'";
             }
             $this->row = pods_data()->select($params);
             if (empty($this->row)) {
                 $this->row = false;
             } else {
                 $current_row = (array) $this->row;
                 $this->row = get_object_vars((object) @current($current_row));
             }
         }
         if ('table' == $this->pod_data['storage'] && false !== $get_table_data && is_numeric($current_row_id)) {
             $params = array('table' => $wpdb->prefix . "pods_", 'where' => "`t`.`id` = {$current_row_id}", 'orderby' => "`t`.`id` DESC", 'page' => 1, 'limit' => 1, 'search' => false, 'strict' => true);
             if (empty($this->pod_data['object'])) {
                 $params['table'] .= $this->pod_data['name'];
             } else {
                 $params['table'] .= $this->pod_data['object'];
             }
             $row = pods_data()->select($params);
             if (!empty($row)) {
                 $current_row = (array) $row;
                 $row = get_object_vars((object) @current($current_row));
                 if (is_array($this->row) && !empty($this->row)) {
                     $this->row = array_merge($row, $this->row);
                 } else {
                     $this->row = $row;
                 }
             }
         }
         if (!empty($this->pod)) {
             pods_cache_set($id, $this->row, 'pods_items_' . $this->pod, 0);
         }
     }
     $this->row = $this->do_hook('fetch', $this->row, $id, $this->row_number);
     return $this->row;
 }
 /**
  * Get value from cache
  *
  * @param string $key   Cache key
  * @param string $group Cache group
  *
  * @return mixed
  */
 public function cache_get($key, $group)
 {
     $value = null;
     if (function_exists('pods_cache_get')) {
         $value = pods_cache_get($key, $group);
     } else {
         $value = wp_cache_get($key, $group);
     }
     return $value;
 }
 /**
  * Take over the avatar served from WordPress
  *
  * @param string $avatar Default Avatar Image output from WordPress
  * @param int|string|object $id_or_email A user ID, email address, or comment object
  * @param int $size Size of the avatar image
  * @param string $default URL to a default image to use if no avatar is available
  * @param string $alt Alternate text to use in image tag. Defaults to blank
  * @return string <img> tag for the user's avatar
  */
 public function get_avatar($avatar, $id_or_email, $size, $default = '', $alt = '')
 {
     // Don't replace for the Avatars section of the Discussion settings page
     if (is_admin()) {
         $current_screen = get_current_screen();
         if (!is_null($current_screen) && 'options-discussion' == $current_screen->id && 32 == $size) {
             return $avatar;
         }
     }
     $_user_ID = 0;
     if (is_numeric($id_or_email) && 0 < $id_or_email) {
         $_user_ID = (int) $id_or_email;
     } elseif (is_object($id_or_email) && isset($id_or_email->user_id) && 0 < $id_or_email->user_id) {
         $_user_ID = (int) $id_or_email->user_id;
     } elseif (is_object($id_or_email) && isset($id_or_email->ID) && isset($id_or_email->user_login) && 0 < $id_or_email->ID) {
         $_user_ID = (int) $id_or_email->ID;
     } elseif (!is_object($id_or_email) && false !== strpos($id_or_email, '@')) {
         $_user = get_user_by('email', $id_or_email);
         if (!empty($_user)) {
             $_user_ID = (int) $_user->ID;
         }
     }
     // Include PodsMeta if not already included
     pods_meta();
     if (0 < $_user_ID && !empty(PodsMeta::$user)) {
         $avatar_cached = pods_cache_get($_user_ID . '-' . $size, 'pods_avatars');
         if (!empty($avatar_cached)) {
             $avatar = $avatar_cached;
         } else {
             $avatar_field = pods_transient_get('pods_avatar_field');
             $user = current(PodsMeta::$user);
             if (empty($avatar_field)) {
                 foreach ($user['fields'] as $field) {
                     if ('avatar' == $field['type']) {
                         $avatar_field = $field['name'];
                         pods_transient_set('pods_avatar_field', $avatar_field);
                         break;
                     }
                 }
             } elseif (!isset($user['fields'][$avatar_field])) {
                 $avatar_field = false;
             }
             if (!empty($avatar_field)) {
                 $user_avatar = get_user_meta($_user_ID, $avatar_field . '.ID', true);
                 if (!empty($user_avatar)) {
                     $attributes = array('alt' => '', 'class' => 'avatar avatar-' . $size . ' photo');
                     if (!empty($alt)) {
                         $attributes['alt'] = $alt;
                     }
                     $user_avatar = pods_image($user_avatar, array($size, $size), 0, $attributes);
                     if (!empty($user_avatar)) {
                         $avatar = $user_avatar;
                         pods_cache_set($_user_ID . '-' . $size, $avatar, 'pods_avatars');
                     }
                 }
             }
         }
     }
     return $avatar;
 }