* @todo move to main/inc/lib
* @package chamilo.dashboard
*/
class DashboardController
{
private $user_id;
/**
* Constructor
*/
public function __construct()
{
$this->user_id = api_get_user_id();
}
/**
* Display blocks from dashboard plugin paths
* @param string $msg (optional)
* render to dashboard.php view
*/
public function display()
{
$user_id = $this->user_id;
$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);
$blocks = 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;
}
}
$blocks[$path] = $obj->get_block();
// set user block column
$blocks[$path]['column'] = $user_block_data[$block['id']]['column'];
}
}
}
$view = isset($_GET['view']) ? $_GET['view'] : 'blocks';
api_block_anonymous_users();
$link_blocks_view = $link_list_view = null;
if ($view == 'list') {
$link_blocks_view = ''.
Display::return_icon('blocks.png', get_lang('DashboardBlocks'), '', ICON_SIZE_MEDIUM).'';
} else {
$link_list_view = ''.
Display::return_icon('edit.png', get_lang('EditBlocks'), '', ICON_SIZE_MEDIUM).'';
}
$configuration_link = null;
if (api_is_platform_admin()) {
$configuration_link = ''
.Display::return_icon('settings.png', get_lang('ConfigureDashboardPlugin'), '', ICON_SIZE_MEDIUM).'';
}
$content = '
';
$content .= $link_blocks_view.$link_list_view.$configuration_link;
$content .= '
';
// block dashboard view
if (isset($view) && $view == 'blocks') {
if (isset($blocks) && count($blocks) > 0) {
$columns = array();
// group content html by number of column
if (is_array($blocks)) {
$tmp_columns = array();
foreach ($blocks as $block) {
$tmp_columns[] = $block['column'];
if (in_array($block['column'], $tmp_columns)) {
$columns['column_'.$block['column']][] = $block['content_html'];
}
}
}
$content .= '';
if (count($columns) > 0) {
$columns_name = array_keys($columns);
// blocks for column 1
if (in_array('column_1', $columns_name)) {
$content .= '
';
foreach ($columns['column_1'] as $data) {
$content .= $data;
}
$content .= '
';
} else {
$content .= '
';
$content .= ' ';
$content .= '
';
}
// blocks for column 2
if (in_array('column_2', $columns_name)) {
// blocks for column 1
$content .= '
';
foreach ($columns['column_2'] as $data) {
$content .= $data;
}
$content .= '
';
} else {
$content .= '
';
$content .= ' ';
$content .= '
';
}
}
$content .= '
';
} else {
$content .= ''.get_lang('YouHaveNotEnabledBlocks').'
';
}
} else {
// block dashboard list
if (isset($success)) {
Display::addFlash(Display::return_message(get_lang('BlocksHaveBeenUpdatedSuccessfully'), 'confirm'));
}
$user_id = api_get_user_id();
$content .= DashboardManager::display_user_dashboard_list($user_id);
}
$tpl = new Template(get_lang('Dashboard'));
$tpl->assign('content', $content);
$tpl->display_one_col_template();
}
/**
* This method allow store user blocks from dashboard manager
* render to dashboard.php view
*/
public function store_user_block()
{
if (strtoupper($_SERVER['REQUEST_METHOD']) == "POST") {
$enabled_blocks = $_POST['enabled_blocks'];
$columns = $_POST['columns'];
DashboardManager::store_user_blocks($this->user_id, $enabled_blocks, $columns);
Display::addFlash(Display::return_message(get_lang('Saved')));
}
header('Location: '.api_get_path(WEB_CODE_PATH).'dashboard/index.php');
exit;
}
/**
* This method is used when you close a block from dashboard block interface
* render to dashboard.php view
*/
public function close_user_block($path)
{
DashboardManager::close_user_block($this->user_id, $path);
Display::addFlash(Display::return_message(get_lang('Saved')));
header('Location: '.api_get_path(WEB_CODE_PATH).'dashboard/index.php');
exit;
}
}