* @package chamilo.dashboard */ /** * Controller script. Prepares the common background variables to give to the scripts corresponding to * the requested action */ class DashboardController { // extends Controller { 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); } } ?>