PluginProbe
User Access Manager / 1.2.5.0
User Access Manager v1.2.5.0
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.5.0, at user-access-manager.php

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