You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							124 lines
						
					
					
						
							3.9 KiB
						
					
					
				
			
		
		
	
	
							124 lines
						
					
					
						
							3.9 KiB
						
					
					
				<?php
 | 
						|
/* For licensing terms, see /license.txt */
 | 
						|
 | 
						|
/**
 | 
						|
 * Controller script. Prepares the common background
 | 
						|
 * variables to give to the scripts corresponding to
 | 
						|
 * the requested action
 | 
						|
 * This file contains class used like controller,
 | 
						|
 * it should be included inside a dispatcher file (e.g: index.php)
 | 
						|
 * @author Christian Fasanando <christian1827@gmail.com>
 | 
						|
 *
 | 
						|
 * @package chamilo.dashboard
 | 
						|
 */
 | 
						|
class DashboardController
 | 
						|
{
 | 
						|
    private $toolname;
 | 
						|
    private $view;
 | 
						|
    private $user_id;
 | 
						|
 | 
						|
    /**
 | 
						|
     * Constructor
 | 
						|
     */
 | 
						|
    public function __construct()
 | 
						|
    {
 | 
						|
        $this->user_id = api_get_user_id();
 | 
						|
        $this->toolname = 'dashboard';
 | 
						|
        $this->view = new View($this->toolname);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Display blocks from dashboard plugin paths
 | 
						|
     * @param string message (optional)
 | 
						|
     * render to dashboard.php view
 | 
						|
     */
 | 
						|
    public function display($msg = false)
 | 
						|
    {
 | 
						|
        $data = array();
 | 
						|
        $user_id = $this->user_id;
 | 
						|
 | 
						|
        $block_data_without_plugin = DashboardManager::get_block_data_without_plugin();
 | 
						|
        $dashboard_blocks = DashboardManager::get_enabled_dashboard_blocks();
 | 
						|
        $user_block_data  = DashboardManager::get_user_block_data($user_id);
 | 
						|
        $user_blocks_id = array_keys($user_block_data);
 | 
						|
 | 
						|
        $data_block = null;
 | 
						|
 | 
						|
        if (!empty($dashboard_blocks)) {
 | 
						|
            foreach ($dashboard_blocks as $block) {
 | 
						|
 | 
						|
                // display only user blocks
 | 
						|
                if (!in_array($block['id'], $user_blocks_id)) continue;
 | 
						|
 | 
						|
                $path = $block['path'];
 | 
						|
                $controller_class = $block['controller'];
 | 
						|
                $filename_controller = $path.'.class.php';
 | 
						|
                $dashboard_plugin_path = api_get_path(SYS_PLUGIN_PATH).'dashboard/'.$path.'/';
 | 
						|
                require_once $dashboard_plugin_path.$filename_controller;
 | 
						|
                if (class_exists($controller_class)) {
 | 
						|
                    $obj = new $controller_class($user_id);
 | 
						|
 | 
						|
                    // check if user is allowed to see the block
 | 
						|
                    if (method_exists($obj, 'is_block_visible_for_user')) {
 | 
						|
                        $is_block_visible_for_user = $obj->is_block_visible_for_user($user_id);
 | 
						|
                        if (!$is_block_visible_for_user) continue;
 | 
						|
                    }
 | 
						|
 | 
						|
                    $data_block[$path] = $obj->get_block();
 | 
						|
                    // set user block column
 | 
						|
                    $data_block[$path]['column'] = $user_block_data[$block['id']]['column'];
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            $data['blocks'] = $data_block;
 | 
						|
            $data['dashboard_view'] = 'blocks';
 | 
						|
        }
 | 
						|
 | 
						|
        if ($msg) {
 | 
						|
            $data['msg'] = $msg;
 | 
						|
        }
 | 
						|
 | 
						|
        // render to the view
 | 
						|
        $this->view->set_data($data);
 | 
						|
        $this->view->set_layout('layout');
 | 
						|
        $this->view->set_template('dashboard');
 | 
						|
        $this->view->render();
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * This method allow store user blocks from dashboard manager
 | 
						|
     * render to dashboard.php view
 | 
						|
     */
 | 
						|
    public function store_user_block()
 | 
						|
    {
 | 
						|
        $data = array();
 | 
						|
        $user_id = $this->user_id;
 | 
						|
        if (strtoupper($_SERVER['REQUEST_METHOD']) == "POST") {
 | 
						|
            $enabled_blocks = $_POST['enabled_blocks'];
 | 
						|
            $columns = $_POST['columns'];
 | 
						|
            $affected_rows = DashboardManager::store_user_blocks($user_id, $enabled_blocks, $columns);
 | 
						|
            if ($affected_rows) {
 | 
						|
                $data['success'] = true;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        $data['dashboard_view'] = 'list';
 | 
						|
 | 
						|
        // render to the view
 | 
						|
        $this->view->set_data($data);
 | 
						|
        $this->view->set_layout('layout');
 | 
						|
        $this->view->set_template('dashboard');
 | 
						|
        $this->view->render();
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * This method is used when you close a block from dashboard block interface
 | 
						|
     * render to dashboard.php view
 | 
						|
     */
 | 
						|
    public function close_user_block($path)
 | 
						|
    {
 | 
						|
        $user_id = $this->user_id;
 | 
						|
        $result = DashboardManager::close_user_block($user_id, $path);
 | 
						|
        $this->display($result);
 | 
						|
    }
 | 
						|
}
 | 
						|
 |