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.
		
		
		
		
		
			
		
			
				
					
					
						
							370 lines
						
					
					
						
							9.3 KiB
						
					
					
				
			
		
		
	
	
							370 lines
						
					
					
						
							9.3 KiB
						
					
					
				<?php
 | 
						|
 | 
						|
/* For licensing terms, see /license.txt */
 | 
						|
 | 
						|
use Chamilo\CoreBundle\Entity\Portfolio;
 | 
						|
use Chamilo\CoreBundle\Entity\PortfolioCategory;
 | 
						|
use Chamilo\CoreBundle\Entity\PortfolioComment;
 | 
						|
use Chamilo\CoreBundle\Entity\Tag;
 | 
						|
use Symfony\Component\HttpFoundation\Request as HttpRequest;
 | 
						|
 | 
						|
// Make sure we void the course context if we are in the social network section
 | 
						|
if (empty($_GET['cidReq'])) {
 | 
						|
    $cidReset = true;
 | 
						|
}
 | 
						|
require_once __DIR__.'/../inc/global.inc.php';
 | 
						|
 | 
						|
api_block_anonymous_users();
 | 
						|
 | 
						|
if (api_get_course_int_id()) {
 | 
						|
    api_protect_course_script(true);
 | 
						|
}
 | 
						|
 | 
						|
if (false === api_get_configuration_value('allow_portfolio_tool')) {
 | 
						|
    api_not_allowed(true);
 | 
						|
}
 | 
						|
 | 
						|
$httpRequest = HttpRequest::createFromGlobals();
 | 
						|
$action = $httpRequest->query->get('action', 'list');
 | 
						|
 | 
						|
// It validates the management of categories will be only for admins
 | 
						|
if (in_array($action, ['list_categories', 'add_category', 'edit_category']) && !api_is_platform_admin()) {
 | 
						|
    api_not_allowed(true);
 | 
						|
}
 | 
						|
 | 
						|
// It includes the user language for translations
 | 
						|
$checkUserLanguage = true;
 | 
						|
