| 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.1 |
| 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('edit_post_link', array(&$userAccessManager, 'showGroupMembership'), 10, 2); |
| 249 |
} |
| 250 |
} |