/** * Check permission for this group on a specified blog * * This is not for direct use, please call {@link User::check_perm()} instead * user is checked for privileges first, group lookup only performed on a false result * * @see User::check_perm() * @param string Permission name can be any from the blog advanced perm names. A few possible permname: * - blog_ismember * - blog_del_post * - blog_edit_ts * - blog_post_statuses * - blog_edit * - blog_comment_statuses * - blog_edit_cmt * - blog_cats * - blog_properties * @param string Permission level * @param integer Permission target blog ID * @param Item post that we want to edit * @param User for who we would like to check this permission * @return boolean 0 if permission denied */ function check_perm_bloggroups($permname, $permlevel, $perm_target_blog, $perm_target = NULL, $User = NULL) { if (!isset($this->blog_post_statuses[$perm_target_blog])) { $this->blog_post_statuses[$perm_target_blog] = array(); if (!load_blog_advanced_perms($this->blog_post_statuses[$perm_target_blog], $perm_target_blog, $this->ID, 'bloggroup')) { // Could not load blog advanced user perms return false; } } $blog_perms = $this->blog_post_statuses[$perm_target_blog]; if (empty($User)) { // User is not set $user_ID = NULL; } else { // User is set, advanced user perms must be loaded $user_ID = $User->ID; if (isset($User->blog_post_statuses[$perm_target_blog])) { // Merge user advanced perms with group advanced perms $edit_perms = array('no' => 0, 'own' => 1, 'anon' => 2, 'lt' => 3, 'le' => 4, 'all' => 5); foreach ($User->blog_post_statuses[$perm_target_blog] as $key => $value) { // For each collection advanced permission use the higher perm value between user and group perms if ($key == 'blog_edit' || $key == 'blog_edit_cmt') { if ($edit_perms[$value] > $edit_perms[$blog_perms[$key]]) { // Use collection user edit permission because it is greater than the collection group perm $blog_perms[$key] = $value; } } elseif (isset($blog_perms[$key])) { // Check user and group perm as well $blog_perms[$key] = (int) $value | (int) $blog_perms[$key]; } } } } return check_blog_advanced_perm($blog_perms, $user_ID, $permname, $permlevel, $perm_target); }
/** * Check permission for this user on a specified blog * * This is not for direct use, please call {@link User::check_perm()} instead * * @see User::check_perm() * @param string Permission name, can be one of the following: * - blog_ismember * - blog_can_be_assignee * - blog_post_statuses * - blog_del_post * - blog_edit_ts * - blog_comments * - blog_cats * - blog_properties * @param string Permission level * @param integer Permission target blog ID * @param Item Item that we want to edit * @return boolean 0 if permission denied */ function check_perm_blogusers($permname, $permlevel, $perm_target_blog, $perm_target = NULL) { // Check if user blog advanced perms are loaded if (!isset($this->blog_post_statuses[$perm_target_blog])) { // Blog post statuses have not been loaded yet: $this->blog_post_statuses[$perm_target_blog] = array(); if (!load_blog_advanced_perms($this->blog_post_statuses[$perm_target_blog], $perm_target_blog, $this->ID, 'bloguser')) { // Could not load blog advanced user perms return false; } } // Check permission and return the result return check_blog_advanced_perm($this->blog_post_statuses[$perm_target_blog], $this->ID, $permname, $permlevel, $perm_target); }