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.
119 lines
3.3 KiB
119 lines
3.3 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);
|
|
}
|
|
}
|
|
|