/** * @static * * @param string $view Path of the view file * @param array|null $data (optional) Data to pass on to the template * @param bool|int|array $expires (optional) Time in seconds for the cache to expire, if 0 no expiration. * @param string $cache_mode (optional) Decides the caching method to use for the view. * * @return bool|mixed|null|string|void * * @since 2.0 */ public static function view($view, $data = null, $expires = false, $cache_mode = 'cache') { // Different $expires if user is anonymous or logged in or specific capability if (is_array($expires)) { $anon = pods_var_raw(0, $expires, false); $user = pods_var_raw(1, $expires, false); $capability = pods_var_raw(2, $expires, null, null, true); $expires = pods_var_user($anon, $user, $capability); } if ('none' == $cache_mode) { $expires = false; } if (false !== $expires && empty($expires)) { $expires = 0; } if (!in_array($cache_mode, self::$cache_modes)) { $cache_mode = 'cache'; } $view = apply_filters('pods_view_inc', $view, $data, $expires, $cache_mode); $view_key = $view; if (is_array($view_key)) { $view_key = implode('-', $view_key) . '.php'; } $view_key = realpath($view_key); $pods_ui_dir = realpath(PODS_DIR . 'ui/'); $pods_components_dir = realpath(PODS_DIR . 'components/'); $content_dir = realpath(WP_CONTENT_DIR); $plugins_dir = realpath(WP_PLUGIN_DIR); $muplugins_dir = realpath(WPMU_PLUGIN_DIR); $abspath_dir = realpath(ABSPATH); $cache_key = sanitize_title(pods_str_replace(array($pods_ui_dir, $pods_components_dir, $content_dir, $plugins_dir, $abspath_dir, '.php', '/'), array('ui-', 'ui-', 'custom-', 'custom-', 'custom-', '', '_'), $view_key, 1)); $output = false; if (false !== $expires && false === strpos($view_key, $pods_ui_dir) && false === strpos($view_key, $pods_components_dir) && false === strpos($view_key, $content_dir) && false === strpos($view_key, $plugins_dir) && false === strpos($view_key, $muplugins_dir) && false === strpos($view_key, $abspath_dir)) { $output = self::get('pods-view-' . $cache_key, $cache_mode, 'pods_view'); } if (false === $output || null === $output) { $output = self::get_template_part($view, $data); } if (false !== $output && false !== $expires) { self::set('pods-view-' . $cache_key, $output, $expires, $cache_mode, 'pods_view'); } $output = apply_filters('pods_view_output_' . $cache_key, $output, $view, $data, $expires, $cache_mode); $output = apply_filters('pods_view_output', $output, $view, $data, $expires, $cache_mode); return $output; }
/** * Advanced $expires handling * * @param array|bool|int $expires * @param string $cache_mode * * @return bool|int * * @since 3.0 * @static */ public static function expires($expires, $cache_mode = 'cache') { // Different $expires if user is anonymous or logged in or specific capability if (is_array($expires)) { if ((isset($expires['anonymous']) || isset($expires['user_with_access'])) && isset($expires['user'])) { if (isset($expires['user_with_access'])) { $expires = array(pods_var_raw('anonymous', $expires, false), pods_var_raw('user', $expires, false), pods_var_raw('user_with_access', $expires, false), pods_var_raw('capability', $expires, null, null, true)); } elseif (isset($expires['anonymous'])) { $expires = array(pods_var_raw('anonymous', $expires, false), pods_var_raw('user', $expires, false), pods_var_raw('capability', $expires, null, null, true)); } } else { $expires = array_values($expires); } if (4 == count($expires)) { if (!is_user_logged_in()) { $expires = pods_var_raw(0, $expires, false); } else { $user_no_access = pods_var_raw(1, $expires, false); $user_with_access = pods_var_raw(2, $expires, false); $capability = pods_var_raw(3, $expires, null, null, true); $expires = pods_var_user($user_no_access, $user_with_access, $capability); } } else { $anon = pods_var_raw(0, $expires, false); $user = pods_var_raw(1, $expires, false); $capability = pods_var_raw(2, $expires, null, null, true); $expires = pods_var_user($anon, $user, $capability); } } if ('none' == $cache_mode) { $expires = false; } elseif (false !== $expires) { $expires = (int) $expires; if ($expires < 1) { $expires = 0; } } return $expires; }