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

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

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