PluginProbe
User Access Manager / 1.1.1.2
User Access Manager v1.1.1.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.1.1.2, at user-access-manager.php

309 lines 11.6 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.1.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-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 ($phpVersion < 5.0) {
61 add_action(
62 'admin_notices',
63 create_function(
64 '',
65 'echo \'<div id="message" class="error"><p><strong>'.
66 sprintf(TXT_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 ($wp_version < 3.0) {
78 add_action(
79 'admin_notices',
80 create_function(
81 '',
82 'echo \'<div id="message" class="error"><p><strong>'.
83 sprintf(TXT_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->atAdminPanel = true;
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_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 $curUserdata = get_userdata($current_user->ID);
220
221 if ($userAccessManager->getAccessHandler()->checkUserAccess()) {
222 //TODO
223 /**
224 * --- BOF ---
225 * Not the best way to handle full user access capabilities seems
226 * to be the right way, but it is way difficult.
227 */
228
229 //Admin main menu
230 if (function_exists('add_menu_page')) {
231 add_menu_page('User Access Manager', 'UAM', 'read', 'uam_usergroup', array(&$userAccessManager, 'printAdminPage'), 'div');
232 }
233
234 //Admin sub menus
235 if (function_exists('add_submenu_page')) {
236 add_submenu_page('uam_usergroup', TXT_MANAGE_GROUP, TXT_MANAGE_GROUP, 'read', 'uam_usergroup', array(&$userAccessManager, 'printAdminPage'));
237 add_submenu_page('uam_usergroup', TXT_SETTINGS, TXT_SETTINGS, 'read', 'uam_settings', array(&$userAccessManager, 'printAdminPage'));
238 add_submenu_page('uam_usergroup', TXT_SETUP, TXT_SETUP, 'read', 'uam_setup', array(&$userAccessManager, 'printAdminPage'));
239 add_submenu_page('uam_usergroup', TXT_ABOUT, TXT_ABOUT, 'read', 'uam_about', array(&$userAccessManager, 'printAdminPage'));
240 }
241 /**
242 * --- EOF ---
243 */
244 }
245
246 if ($userAccessManager->getAccessHandler()->checkUserAccess()
247 || $uamOptions['authors_can_add_posts_to_groups'] == 'true'
248 ) {
249 //Admin meta boxes
250 if (function_exists('add_meta_box')) {
251 add_meta_box('uma_post_access', 'Access', array(&$userAccessManager, 'editPostContent'), 'post', 'side');
252 add_meta_box('uma_post_access', 'Access', array(&$userAccessManager, 'editPostContent'), 'page', 'side');
253 }
254 }
255 }
256 }
257
258 if (isset($userAccessManager)) {
259 //install
260 if (function_exists('register_activation_hook')) {
261 register_activation_hook(__FILE__, array(&$userAccessManager, 'install'));
262 }
263
264 //uninstall
265 if (function_exists('register_uninstall_hook')) {
266 register_uninstall_hook(__FILE__, array(&$userAccessManager, 'uninstall'));
267 } elseif (function_exists('register_deactivation_hook')) {
268 //Fallback
269 register_deactivation_hook(__FILE__, array(&$userAccessManager, 'uninstall'));
270 }
271
272 //deactivation
273 if (function_exists('register_deactivation_hook')) {
274 register_deactivation_hook(__FILE__, array(&$userAccessManager, 'deactivate'));
275 }
276
277 //Redirect
278 $uamOptions = $userAccessManager->getAdminOptions();
279
280 if ($uamOptions['redirect'] != 'false' || isset($_GET['uamgetfile'])) {
281 add_filter('wp_headers', array(&$userAccessManager, 'redirect'), 10, 2);
282 }
283
284 //Actions
285 if (function_exists('add_action')) {
286 add_action('wp_print_scripts', array(&$userAccessManager, 'addScripts'));
287 add_action('wp_print_styles', array(&$userAccessManager, 'addStyles'));
288 add_action('admin_init', 'userAccessManagerAP');
289 add_action('admin_menu', 'userAccessManagerAPMenu');
290 }
291
292 //Filters
293 if (function_exists('add_filter')) {
294 add_filter('wp_get_attachment_thumb_url', array(&$userAccessManager, 'getFileUrl'), 10, 2);
295 add_filter('wp_get_attachment_url', array(&$userAccessManager, 'getFileUrl'), 10, 2);
296 add_filter('the_posts', array(&$userAccessManager, 'showPost'));
297 add_filter('posts_where_paged', array(&$userAccessManager, 'showPostSql'));
298 add_filter('wp_get_nav_menu_items', array(&$userAccessManager, 'showCustomMenu'));
299 add_filter('comments_array', array(&$userAccessManager, 'showComment'));
300 add_filter('get_pages', array(&$userAccessManager, 'showPage'));
301 add_filter('get_terms', array(&$userAccessManager, 'showCategory'), 10, 2);
302 add_filter('get_next_post_where', array(&$userAccessManager, 'showNextPreviousPost'));
303 add_filter('get_previous_post_where', array(&$userAccessManager, 'showNextPreviousPost'));
304 add_filter('post_link', array(&$userAccessManager, 'cachePostLinks'), 10, 2);
305 add_filter('edit_post_link', array(&$userAccessManager, 'showGroupMembership'), 10, 2);
306 add_filter('parse_query', array(&$userAccessManager, 'parseQuery'));
307 add_filter('getarchives_where', array(&$userAccessManager, 'showPostSql'));
308 }
309 }