Location: PHPKode > projects > ConCentric Event Planning Software > CC/modules/auth/controllers/admin/acl_resources.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');  
    /**
     * BackendPro
     *
     * A website backend system for developers for PHP 4.3.2 or newer
     *
     * @package         BackendPro
     * @author          Adam Price
     * @copyright       Copyright (c) 2008
     * @license         http://www.gnu.org/licenses/lgpl.html
     */

     // ---------------------------------------------------------------------------

    /**
     * ACL Resources
     * 
     * Provide the ability to manage ACL resources
     *
     * @package         BackendPro
     * @subpackage      Controllers
     */     
     class Acl_resources extends Admin_Controller
     {
         function Acl_resources()
         {
             // Call parent constructor
             parent::Admin_Controller();
             
             // Load files
             $this->lang->load('access_control');
             $this->load->model('access_control_model'); 
             
             // Set breadcrumb
             $this->page->set_crumb($this->lang->line('backendpro_access_control'),'auth/admin/access_control');
             $this->page->set_crumb($this->lang->line('access_resources'),'auth/admin/acl_resources'); 
             
             // Check for access permission
             check('Resources');
             
             log_message('debug','ACL Resources Class Initialized'); 
         }
         
         /**
          * Display Resources
          * 
          * @access public
          * @return void 
          */
         function index()
         {                                                         
             // Display Page
             $data['header'] = $this->lang->line('access_resources');
             $data['page'] = $this->config->item('backendpro_template_admin') . "access_control/resources";
             $data['module'] = 'auth';
             $this->load->view($this->_container,$data);
         }
         
         /**
          * Display Form
          * 
          * @access public
          * @param integer $id Resource ID
          * @return void
          */
         function form($id = NULL)
         {             
             // Setup form validation
             $this->load->library('validation');
             $fields['id'] = "ID";
             $fields['name'] = $this->lang->line('access_name');
             $fields['parent'] = $this->lang->line('access_parent_name');
             $this->validation->set_fields($fields);
             
             $rules['name'] = "trim|required|max_length[254]";
             $rules['parent'] = "required";
             
             if( ! is_null($id) AND ! $this->input->post('submit'))
             {
                 // Load values into form
                 $node = $this->access_control_model->resource->getNodeFromId($id);
                 
                 // Check it isn't the root
                 if( $this->access_control_model->resource->checkNodeIsRoot($node)){
                     flashMsg('warning',sprintf($this->lang->line('access_resource_root'),$node['name']));
                     redirect('auth/admin/acl_resources');
                 }
                 
                 $parent = $this->access_control_model->resource->getAncestor($node);
                 $this->validation->set_default_value('id',$id);
                 $this->validation->set_default_value('name',$node['name']); 
                 $this->validation->set_default_value('parent',$parent['name']); 
             }
             elseif( $this->input->post('submit'))
             {
                 // Form submited, check rules
                 $this->validation->set_rules($rules);
             }
             
             if($this->validation->run() === FALSE)
             {
                 // Display Errors
                 $this->validation->output_errors();
                 
                 // Get Resources
                 $data['resources'] = $this->access_control_model->buildACLDropdown('resource');
                 
                 // Display Page  
                 $data['header'] = (is_null($id)?$this->lang->line('access_create_resource'):$this->lang->line('access_edit_resource'));
                 $this->page->set_crumb($data['header'],'auth/admin/acl_resources/form/'.$id);   
                 $data['page'] = $this->config->item('backendpro_template_admin') . "access_control/form_resource";
                 $data['module'] = 'auth';
                 $this->load->view($this->_container,$data);
             }
             else
             {   
                 $name = $this->input->post('name');   
                 $parent = $this->input->post('parent'); 
                 
                 if( is_null($id))
                 {            
                     // Create Resource
                     $this->load->library('khacl');                     
                     
                     $this->db->trans_start();
                     if( ! $this->khacl->aco->create($name,$parent))
                     {
                         flashMsg('warning',sprintf($this->lang->line('access_resource_exists'),$name));
                         redirect('auth/admin/acl_resources/form'); 
                     }  
                     
                     $this->access_control_model->insert('resources',array('id'=>$this->db->insert_id()));
                     
                     if( $this->db->trans_status() === TRUE)
                     {
                         $this->db->trans_commit();
                         flashMsg('success',sprintf($this->lang->line('access_resource_created'),$name)); 
                     }
                     else
                     {
                         $this->db->trans_rollback(); 
                         flashMsg('error',sprintf($this->lang->line('backendpro_action_failed'),$this->lang->line('access_create_resource'))); 
                     }  
                 }
                 else
                 {
                     $id = $this->input->post('id');
                     // Update Resource
                     $node = $this->access_control_model->resource->getNodeFromId($id);
                     $new_parent = $this->access_control_model->resource->getNodeWhere("name='".$parent."'");
                     
                     // Check the assigment isn't illeagal
                     if($this->access_control_model->resource->checkNodeIsChildOrEqual($new_parent,$node)){
                        flashMsg('warning',sprintf($this->lang->line('access_resource_illegal_assignment'),$name));
                        redirect('auth/admin/acl_resources/form/'.$id);   
                     }
                     
                     $this->access_control_model->resource->setNodeAsLastChild($node,$new_parent);
                     flashMsg('success',sprintf($this->lang->line('access_resource_saved'),$name)); 
                 }
                 redirect('auth/admin/acl_resources');
             }
         } 
         
         /**
          * Delete Resources
          * 
          * @access public
          * @return void 
          */
         function delete()
         {
             if(FALSE === ($resources = $this->input->post('select')))
                redirect('auth/admin/acl_resources','location');   
             
             $this->load->library('khacl');
             foreach($resources as $resource)
             {
                 // Check we havn't already deleted it as a child of another node
                 $query = $this->access_control_model->fetch('acos',NULL,NULL,array('name'=>$resource));
                 if($query->num_rows() === 0){
                    flashMsg('success',sprintf($this->lang->line('access_resource_deleted'),$resource));
                    continue;
                 }  
                 
                 if( $this->khacl->aco->delete($resource))
                    flashMsg('success',sprintf($this->lang->line('access_resource_deleted'),$resource));
                 else
                    flashMsg('error',sprintf($this->lang->line('backendpro_action_failed'),$this->lang->line('access_delete_resoruce')));
             }
             
             redirect('auth/admin/acl_resources','location');
         }     
     }
?>
Return current item: ConCentric Event Planning Software