Example #1
0
 /**
  * Check if a user has permission to be editing a field
  *
  * @param $type
  * @param null $name
  * @param null $options
  * @param null $fields
  * @param null $pod
  * @param null $id
  * @param null $params
  *
  * @static
  *
  * @since 2.0
  */
 public static function permission($type, $name = null, $options = null, $fields = null, $pod = null, $id = null, $params = null)
 {
     $permission = pods_permission($options);
     $permission = (bool) apply_filters('pods_form_field_permission', $permission, $type, $name, $options, $fields, $pod, $id, $params);
     return $permission;
 }
Example #2
0
 /**
  * Run any precode for current Pod Page
  */
 public function precode()
 {
     global $pods;
     // Fix any global confusion wherever this runs
     if (isset($pods) && !isset($GLOBALS['pods'])) {
         $GLOBALS['pods'] =& $pods;
     } elseif (!isset($pods) && isset($GLOBALS['pods'])) {
         $pods =& $GLOBALS['pods'];
     }
     if (false !== self::$exists) {
         $permission = pods_permission(self::$exists['options']);
         $permission = (bool) apply_filters('pods_pages_permission', $permission, self::$exists);
         if ($permission) {
             $content = false;
             if (!is_object($pods) && 404 != $pods && 0 < strlen(pods_var('pod', self::$exists['options']))) {
                 $slug = pods_var_raw('pod_slug', self::$exists['options'], null, null, true);
                 // Handle special magic tags
                 if (0 < strlen($slug)) {
                     $slug = pods_evaluate_tags($slug, true);
                 }
                 $pods = pods(pods_var('pod', self::$exists['options']), $slug);
                 // Auto 404 handling if item doesn't exist
                 if (0 < strlen($slug) && !$pods->exists() && apply_filters('pods_pages_auto_404', true, $slug, $pods, self::$exists)) {
                     $pods = 404;
                 }
             }
             if (0 < strlen(trim(self::$exists['precode']))) {
                 $content = self::$exists['precode'];
             }
             if (false !== $content && (!defined('PODS_DISABLE_EVAL') || !PODS_DISABLE_EVAL)) {
                 pods_deprecated('Pod Page Precode has been deprecated, please use WP Page Templates or hook into the pods_content filter instead of embedding PHP.', '2.1');
                 eval("?>{$content}");
             }
             do_action('pods_page_precode', self::$exists, $pods, $content);
         } elseif (self::$exists['options']['restrict_redirect']) {
             $redirect_url = '';
             if (self::$exists['options']['restrict_redirect_login']) {
                 $redirect_url = wp_login_url(pods_current_url());
             } elseif (!empty(self::$exists['options']['restrict_redirect_url'])) {
                 $redirect_url = self::$exists['options']['restrict_redirect_url'];
             }
             if (!empty($redirect_url)) {
                 wp_redirect($redirect_url);
                 die;
             }
         }
         if (!$permission || !is_object($pods) && (404 == $pods || is_wp_error($pods))) {
             remove_action('template_redirect', array($this, 'template_redirect'));
             remove_action('wp_head', array($this, 'wp_head'));
             remove_filter('redirect_canonical', '__return_false');
             remove_filter('wp_title', array($this, 'wp_title'));
             remove_filter('body_class', array($this, 'body_class'));
             remove_filter('status_header', array($this, 'status_header'));
             remove_action('wp', array($this, 'silence_404'), 1);
         }
     }
 }
Example #3
0
 /**
  * Run any precode for current Pod Page
  */
 public function precode()
 {
     global $pods;
     // Fix any global confusion wherever this runs
     if (isset($pods) && !isset($GLOBALS['pods'])) {
         $GLOBALS['pods'] =& $pods;
     } elseif (!isset($pods) && isset($GLOBALS['pods'])) {
         $pods =& $GLOBALS['pods'];
     }
     if (false !== self::$exists) {
         $permission = pods_permission(self::$exists['options']);
         $permission = (bool) apply_filters('pods_pages_permission', $permission, self::$exists);
         if ($permission) {
             $content = false;
             if (!is_object($pods) && 404 != $pods && 0 < strlen(pods_var('pod', self::$exists['options']))) {
                 $pods = pods(pods_var('pod', self::$exists['options']), pods_evaluate_tags(pods_var_raw('pod_slug', self::$exists['options'], null, null, true), true));
             }
             if (0 < strlen(trim(self::$exists['precode']))) {
                 $content = self::$exists['precode'];
             }
             if (false !== $content && (!defined('PODS_DISABLE_EVAL') || !PODS_DISABLE_EVAL)) {
                 pods_deprecated('Use WP Page Templates or hook into the pods_page_precode action instead of using Pod Page Precode', '2.1');
                 eval("?>{$content}");
             }
             do_action('pods_page_precode', self::$exists, $pods, $content);
         }
         if (!$permission || !is_object($pods) && (404 == $pods || is_wp_error($pods))) {
             remove_action('template_redirect', array($this, 'template_redirect'));
             remove_action('wp_head', array($this, 'wp_head'));
             remove_filter('redirect_canonical', '__return_false');
             remove_filter('wp_title', array($this, 'wp_title'));
             remove_filter('body_class', array($this, 'body_class'));
             remove_filter('status_header', array($this, 'status_header'));
             remove_action('wp', array($this, 'silence_404'));
         }
     }
 }
