示例#1
0
 /**
  * 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);
 }
示例#2
0
 /**
  * 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);
 }