PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / 5.3
Advanced Access Manager – Access Governance for WordPress v5.3
6.8.4 6.8.5 6.9.0 6.9.1 6.9.10 6.9.11 6.9.12 6.9.13 6.9.14 6.9.15 6.9.16 6.9.17 6.9.18 6.9.19 6.9.2 6.9.20 6.9.21 6.9.22 6.9.23 6.9.24 6.9.25 6.9.26 6.9.27 6.9.28 6.9.29 6.9.3 6.9.30 6.9.31 6.9.32 6.9.33 6.9.34 6.9.35 6.9.36 6.9.37 6.9.38 6.9.39 6.9.4 6.9.41 6.9.42 6.9.43 6.9.44 6.9.45 6.9.46 6.9.47 6.9.48 6.9.49 6.9.5 6.9.51 6.9.6 6.9.7 6.9.8 6.9.9 7.0.0 7.0.0-alpha.6 7.0.0-alpha.7 7.0.0-beta.1 7.0.0-rc1 7.0.0-rc2 7.0.0-rc3 7.0.1 7.0.10 7.0.11 7.0.2 7.0.3 7.0.4 7.0.5 7.0.6 7.0.7 7.0.8 7.0.9 7.1.0 7.1.1 trunk 3.0 4.0 4.0.1 4.1 4.2 4.3 4.4 4.4.1 4.5 4.6 4.6.1 4.6.2 4.7 4.7.1 4.7.2 4.7.5 4.7.6 4.8 4.8.1 4.9 4.9.1 4.9.2 4.9.3 4.9.4 4.9.5 4.9.5.1 4.9.5.2 5.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1 5.1.1 5.10 5.11 5.2 5.2.1 5.2.5 5.2.6 5.2.7 5.3 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.4 5.4.1 5.4.2 5.4.3 5.4.3.1 5.4.3.2 5.5 5.5.1 5.5.2 5.6 5.6.1 5.6.1.1 5.7 5.7.1 5.7.2 5.7.3 5.8 5.8.1 5.8.2 5.8.3 5.9 5.9.1 5.9.1.1 5.9.2 5.9.2.1 5.9.3 5.9.4 5.9.5 5.9.6 5.9.6.1 5.9.6.2 5.9.6.3 5.9.7 5.9.7.1 5.9.7.2 5.9.7.3 5.9.8 5.9.8.1 5.9.9 5.9.9.1 6.0.0 6.0.1 6.0.2 6.0.3 6.0.4 6.0.5 6.1.0 6.1.1 6.2.0 6.2.1 6.2.2 6.3.0 6.3.1 6.3.2 6.3.3 6.4.0 6.4.1 6.4.2 6.4.3 6.5.0 6.5.1 6.5.2 6.5.3 6.5.4 6.6.0 6.6.1 6.6.2 6.6.3 6.6.4 6.7.0 6.7.1 6.7.2 6.7.3 6.7.4 6.7.5 6.7.6 6.7.7 6.7.8 6.7.9 6.8.0 6.8.1 6.8.2 6.8.3
advanced-access-manager / Application / Frontend / Manager.php
advanced-access-manager / Application / Frontend Last commit date
phtml 8 years ago Authorization.php 8 years ago Filter.php 8 years ago Manager.php 8 years ago
Manager.php
186 lines
1 <?php
2
3 /**
4 * ======================================================================
5 * LICENSE: This file is subject to the terms and conditions defined in *
6 * file 'license.txt', which is part of this source code package. *
7 * ======================================================================
8 */
9
10 /**
11 * AAM frontend manager
12 *
13 * @package AAM
14 * @author Vasyl Martyniuk <vasyl@vasyltech.com>
15 */
16 class AAM_Frontend_Manager {
17
18 /**
19 * Instance of itself
20 *
21 * @var AAM_Frontend_Manager
22 *
23 * @access private
24 */
25 private static $_instance = null;
26
27 /**
28 * Construct the manager
29 *
30 * @return void
31 *
32 * @access public
33 */
34 public function __construct() {
35 if (AAM_Core_Config::get('frontend-access-control', true)) {
36 AAM_Frontend_Filter::register();
37 }
38
39 //manage AAM shortcode
40 add_shortcode('aam', array($this, 'processShortcode'));
41
42 //cache clearing hook
43 add_action('aam-clear-cache-action', 'AAM_Core_API::clearCache');
44
45 //admin bar
46 $this->checkAdminBar();
47
48 //register login widget
49 if (AAM_Core_Config::get('secure-login', true)) {
50 add_action('widgets_init', array($this, 'registerLoginWidget'));
51 add_action('wp_enqueue_scripts', array($this, 'printJavascript'));
52 }
53
54 //password protected filter
55 add_filter('post_password_required', array($this, 'isPassProtected'), 10, 2);
56 //manage password check expiration
57 add_filter('post_password_expires', array($this, 'checkPassExpiration'));
58 }
59
60 /**
61 * Process AAM short-codes
62 *
63 * @param array $args
64 * @param string $content
65 *
66 * @return string
67 *
68 * @access public
69 */
70 public function processShortcode($args, $content) {
71 $shortcode = new AAM_Shortcode_Factory($args, $content);
72
73 return $shortcode->process();
74 }
75
76 /**
77 * Check admin bar
78 *
79 * Make sure that current user can see admin bar
80 *
81 * @return void
82 *
83 * @access public
84 */
85 public function checkAdminBar() {
86 if (AAM_Core_API::capabilityExists('show_admin_bar')) {
87 if (!AAM::getUser()->hasCapability('show_admin_bar')) {
88 show_admin_bar(false);
89 }
90 }
91 }
92
93 /**
94 * Register login widget
95 *
96 * @return void
97 *
98 * @access public
99 */
100 public function registerLoginWidget() {
101 register_widget('AAM_Backend_Widget_Login');
102 }
103
104 /**
105 * Print JS libraries
106 *
107 * @return void
108 *
109 * @access public
110 */
111 public function printJavascript() {
112 if (AAM_Core_Config::get('secure-login', true)) {
113 wp_enqueue_script('aam-login', AAM_MEDIA . '/js/aam-login.js');
114
115 //add plugin localization
116 $locals = array(
117 'nonce' => wp_create_nonce('aam_ajax'),
118 'ajaxurl' => admin_url('admin-ajax.php')
119 );
120
121 wp_localize_script('aam-login', 'aamLocal', $locals);
122 }
123 }
124
125 /**
126 * Check if post is password protected
127 *
128 * @param boolean $res
129 * @param WP_Post $post
130 *
131 * @return boolean
132 *
133 * @access public
134 */
135 public function isPassProtected($res, $post) {
136 if (is_a($post, 'WP_Post')) {
137 $object = AAM::getUser()->getObject('post', $post->ID);
138
139 if ($object->has('frontend.protected')) {
140 require_once( ABSPATH . 'wp-includes/class-phpass.php' );
141 $hasher = new PasswordHash( 8, true );
142 $pass = $object->get('frontend.password');
143 $hash = wp_unslash(
144 AAM_Core_Request::cookie('wp-postpass_' . COOKIEHASH)
145 );
146
147 $res = empty($hash) ? true : !$hasher->CheckPassword($pass, $hash);
148 }
149 }
150
151 return $res;
152 }
153
154 /**
155 * Get password expiration TTL
156 *
157 * @param int $expire
158 *
159 * @return int
160 *
161 * @access public
162 */
163 public function checkPassExpiration($expire) {
164 $overwrite = AAM_Core_Config::get('post.password.expires', null);
165
166 if ($overwrite !== null) {
167 $expire = ($overwrite ? time() + strtotime($overwrite) : 0);
168 }
169
170 return $expire;
171 }
172
173 /**
174 * Bootstrap the manager
175 *
176 * @return void
177 *
178 * @access public
179 */
180 public static function bootstrap() {
181 if (is_null(self::$_instance)) {
182 self::$_instance = new self;
183 }
184 }
185
186 }