admin/teachers can create dirs from ckeditor see BT#12809

pull/2487/head
jmontoyaa 9 years ago
parent bd1c44d58f
commit 46d00fb5cb
  1. 2
      src/Chamilo/CoreBundle/Component/Editor/Connector.php
  2. 57
      src/Chamilo/CoreBundle/Component/Editor/Driver/CourseDriver.php
  3. 37
      src/Chamilo/CoreBundle/Entity/Repository/CourseRepository.php

@ -187,7 +187,7 @@ class Connector
* Get default driver settings.
* @return array
*/
private function getDefaultDriverSettings()
public function getDefaultDriverSettings()
{
// for more options: https://github.com/Studio-42/elFinder/wiki/Connector-configuration-options
return array(

@ -29,7 +29,6 @@ class CourseDriver extends Driver implements DriverInterface
$coursePath = api_get_path(SYS_COURSE_PATH);
$courseDir = $courseInfo['directory'].'/document';
$baseDir = $coursePath.$courseDir;
$this->coursePath = $baseDir;
// Creates shared folder
@ -101,6 +100,15 @@ class CourseDriver extends Driver implements DriverInterface
)
);
// admin/teachers can create dirs from ckeditor
if ($this->allowToEdit()) {
$defaultDisabled = $this->connector->getDefaultDriverSettings()['disabled'];
$defaultDisabled = array_flip($defaultDisabled);
unset($defaultDisabled['mkdir']);
$defaultDisabled = array_flip($defaultDisabled);
$config['disabled'] = $defaultDisabled;
}
$foldersToHide = \DocumentManager::get_all_document_folders(
$this->connector->course,
null,
@ -297,7 +305,6 @@ class CourseDriver extends Driver implements DriverInterface
public function allow()
{
//if ($this->connector->security->isGranted('ROLE_ADMIN')) {
if (api_is_anonymous()) {
return false;
}
@ -321,6 +328,52 @@ class CourseDriver extends Driver implements DriverInterface
return $allow && api_is_allowed_to_edit(null, true);
}
/**
* @inheritdoc
*/
protected function _mkdir($path, $name)
{
if ($this->allowToEdit() == false) {
return false;
}
$path = $this->_joinPath($path, $name);
if (mkdir($path)) {
$this->setConnectorFromPlugin();
chmod($path, $this->options['dirMode']);
clearstatcache();
$_course = $this->connector->course;
$realPathRoot = $this->getCourseDocumentSysPath();
// Removing course path
$newPath = str_replace($realPathRoot, '/', $path);
$documentId = add_document(
$_course,
$newPath,
'folder',
0,
$name,
null,
0,
true,
api_get_group_id(),
api_get_session_id(),
api_get_user_id()
);
if (empty($documentId)) {
unlink($path);
return false;
}
return $path;
}
return false;
}
/**
* @param string $attr
* @param string $path

@ -4,6 +4,7 @@
namespace Chamilo\CoreBundle\Entity\Repository;
use Chamilo\CoreBundle\Entity\Course;
use Doctrine\Common\Collections\Criteria;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query\Expr\Join;
use Doctrine\ORM\QueryBuilder;
@ -111,4 +112,40 @@ class CourseRepository extends EntityRepository
return $queryBuilder;
}
public function getCoursesWithNoSession($urlId)
{
$queryBuilder = $this->createQueryBuilder('c');
$criteria = Criteria::create();
$queryBuilder = $queryBuilder
->select('c')
->leftJoin('c.urls', 'u')
->leftJoin('c.sessions', 's')
/*->leftJoin(
'ChamiloCoreBundle:SessionRelCourse',
'sc',
Join::WITH,
'c != sc.course'
)->leftJoin(
'ChamiloCoreBundle:AccessUrlRelCourse',
'ac',
Join::WITH,
'c = ac.course'
)*/
->where($queryBuilder->expr()->isNull('s'))
//->where($queryBuilder->expr()->eq('s', 0))
->where($queryBuilder->expr()->eq('u.url', $urlId))
->getQuery();
$courses = $queryBuilder->getResult();
$courseList = [];
/** @var Course $course */
foreach ($courses as $course) {
if (empty($course->getSessions()->count() == 0)) {
$courseList[] = $course;
}
}
return $courseList;
}
}

Loading…
Cancel
Save