Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
chromed
/
wp-content
/
plugins
/
advanced-access-manager
/
application
/
Backend
:
View.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php /** * ====================================================================== * LICENSE: This file is subject to the terms and conditions defined in * * file 'license.txt', which is part of this source code package. * * ====================================================================== */ /** * Backend view manager * * This class is used to manage all AAM UI templates and interaction of the UI with * AAM backend core * * @package AAM * @version 7.0.0 */ class AAM_Backend_View { /** * Single instance of itself * * @var object * @access private * * @version 7.0.0 */ private static $_instance = null; /** * Constructor * * @return void * @access protected * * @version 7.0.0 */ protected function __construct() { // Allow other plugins to register new AAM UI tabs/features do_action( 'aam_initialize_ui_action', function($feature) { AAM_Backend_Feature::registerFeature($feature); }, AAM_Backend_AccessLevel::get_instance() ); } /** * Replace sprintf string with URLs to aamportal.com * * @param string $str * @param string ...$url * * @return string * * @access public * @static * * @version 7.0.0 */ public static function replace_aam_urls($str) { $args = array_slice(func_get_args(), 1); if (!empty($args)) { // Preparing the array of arguments for the sprintf $replace_args = [$str]; foreach($args as $relative_url) { array_push($replace_args, '<a href="https://aamportal.com' . $relative_url . '?ref=plugin" target="_blank">', '</a>' ); } $str = call_user_func_array('sprintf', $replace_args); } return $str; } /** * Load partial template * * The specified template has to be located inside the ./tmpl/partial folder * * @param string $tmpl * @param array $params * * @return string|null * @access public * * @version 6.0.0 */ public static function loadPartial($tmpl, $params = array()) { if (preg_match('/^[a-z-]+$/i', $tmpl)) { $html = self::loadTemplate( __DIR__ . "/tmpl/partial/{$tmpl}.php", (is_object($params) ? $params : (object) $params) ); } else { $html = null; } return $html; } /** * Load dynamic template * * @param string $file_path * @param object $params * * @return string * @access public * * @version 6.6.0 */ public static function loadTemplate($file_path, $params = null) { ob_start(); require $file_path; $content = ob_get_contents(); ob_end_clean(); return $content; } /** * Process the ajax call * * @return string * @access public * * @version 6.7.9 */ public function processAjax() { $response = null; $action = AAM::api()->misc->get($_POST, 'sub_action'); $parts = explode('.', $action); $access_level = AAM_Backend_AccessLevel::get_instance(); if (count($parts) === 2) { $id = 'AAM_Backend_Feature_' . $parts[0]; if (AAM_Backend_Feature::isFeatureRegistered($id)) { $response = call_user_func( array(AAM_Backend_Feature::getFeatureView($id), $parts[1]) ); } $response = apply_filters( 'aam_ajax_filter', $response, $access_level->get_access_level(), $action ); } elseif ($action === 'renderContent') { $partial = AAM::api()->misc->get($_POST, 'partial'); $response = $this->renderContent((!empty($partial) ? $partial : 'main')); $accept = AAM::api()->misc->get($_SERVER, 'HTTP_ACCEPT_ENCODING'); header('Content-Type: text/html; charset=UTF-8'); $compressed = count(array_intersect( array('zlib output compression', 'ob_gzhandler'), ob_list_handlers() )) > 0; if (!empty($accept)) { header('Vary: Accept-Encoding'); // Handle proxies if (false !== stripos($accept, 'gzip') && function_exists('gzencode')) { header('Content-Encoding: gzip'); $response = ($compressed ? $response : gzencode($response, 3)); } } } return $response; } /** * Render the main AAM page * * This is the landing page for the /wp-admin/admin.php?page=aam * * @return string * * @access public * @version 6.0.0 */ public function renderPage() { return $this->loadTemplate(dirname(__FILE__) . '/tmpl/index.php'); } /** * Run AAM iFrame * * @return string * @access public * * @version 6.0.0 */ public function renderIFrame($type) { $basedir = dirname(__FILE__) . '/tmpl/metabox/'; if (current_user_can('aam_manager')) { if (($type === 'post') && current_user_can('aam_manage_content')) { echo $this->loadTemplate( $basedir . 'post-iframe.php', (object) array( 'objectId' => filter_input(INPUT_GET, 'id'), 'objectType' => filter_input(INPUT_GET, 'type'), 'postManager' => new AAM_Backend_Feature_Main_Content() ) ); } elseif ($type === 'user' && current_user_can('aam_manage_users')) { echo $this->loadTemplate( $basedir . 'user-iframe.php', (object) array( 'user' => new WP_User(filter_input(INPUT_GET, 'id')), 'type' => 'main' ) ); } elseif ($type === 'main') { echo $this->loadTemplate($basedir . 'main-iframe.php'); } else { echo apply_filters('aam_iframe_content_filter', null, $type, $this); } } exit; } /** * Render Access Manager metabox iFrame element for posts * * @param WP_Post $post * * @return string * * @access public * @version 6.0.0 */ public static function renderPostMetabox($post) { return static::loadTemplate( dirname(__FILE__) . '/tmpl/metabox/post-metabox.php', (object) array('post' => $post) ); } /** * Render Access Manager metabox iFrame element for user * * @param WP_User $term * * @return string * * @access public * @version 6.0.0 */ public static function renderUserMetabox($user) { return static::loadTemplate( dirname(__FILE__) . '/tmpl/metabox/user-metabox.php', (object) array( 'user' => $user ) ); } /** * Render Access Policy editor * * @return string * * @access public * @global WP_Post $post * * @version 7.0.0 */ public function render_policy_metabox() { global $post; if (is_a($post, 'WP_Post')) { $content = $this->loadTemplate( dirname(__FILE__) . '/tmpl/metabox/policy-metabox.php', (object) array('post' => $post) ); } else { $content = null; } return $content; } /** * Render policy parent metabox * * @return string * @access public * * @version 7.0.0 */ public function render_policy_parent_metabox() { global $post; if (is_a($post, 'WP_Post')) { $content = $this->loadTemplate( dirname(__FILE__) . '/tmpl/metabox/policy-parent-metabox.php', (object) [ 'post' => $post ] ); } else { $content = null; } return $content; } /** * Render policy principal metabox * * @return string * * @access public * @global WP_Post $post * @version 6.0.0 */ public static function renderPolicyPrincipalMetabox() { global $post; if (is_a($post, 'WP_Post')) { $content = static::loadTemplate( dirname(__FILE__) . '/tmpl/metabox/policy-principal-metabox.php', (object) array('post' => $post) ); } else { $content = null; } return $content; } /** * Render the AAM HTML content * * Depending on the $type of the content, verify correct permissions and load * proper HTML template. * * @param string $type * * @return string * * @access public * @version 6.0.0 */ public function renderContent($type = 'main') { $basedir = __DIR__ . '/tmpl/page/'; switch ($type) { case 'main': // No need to do the authorization as this is already done in the // AAM_Backend_Manager class $content = $this->loadTemplate( $basedir . 'main-panel.php', (object) array('type' => 'main') ); break; case 'settings': if (current_user_can('aam_manage_settings')) { $content = $this->loadTemplate( $basedir . 'main-panel.php', (object) array('type' => 'settings') ); } break; case 'extensions': if (current_user_can('aam_manage_addons')) { $content = $this->loadTemplate($basedir . 'addon-panel.php'); } break; case 'content-access-form': $manager = new AAM_Backend_Feature_Main_Content(); $content = $manager->render_content_access_form( AAM::api()->misc->get($_POST, 'resource_id'), AAM::api()->misc->get($_POST, 'resource_type') ); break; case 'audit': if (current_user_can('aam_trigger_audit')) { $content = $this->loadTemplate($basedir . 'security-audit.php'); } break; default: // Allow other plugins to hook into the AAM template rendering with // with custom HTML $content = apply_filters('aam_ui_content_filter', null, $type); break; } return $content; } /** * Bootstrap the object * * @return AAM_Backend_View * * @access public * @version 7.0.0 */ public static function bootstrap() { if (is_null(self::$_instance)) { self::$_instance = new self; } return self::$_instance; } /** * Get single instance of itself * * @return AAM_Backend_View * * @access public * @version 7.0.0 */ public static function get_instance() { return self::bootstrap(); } }