예제 #1
0
 /**
  * @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;
 }
예제 #2
0
 /**
  * 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;
 }