b2evolution

Multilingual multiuser multiblog engine

b2evolution Technical Documentation (CVS HEAD) [ class tree: main ] [ index: main ] [ all elements ]

Source for file _groupsettings.class.php

Documentation is available at _groupsettings.class.php

  1. <?php
  2.  
  3. if!defined('EVO_MAIN_INIT') ) die'Please, do not access this page directly.' );
  4.  
  5. load_class'settings/model/_abstractsettings.class.php''AbstractSettings' );
  6. load_class'_core/model/db/_sql.class.php''SQL' );
  7.  
  8.  
  9. /**
  10.  * GroupSettings class
  11.  *
  12.  * This class represents group permissions
  13.  */
  14. {
  15.     /**
  16.      * Current or default permission values
  17.      * @var array 
  18.      */
  19.     var $permission_values = array();
  20.  
  21.     /**
  22.      * Permission modules
  23.      * @var array 
  24.      */
  25.     var $permission_modules = array();
  26.  
  27.     /**
  28.      * New permissions values
  29.      * @access private
  30.      * @var array 
  31.      */
  32.     var $_permissions array();
  33.  
  34.  
  35.     /**
  36.      * Constructor
  37.      */
  38.     function GroupSettings()
  39.     {     // call parent constructor
  40.         parent::AbstractSettings'T_groups__groupsettings'array'gset_grp_ID''gset_name' )'gset_value');
  41.     }
  42.  
  43.  
  44.     /**
  45.      * Load permissions
  46.      *
  47.      * @param integer Group ID
  48.      */
  49.     function load$grp_ID )
  50.     {
  51.         global $DB$modules;
  52.  
  53.         // Get default group permission from each module
  54.         foreach$modules as $module )
  55.         {
  56.             $Module $GLOBALS[$module.'_Module'];
  57.             ifmethod_exists$Module'get_default_group_permissions' ) )
  58.             {    // Module has pluggable permissions and we can add them to the current setting
  59.                 $this->add$module$Module->get_default_group_permissions$grp_ID )$grp_ID );
  60.             }
  61.         }
  62.  
  63.         if$grp_ID != )
  64.         {
  65.             // Select current group permission from database
  66.             $SQL new SQL();
  67.             $SQL->SELECT'*' );
  68.             $SQL->FROM'T_groups__groupsettings' );
  69.             $SQL->WHERE'gset_grp_ID = '.$grp_ID );
  70.  
  71.             $DB->begin();
  72.  
  73.             // Set current group permissions
  74.             $existing_perm array();
  75.             foreach$DB->get_results$SQL->get() ) as $row )
  76.             {
  77.                 $existing_perm[$row->gset_name;
  78.                 $this->permission_values[$row->gset_name$row->gset_value;
  79.             }
  80.  
  81.             // Set default group permission if these permissions don't exist
  82.             $update_permissions false;
  83.             foreach$this->permission_values as $name => $value )
  84.             {
  85.                 ifin_array$name$existing_perm ) )
  86.                 {
  87.                     $this->set$name$value$grp_ID );
  88.                     $update_permissions true;
  89.                 }
  90.             }
  91.  
  92.             if$update_permissions )
  93.             {    // We can update permission as there are some new permnissions
  94.                 $this->dbupdate$grp_ID );
  95.             }
  96.  
  97.             $DB->commit();
  98.         }
  99.     }
  100.  
  101.  
  102.     /**
  103.      * Add default permission to the group.
  104.      * Each module can define its own default permissions.
  105.      *
  106.      * @param string module name
  107.      * @param array permissions
  108.      * @param integer Group ID
  109.      */
  110.     function add$module$permissions$grp_ID )
  111.     {
  112.         ifempty$permissions ) )
  113.         {
  114.             foreach$permissions as $key => $value )
  115.             {
  116.                 $this->permission_values[$key$value;
  117.                 $this->permission_modules[$key$module;
  118.             }
  119.         }
  120.     }
  121.  
  122.  
  123.     /**
  124.      * Get a permission from the DB group settings table
  125.      *
  126.      * @param string name of permission
  127.      * @param integer Group
  128.      */
  129.     function get$permission$grp_ID )
  130.     {
  131.         if$grp_ID != )
  132.         {    // We can get permission from database, because the current group setting are available in database
  133.             $this->permission_values[$permissionparent::get$grp_ID$permission );
  134.         }
  135.         return $this->permission_values[$permission];
  136.     }
  137.  
  138.  
  139.     /**
  140.      * Temporarily sets a group permission ({@link dbupdate()} writes it to DB)
  141.      *
  142.      * @param string name of permission
  143.      * @param mixed new value
  144.      * @param integer Group ID
  145.      */
  146.     function set$permission$value$grp_ID )
  147.     {
  148.         if$grp_ID != )
  149.         {    // We can set permission, because the current group is already in database
  150.             $this->permission_values[$permission$value;
  151.             return parent::set$grp_ID$permission$value );
  152.         }
  153.  
  154.         $this->_permissions[$permission$value;
  155.         return true;
  156.     }
  157.  
  158.     /**
  159.      * Update the DB based on previously recorded changes
  160.      *
  161.      * @param integer Group ID
  162.      */
  163.     function dbupdate$grp_ID )
  164.     {
  165.         ifempty$this->_permissions ) )
  166.         {    // Set temporary permissions. It is only for the new creating group
  167.             foreach$this->_permissions as $name => $value )
  168.             {
  169.                 $this->set$name$value$grp_ID );
  170.             }
  171.  
  172.             $this->_permissions array();
  173.         }
  174.  
  175.         // Update permissions
  176.         return parent::dbupdate();
  177.     }
  178.  
  179.  
  180.     /**
  181.      * Delete all of the group permissions
  182.      *
  183.      * @param @param integer Group ID
  184.      */
  185.     function delete$grp_ID )
  186.     {
  187.         foreach$this->permission_values as $name => $value )
  188.         {
  189.             parent::delete$grp_ID$name );
  190.         }
  191.     }
  192. }
  193.  
  194. ?>

Documentation generated on Sat, 06 Mar 2010 04:12:44 +0100 by phpDocumentor 1.4.2. This site is hosted and maintained by Daniel HAHLER (Contact).