PluginProbe
User Access Manager / 1.1.4
User Access Manager v1.1.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.1.4, at user-access-manager.php

328 lines 12.3 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.1.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-2010 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(
25 'user-access-manager',
26 false,
27 'user-access-manager/lang'
28 );
29
30 define(
31 'UAM_URLPATH',
32 WP_PLUGIN_URL.'/user-access-manager/'
33 );
34
35 if (defined('UAM_LOCAL_DEBUG')) {
36 //ONLY FOR MY LOCAL DEBUG
37 define(
38 'UAM_REALPATH',
39 '/'.plugin_basename(dirname(__FILE__)).'/'
40 );
41 } else {
42 define(
43 'UAM_REALPATH',
44 WP_PLUGIN_DIR.'/'.plugin_basename(dirname(__FILE__)).'/'
45 );
46 }
47
48
49 //Defines
50 require_once 'includes/database.define.php';
51 require_once 'includes/language.define.php';
52
53
54 //Check requirements
55 $stop = false;
56
57 //Check php version
58 $phpVersion = phpversion();
59
60 if (version_compare($phpVersion, "5.0") === -1) {
61 add_action(
62 'admin_notices',
63 create_function(
64 '',
65 'echo \'<div id="message" class="error"><p><strong>'.
66 sprintf(TXT_UAM_PHP_VERSION_TO_LOW, $phpVersion).
67 '</strong></p></div>\';'
68 )
69 );
70
71 $stop = true;
72 }
73
74 //Check wordpress version
75 global $wp_version;
76
77 if (version_compare($wp_version, "3.0") === -1) {
78 add_action(
79 'admin_notices',
80 create_function(
81 '',
82 'echo \'<div id="message" class="error"><p><strong>'.
83 sprintf(TXT_UAM_WORDPRESS_VERSION_TO_LOW, $wp_version).
84 '</strong></p></div>\';'
85 )
86 );
87
88 $stop = true;
89 }
90
91 //If we have a error stop plugin.
92 if ($stop) {
93 return;
94 }
95
96
97 //Classes
98 require_once 'class/UserAccessManager.class.php';
99 require_once 'class/UamUserGroup.class.php';
100 require_once 'class/UamAccessHandler.class.php';
101
102 if (class_exists("UserAccessManager")) {
103 $userAccessManager = new UserAccessManager();
104 }
105
106 //Initialize the admin panel
107 if (!function_exists("userAccessManagerAP")) {
108 /**
109 * Creates the filters and actions for the admin panel
110 *
111 * @return null;
112 */
113 function userAccessManagerAP()
114 {
115 global $userAccessManager,
116 $current_user;
117
118 if (!isset($userAccessManager)) {
119 return;
120 }
121
122 $userAccessManager->setAtAdminPanel();
123 $uamOptions = $userAccessManager->getAdminOptions();
124
125 if ($userAccessManager->isDatabaseUpdateNecessary()) {
126 $link = 'admin.php?page=uam_setup';
127
128 add_action(
129 'admin_notices',
130 create_function(
131 '',
132 'echo \'<div id="message" class="error"><p><strong>'.
133 sprintf(TXT_UAM_NEED_DATABASE_UPDATE, $link).
134 '</strong></p></div>\';'
135 )
136 );
137 }
138
139 get_currentuserinfo();
140 $curUserdata = get_userdata($current_user->ID);
141 $uamAccessHandler = $userAccessManager->getAccessHandler();
142
143 if ($uamAccessHandler->checkUserAccess()
144 || $uamOptions['authors_can_add_posts_to_groups'] == 'true'
145 ) {
146 //Admin actions
147 if (function_exists('add_action')) {
148 add_action('admin_print_styles', array(&$userAccessManager, 'addStyles'));
149 add_action('wp_print_scripts', array(&$userAccessManager, 'addScripts'));
150
151 add_action('manage_posts_custom_column', array(&$userAccessManager, 'addPostColumn'), 10, 2);
152 add_action('manage_pages_custom_column', array(&$userAccessManager, 'addPostColumn'), 10, 2);
153 add_action('save_post', array(&$userAccessManager, 'savePostData'));
154
155 add_action('manage_media_custom_column', array(&$userAccessManager, 'addPostColumn'), 10, 2);
156
157 //Actions are only called when the attachment content is modified so we can't use it.
158 //add_action('add_attachment', array(&$userAccessManager, 'savePostData'));
159 //add_action('edit_attachment', array(&$userAccessManager, 'savePostData'));
160
161 add_action('edit_user_profile', array(&$userAccessManager, 'showUserProfile'));
162 add_action('profile_update', array(&$userAccessManager, 'saveUserData'));
163
164 add_action('edit_category_form', array(&$userAccessManager, 'showCategoryEditForm'));
165 add_action('create_category', array(&$userAccessManager, 'saveCategoryData'));
166 add_action('edit_category', array(&$userAccessManager, 'saveCategoryData'));
167 }
168
169 //Admin filters
170 if (function_exists('add_filter')) {
171 //The filter we use instead of add|edit_attachment action, reason see top
172 add_filter('attachment_fields_to_save', array(&$userAccessManager, 'saveAttachmentData'));
173
174 add_filter('manage_posts_columns', array(&$userAccessManager, 'addPostColumnsHeader'));
175 add_filter('manage_pages_columns', array(&$userAccessManager, 'addPostColumnsHeader'));
176
177 add_filter('manage_users_columns', array(&$userAccessManager, 'addUserColumnsHeader'), 10);
178 add_filter('manage_users_custom_column', array(&$userAccessManager, 'addUserColumn'), 10, 3);
179
180 add_filter('manage_edit-category_columns', array(&$userAccessManager, 'addCategoryColumnsHeader'));
181 add_filter('manage_category_custom_column', array(&$userAccessManager, 'addCategoryColumn'), 10, 3);
182 }
183
184 if ($uamOptions['lock_file'] == 'true') {
185 add_action('media_meta', array(&$userAccessManager, 'showMediaFile'), 10, 2);
186 add_filter('manage_media_columns', array(&$userAccessManager, 'addPostColumnsHeader'));
187 }
188 }
189
190 //Clean up at deleting should be always done.
191 if (function_exists('add_action')) {
192 add_action('update_option_permalink_structure', array(&$userAccessManager, 'updatePermalink'));
193 add_action('wp_dashboard_setup', array(&$userAccessManager, 'setupAdminDashboard'));
194 add_action('delete_post', array(&$userAccessManager, 'removePostData'));
195 add_action('delete_attachment', array(&$userAccessManager, 'removePostData'));
196 add_action('delete_user', array(&$userAccessManager, 'removeUserData'));
197 add_action('delete_category', array(&$userAccessManager, 'removeCategoryData'), 10, 2);
198 }
199
200 $userAccessManager->noRightsToEditContent();
201 }
202 }
203
204 if (!function_exists("userAccessManagerAPMenu")) {
205 /**
206 * Creates the menu at the admin panel
207 *
208 * @return null;
209 */
210 function userAccessManagerAPMenu()
211 {
212 global $userAccessManager,
213 $current_user;
214
215 if (!isset($userAccessManager)) {
216 return;
217 }
218
219 $uamOptions = $userAccessManager->getAdminOptions();
220
221 if (ini_get('safe_mode')
222 && $uamOptions['download_type'] == 'fopen'
223 ) {
224 add_action(
225 'admin_notices',
226 create_function(
227 '',
228 'echo \'<div id="message" class="error"><p><strong>'.
229 TXT_UAM_FOPEN_WITHOUT_SAVEMODE_OFF.
230 '</strong></p></div>\';'
231 )
232 );
233 }
234
235 $curUserdata = get_userdata($current_user->ID);
236 $uamAccessHandler = $userAccessManager->getAccessHandler();
237
238 if ($uamAccessHandler->checkUserAccess()) {
239 //TODO
240 /**
241 * --- BOF ---
242 * Not the best way to handle full user access capabilities seems
243 * to be the right way, but it is way difficult.
244 */
245
246 //Admin main menu
247 if (function_exists('add_menu_page')) {
248 add_menu_page('User Access Manager', 'UAM', 'read', 'uam_usergroup', array(&$userAccessManager, 'printAdminPage'), 'div');
249 }
250
251 //Admin sub menus
252 if (function_exists('add_submenu_page')) {
253 add_submenu_page('uam_usergroup', TXT_UAM_MANAGE_GROUP, TXT_UAM_MANAGE_GROUP, 'read', 'uam_usergroup', array(&$userAccessManager, 'printAdminPage'));
254 add_submenu_page('uam_usergroup', TXT_UAM_SETTINGS, TXT_UAM_SETTINGS, 'read', 'uam_settings', array(&$userAccessManager, 'printAdminPage'));
255 add_submenu_page('uam_usergroup', TXT_UAM_SETUP, TXT_UAM_SETUP, 'read', 'uam_setup', array(&$userAccessManager, 'printAdminPage'));
256 add_submenu_page('uam_usergroup', TXT_UAM_ABOUT, TXT_UAM_ABOUT, 'read', 'uam_about', array(&$userAccessManager, 'printAdminPage'));
257
258 do_action('uam_add_submenu');
259 }
260 /**
261 * --- EOF ---
262 */
263 }
264
265 if ($uamAccessHandler->checkUserAccess()
266 || $uamOptions['authors_can_add_posts_to_groups'] == 'true'
267 ) {
268 //Admin meta boxes
269 if (function_exists('add_meta_box')) {
270 add_meta_box('uma_post_access', 'Access', array(&$userAccessManager, 'editPostContent'), 'post', 'side');
271 add_meta_box('uma_post_access', 'Access', array(&$userAccessManager, 'editPostContent'), 'page', 'side');
272 }
273 }
274 }
275 }
276
277 if (isset($userAccessManager)) {
278 //install
279 if (function_exists('register_activation_hook')) {
280 register_activation_hook(__FILE__, array(&$userAccessManager, 'install'));
281 }
282
283 //uninstall
284 if (function_exists('register_uninstall_hook')) {
285 register_uninstall_hook(__FILE__, array(&$userAccessManager, 'uninstall'));
286 } elseif (function_exists('register_deactivation_hook')) {
287 //Fallback
288 register_deactivation_hook(__FILE__, array(&$userAccessManager, 'uninstall'));
289 }
290
291 //deactivation
292 if (function_exists('register_deactivation_hook')) {
293 register_deactivation_hook(__FILE__, array(&$userAccessManager, 'deactivate'));
294 }
295
296 //Redirect
297 $uamOptions = $userAccessManager->getAdminOptions();
298
299 if ($uamOptions['redirect'] != 'false' || isset($_GET['uamgetfile'])) {
300 add_filter('wp_headers', array(&$userAccessManager, 'redirect'), 10, 2);
301 }
302
303 //Actions
304 if (function_exists('add_action')) {
305 add_action('wp_print_scripts', array(&$userAccessManager, 'addScripts'));
306 add_action('wp_print_styles', array(&$userAccessManager, '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(&$userAccessManager, 'getFileUrl'), 10, 2);
314 add_filter('wp_get_attachment_url', array(&$userAccessManager, 'getFileUrl'), 10, 2);
315 add_filter('the_posts', array(&$userAccessManager, 'showPost'));
316 add_filter('posts_where_paged', array(&$userAccessManager, 'showPostSql'));
317 add_filter('wp_get_nav_menu_items', array(&$userAccessManager, 'showCustomMenu'));
318 add_filter('comments_array', array(&$userAccessManager, 'showComment'));
319 add_filter('get_pages', array(&$userAccessManager, 'showPage'));
320 add_filter('get_terms', array(&$userAccessManager, 'showTerms'), 10, 2);
321 add_filter('get_next_post_where', array(&$userAccessManager, 'showNextPreviousPost'));
322 add_filter('get_previous_post_where', array(&$userAccessManager, 'showNextPreviousPost'));
323 add_filter('post_link', array(&$userAccessManager, 'cachePostLinks'), 10, 2);
324 add_filter('edit_post_link', array(&$userAccessManager, 'showGroupMembership'), 10, 2);
325 add_filter('parse_query', array(&$userAccessManager, 'parseQuery'));
326 add_filter('getarchives_where', array(&$userAccessManager, 'showPostSql'));
327 }
328 }