PluginProbe
User Access Manager / 1.2.7.4
User Access Manager v1.2.7.4
2.3.20 2.3.19 2.3.18 2.3.17 2.3.16 2.3.15 2.3.14 2.3.13 trunk 0.6 0.6.1 0.6.2 0.7 0.7 Beta 0.7.0.1 0.8 0.8.0.1 0.8.0.2 0.9 0.9.1 0.9.1.1 0.9.1.2 0.9.1.3 0.9.1.4 1.0 All 136 releases
user-access-manager / user-access-manager.php

user-access-manager.php in User Access Manager 1.2.7.4, at user-access-manager.php

351 lines 14.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Plugin Name: User Access Manager
4 * Plugin URI: https://wordpress.org/plugins/user-access-manager/
5 * Author URI: https://twitter.com/GM_Alex
6 * Version: 1.2.7.4
7 * Author: Alexander Schneider
8 * Description: Manage the access to your posts, pages, categories and files.
9 *
10 * user-access-manager.php
11 *
12 * PHP versions 5
13 *
14 * @category UserAccessManager
15 * @package UserAccessManager
16 * @author Alexander Schneider <alexanderschneider85@gmail.com>
17 * @copyright 2008-2016 Alexander Schneider
18 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2
19 * @version SVN: $Id$
20 * @link http://wordpress.org/extend/plugins/user-access-manager/
21 */
22
23 //Paths
24 load_plugin_textdomain('user-access-manager', false, 'user-access-manager/lang');
25 define('UAM_URLPATH', plugins_url('', __FILE__).'/');
26
27 if (defined('UAM_LOCAL_DEBUG')) {
28 define('UAM_REALPATH', plugin_basename(dirname(__FILE__)).'/'); //ONLY FOR MY LOCAL DEBUG
29 } else {
30 define('UAM_REALPATH', WP_PLUGIN_DIR.'/'.plugin_basename(dirname(__FILE__)).'/');
31 }
32
33
34 //Defines
35 require_once 'includes/database.define.php';
36 require_once 'includes/language.define.php';
37
38
39 //Check requirements
40 $blStop = false;
41
42 //Check php version
43 $sPhpVersion = phpversion();
44
45 if (version_compare($sPhpVersion, "5.0") === -1) {
46 add_action(
47 'admin_notices',
48 create_function(
49 '',
50 'echo \'<div id="message" class="error"><p><strong>'.
51 sprintf(TXT_UAM_PHP_VERSION_TO_LOW, $sPhpVersion).
52 '</strong></p></div>\';'
53 )
54 );
55
56 $blStop = true;
57 }
58
59 //Check wordpress version
60 global $wp_version;
61
62 if (version_compare($wp_version, "3.0") === -1) {
63 add_action(
64 'admin_notices',
65 create_function(
66 '',
67 'echo \'<div id="message" class="error"><p><strong>'.
68 sprintf(TXT_UAM_WORDPRESS_VERSION_TO_LOW, $wp_version).
69 '</strong></p></div>\';'
70 )
71 );
72
73 $blStop = true;
74 }
75
76 //If we have a error stop plugin.
77 if ($blStop) {
78 return;
79 }
80
81
82 //Classes
83 require_once 'class/UserAccessManager.class.php';
84 require_once 'class/UamUserGroup.class.php';
85 require_once 'class/UamAccessHandler.class.php';
86
87 if (class_exists("UserAccessManager")) {
88 $oUserAccessManager = new UserAccessManager();
89 }
90
91 //Initialize the admin panel
92 if (!function_exists("userAccessManagerAP")) {
93 /**
94 * Creates the filters and actions for the admin panel
95 *
96 * @return null;
97 */
98 function userAccessManagerAP()
99 {
100 global $oUserAccessManager;
101 $oCurrentUser = $oUserAccessManager->getCurrentUser();
102
103 if (!isset($oUserAccessManager)) {
104 return;
105 }
106
107 $oUserAccessManager->setAtAdminPanel();
108 $aUamOptions = $oUserAccessManager->getAdminOptions();
109
110 if ($oUserAccessManager->isDatabaseUpdateNecessary()) {
111 $sLink = 'admin.php?page=uam_setup';
112
113 add_action(
114 'admin_notices',
115 create_function(
116 '',
117 'echo \'<div id="message" class="error"><p><strong>'.
118 sprintf(TXT_UAM_NEED_DATABASE_UPDATE, $sLink).
119 '</strong></p></div>\';'
120 )
121 );
122 }
123
124 $oCurUserData = wp_get_current_user();
125 $oUamAccessHandler = $oUserAccessManager->getAccessHandler();
126 $aTaxonomies = get_taxonomies(array('public' => true, '_builtin' => true));
127
128 if ($oUamAccessHandler->checkUserAccess()
129 || $aUamOptions['authors_can_add_posts_to_groups'] == 'true'
130 ) {
131 //Admin actions
132 if (function_exists('add_action')) {
133 add_action('admin_print_styles', array($oUserAccessManager, 'addStyles'));
134 add_action('wp_print_scripts', array($oUserAccessManager, 'addScripts'));
135
136 add_action('manage_posts_custom_column', array($oUserAccessManager, 'addPostColumn'), 10, 2);
137 add_action('manage_pages_custom_column', array($oUserAccessManager, 'addPostColumn'), 10, 2);
138 add_action('save_post', array($oUserAccessManager, 'savePostData'));
139
140 add_action('manage_media_custom_column', array($oUserAccessManager, 'addPostColumn'), 10, 2);
141
142 //Actions are only called when the attachment content is modified so we can't use it.
143 //add_action('add_attachment', array($oUserAccessManager, 'savePostData'));
144 //add_action('edit_attachment', array($oUserAccessManager, 'savePostData'));
145
146 add_action('edit_user_profile', array($oUserAccessManager, 'showUserProfile'));
147 add_action('profile_update', array($oUserAccessManager, 'saveUserData'));
148
149 add_action('create_category', array($oUserAccessManager, 'saveCategoryData'));
150 add_action('edit_category', array($oUserAccessManager, 'saveCategoryData'));
151
152 add_action('bulk_edit_custom_box', array($oUserAccessManager, 'addBulkAction'));
153
154
155 //Taxonomies
156 foreach ($aTaxonomies as $sTaxonomy) {
157 add_filter('manage_edit-'.$sTaxonomy.'_columns', array($oUserAccessManager, 'addCategoryColumnsHeader'));
158 add_action('manage_'.$sTaxonomy.'_custom_column', array($oUserAccessManager, 'addCategoryColumn'), 10, 3);
159 add_action($sTaxonomy.'_add_form_fields', array($oUserAccessManager, 'showCategoryEditForm'));
160 add_action($sTaxonomy.'_edit_form_fields', array($oUserAccessManager, 'showCategoryEditForm'));
161 add_action('create_'.$sTaxonomy, array($oUserAccessManager, 'saveCategoryData'));
162 add_action('edit_'.$sTaxonomy, array($oUserAccessManager, 'saveCategoryData'));
163 }
164 }
165
166 //Admin filters
167 if (function_exists('add_filter')) {
168 //The filter we use instead of add|edit_attachment action, reason see top
169 add_filter('attachment_fields_to_save', array($oUserAccessManager, 'saveAttachmentData'));
170
171 add_filter('manage_posts_columns', array($oUserAccessManager, 'addPostColumnsHeader'));
172 add_filter('manage_pages_columns', array($oUserAccessManager, 'addPostColumnsHeader'));
173
174 add_filter('manage_users_columns', array($oUserAccessManager, 'addUserColumnsHeader'), 10);
175 add_filter('manage_users_custom_column', array($oUserAccessManager, 'addUserColumn'), 10, 3);
176
177 add_filter('manage_edit-category_columns', array($oUserAccessManager, 'addCategoryColumnsHeader'));
178 add_filter('manage_category_custom_column', array($oUserAccessManager, 'addCategoryColumn'), 10, 3);
179 }
180
181 if ($aUamOptions['lock_file'] == 'true') {
182 add_action('media_meta', array($oUserAccessManager, 'showMediaFile'), 10, 2);
183 add_filter('manage_media_columns', array($oUserAccessManager, 'addPostColumnsHeader'));
184 }
185 }
186
187 //Clean up at deleting should always be done.
188 if (function_exists('add_action')) {
189 add_action('update_option_permalink_structure', array($oUserAccessManager, 'updatePermalink'));
190 add_action('wp_dashboard_setup', array($oUserAccessManager, 'setupAdminDashboard'));
191 add_action('delete_post', array($oUserAccessManager, 'removePostData'));
192 add_action('delete_attachment', array($oUserAccessManager, 'removePostData'));
193 add_action('delete_user', array($oUserAccessManager, 'removeUserData'));
194 add_action('delete_category', array($oUserAccessManager, 'removeCategoryData'), 10, 2);
195
196 // taxonomies
197
198 foreach ($aTaxonomies as $sTaxonomy) {
199 add_action('delete_'.$sTaxonomy, array($oUserAccessManager, 'removeCategoryData'));
200 }
201 }
202
203 $oUserAccessManager->noRightsToEditContent();
204 }
205 }
206
207 if (!function_exists("userAccessManagerAPMenu")) {
208 /**
209 * Creates the menu at the admin panel
210 *
211 * @return null;
212 */
213 function userAccessManagerAPMenu()
214 {
215 global $oUserAccessManager;
216 $oCurrentUser = $oUserAccessManager->getCurrentUser();
217
218 if (!isset($oUserAccessManager)) {
219 return;
220 }
221
222 $aUamOptions = $oUserAccessManager->getAdminOptions();
223
224 if (ini_get('safe_mode')
225 && $aUamOptions['download_type'] == 'fopen'
226 ) {
227 add_action(
228 'admin_notices',
229 create_function(
230 '',
231 'echo \'<div id="message" class="error"><p><strong>'.
232 TXT_UAM_FOPEN_WITHOUT_SAVEMODE_OFF.
233 '</strong></p></div>\';'
234 )
235 );
236 }
237
238 $oCurUserData = get_userdata($oCurrentUser->ID);
239 $oUamAccessHandler = $oUserAccessManager->getAccessHandler();
240
241 if ($oUamAccessHandler->checkUserAccess()) {
242 //TODO
243 /**
244 * --- BOF ---
245 * Not the best way to handle full user access capabilities seems
246 * to be the right way, but it is way difficult.
247 */
248
249 //Admin main menu
250 if (function_exists('add_menu_page')) {
251 add_menu_page('User Access Manager', 'UAM', 'manage_options', 'uam_usergroup', array($oUserAccessManager, 'printAdminPage'), 'div');
252 }
253
254 //Admin sub menus
255 if (function_exists('add_submenu_page')) {
256 add_submenu_page('uam_usergroup', TXT_UAM_MANAGE_GROUP, TXT_UAM_MANAGE_GROUP, 'read', 'uam_usergroup', array($oUserAccessManager, 'printAdminPage'));
257 add_submenu_page('uam_usergroup', TXT_UAM_SETTINGS, TXT_UAM_SETTINGS, 'read', 'uam_settings', array($oUserAccessManager, 'printAdminPage'));
258 add_submenu_page('uam_usergroup', TXT_UAM_SETUP, TXT_UAM_SETUP, 'read', 'uam_setup', array($oUserAccessManager, 'printAdminPage'));
259 add_submenu_page('uam_usergroup', TXT_UAM_ABOUT, TXT_UAM_ABOUT, 'read', 'uam_about', array($oUserAccessManager, 'printAdminPage'));
260
261 do_action('uam_add_submenu');
262 }
263 /**
264 * --- EOF ---
265 */
266 }
267
268 if ($oUamAccessHandler->checkUserAccess()
269 || $aUamOptions['authors_can_add_posts_to_groups'] == 'true'
270 ) {
271 //Admin meta boxes
272 if (function_exists('add_meta_box')) {
273 $aPostableTypes = $oUamAccessHandler->getPostableTypes();
274
275 foreach ($aPostableTypes as $sPostableType) {
276 add_meta_box('uma_post_access', 'Access', array($oUserAccessManager, 'editPostContent'), $sPostableType, 'side');
277 }
278
279 /*add_meta_box('uma_post_access', 'Access', array($oUserAccessManager, 'editPostContent'), 'post', 'side');
280 add_meta_box('uma_post_access', 'Access', array($oUserAccessManager, 'editPostContent'), 'page', 'side');*/
281 }
282 }
283 }
284 }
285
286 if (!function_exists("userAccessManagerUninstall")) {
287 function userAccessManagerUninstall() {
288 $oUserAccessManager = new UserAccessManager();
289 $oUserAccessManager->uninstall();
290 }
291 }
292
293 if (isset($oUserAccessManager)) {
294 //install
295 if (function_exists('register_activation_hook')) {
296 register_activation_hook(__FILE__, array($oUserAccessManager, 'install'));
297 }
298
299 //uninstall
300 if (function_exists('register_uninstall_hook')) {
301 register_uninstall_hook(__FILE__, 'userAccessManagerUninstall');
302 } elseif (function_exists('register_deactivation_hook')) {
303 //Fallback
304 register_deactivation_hook(__FILE__, array($oUserAccessManager, 'uninstall'));
305 }
306
307 //deactivation
308 if (function_exists('register_deactivation_hook')) {
309 register_deactivation_hook(__FILE__, array($oUserAccessManager, 'deactivate'));
310 }
311
312 //Redirect
313 $aUamOptions = $oUserAccessManager->getAdminOptions();
314
315 if ($aUamOptions['redirect'] != 'false' || isset($_GET['uamgetfile'])) {
316 add_filter('wp_headers', array($oUserAccessManager, 'redirect'), 10, 2);
317 }
318
319 //Actions
320 if (function_exists('add_action')) {
321 add_action('wp_print_scripts', array($oUserAccessManager, 'addScripts'));
322 add_action('wp_print_styles', array($oUserAccessManager, 'addStyles'));
323 add_action('admin_init', 'userAccessManagerAP');
324 add_action('admin_menu', 'userAccessManagerAPMenu');
325 }
326
327 //Filters
328 if (function_exists('add_filter')) {
329 add_filter('wp_get_attachment_thumb_url', array($oUserAccessManager, 'getFileUrl'), 10, 2);
330 add_filter('wp_get_attachment_url', array($oUserAccessManager, 'getFileUrl'), 10, 2);
331 add_filter('the_posts', array($oUserAccessManager, 'showPost'));
332 add_filter('posts_where_paged', array($oUserAccessManager, 'showPostSql'));
333 add_filter('wp_get_nav_menu_items', array($oUserAccessManager, 'showCustomMenu'));
334 add_filter('comments_array', array($oUserAccessManager, 'showComment'));
335 add_filter('the_comments', array($oUserAccessManager, 'showComment'));
336 add_filter('get_pages', array($oUserAccessManager, 'showPage'));
337 add_filter('get_terms', array($oUserAccessManager, 'showTerms'), 10, 2);
338 add_filter('get_next_post_where', array($oUserAccessManager, 'showNextPreviousPost'));
339 add_filter('get_previous_post_where', array($oUserAccessManager, 'showNextPreviousPost'));
340 add_filter('post_link', array($oUserAccessManager, 'cachePostLinks'), 10, 2);
341 add_filter('edit_post_link', array($oUserAccessManager, 'showGroupMembership'), 10, 2);
342 add_filter('parse_query', array($oUserAccessManager, 'parseQuery'));
343 add_filter('getarchives_where', array($oUserAccessManager, 'showPostSql'));
344 add_filter('wpseo_sitemap_entry', array($oUserAccessManager, 'wp_seo_url'), 1, 3); // Yaost Sitemap Plugin
345 }
346 }
347
348 //Add the cli interface to the known commands
349 if (defined('WP_CLI') && WP_CLI) {
350 include __DIR__.'/includes/wp-cli.php';
351 }