PluginProbe
User Access Manager / 1.2.4
User Access Manager v1.2.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.2.4, at user-access-manager.php

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