PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / 5.4
Advanced Access Manager – Access Governance for WordPress v5.4
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 / Core / Object / Visibility.php
advanced-access-manager / Application / Core / Object Last commit date
Cache.php 7 years ago Capability.php 7 years ago LoginRedirect.php 7 years ago LogoutRedirect.php 7 years ago Menu.php 7 years ago Metabox.php 7 years ago Post.php 7 years ago Redirect.php 7 years ago Route.php 7 years ago Toolbar.php 7 years ago Visibility.php 7 years ago
Visibility.php
151 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 * Post visibility object
12 *
13 * @package AAM
14 * @author Vasyl Martyniuk <vasyl@vasyltech.com>
15 */
16 class AAM_Core_Object_Visibility extends AAM_Core_Object {
17
18 /**
19 * Constructor
20 *
21 * @param AAM_Core_Subject $subject
22 *
23 * @return void
24 *
25 * @access public
26 */
27 public function __construct(AAM_Core_Subject $subject) {
28 parent::__construct($subject);
29
30 $this->initialize();
31 }
32
33 /**
34 *
35 * @global type $wpdb
36 */
37 public function initialize() {
38 global $wpdb;
39
40 $subject = $this->getSubject();
41
42 // Read cache first
43 $option = $subject->getObject('cache')->get('visibility');
44 if ($option === false) { //if false, then the cache is empty but exists
45 $option = array();
46 } elseif (empty($option)) {
47 $query = "SELECT pm.`post_id`, pm.`meta_value`, p.`post_type` FROM {$wpdb->postmeta} AS pm ";
48 $query .= "LEFT JOIN {$wpdb->posts} AS p ON (pm.`post_id` = p.ID) ";
49 $query .= "WHERE pm.`meta_key` = %s";
50
51 if ($wpdb->query($wpdb->prepare($query, $this->getOptionName('post')))) {
52 foreach($wpdb->last_result as $row) {
53 $settings = maybe_unserialize($row->meta_value);
54 $this->pushOptions('post', $row->post_id . '|' . $row->post_type, $settings);
55 }
56 }
57
58 // Override the frontend.list for current post
59 $post = AAM_Core_API::getCurrentPost(); // current post
60 if ($post) {
61 $option = $this->getOption();
62 $option['post'][$post->ID . '|' . $post->post_type]['frontend.list'] = 0;
63 $this->setOption($option);
64 }
65
66 do_action('aam-visibility-initialize-action', $this);
67
68 // inherit settings from parent
69 $option = $subject->inheritFromParent('visibility', 0);
70 if (!empty($option)) {
71 $option = array_replace_recursive($option, $this->getOption());
72 } else {
73 $option = $this->getOption();
74 }
75
76 if (in_array($subject::UID, array('user', 'visitor'))) {
77 // $subject->getObject('cache')->add(
78 // 'visibility', 0, empty($option) ? false : $option
79 // );
80 }
81 }
82
83 $this->setOption($option);
84 }
85
86 /**
87 *
88 * @param type $object
89 * @param type $id
90 * @param type $options
91 * @return type
92 */
93 public function pushOptions($object, $id, $options) {
94 $filtered = array();
95 $listOptions = apply_filters(
96 'aam-post-list-options-filter',
97 array('frontend.list', 'backend.list', 'api.list')
98 );
99
100 foreach($options as $key => $value) {
101 if (in_array($key, $listOptions)) {
102 $filtered[$key] = $value;
103 }
104 }
105
106 if (empty($filtered)) {
107 $filtered = array_combine(
108 $listOptions,
109 array_fill(0, count($listOptions), 0)
110 );
111 }
112
113 $option = $this->getOption();
114 if (!isset($option[$object][$id])) {
115 $option[$object][$id] = $filtered;
116 }
117 $this->setOption($option);
118
119 return $filtered;
120 }
121
122 /**
123 *
124 * @param type $object
125 * @param type $id
126 * @return type
127 */
128 public function has($object, $id = null) {
129 $option = $this->getOption();
130
131 return (is_null($id) ? isset($option[$object]) : isset($option[$object][$id]));
132 }
133
134 /**
135 * Generate option name
136 *
137 * @return string
138 *
139 * @access protected
140 */
141 protected function getOptionName($object) {
142 $subject = $this->getSubject();
143
144 //prepare option name
145 $meta_key = 'aam-' . $object . '-access-' . $subject->getUID();
146 $meta_key .= ($subject->getId() ? $subject->getId() : '');
147
148 return $meta_key;
149 }
150
151 }