Example #4
0
 /**
  * Display the page template
  *
  * @param string $template_name The template name
  * @param string $code Custom template code to use instead
  * @param object $obj The Pods object
  * @param bool $deprecated Whether to use deprecated functionality based on old function usage
  *
  * @return mixed|string|void
  * @since 2.0
  */
 public static function template($template_name, $code = null, $obj = null, $deprecated = false)
 {
     if (!empty($obj)) {
         self::$obj =& $obj;
     } else {
         $obj =& self::$obj;
     }
     self::$deprecated = $deprecated;
     if (empty($obj) || !is_object($obj)) {
         return '';
     }
     $template = array('id' => 0, 'slug' => $template_name, 'code' => $code, 'options' => array());
     if (empty($code) && !empty($template_name)) {
         $template_obj = $obj->api->load_template(array('name' => $template_name));
         if (!empty($template_obj)) {
             $template = $template_obj;
             if (!empty($template['code'])) {
                 $code = $template['code'];
             }
             $permission = pods_permission($template['options']);
             $permission = (bool) apply_filters('pods_templates_permission', $permission, $code, $template, $obj);
             if (!$permission) {
                 return apply_filters('pods_templates_permission_denied', __('You do not have access to view this content.', 'pods'), $code, $template, $obj);
             }
         }
     }
     $code = apply_filters('pods_templates_pre_template', $code, $template, $obj);
     $code = apply_filters('pods_templates_pre_template_' . $template['slug'], $code, $template, $obj);
     ob_start();
     if (!empty($code)) {
         // Only detail templates need $this->id
         if (empty($obj->id)) {
             while ($obj->fetch()) {
                 echo self::do_template($code, $obj);
             }
         } else {
             echo self::do_template($code, $obj);
         }
     } elseif ($template_name == trim(preg_replace('/[^a-zA-Z0-9_\\-\\/]/', '', $template_name), ' /-')) {
         $default_templates = array('pods/' . $template_name, 'pods-' . $template_name, $template_name);
         $default_templates = apply_filters('pods_template_default_templates', $default_templates);
         if (empty($obj->id)) {
             while ($obj->fetch()) {
                 pods_template_part($default_templates, compact(array_keys(get_defined_vars())));
             }
         } else {
             pods_template_part($default_templates, compact(array_keys(get_defined_vars())));
         }
     }
     $out = ob_get_clean();
     $out = apply_filters('pods_templates_post_template', $out, $code, $template, $obj);
     $out = apply_filters('pods_templates_post_template_' . $template['slug'], $out, $code, $template, $obj);
     return $out;
 }
Example #5
0
 /**
  * Display the page template
  *
  * @param string $template The template name
  * @param string $code Custom template code to use instead
  * @param object $obj The Pods object
  * @param bool $deprecated Whether to use deprecated functionality based on old function usage
  *
  * @return mixed|string|void
  * @since 2.0
  */
 public static function template($template, $code = null, $obj = null, $deprecated = false)
 {
     if (!empty($obj)) {
         self::$obj =& $obj;
     } else {
         $obj =& self::$obj;
     }
     self::$deprecated = $deprecated;
     if (empty($obj) || !is_object($obj)) {
         return '';
     }
     if (empty($code) && !empty($template)) {
         $template = $obj->api->load_template(array('name' => $template));
         if (!empty($template)) {
             if (!empty($template['code'])) {
                 $code = $template['code'];
             }
             $permission = pods_permission($template['options']);
             $permission = (bool) apply_filters('pods_templates_permission', $permission, $code, $template, $obj);
             if (!$permission) {
                 return apply_filters('pods_templates_permission_denied', __('You do not have access to view this content.', 'pods'), $code, $template, $obj);
             }
         }
     }
     $code = apply_filters('pods_templates_pre_template', $code, $template, $obj);
     $code = apply_filters('pods_templates_pre_template_' . $template['slug'], $code, $template, $obj);
     ob_start();
     if (!empty($code)) {
         // Only detail templates need $this->id
         if (empty($obj->id)) {
             while ($obj->fetch()) {
                 echo self::do_template($code, $obj);
             }
         } else {
             echo self::do_template($code, $obj);
         }
     }
     $out = ob_get_clean();
     $out = apply_filters('pods_templates_post_template', $out, $code, $template, $obj);
     $out = apply_filters('pods_templates_post_template_' . $template['slug'], $out, $code, $template, $obj);
     return $out;
 }