|
|
@ -3,6 +3,7 @@ |
|
|
|
|
|
|
|
|
|
|
|
namespace Chamilo\CourseBundle\Repository; |
|
|
|
namespace Chamilo\CourseBundle\Repository; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
use Chamilo\CoreBundle\Entity\Resource\ResourceLink; |
|
|
|
use Chamilo\CoreBundle\Repository\ResourceRepository; |
|
|
|
use Chamilo\CoreBundle\Repository\ResourceRepository; |
|
|
|
use Chamilo\CourseBundle\Entity\CDocument; |
|
|
|
use Chamilo\CourseBundle\Entity\CDocument; |
|
|
|
use Doctrine\ORM\EntityManager; |
|
|
|
use Doctrine\ORM\EntityManager; |
|
|
@ -69,9 +70,7 @@ class CDocumentRepository extends ResourceRepository |
|
|
|
{ |
|
|
|
{ |
|
|
|
try { |
|
|
|
try { |
|
|
|
$document = $this->find($id); |
|
|
|
$document = $this->find($id); |
|
|
|
|
|
|
|
|
|
|
|
$resourceNode = $document->getResourceNode(); |
|
|
|
$resourceNode = $document->getResourceNode(); |
|
|
|
|
|
|
|
|
|
|
|
$resourceFile = $resourceNode->getResourceFile(); |
|
|
|
$resourceFile = $resourceNode->getResourceFile(); |
|
|
|
$media = $resourceFile->getMedia(); |
|
|
|
$media = $resourceFile->getMedia(); |
|
|
|
$provider = $this->mediaPool->getProvider($media->getProviderName()); |
|
|
|
$provider = $this->mediaPool->getProvider($media->getProviderName()); |
|
|
@ -88,4 +87,83 @@ class CDocumentRepository extends ResourceRepository |
|
|
|
throw new FileNotFound($id); |
|
|
|
throw new FileNotFound($id); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* @param CDocument $document |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* @return CDocument|null |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
public function getParent(CDocument $document) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
$resourceParent = $document->getResourceNode()->getParent(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!empty($resourceParent)) { |
|
|
|
|
|
|
|
$resourceParentId = $resourceParent->getId(); |
|
|
|
|
|
|
|
$criteria = [ |
|
|
|
|
|
|
|
'resourceNode' => $resourceParentId, |
|
|
|
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return $this->findOneBy($criteria); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return null; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* @param int $courseId |
|
|
|
|
|
|
|
* @param string $path |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* @return mixed |
|
|
|
|
|
|
|
* @throws \Doctrine\ORM\NonUniqueResultException |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
public function getFolderSize($courseId, $path) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
$path = str_replace('_', '\_', $path); |
|
|
|
|
|
|
|
$addedSlash = $path === '/' ? '' : '/'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$repo = $this->repository; |
|
|
|
|
|
|
|
$qb = $repo->createQueryBuilder('d'); |
|
|
|
|
|
|
|
$query = $qb |
|
|
|
|
|
|
|
->select('SUM(d.size)') |
|
|
|
|
|
|
|
->innerJoin('d.resourceNode', 'r') |
|
|
|
|
|
|
|
->innerJoin('r.resourceLinks', 'l') |
|
|
|
|
|
|
|
->where('d.path LIKE :path') |
|
|
|
|
|
|
|
->andWhere('d.path NOT LIKE :deleted') |
|
|
|
|
|
|
|
->andWhere('d.path NOT LIKE :extra_path ') |
|
|
|
|
|
|
|
->andWhere('l.visibility <> :visibility') |
|
|
|
|
|
|
|
->andWhere('d.course = :course') |
|
|
|
|
|
|
|
->setParameters([ |
|
|
|
|
|
|
|
'path' => $path.$addedSlash.'%', |
|
|
|
|
|
|
|
'extra_path' => $path.$addedSlash.'%/%', |
|
|
|
|
|
|
|
'course' => $courseId, |
|
|
|
|
|
|
|
'deleted' => '%_DELETED_%', |
|
|
|
|
|
|
|
'visibility' => ResourceLink::VISIBILITY_DELETED, |
|
|
|
|
|
|
|
]) |
|
|
|
|
|
|
|
->getQuery(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return $query->getSingleScalarResult(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getTotalSpace($courseId, $groupId = null, $sessionId = null) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
$repo = $this->repository; |
|
|
|
|
|
|
|
$qb = $repo->createQueryBuilder('d'); |
|
|
|
|
|
|
|
$query = $qb |
|
|
|
|
|
|
|
->select('SUM(d.size)') |
|
|
|
|
|
|
|
->innerJoin('d.resourceNode', 'r') |
|
|
|
|
|
|
|
->innerJoin('r.resourceLinks', 'l') |
|
|
|
|
|
|
|
->where('l.course = :course') |
|
|
|
|
|
|
|
->andWhere('l.group = :group') |
|
|
|
|
|
|
|
->andWhere('l.session = :session') |
|
|
|
|
|
|
|
->andWhere('l.visibility <> :visibility') |
|
|
|
|
|
|
|
->setParameters([ |
|
|
|
|
|
|
|
'course' => $courseId, |
|
|
|
|
|
|
|
'group' => $groupId, |
|
|
|
|
|
|
|
'session' => $sessionId, |
|
|
|
|
|
|
|
'visibility' => ResourceLink::VISIBILITY_DELETED, |
|
|
|
|
|
|
|
]) |
|
|
|
|
|
|
|
->getQuery(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return $query->getSingleScalarResult(); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|