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

251 lines 10.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Plugin Name: User Access Manager
5 * Plugin URI: http://www.gm-alex.de/projects/wordpress/plugins/user-access-manager/
6 * Author URI: http://www.gm-alex.de/
7 * Version: 1.0
8 * Author: Alexander Schneider
9 * Description: Manage the access to your posts, pages, categories and files.
10 *
11 * user-access-manager.php
12 *
13 * PHP versions 5
14 *
15 * @category UserAccessManager
16 * @package UserAccessManager
17 * @author Alexander Schneider <alexanderschneider85@gmail.com>
18 * @copyright 2008-2010 Alexander Schneider
19 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2
20 * @version SVN: $Id$
21 * @link http://wordpress.org/extend/plugins/user-access-manager/
22 */
23
24 //Paths
25 load_plugin_textdomain(
26 'user-access-manager',
27 false,
28 'user-access-manager/lang'
29 );
30
31 define(
32 'UAM_URLPATH',
33 WP_PLUGIN_URL.'/user-access-manager/'
34 );
35
36 if (defined('UAM_LOCAL_DEBUG')) {
37 //ONLY FOR MY LOCAL DEBUG
38 define(
39 'UAM_REALPATH',
40 '/'.plugin_basename(dirname(__FILE__)).'/'
41 );
42 } else {
43 define(
44 'UAM_REALPATH',
45 WP_PLUGIN_DIR.'/'.plugin_basename(dirname(__FILE__)).'/'
46 );
47 }
48
49 //Defines
50 require_once 'includes/database.define.php';
51 require_once 'includes/language.define.php';
52
53 //Classes
54 require_once 'class/UserAccessManager.class.php';
55 require_once 'class/UamUserGroup.class.php';
56 require_once 'class/UamAccessHandler.class.php';
57
58 if (class_exists("UserAccessManager")) {
59 $userAccessManager = new UserAccessManager();
60 }
61
62 //Initialize the admin panel
63 if (!function_exists("userAccessManagerAP")) {
64 /**
65 * Creates the filters and actions for the admin panel
66 *
67 * @return null;
68 */
69 function userAccessManagerAP()
70 {
71 global $userAccessManager,
72 $uamUserGroup,
73 $uamAccessHandler,
74 $current_user;
75
76 if (!isset($userAccessManager)) {
77 return;
78 }
79
80 $userAccessManager->atAdminPanel = true;
81 $uamOptions = $userAccessManager->getAdminOptions();
82 $userAccessManager->update();
83
84 get_currentuserinfo();
85 $curUserdata = get_userdata($current_user->ID);
86
87 if ($userAccessManager->getAccessHandler()->checkUserAccess()
88 || $uamOptions['authors_can_add_posts_to_groups'] == 'true'
89 ) {
90 //Admin actions
91 if (function_exists('add_action')) {
92 add_action('admin_print_styles', array(&$userAccessManager, 'addStyles'));
93 add_action('wp_print_scripts', array(&$userAccessManager, 'addScripts'));
94
95 add_action('manage_posts_custom_column', array(&$userAccessManager, 'addPostColumn'), 10, 2);
96 add_action('manage_pages_custom_column', array(&$userAccessManager, 'addPostColumn'), 10, 2);
97 add_action('save_post', array(&$userAccessManager, 'savePostData'));
98
99 add_action('manage_media_custom_column', array(&$userAccessManager, 'addPostColumn'), 10, 2);
100
101 //Actions are only called when the attachment content is modified so we can't use it.
102 //add_action('add_attachment', array(&$userAccessManager, 'savePostData'));
103 //add_action('edit_attachment', array(&$userAccessManager, 'savePostData'));
104
105 add_action('edit_user_profile', array(&$userAccessManager, 'showUserProfile'));
106 add_action('profile_update', array(&$userAccessManager, 'saveUserData'));
107
108 add_action('edit_category_form', array(&$userAccessManager, 'showCategoryEditForm'));
109 add_action('create_category', array(&$userAccessManager, 'saveCategoryData'));
110 add_action('edit_category', array(&$userAccessManager, 'saveCategoryData'));
111 }
112
113 //Admin filters
114 if (function_exists('add_filter')) {
115 //The filter we use instead of add|edit_attachment action, reason see top
116 add_filter('attachment_fields_to_save', array(&$userAccessManager, 'saveAttachmentData'));
117
118 add_filter('manage_posts_columns', array(&$userAccessManager, 'addPostColumnsHeader'));
119 add_filter('manage_pages_columns', array(&$userAccessManager, 'addPostColumnsHeader'));
120
121 add_filter('manage_users_columns', array(&$userAccessManager, 'addUserColumnsHeader'), 10);
122 add_filter('manage_users_custom_column', array(&$userAccessManager, 'addUserColumn'), 10, 3);
123
124 add_filter('manage_edit-category_columns', array(&$userAccessManager, 'addCategoryColumnsHeader'));
125 add_filter('manage_category_custom_column', array(&$userAccessManager, 'addCategoryColumn'), 10, 3);
126 }
127
128 if ($uamOptions['lock_file'] == 'true') {
129 add_action('media_meta', array(&$userAccessManager, 'showMediaFile'), 10, 2);
130 add_filter('manage_media_columns', array(&$userAccessManager, 'addPostColumnsHeader'));
131 }
132 }
133
134 //Clean up at deleting should be always done.
135 if (function_exists('add_action')) {
136 add_action('update_option_permalink_structure', array(&$userAccessManager, 'updatePermalink'));
137 add_action('wp_dashboard_setup', array(&$userAccessManager, 'setupAdminDashboard'));
138 add_action('delete_post', array(&$userAccessManager, 'removePostData'));
139 add_action('delete_attachment', array(&$userAccessManager, 'removePostData'));
140 add_action('delete_user', array(&$userAccessManager, 'removeUserData'));
141 add_action('delete_category', array(&$userAccessManager, 'removeCategoryData'), 10, 2);
142 }
143
144 $userAccessManager->noRightsToEditContent();
145 }
146 }
147
148 if (!function_exists("userAccessManagerAPMenu")) {
149 /**
150 * Creates the menu at the admin panel
151 *
152 * @return null;
153 */
154 function userAccessManagerAPMenu()
155 {
156 global $userAccessManager,
157 $current_user;
158
159 if (!isset($userAccessManager)) {
160 return;
161 }
162
163 $uamOptions = $userAccessManager->getAdminOptions();
164 $curUserdata = get_userdata($current_user->ID);
165
166 if ($userAccessManager->getAccessHandler()->checkUserAccess()) {
167 //TODO
168 /**
169 * --- BOF ---
170 * Not the best way to handle full user access capabilities seems
171 * to be the right way, but it is way difficult.
172 */
173
174 //Admin main menu
175 if (function_exists('add_menu_page')) {
176 add_menu_page('User Access Manager', 'UAM', 'read', 'uam_usergroup', array(&$userAccessManager, 'printAdminPage'), 'div');
177 }
178
179 //Admin sub menus
180 if (function_exists('add_submenu_page')) {
181 add_submenu_page('uam_usergroup', TXT_MANAGE_GROUP, TXT_MANAGE_GROUP, 'read', 'uam_usergroup', array(&$userAccessManager, 'printAdminPage'));
182 add_submenu_page('uam_usergroup', TXT_SETTINGS, TXT_SETTINGS, 'read', 'uam_settings', array(&$userAccessManager, 'printAdminPage'));
183 add_submenu_page('uam_usergroup', TXT_SETUP, TXT_SETUP, 'read', 'uam_setup', array(&$userAccessManager, 'printAdminPage'));
184 add_submenu_page('uam_usergroup', TXT_ABOUT, TXT_ABOUT, 'read', 'uam_about', array(&$userAccessManager, 'printAdminPage'));
185 }
186 /**
187 * --- EOF ---
188 */
189 }
190
191 if ($userAccessManager->getAccessHandler()->checkUserAccess()
192 || $uamOptions['authors_can_add_posts_to_groups'] == 'true'
193 ) {
194 //Admin meta boxes
195 if (function_exists('add_meta_box')) {
196 add_meta_box('uma_post_access', 'Access', array(&$userAccessManager, 'editPostContent'), 'post', 'side');
197 add_meta_box('uma_post_access', 'Access', array(&$userAccessManager, 'editPostContent'), 'page', 'side');
198 }
199 }
200 }
201 }
202
203 if (isset($userAccessManager)) {
204 //install
205 if (function_exists('register_activation_hook')) {
206 register_activation_hook(__FILE__, array(&$userAccessManager, 'install'));
207 }
208
209 //uninstall
210 if (function_exists('register_uninstall_hook')) {
211 register_uninstall_hook(__FILE__, array(&$userAccessManager, 'uninstall'));
212 } elseif (function_exists('register_deactivation_hook')) {
213 //Fallback
214 register_deactivation_hook(__FILE__, array(&$userAccessManager, 'uninstall'));
215 }
216
217 //deactivation
218 if (function_exists('register_deactivation_hook')) {
219 register_deactivation_hook(__FILE__, array(&$userAccessManager, 'deactivate'));
220 }
221
222 //Redirect
223 $uamOptions = $userAccessManager->getAdminOptions();
224
225 if ($uamOptions['redirect'] != 'false' || isset($_GET['getfile'])) {
226 add_action('template_redirect', array(&$userAccessManager, 'redirect'));
227 }
228
229 //Actions
230 if (function_exists('add_action')) {
231 add_action('wp_print_scripts', array(&$userAccessManager, 'addScripts'));
232 add_action('wp_print_styles', array(&$userAccessManager, 'addStyles'));
233 add_action('admin_init', 'userAccessManagerAP');
234 add_action('admin_menu', 'userAccessManagerAPMenu');
235 }
236
237 //Filters
238 if (function_exists('add_filter')) {
239 add_filter('wp_get_attachment_thumb_url', array(&$userAccessManager, 'getFileUrl'), 10, 2);
240 add_filter('wp_get_attachment_url', array(&$userAccessManager, 'getFileUrl'), 10, 2);
241 add_filter('the_posts', array(&$userAccessManager, 'showPost'));
242 add_filter('wp_get_nav_menu_items', array(&$userAccessManager, 'showCustomMenu'));
243 add_filter('comments_array', array(&$userAccessManager, 'showComment'));
244 add_filter('get_pages', array(&$userAccessManager, 'showPage'));
245 add_filter('get_terms', array(&$userAccessManager, 'showCategory'), 10, 2);
246 add_filter('get_next_post_where', array(&$userAccessManager, 'showNextPreviousPost'));
247 add_filter('get_previous_post_where', array(&$userAccessManager, 'showNextPreviousPost'));
248 //add_filter('the_title', array(&$userAccessManager, 'showTitle'), 10, 2);
249 add_filter('edit_post_link', array(&$userAccessManager, 'showGroupMembership'), 10, 2);
250 }
251 }