if ($checkUserLanguage) {
 | 
						|
    global $_user;
 | 
						|
    $langPath = api_get_path(SYS_LANG_PATH).$_user['language'].'/trad4all.inc.php';
 | 
						|
    if (file_exists($langPath)) {
 | 
						|
        require_once $langPath;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
$controller = new \PortfolioController();
 | 
						|
 | 
						|
$em = Database::getManager();
 | 
						|
 | 
						|
$htmlHeadXtra[] = api_get_js('portfolio.js');
 | 
						|
 | 
						|
switch ($action) {
 | 
						|
    case 'translate_category':
 | 
						|
        $id = $httpRequest->query->getInt('id');
 | 
						|
        $languageId = $httpRequest->query->getInt('sub_language');
 | 
						|
 | 
						|
        /** @var PortfolioCategory $category */
 | 
						|
        $category = $em->find('ChamiloCoreBundle:PortfolioCategory', $id);
 | 
						|
 | 
						|
        if (empty($category)) {
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        $languages = $em
 | 
						|
            ->getRepository('ChamiloCoreBundle:Language')
 | 
						|
            ->findAllPlatformSubLanguages();
 | 
						|
 | 
						|
        $controller->translateCategory($category, $languages, $languageId);
 | 
						|
 | 
						|
        return;
 | 
						|
    case 'list_categories':
 | 
						|
        $controller->listCategories();
 | 
						|
 | 
						|
        return;
 | 
						|
    case 'add_category':
 | 
						|
        $controller->addCategory();
 | 
						|
 | 
						|
        return;
 | 
						|
    case 'edit_category':
 | 
						|
        $id = $httpRequest->query->getInt('id');
 | 
						|
 | 
						|
        /** @var PortfolioCategory $category */
 | 
						|
        $category = $em->find('ChamiloCoreBundle:PortfolioCategory', $id);
 | 
						|
 | 
						|
        if (empty($category)) {
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        $controller->editCategory($category);
 | 
						|
 | 
						|
        return;
 | 
						|
    case 'hide_category':
 | 
						|
    case 'show_category':
 | 
						|
        $id = $httpRequest->query->getInt('id');
 | 
						|
 | 
						|
        $category = $em->find('ChamiloCoreBundle:PortfolioCategory', $id);
 | 
						|
 | 
						|
        if (empty($category)) {
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        $controller->showHideCategory($category);
 | 
						|
 | 
						|
        return;
 | 
						|
    case 'delete_category':
 | 
						|
        $id = $httpRequest->query->getInt('id');
 | 
						|
 | 
						|
        /** @var PortfolioCategory $category */
 | 
						|
        $category = $em->find('ChamiloCoreBundle:PortfolioCategory', $id);
 | 
						|
 | 
						|
        if (empty($category)) {
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        $controller->deleteCategory($category);
 | 
						|
 | 
						|
        return;
 | 
						|
    case 'add_item':
 | 
						|
        $controller->addItem();
 | 
						|
 | 
						|
        return;
 | 
						|
    case 'edit_item':
 | 
						|
        $id = $httpRequest->query->getInt('id');
 | 
						|
 | 
						|
        /** @var Portfolio $item */
 | 
						|
        $item = $em->find('ChamiloCoreBundle:Portfolio', $id);
 | 
						|
 | 
						|
        if (empty($item)) {
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        $controller->editItem($item);
 | 
						|
 | 
						|
        return;
 | 
						|
    case 'visibility':
 | 
						|
        $id = $httpRequest->query->getInt('id');
 | 
						|
 | 
						|
        /** @var Portfolio $item */
 | 
						|
        $item = $em->find('ChamiloCoreBundle:Portfolio', $id);
 | 
						|
 | 
						|
        if (empty($item)) {
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        $controller->showHideItem($item);
 | 
						|
 | 
						|
        return;
 | 
						|
    case 'item_visiblity_choose':
 | 
						|
        $id = $httpRequest->query->getInt('id');
 | 
						|
 | 
						|
        /** @var Portfolio $item */
 | 
						|
        $item = $em->find(Portfolio::class, $id);
 | 
						|
 | 
						|
        if (empty($item)) {
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        $controller->itemVisibilityChooser($item);
 | 
						|
        break;
 | 
						|
    case 'comment_visiblity_choose':
 | 
						|
        $id = $httpRequest->query->getInt('id');
 | 
						|
 | 
						|
        $comment = $em->find(PortfolioComment::class, $id);
 | 
						|
 | 
						|
        if (empty($comment)) {
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        $controller->commentVisibilityChooser($comment);
 | 
						|
        break;
 | 
						|
    case 'delete_item':
 | 
						|
        $id = $httpRequest->query->getInt('id');
 | 
						|
 | 
						|
        /** @var Portfolio $item */
 | 
						|
        $item = $em->find('ChamiloCoreBundle:Portfolio', $id);
 | 
						|
 | 
						|
        if (empty($item)) {
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        $controller->deleteItem($item);
 | 
						|
 | 
						|
        return;
 | 
						|
    case 'view':
 | 
						|
        $id = $httpRequest->query->getInt('id');
 | 
						|
 | 
						|
        /** @var Portfolio $item */
 | 
						|
        $item = $em->find('ChamiloCoreBundle:Portfolio', $id);
 | 
						|
 | 
						|
        if (empty($item)) {
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        $controller->view($item);
 | 
						|
 | 
						|
        return;
 | 
						|
    case 'copy':
 | 
						|
    case 'teacher_copy':
 | 
						|
        $type = $httpRequest->query->getAlpha('copy');
 | 
						|
        $id = $httpRequest->query->getInt('id');
 | 
						|
 | 
						|
        if ('item' === $type) {
 | 
						|
            $item = $em->find(Portfolio::class, $id);
 | 
						|
 | 
						|
            if (empty($item)) {
 | 
						|
                break;
 | 
						|
            }
 | 
						|
 | 
						|
            if ('copy' === $action) {
 | 
						|
                $controller->copyItem($item);
 | 
						|
            } elseif ('teacher_copy' === $action) {
 | 
						|
                $controller->teacherCopyItem($item);
 | 
						|
            }
 | 
						|
        } elseif ('comment' === $type) {
 | 
						|
            $comment = $em->find(PortfolioComment::class, $id);
 | 
						|
 | 
						|
            if (empty($comment)) {
 | 
						|
                break;
 | 
						|
            }
 | 
						|
 | 
						|
            if ('copy' === $action) {
 | 
						|
                $controller->copyComment($comment);
 | 
						|
            } elseif ('teacher_copy' === $action) {
 | 
						|
                $controller->teacherCopyComment($comment);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        break;
 | 
						|
    case 'mark_important':
 | 
						|
        api_protect_teacher_script();
 | 
						|
 | 
						|
        $item = $em->find(Portfolio::class, $httpRequest->query->getInt('item'));
 | 
						|
        $comment = $em->find(PortfolioComment::class, $httpRequest->query->getInt('id'));
 | 
						|
 | 
						|
        if (empty($item) || empty($comment)) {
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        $controller->markImportantCommentInItem($item, $comment);
 | 
						|
 | 
						|
        return;
 | 
						|
    case 'details':
 | 
						|
        $controller->details($httpRequest);
 | 
						|
 | 
						|
        return;
 | 
						|
    case 'export_pdf':
 | 
						|
        $controller->exportPdf($httpRequest);
 | 
						|
        break;
 | 
						|
    case 'export_zip':
 | 
						|
        $controller->exportZip($httpRequest);
 | 
						|
        break;
 | 
						|
    case 'qualify':
 | 
						|
        api_protect_teacher_script();
 | 
						|
 | 
						|
        if ($httpRequest->query->has('item')) {
 | 
						|
            if ('1' !== api_get_course_setting('qualify_portfolio_item')) {
 | 
						|
                api_not_allowed(true);
 | 
						|
            }
 | 
						|
 | 
						|
            /** @var Portfolio $item */
 | 
						|
            $item = $em->find(
 | 
						|
                Portfolio::class,
 | 
						|
                $httpRequest->query->getInt('item')
 | 
						|
            );
 | 
						|
 | 
						|
            if (empty($item)) {
 | 
						|
                break;
 | 
						|
            }
 | 
						|
 | 
						|
            $controller->qualifyItem($item);
 | 
						|
        } elseif ($httpRequest->query->has('comment')) {
 | 
						|
            if ('1' !== api_get_course_setting('qualify_portfolio_comment')) {
 | 
						|
                api_not_allowed(true);
 | 
						|
            }
 | 
						|
 | 
						|
            /** @var Portfolio $item */
 | 
						|
            $comment = $em->find(
 | 
						|
                PortfolioComment::class,
 | 
						|
                $httpRequest->query->getInt('comment')
 | 
						|
            );
 | 
						|
 | 
						|
            if (empty($comment)) {
 | 
						|
                break;
 | 
						|
            }
 | 
						|
 | 
						|
            $controller->qualifyComment($comment);
 | 
						|
        }
 | 
						|
        break;
 | 
						|
    case 'download_attachment':
 | 
						|
        $controller->downloadAttachment($httpRequest);
 | 
						|
        break;
 | 
						|
    case 'delete_attachment':
 | 
						|
        $controller->deleteAttachment($httpRequest);
 | 
						|
        break;
 | 
						|
    case 'highlighted':
 | 
						|
        api_protect_teacher_script();
 | 
						|
 | 
						|
        $id = $httpRequest->query->getInt('id');
 | 
						|
 | 
						|
        /** @var Portfolio $item */
 | 
						|
        $item = $em->find('ChamiloCoreBundle:Portfolio', $id);
 | 
						|
 | 
						|
        if (empty($item)) {
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        $controller->markAsHighlighted($item);
 | 
						|
        break;
 | 
						|
    case 'template':
 | 
						|
        $id = $httpRequest->query->getInt('id');
 | 
						|
 | 
						|
        /** @var Portfolio $item */
 | 
						|
        $item = $em->find('ChamiloCoreBundle:Portfolio', $id);
 | 
						|
 | 
						|
        if (empty($item)) {
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        $controller->markAsTemplate($item);
 | 
						|
        break;
 | 
						|
    case 'template_comment':
 | 
						|
        $id = $httpRequest->query->getInt('id');
 | 
						|
 | 
						|
        $comment = $em->find(PortfolioComment::class, $id);
 | 
						|
 | 
						|
        if (empty($comment)) {
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        $controller->markAsTemplateComment($comment);
 | 
						|
        break;
 | 
						|
    case 'edit_comment':
 | 
						|
        $id = $httpRequest->query->getInt('id');
 | 
						|
 | 
						|
        $comment = $em->find(PortfolioComment::class, $id);
 | 
						|
 | 
						|
        if (!empty($comment)) {
 | 
						|
            $controller->editComment($comment);
 | 
						|
        }
 | 
						|
 | 
						|
        break;
 | 
						|
    case 'delete_comment':
 | 
						|
        $id = $httpRequest->query->getInt('id');
 | 
						|
 | 
						|
        $comment = $em->find(PortfolioComment::class, $id);
 | 
						|
 | 
						|
        if (!empty($comment)) {
 | 
						|
            $controller->deleteComment($comment);
 | 
						|
        }
 | 
						|
        break;
 | 
						|
    case 'tags':
 | 
						|
    case 'edit_tag':
 | 
						|
        $controller->listTags($httpRequest);
 | 
						|
        break;
 | 
						|
    case 'delete_tag':
 | 
						|
        $id = $httpRequest->query->getInt('id');
 | 
						|
 | 
						|
        $tag = $em->find(Tag::class, $id);
 | 
						|
 | 
						|
        if (empty($tag)) {
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        $controller->deleteTag($tag);
 | 
						|
        break;
 | 
						|
    case 'list':
 | 
						|
    default:
 | 
						|
        $controller->index($httpRequest);
 | 
						|
 | 
						|
        return;
 | 
						|
}
 | 
						|
 |