PluginProbe
User Access Manager / 2.0.3
User Access Manager v2.0.3
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
← All changes | user-access-manager.php +202 -214 1.02.0.3 View file →
@@ -1,251 +1,239 @@
1 1 <?php
2 -
3 2 /**
4 3 * Plugin Name: User Access Manager
5 - * Plugin URI: http://www.gm-alex.de/projects/wordpress/plugins/user-access-manager/
6 - * Author URI: http://www.gm-alex.de/
7 - * Version: 1.0
4 + * Plugin URI: https://wordpress.org/plugins/user-access-manager/
5 + * Author URI: https://twitter.com/GM_Alex
6 + * Version: 2.0.3
8 7 * Author: Alexander Schneider
9 8 * Description: Manage the access to your posts, pages, categories and files.
10 - *
9 + * Text Domain: user-access-manager
10 + *
11 11 * user-access-manager.php
12 12 *
13 + * The the user access manager main file.
14 + *
13 15 * PHP versions 5
14 - *
15 - * @category UserAccessManager
16 - * @package UserAccessManager
16 + *
17 17 * @author Alexander Schneider <[email protected]>
18 - * @copyright 2008-2010 Alexander Schneider
18 + * @copyright 2008-2017 Alexander Schneider
19 19 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2
20 - * @version SVN: $Id$
20 + * @version SVN: $id$
21 21 * @link http://wordpress.org/extend/plugins/user-access-manager/
22 -*/
22 + */
23 +//Defines
24 +require_once 'includes/language.php';
25 +require_once 'autoload.php';
23 26
24 -//Paths
25 -load_plugin_textdomain(
26 - 'user-access-manager',
27 - false,
28 - 'user-access-manager/lang'
29 -);
27 +//Check requirements
28 +$stop = false;
30 29
31 -define(
32 - 'UAM_URLPATH',
33 - WP_PLUGIN_URL.'/user-access-manager/'
34 -);
30 +//Check php version
31 +$phpVersion = phpversion();
35 32
36 -if (defined('UAM_LOCAL_DEBUG')) {
37 - //ONLY FOR MY LOCAL DEBUG
38 - define(
39 - 'UAM_REALPATH',
40 - '/'.plugin_basename(dirname(__FILE__)).'/'
33 +if (version_compare($phpVersion, '5.4') === -1) {
34 + add_action(
35 + 'admin_notices',
36 + function () {
37 + echo '<div id="message" class="error"><p><strong>'
38 + .sprintf(TXT_UAM_PHP_VERSION_TO_LOW, phpversion())
39 + .'</strong></p></div>';
40 + }
41 41 );
42 -} else {
43 - define(
44 - 'UAM_REALPATH',
45 - WP_PLUGIN_DIR.'/'.plugin_basename(dirname(__FILE__)).'/'
42 +
43 + $stop = true;
44 +}
45 +
46 +//Check wordpress version
47 +global $wp_version;
48 +
49 +if (version_compare($wp_version, '4.6') === -1) {
50 + add_action(
51 + 'admin_notices',
52 + function () use ($wp_version) {
53 + echo '<div id="message" class="error"><p><strong>'
54 + .sprintf(TXT_UAM_WORDPRESS_VERSION_TO_LOW, $wp_version)
55 + .'</strong></p></div>';
56 + }
46 57 );
58 +
59 + $stop = true;
47 60 }
48 61
49 -//Defines
50 -require_once 'includes/database.define.php';
51 -require_once 'includes/language.define.php';
62 +//If we have a error stop plugin.
63 +if ($stop === true) {
64 + return;
65 +}
52 66
67 +//Load language
68 +$locale = apply_filters('plugin_locale', get_locale(), 'user-access-manager');
69 +load_textdomain('user-access-manager', WP_LANG_DIR.'/user-access-manager/user-access-manager-'.$locale.'.mo');
70 +load_plugin_textdomain('user-access-manager', false, plugin_basename(dirname(__FILE__)).'/languages');
71 +
53 72 //Classes
54 -require_once 'class/UserAccessManager.class.php';
55 -require_once 'class/UamUserGroup.class.php';
56 -require_once 'class/UamAccessHandler.class.php';
73 +use UserAccessManager\AccessHandler\AccessHandler;
74 +use UserAccessManager\Cache\Cache;
75 +use UserAccessManager\Config\Config;
76 +use UserAccessManager\Config\ConfigParameterFactory;
77 +use UserAccessManager\Controller\ControllerFactory;
78 +use UserAccessManager\Database\Database;
79 +use UserAccessManager\FileHandler\FileHandler;
80 +use UserAccessManager\FileHandler\FileObjectFactory;
81 +use UserAccessManager\FileHandler\FileProtectionFactory;
82 +use UserAccessManager\ObjectHandler\ObjectHandler;
83 +use UserAccessManager\SetupHandler\SetupHandler;
84 +use UserAccessManager\UserAccessManager;
85 +use UserAccessManager\UserGroup\UserGroupFactory;
86 +use UserAccessManager\Util\Util;
87 +use UserAccessManager\Wrapper\Php;
88 +use UserAccessManager\Wrapper\Wordpress;
57 89
58 -if (class_exists("UserAccessManager")) {
59 - $userAccessManager = new UserAccessManager();
60 -}
90 +global $userAccessManager;
61 91
62 -//Initialize the admin panel
63 -if (!function_exists("userAccessManagerAP")) {
64 - /**
65 - * Creates the filters and actions for the admin panel
66 - *
67 - * @return null;
68 - */
69 - function userAccessManagerAP()
70 - {
71 - global $userAccessManager,
72 - $uamUserGroup,
73 - $uamAccessHandler,
74 - $current_user;
75 -
76 - if (!isset($userAccessManager)) {
77 - return;
78 - }
79 -
80 - $userAccessManager->atAdminPanel = true;
81 - $uamOptions = $userAccessManager->getAdminOptions();
82 - $userAccessManager->update();
83 -
84 - get_currentuserinfo();
85 - $curUserdata = get_userdata($current_user->ID);
86 -
87 - if ($userAccessManager->getAccessHandler()->checkUserAccess()
88 - || $uamOptions['authors_can_add_posts_to_groups'] == 'true'
89 - ) {
90 - //Admin actions
91 - if (function_exists('add_action')) {
92 - add_action('admin_print_styles', array(&$userAccessManager, 'addStyles'));
93 - add_action('wp_print_scripts', array(&$userAccessManager, 'addScripts'));
94 -
95 - add_action('manage_posts_custom_column', array(&$userAccessManager, 'addPostColumn'), 10, 2);
96 - add_action('manage_pages_custom_column', array(&$userAccessManager, 'addPostColumn'), 10, 2);
97 - add_action('save_post', array(&$userAccessManager, 'savePostData'));
98 -
99 - add_action('manage_media_custom_column', array(&$userAccessManager, 'addPostColumn'), 10, 2);
100 -
101 - //Actions are only called when the attachment content is modified so we can't use it.
102 - //add_action('add_attachment', array(&$userAccessManager, 'savePostData'));
103 - //add_action('edit_attachment', array(&$userAccessManager, 'savePostData'));
104 -
105 - add_action('edit_user_profile', array(&$userAccessManager, 'showUserProfile'));
106 - add_action('profile_update', array(&$userAccessManager, 'saveUserData'));
107 -
108 - add_action('edit_category_form', array(&$userAccessManager, 'showCategoryEditForm'));
109 - add_action('create_category', array(&$userAccessManager, 'saveCategoryData'));
110 - add_action('edit_category', array(&$userAccessManager, 'saveCategoryData'));
111 - }
112 -
113 - //Admin filters
114 - if (function_exists('add_filter')) {
115 - //The filter we use instead of add|edit_attachment action, reason see top
116 - add_filter('attachment_fields_to_save', array(&$userAccessManager, 'saveAttachmentData'));
117 -
118 - add_filter('manage_posts_columns', array(&$userAccessManager, 'addPostColumnsHeader'));
119 - add_filter('manage_pages_columns', array(&$userAccessManager, 'addPostColumnsHeader'));
120 -
121 - add_filter('manage_users_columns', array(&$userAccessManager, 'addUserColumnsHeader'), 10);
122 - add_filter('manage_users_custom_column', array(&$userAccessManager, 'addUserColumn'), 10, 3);
123 -
124 - add_filter('manage_edit-category_columns', array(&$userAccessManager, 'addCategoryColumnsHeader'));
125 - add_filter('manage_category_custom_column', array(&$userAccessManager, 'addCategoryColumn'), 10, 3);
126 - }
127 -
128 - if ($uamOptions['lock_file'] == 'true') {
129 - add_action('media_meta', array(&$userAccessManager, 'showMediaFile'), 10, 2);
130 - add_filter('manage_media_columns', array(&$userAccessManager, 'addPostColumnsHeader'));
131 - }
132 - }
133 -
134 - //Clean up at deleting should be always done.
135 - if (function_exists('add_action')) {
136 - add_action('update_option_permalink_structure', array(&$userAccessManager, 'updatePermalink'));
137 - add_action('wp_dashboard_setup', array(&$userAccessManager, 'setupAdminDashboard'));
138 - add_action('delete_post', array(&$userAccessManager, 'removePostData'));
139 - add_action('delete_attachment', array(&$userAccessManager, 'removePostData'));
140 - add_action('delete_user', array(&$userAccessManager, 'removeUserData'));
141 - add_action('delete_category', array(&$userAccessManager, 'removeCategoryData'), 10, 2);
142 - }
143 -
144 - $userAccessManager->noRightsToEditContent();
92 +function initUserAccessManger()
93 +{
94 + $php = new Php();
95 + $wordpress = new Wordpress();
96 + $util = new Util($php);
97 + $cache = new Cache();
98 + $configParameterFactory = new ConfigParameterFactory();
99 + $database = new Database($wordpress);
100 + $objectHandler = new ObjectHandler($wordpress, $database);
101 + $config = new Config($wordpress, $objectHandler, $configParameterFactory, __FILE__);
102 + $fileObjectFactory = new FileObjectFactory();
103 + $userGroupFactory = new UserGroupFactory(
104 + $php,
105 + $wordpress,
106 + $database,
107 + $config,
108 + $util,
109 + $objectHandler
110 + );
111 + $accessHandler = new AccessHandler(
112 + $wordpress,
113 + $config,
114 + $cache,
115 + $database,
116 + $objectHandler,
117 + $util,
118 + $userGroupFactory
119 + );
120 + $fileProtectionFactory = new FileProtectionFactory(
121 + $php,
122 + $wordpress,
123 + $config,
124 + $util
125 + );
126 + $fileHandler = new FileHandler(
127 + $php,
128 + $wordpress,
129 + $config,
130 + $fileProtectionFactory
131 + );
132 + $setupHandler = new SetupHandler(
133 + $wordpress,
134 + $database,
135 + $objectHandler,
136 + $fileHandler
137 + );
138 + $controllerFactory = new ControllerFactory(
139 + $php,
140 + $wordpress,
141 + $database,
142 + $config,
143 + $util,
144 + $cache,
145 + $objectHandler,
146 + $accessHandler,
147 + $userGroupFactory,
148 + $fileHandler,
149 + $fileObjectFactory,
150 + $setupHandler
151 + );
152 +
153 + $userAccessManager = new UserAccessManager(
154 + $php,
155 + $wordpress,
156 + $util,
157 + $cache,
158 + $config,
159 + $database,
160 + $objectHandler,
161 + $accessHandler,
162 + $fileHandler,
163 + $setupHandler,
164 + $userGroupFactory,
165 + $controllerFactory,
166 + $configParameterFactory,
167 + $fileProtectionFactory,
168 + $fileObjectFactory
169 + );
170 +
171 + $wordpress->doAction('uam_init', [$userAccessManager]);
172 +
173 + //install
174 + if (function_exists('register_activation_hook')) {
175 + register_activation_hook(__FILE__, [$setupHandler, 'install']);
145 176 }
146 -}
147 177
148 -if (!function_exists("userAccessManagerAPMenu")) {
149 - /**
150 - * Creates the menu at the admin panel
151 - *
152 - * @return null;
153 - */
154 - function userAccessManagerAPMenu()
155 - {
156 - global $userAccessManager,
157 - $current_user;
158 -
159 - if (!isset($userAccessManager)) {
160 - return;
178 + if (!function_exists("userAccessManagerUninstall")) {
179 + function userAccessManagerUninstall()
180 + {
181 + $php = new Php();
182 + $wordpress = new Wordpress();
183 + $util = new Util($php);
184 + $configParameterFactory = new ConfigParameterFactory();
185 + $database = new Database($wordpress);
186 + $objectHandler = new ObjectHandler($wordpress, $database);
187 + $config = new Config($wordpress, $objectHandler, $configParameterFactory, __FILE__);
188 +
189 + $fileProtectionFactory = new FileProtectionFactory(
190 + $php,
191 + $wordpress,
192 + $config,
193 + $util
194 + );
195 + $fileHandler = new FileHandler(
196 + $php,
197 + $wordpress,
198 + $config,
199 + $fileProtectionFactory
200 + );
201 + $setupHandler = new SetupHandler(
202 + $wordpress,
203 + $database,
204 + $objectHandler,
205 + $fileHandler
206 + );
207 +
208 + $setupHandler->uninstall();
161 209 }
162 -
163 - $uamOptions = $userAccessManager->getAdminOptions();
164 - $curUserdata = get_userdata($current_user->ID);
165 -
166 - if ($userAccessManager->getAccessHandler()->checkUserAccess()) {
167 - //TODO
168 - /**
169 - * --- BOF ---
170 - * Not the best way to handle full user access capabilities seems
171 - * to be the right way, but it is way difficult.
172 - */
173 -
174 - //Admin main menu
175 - if (function_exists('add_menu_page')) {
176 - add_menu_page('User Access Manager', 'UAM', 'read', 'uam_usergroup', array(&$userAccessManager, 'printAdminPage'), 'div');
177 - }
178 -
179 - //Admin sub menus
180 - if (function_exists('add_submenu_page')) {
181 - add_submenu_page('uam_usergroup', TXT_MANAGE_GROUP, TXT_MANAGE_GROUP, 'read', 'uam_usergroup', array(&$userAccessManager, 'printAdminPage'));
182 - add_submenu_page('uam_usergroup', TXT_SETTINGS, TXT_SETTINGS, 'read', 'uam_settings', array(&$userAccessManager, 'printAdminPage'));
183 - add_submenu_page('uam_usergroup', TXT_SETUP, TXT_SETUP, 'read', 'uam_setup', array(&$userAccessManager, 'printAdminPage'));
184 - add_submenu_page('uam_usergroup', TXT_ABOUT, TXT_ABOUT, 'read', 'uam_about', array(&$userAccessManager, 'printAdminPage'));
185 - }
186 - /**
187 - * --- EOF ---
188 - */
189 - }
190 -
191 - if ($userAccessManager->getAccessHandler()->checkUserAccess()
192 - || $uamOptions['authors_can_add_posts_to_groups'] == 'true'
193 - ) {
194 - //Admin meta boxes
195 - if (function_exists('add_meta_box')) {
196 - add_meta_box('uma_post_access', 'Access', array(&$userAccessManager, 'editPostContent'), 'post', 'side');
197 - add_meta_box('uma_post_access', 'Access', array(&$userAccessManager, 'editPostContent'), 'page', 'side');
198 - }
199 - }
200 210 }
201 -}
202 211
203 -if (isset($userAccessManager)) {
204 - //install
205 - if (function_exists('register_activation_hook')) {
206 - register_activation_hook(__FILE__, array(&$userAccessManager, 'install'));
207 - }
208 -
209 212 //uninstall
210 213 if (function_exists('register_uninstall_hook')) {
211 - register_uninstall_hook(__FILE__, array(&$userAccessManager, 'uninstall'));
214 + register_uninstall_hook(__FILE__, 'userAccessManagerUninstall');
212 215 } elseif (function_exists('register_deactivation_hook')) {
213 216 //Fallback
214 - register_deactivation_hook(__FILE__, array(&$userAccessManager, 'uninstall'));
217 + register_deactivation_hook(__FILE__, 'userAccessManagerUninstall');
215 218 }
216 -
219 +
217 220 //deactivation
218 221 if (function_exists('register_deactivation_hook')) {
219 - register_deactivation_hook(__FILE__, array(&$userAccessManager, 'deactivate'));
222 + register_deactivation_hook(__FILE__, [$setupHandler, 'deactivate']);
220 223 }
221 -
222 - //Redirect
223 - $uamOptions = $userAccessManager->getAdminOptions();
224 -
225 - if ($uamOptions['redirect'] != 'false' || isset($_GET['getfile'])) {
226 - add_action('template_redirect', array(&$userAccessManager, 'redirect'));
224 +
225 + $userAccessManager->addActionsAndFilters();
226 +
227 + //Add the cli interface to the known commands
228 + if (defined('WP_CLI') && WP_CLI) {
229 + $cliWrapper = new \UserAccessManager\Wrapper\WordpressCli();
230 +
231 + $groupCommand = new \UserAccessManager\Command\GroupCommand($cliWrapper, $accessHandler, $userGroupFactory);
232 + \WP_CLI::add_command('uam groups', $groupCommand);
233 +
234 + $objectCommand = new \UserAccessManager\Command\ObjectCommand($cliWrapper, $accessHandler);
235 + \WP_CLI::add_command('uam objects', $objectCommand);
227 236 }
237 +}
228 238
229 - //Actions
230 - if (function_exists('add_action')) {
231 - add_action('wp_print_scripts', array(&$userAccessManager, 'addScripts'));
232 - add_action('wp_print_styles', array(&$userAccessManager, 'addStyles'));
233 - add_action('admin_init', 'userAccessManagerAP');
234 - add_action('admin_menu', 'userAccessManagerAPMenu');
235 - }
236 -
237 - //Filters
238 - if (function_exists('add_filter')) {
239 - add_filter('wp_get_attachment_thumb_url', array(&$userAccessManager, 'getFileUrl'), 10, 2);
240 - add_filter('wp_get_attachment_url', array(&$userAccessManager, 'getFileUrl'), 10, 2);
241 - add_filter('the_posts', array(&$userAccessManager, 'showPost'));
242 - add_filter('wp_get_nav_menu_items', array(&$userAccessManager, 'showCustomMenu'));
243 - add_filter('comments_array', array(&$userAccessManager, 'showComment'));
244 - add_filter('get_pages', array(&$userAccessManager, 'showPage'));
245 - add_filter('get_terms', array(&$userAccessManager, 'showCategory'), 10, 2);
246 - add_filter('get_next_post_where', array(&$userAccessManager, 'showNextPreviousPost'));
247 - add_filter('get_previous_post_where', array(&$userAccessManager, 'showNextPreviousPost'));
248 - //add_filter('the_title', array(&$userAccessManager, 'showTitle'), 10, 2);
249 - add_filter('edit_post_link', array(&$userAccessManager, 'showGroupMembership'), 10, 2);
250 - }
251 -}
239 +initUserAccessManger();