Chamilo is a learning management system focused on ease of use and accessibility
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.
 
 
 
 
 
 
chamilo-lms/main/dashboard/dashboard_controller.php

127 lines
4.0 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 $msg (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);
}
}