PluginProbe
User Access Manager / 1.2.7.2
User Access Manager v1.2.7.2
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.2, at user-access-manager.php

352 lines 14.1 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.2
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' => false));
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('edit_category_form', array($oUserAccessManager, 'showCategoryEditForm'));
150 add_action('create_category', array($oUserAccessManager, 'saveCategoryData'));
151 add_action('edit_category', array($oUserAccessManager, 'saveCategoryData'));
152
153 add_action('bulk_edit_custom_box', array($oUserAccessManager, 'addBulkAction'));
154
155
156 //Taxonomies
157 foreach ($aTaxonomies as $sTaxonomy) {
158 add_filter('manage_edit-'.$sTaxonomy.'_columns', array($oUserAccessManager, 'addCategoryColumnsHeader'));
159 add_action('manage_'.$sTaxonomy.'_custom_column', array($oUserAccessManager, 'addCategoryColumn'), 10, 3);
160 add_action($sTaxonomy.'_add_form_fields', array($oUserAccessManager, 'showCategoryEditForm'));
161 add_action($sTaxonomy.'_edit_form_fields', array($oUserAccessManager, 'showCategoryEditForm'));
162 add_action('create_'.$sTaxonomy, array($oUserAccessManager, 'saveCategoryData'));
163 add_action('edit_'.$sTaxonomy, array($oUserAccessManager, 'saveCategoryData'));
164 }
165 }
166
167 //Admin filters
168 if (function_exists('add_filter')) {
169 //The filter we use instead of add|edit_attachment action, reason see top
170 add_filter('attachment_fields_to_save', array($oUserAccessManager, 'saveAttachmentData'));
171
172 add_filter('manage_posts_columns', array($oUserAccessManager, 'addPostColumnsHeader'));
173 add_filter('manage_pages_columns', array($oUserAccessManager, 'addPostColumnsHeader'));
174
175 add_filter('manage_users_columns', array($oUserAccessManager, 'addUserColumnsHeader'), 10);
176 add_filter('manage_users_custom_column', array($oUserAccessManager, 'addUserColumn'), 10, 3);
177
178 add_filter('manage_edit-category_columns', array($oUserAccessManager, 'addCategoryColumnsHeader'));
179 add_filter('manage_category_custom_column', array($oUserAccessManager, 'addCategoryColumn'), 10, 3);
180 }
181
182 if ($aUamOptions['lock_file'] == 'true') {
183 add_action('media_meta', array($oUserAccessManager, 'showMediaFile'), 10, 2);
184 add_filter('manage_media_columns', array($oUserAccessManager, 'addPostColumnsHeader'));
185 }
186 }
187
188 //Clean up at deleting should always be done.
189 if (function_exists('add_action')) {
190 add_action('update_option_permalink_structure', array($oUserAccessManager, 'updatePermalink'));
191 add_action('wp_dashboard_setup', array($oUserAccessManager, 'setupAdminDashboard'));
192 add_action('delete_post', array($oUserAccessManager, 'removePostData'));
193 add_action('delete_attachment', array($oUserAccessManager, 'removePostData'));
194 add_action('delete_user', array($oUserAccessManager, 'removeUserData'));
195 add_action('delete_category', array($oUserAccessManager, 'removeCategoryData'), 10, 2);
196
197 // taxonomies
198
199 foreach ($aTaxonomies as $sTaxonomy) {
200 add_action('delete_'.$sTaxonomy, array($oUserAccessManager, 'removeCategoryData'));
201 }
202 }
203
204 $oUserAccessManager->noRightsToEditContent();
205 }
206 }
207
208 if (!function_exists("userAccessManagerAPMenu")) {
209 /**
210 * Creates the menu at the admin panel
211 *
212 * @return null;
213 */
214 function userAccessManagerAPMenu()
215 {
216 global $oUserAccessManager;
217 $oCurrentUser = $oUserAccessManager->getCurrentUser();
218
219 if (!isset($oUserAccessManager)) {
220 return;
221 }
222
223 $aUamOptions = $oUserAccessManager->getAdminOptions();
224
225 if (ini_get('safe_mode')
226 && $aUamOptions['download_type'] == 'fopen'
227 ) {
228 add_action(
229 'admin_notices',
230 create_function(
231 '',
232 'echo \'<div id="message" class="error"><p><strong>'.
233 TXT_UAM_FOPEN_WITHOUT_SAVEMODE_OFF.
234 '</strong></p></div>\';'
235 )
236 );
237 }
238
239 $oCurUserData = get_userdata($oCurrentUser->ID);
240 $oUamAccessHandler = $oUserAccessManager->getAccessHandler();
241
242 if ($oUamAccessHandler->checkUserAccess()) {
243 //TODO
244 /**
245 * --- BOF ---
246 * Not the best way to handle full user access capabilities seems
247 * to be the right way, but it is way difficult.
248 */
249
250 //Admin main menu
251 if (function_exists('add_menu_page')) {
252 add_menu_page('User Access Manager', 'UAM', 'manage_options', 'uam_usergroup', array($oUserAccessManager, 'printAdminPage'), 'div');
253 }
254
255 //Admin sub menus
256 if (function_exists('add_submenu_page')) {
257 add_submenu_page('uam_usergroup', TXT_UAM_MANAGE_GROUP, TXT_UAM_MANAGE_GROUP, 'read', 'uam_usergroup', array($oUserAccessManager, 'printAdminPage'));
258 add_submenu_page('uam_usergroup', TXT_UAM_SETTINGS, TXT_UAM_SETTINGS, 'read', 'uam_settings', array($oUserAccessManager, 'printAdminPage'));
259 add_submenu_page('uam_usergroup', TXT_UAM_SETUP, TXT_UAM_SETUP, 'read', 'uam_setup', array($oUserAccessManager, 'printAdminPage'));
260 add_submenu_page('uam_usergroup', TXT_UAM_ABOUT, TXT_UAM_ABOUT, 'read', 'uam_about', array($oUserAccessManager, 'printAdminPage'));
261
262 do_action('uam_add_submenu');
263 }
264 /**
265 * --- EOF ---
266 */
267 }
268
269 if ($oUamAccessHandler->checkUserAccess()
270 || $aUamOptions['authors_can_add_posts_to_groups'] == 'true'
271 ) {
272 //Admin meta boxes
273 if (function_exists('add_meta_box')) {
274 $aPostableTypes = $oUamAccessHandler->getPostableTypes();
275
276 foreach ($aPostableTypes as $sPostableType) {
277 add_meta_box('uma_post_access', 'Access', array($oUserAccessManager, 'editPostContent'), $sPostableType, 'side');
278 }
279
280 /*add_meta_box('uma_post_access', 'Access', array($oUserAccessManager, 'editPostContent'), 'post', 'side');
281 add_meta_box('uma_post_access', 'Access', array($oUserAccessManager, 'editPostContent'), 'page', 'side');*/
282 }
283 }
284 }
285 }
286
287 if (!function_exists("userAccessManagerUninstall")) {
288 function userAccessManagerUninstall() {
289 $oUserAccessManager = new UserAccessManager();
290 $oUserAccessManager->uninstall();
291 }
292 }
293
294 if (isset($oUserAccessManager)) {
295 //install
296 if (function_exists('register_activation_hook')) {
297 register_activation_hook(__FILE__, array($oUserAccessManager, 'install'));
298 }
299
300 //uninstall
301 if (function_exists('register_uninstall_hook')) {
302 register_uninstall_hook(__FILE__, 'userAccessManagerUninstall');
303 } elseif (function_exists('register_deactivation_hook')) {
304 //Fallback
305 register_deactivation_hook(__FILE__, array($oUserAccessManager, 'uninstall'));
306 }
307
308 //deactivation
309 if (function_exists('register_deactivation_hook')) {
310 register_deactivation_hook(__FILE__, array($oUserAccessManager, 'deactivate'));
311 }
312
313 //Redirect
314 $aUamOptions = $oUserAccessManager->getAdminOptions();
315
316 if ($aUamOptions['redirect'] != 'false' || isset($_GET['uamgetfile'])) {
317 add_filter('wp_headers', array($oUserAccessManager, 'redirect'), 10, 2);
318 }
319
320 //Actions
321 if (function_exists('add_action')) {
322 add_action('wp_print_scripts', array($oUserAccessManager, 'addScripts'));
323 add_action('wp_print_styles', array($oUserAccessManager, 'addStyles'));
324 add_action('admin_init', 'userAccessManagerAP');
325 add_action('admin_menu', 'userAccessManagerAPMenu');
326 }
327
328 //Filters
329 if (function_exists('add_filter')) {
330 add_filter('wp_get_attachment_thumb_url', array($oUserAccessManager, 'getFileUrl'), 10, 2);
331 add_filter('wp_get_attachment_url', array($oUserAccessManager, 'getFileUrl'), 10, 2);
332 add_filter('the_posts', array($oUserAccessManager, 'showPost'));
333 add_filter('posts_where_paged', array($oUserAccessManager, 'showPostSql'));
334 add_filter('wp_get_nav_menu_items', array($oUserAccessManager, 'showCustomMenu'));
335 add_filter('comments_array', array($oUserAccessManager, 'showComment'));
336 add_filter('the_comments', array($oUserAccessManager, 'showComment'));
337 add_filter('get_pages', array($oUserAccessManager, 'showPage'));
338 add_filter('get_terms', array($oUserAccessManager, 'showTerms'), 10, 2);
339 add_filter('get_next_post_where', array($oUserAccessManager, 'showNextPreviousPost'));
340 add_filter('get_previous_post_where', array($oUserAccessManager, 'showNextPreviousPost'));
341 add_filter('post_link', array($oUserAccessManager, 'cachePostLinks'), 10, 2);
342 add_filter('edit_post_link', array($oUserAccessManager, 'showGroupMembership'), 10, 2);
343 add_filter('parse_query', array($oUserAccessManager, 'parseQuery'));
344 add_filter('getarchives_where', array($oUserAccessManager, 'showPostSql'));
345 add_filter('wpseo_sitemap_entry', array($oUserAccessManager, 'wp_seo_url'), 1, 3); // Yaost Sitemap Plugin
346 }
347 }
348
349 //Add the cli interface to the known commands
350 if (defined('WP_CLI') && WP_CLI) {
351 include __DIR__.'/includes/wp-cli.php';
352 }