Fix PHP type conflicts

pull/3844/head
Julio Montoya 5 years ago
parent 104510414d
commit 7cb177cc0b
  1. 16
      public/main/inc/lib/database.lib.php
  2. 15
      public/main/inc/lib/formvalidator/FormValidator.class.php
  3. 2
      src/CoreBundle/Controller/AccountController.php
  4. 2
      src/CoreBundle/Controller/Admin/AdminController.php
  5. 8
      src/CoreBundle/Controller/ResourceController.php
  6. 7
      src/CoreBundle/Entity/Course.php
  7. 3
      src/CoreBundle/Entity/ResourceLink.php
  8. 12
      src/CoreBundle/Entity/Session.php
  9. 20
      src/CoreBundle/Entity/SettingsCurrent.php
  10. 37
      src/CoreBundle/Entity/User.php
  11. 2
      src/CoreBundle/Repository/BranchSyncRepository.php
  12. 4
      src/CoreBundle/Repository/Node/CourseRepository.php
  13. 9
      src/CoreBundle/Repository/Node/IllustrationRepository.php
  14. 25
      src/CoreBundle/Repository/Node/UserRepository.php
  15. 10
      src/CoreBundle/Repository/ResourceRepository.php
  16. 6
      src/CoreBundle/Security/Authorization/Voter/ResourceNodeVoter.php
  17. 8
      src/CoreBundle/Settings/SettingsManager.php
  18. 8
      src/CoreBundle/Traits/ControllerTrait.php
  19. 12
      src/CoreBundle/Traits/ResourceControllerTrait.php
  20. 3
      src/CourseBundle/Repository/CForumForumRepository.php
  21. 3
      src/CourseBundle/Repository/CForumPostRepository.php
  22. 3
      src/CourseBundle/Repository/CForumThreadRepository.php
  23. 3
      src/CourseBundle/Repository/CThematicAdvanceRepository.php

@ -498,16 +498,16 @@ class Database
/**
* Experimental useful database finder.
*
* @param mixed|array $columns
* @param string $table_name
* @param array $conditions
* @param string $type_result
* @param string $option
* @param bool $debug
* @param mixed|array $columns
* @param string $table_name
* @param array $conditions
* @param string $type_result
* @param string $option
* @param bool $debug
*
* @return array
* @todo lot of stuff to do here
* @todo known issues, it doesn't work when using LIKE conditions
* @todo lot of stuff to do here
* @todo known issues, it doesn't work when using LIKE conditions
*
* @example array('where'=> array('course_code LIKE "?%"'))
* @example array('where'=> array('type = ? AND category = ?' => array('setting', 'Plugins'))

@ -21,14 +21,13 @@ class FormValidator extends HTML_QuickForm
/**
* Constructor.
*
* @param string $name Name of the form
* @param string $method (optional) Method ('post' (default) or 'get')
* @param string $action (optional) Action (default is $PHP_SELF)
* @param string $target (optional) Form's target defaults to '_self'
* @param mixed $attributes (optional) Extra attributes for <form> tag
* @param string $layout
* @param bool $trackSubmit (optional) Whether to track if the form was
* submitted by adding a special hidden field (default = true)
* @param string $name Name of the form
* @param string $method (optional) Method ('post' (default) or 'get')
* @param string $action (optional) Action (default is $PHP_SELF)
* @param null|string $target (optional) Form's target defaults to '_self'
* @param mixed $attributes (optional) Extra attributes for <form> tag
* @param string $layout
* @param bool $trackSubmit Whether to track if the form was submitted by adding a special hidden field
*/
public function __construct(
$name,

@ -45,7 +45,6 @@ class AccountController extends BaseController
*/
public function editAction(Request $request, UserRepository $userRepository, IllustrationRepository $illustrationRepo)
{
/** @var User|ResourceInterface $user */
$user = $this->getUser();
if (!is_object($user) || !$user instanceof UserInterface) {
@ -59,6 +58,7 @@ class AccountController extends BaseController
if ($form->isSubmitted() && $form->isValid()) {
$illustration = $form['illustration']->getData();
if ($illustration) {
/** @var User $user */
$illustrationRepo->addIllustration($user, $user, $illustration);
}
$userRepository->updateUser($user);

@ -45,7 +45,7 @@ class AdminController extends BaseController
'search-form',
'get',
$url,
null,
'',
['class' => 'form-inline']
);
$form->addElement('text', 'keyword');

@ -272,8 +272,7 @@ class ResourceController extends AbstractResourceController implements CourseCon
if ($form->has('illustration')) {
$illustration = $form->get('illustration')->getData();
if ($illustration) {
$file = $illustrationRepo->addIllustration($newResource, $this->getUser(), $illustration);
$illustrationRepo->update($file);
$illustrationRepo->addIllustration($newResource, $this->getUser(), $illustration);
}
}
@ -303,7 +302,6 @@ class ResourceController extends AbstractResourceController implements CourseCon
$nodeId = $request->get('id');
$repository = $this->getRepositoryFromRequest($request);
/** @var AbstractResource $resource */
$resource = $repository->getResourceFromResourceNode($nodeId);
$this->denyAccessUnlessValidResource($resource);
$resourceNode = $resource->getResourceNode();
@ -346,7 +344,6 @@ class ResourceController extends AbstractResourceController implements CourseCon
$nodeId = $request->get('id');
$repository = $this->getRepositoryFromRequest($request);
/** @var AbstractResource $resource */
$resource = $repository->getResourceFromResourceNode($nodeId);
$this->denyAccessUnlessValidResource($resource);
@ -380,10 +377,9 @@ class ResourceController extends AbstractResourceController implements CourseCon
$repository = $this->getRepositoryFromRequest($request);
/** @var AbstractResource $resource */
$resource = $repository->getResourceFromResourceNode($id);
$this->denyAccessUnlessValidResource($resource);
/** @var AbstractResource $resource */
$resourceNode = $resource->getResourceNode();
$this->denyAccessUnlessGranted(

@ -1335,12 +1335,7 @@ class Course extends AbstractResource implements ResourceInterface, ResourceWith
return false;
}
/**
* @param string $relationType
* @param string $role
* @param string $status
*/
public function addUser(User $user, $relationType, $role, $status): self
public function addUser(User $user, int $relationType, $role, int $status): self
{
$courseRelUser = new CourseRelUser();
$courseRelUser->setCourse($this);

@ -127,9 +127,6 @@ class ResourceLink
return $this;
}
/**
* @param ArrayCollection $rights
*/
public function setResourceRight($rights): self
{
$this->resourceRight = $rights;

@ -529,24 +529,16 @@ class Session
return $this->hasUserInCourse($user, $course, self::STUDENT);
}
/**
* @param Course $course
*/
public function hasCoachInCourseWithStatus(User $user, Course $course = null): bool
{
if (empty($course)) {
if (null === $course) {
return false;
}
return $this->hasUserInCourse($user, $course, self::COACH);
}
/**
* @param string $status
*
* @return \Doctrine\Common\Collections\Collection|static
*/
public function getUserInCourse(User $user, Course $course, $status = null)
public function getUserInCourse(User $user, Course $course, $status = null): ArrayCollection
{
$criteria = Criteria::create()->where(
Criteria::expr()->eq('course', $course)

@ -293,10 +293,8 @@ class SettingsCurrent
* Set scope.
*
* @param string $scope
*
* @return SettingsCurrent
*/
public function setScope($scope)
public function setScope($scope): self
{
$this->scope = $scope;
@ -317,10 +315,8 @@ class SettingsCurrent
* Set subkeytext.
*
* @param string $subkeytext
*
* @return SettingsCurrent
*/
public function setSubkeytext($subkeytext)
public function setSubkeytext($subkeytext): self
{
$this->subkeytext = $subkeytext;
@ -341,10 +337,8 @@ class SettingsCurrent
* Set accessUrlChangeable.
*
* @param int $accessUrlChangeable
*
* @return SettingsCurrent
*/
public function setAccessUrlChangeable($accessUrlChangeable)
public function setAccessUrlChangeable($accessUrlChangeable): self
{
$this->accessUrlChangeable = $accessUrlChangeable;
@ -365,10 +359,8 @@ class SettingsCurrent
* Set accessUrlLocked.
*
* @param int $accessUrlLocked
*
* @return SettingsCurrent
*/
public function setAccessUrlLocked($accessUrlLocked)
public function setAccessUrlLocked($accessUrlLocked): self
{
$this->accessUrlLocked = (int) $accessUrlLocked;
@ -405,10 +397,8 @@ class SettingsCurrent
/**
* @param AccessUrl $url
*
* @return SettingsCurrent
*/
public function setUrl($url)
public function setUrl($url): self
{
$this->url = $url;

@ -199,11 +199,9 @@ class User implements UserInterface, EquatableInterface, ResourceInterface, Reso
protected $credentialsExpireAt;
/**
* @var \DateTime
*
* @ORM\Column(name="date_of_birth", type="datetime", nullable=true)
*/
protected $dateOfBirth;
protected ?\DateTime $dateOfBirth;
/**
* @var \DateTime
@ -883,9 +881,6 @@ class User implements UserInterface, EquatableInterface, ResourceInterface, Reso
return $this->dropBoxSentFiles;
}
/**
* @param ArrayCollection $value
*/
public function setDropBoxSentFiles($value)
{
$this->dropBoxSentFiles = $value;
@ -899,9 +894,6 @@ class User implements UserInterface, EquatableInterface, ResourceInterface, Reso
return $this->dropBoxReceivedFiles;
}
/**
* @param ArrayCollection $value
*/
public function setDropBoxReceivedFiles($value)
{
$this->dropBoxReceivedFiles = $value;
@ -912,9 +904,6 @@ class User implements UserInterface, EquatableInterface, ResourceInterface, Reso
return $this->courses;
}
/**
* @param ArrayCollection $courses
*/
public function setCourses($courses): self
{
$this->courses = $courses;
@ -1018,20 +1007,12 @@ class User implements UserInterface, EquatableInterface, ResourceInterface, Reso
return \UserManager::formatUserFullName($this).$classString;
}
/**
* @return ArrayCollection
*/
public function getClasses()
{
return $this->classes;
}
/**
* @param ArrayCollection $classes
*
* @return $this
*/
public function setClasses($classes)
public function setClasses($classes): self
{
$this->classes = $classes;
@ -1926,8 +1907,6 @@ class User implements UserInterface, EquatableInterface, ResourceInterface, Reso
/**
* Get sessionAsGeneralCoach.
*
* @param ArrayCollection $value
*/
public function setSessionAsGeneralCoach($value): self
{
@ -1980,8 +1959,6 @@ class User implements UserInterface, EquatableInterface, ResourceInterface, Reso
/**
* Get receivedMessages.
*
* @return ArrayCollection
*/
public function getReceivedMessages()
{
@ -2206,18 +2183,12 @@ class User implements UserInterface, EquatableInterface, ResourceInterface, Reso
return $this;
}
/**
* @return \DateTime
*/
public function getDateOfBirth()
public function getDateOfBirth(): ?\DateTime
{
return $this->dateOfBirth;
}
/**
* @param \DateTime $dateOfBirth
*/
public function setDateOfBirth($dateOfBirth): self
public function setDateOfBirth(\DateTime $dateOfBirth = null): self
{
$this->dateOfBirth = $dateOfBirth;

@ -47,7 +47,7 @@ class BranchSyncRepository extends NestedTreeRepository
$qb->from('Chamilo\CoreBundle\Entity\BranchSync', 'b');
$qb->where('b.parent IS NULL');
$qb->add('orderBy', 'b.id ASC');
$qb->orderBy('b.id ASC');
$qb->setMaxResults(1);
$q = $qb->getQuery()->getResult();
if (empty($q)) {

@ -90,9 +90,9 @@ class CourseRepository extends ResourceRepository
);
if (api_is_western_name_order()) {
$queryBuilder->add('orderBy', 'user.firstname ASC');
$queryBuilder->orderBy('user.firstname ASC');
} else {
$queryBuilder->add('orderBy', 'user.lastname ASC');
$queryBuilder->orderBy('user.lastname ASC');
}
$wherePart = $queryBuilder->expr()->andx();

@ -21,6 +21,7 @@ use Doctrine\ORM\QueryBuilder;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\Security\Core\User\UserInterface;
/**
* Class IllustrationRepository.
@ -67,7 +68,13 @@ final class IllustrationRepository extends ResourceRepository implements GridInt
//->setTitle($title) // already added in $form->getData()
}
public function addIllustration(ResourceInterface $resource, User $user, UploadedFile $uploadFile = null, $crop = ''): ?ResourceFile
/**
* @param User|UserInterface|ResourceInterface $resource
* @param User $user
* @param UploadedFile|null $uploadFile
* @param string $crop
*/
public function addIllustration($resource, $user, UploadedFile $uploadFile = null, $crop = ''): ?ResourceFile
{
if (null === $uploadFile) {
return null;

@ -242,11 +242,8 @@ class UserRepository extends ResourceRepository implements UserLoaderInterface,
$qb->from('Chamilo\CoreBundle\Entity\User', 'b');
// Selecting courses for users
//$qb->innerJoin('u.courses', 'c');
//@todo check app settings
$qb->add('orderBy', 'b.firstname ASC');
$qb->orderBy('b.firstname ASC');
$qb->where('b.firstname LIKE :keyword OR b.lastname LIKE :keyword ');
$qb->setParameter('keyword', "%$keyword%");
$query = $qb->getQuery();
@ -286,7 +283,7 @@ class UserRepository extends ResourceRepository implements UserLoaderInterface,
->setParameter('keyword', $keyword);
}
$qb->add('orderBy', 'course.title DESC');
$qb->orderBy('course.title DESC');
$query = $qb->getQuery();
@ -739,7 +736,7 @@ class UserRepository extends ResourceRepository implements UserLoaderInterface,
}
$agenda = new \Agenda('personal');
$events = $agenda->getEvents('', '', null, null, $userId, 'array');
$events = $agenda->getEvents(0, 0, 0, 0, $userId, 'array');
$eventList = [];
if (!empty($events)) {
foreach ($events as $event) {
@ -823,14 +820,14 @@ class UserRepository extends ResourceRepository implements UserLoaderInterface,
}
$checkEntities = [
'ChamiloCoreBundle:TrackELogin' => 'loginUserId',
'ChamiloCoreBundle:TrackEAccess' => 'accessUserId',
'ChamiloCoreBundle:TrackEOnline' => 'loginUserId',
'ChamiloCoreBundle:TrackEDefault' => 'defaultUserId',
'ChamiloCoreBundle:TrackELastaccess' => 'accessUserId',
'ChamiloCoreBundle:TrackEUploads' => 'uploadUserId',
'ChamiloCoreBundle:GradebookResult' => 'userId',
'ChamiloCoreBundle:TrackEDownloads' => 'downUserId',
TrackELogin::class => 'loginUserId',
TrackEAccess::class => 'accessUserId',
TrackEOnline::class => 'loginUserId',
TrackEDefault::class => 'defaultUserId',
TrackELastaccess::class => 'accessUserId',
TrackEUploads::class => 'uploadUserId',
GradebookResult::class => 'userId',
TrackEDownloads::class => 'downUserId',
];
$maxResults = 1000;

@ -206,7 +206,7 @@ abstract class ResourceRepository extends ServiceEntityRepository
/**
* @return FormInterface
*/
public function getForm(FormFactory $formFactory, AbstractResource $resource = null, $options = [])
public function getForm(FormFactory $formFactory, ResourceInterface $resource = null, $options = [])
{
$formType = $this->getResourceFormType();
@ -598,7 +598,7 @@ abstract class ResourceRepository extends ServiceEntityRepository
return $qb;
}
public function getResourceFromResourceNode(int $resourceNodeId): ?AbstractResource
public function getResourceFromResourceNode(int $resourceNodeId): ?ResourceInterface
{
// Include links
$qb = $this->createQueryBuilder('resource')
@ -617,7 +617,7 @@ abstract class ResourceRepository extends ServiceEntityRepository
return $qb->getQuery()->getOneOrNullResult();
}
public function delete(AbstractResource $resource)
public function delete(ResourceInterface $resource)
{
$children = $resource->getResourceNode()->getChildren();
foreach ($children as $child) {
@ -651,7 +651,7 @@ abstract class ResourceRepository extends ServiceEntityRepository
return $this->resourceNodeRepository->getResourceNodeFileContent($resourceNode);
} catch (\Throwable $exception) {
throw new FileNotFoundException((string) $resource);
throw new FileNotFoundException($resource->getResourceName());
}
}
@ -703,7 +703,7 @@ abstract class ResourceRepository extends ServiceEntityRepository
return '';
} catch (\Throwable $exception) {
throw new FileNotFoundException((string) $resource);
throw new FileNotFoundException($resource->getResourceName());
}
}

@ -362,7 +362,7 @@ class ResourceNodeVoter extends Voter
// Asked mask
$mask = new MaskBuilder();
$mask->add($attribute);
$askedMask = $mask->get();
$askedMask = (string) $mask->get();
// Creating roles
// @todo move this in a service
@ -411,7 +411,7 @@ class ResourceNodeVoter extends Voter
// Check all the right this link has.
// Set rights from the ResourceRight.
foreach ($rights as $right) {
$acl->allow($right->getRole(), null, $right->getMask());
$acl->allow($right->getRole(), null, (string) $right->getMask());
}
// Role and permissions settings
@ -430,7 +430,7 @@ class ResourceNodeVoter extends Voter
// Anons can see.
if ($allowAnonsToSee) {
$acl->allow($anon, null, self::getReaderMask());
$acl->allow($anon, null, (string) self::getReaderMask());
}
// Admin can do everything

@ -90,10 +90,6 @@ class SettingsManager implements SettingsManagerInterface
{
$this->url = $url;
$schemas = array_keys($this->getSchemas());
/**
* @var SchemaInterface $schema
*/
foreach ($schemas as $schema) {
$settings = $this->load($this->convertServiceToNameSpace($schema));
$this->update($settings);
@ -104,7 +100,6 @@ class SettingsManager implements SettingsManagerInterface
{
$this->url = $url;
$schemas = array_keys($this->getSchemas());
/** @var SchemaInterface $schema */
foreach ($schemas as $schema) {
$settings = $this->load($this->convertServiceToNameSpace($schema));
$this->save($settings);
@ -205,7 +200,6 @@ class SettingsManager implements SettingsManagerInterface
$schemaList = [];
$settingsBuilder = new SettingsBuilder();
$all = $this->getAllParametersByCategory();
/** @var SchemaInterface $schema */
foreach ($schemas as $schema) {
$schemaRegister = $this->schemaRegistry->get($schema);
$schemaRegister->buildSettings($settingsBuilder);
@ -314,7 +308,6 @@ class SettingsManager implements SettingsManagerInterface
$persistedParametersMap[$parameter->getVariable()] = $parameter;
}
/** @var SettingsCurrent $url */
$url = $this->getUrl();
$simpleCategoryName = str_replace('chamilo_core.settings.', '', $namespace);
@ -386,7 +379,6 @@ class SettingsManager implements SettingsManagerInterface
new SettingsEvent($settings, $parameters)
);*/
/** @var SettingsCurrent $url */
$url = $this->getUrl();
$simpleCategoryName = str_replace('chamilo_core.settings.', '', $namespace);

@ -92,14 +92,6 @@ trait ControllerTrait
return $this->container->get('breadcrumb');
}*/
/**
* @return MenuFactoryInterface
*/
public function getMenuFactory()
{
return $this->container->get('knp_menu.factory');
}
/**
* @param string $message
*/

@ -47,7 +47,7 @@ trait ResourceControllerTrait
return $this->container->get($name);
}
public function denyAccessUnlessValidResource(AbstractResource $resource = null)
public function denyAccessUnlessValidResource(ResourceInterface $resource = null)
{
if (null === $resource) {
throw new EntityNotFoundException($this->trans('Resource doesn\'t exists.'));
@ -113,7 +113,10 @@ trait ResourceControllerTrait
return $parentResourceNode;
}
protected function getUser(): ?UserInterface
/**
* @return User|null
*/
protected function getUser()
{
/*if (!$this->container->has('security.token_storage')) {
throw new \LogicException('The SecurityBundle is not registered in your application. Try running "composer require symfony/security-bundle".');
@ -123,7 +126,10 @@ trait ResourceControllerTrait
return null;
}
if (!\is_object($user = $token->getUser())) {
/** @var User $user */
$user = $token->getUser();
if (!\is_object($user)) {
// e.g. anonymous authentication
return null;
}

@ -5,6 +5,7 @@
namespace Chamilo\CourseBundle\Repository;
use Chamilo\CoreBundle\Entity\AbstractResource;
use Chamilo\CoreBundle\Entity\ResourceInterface;
use Chamilo\CoreBundle\Repository\ResourceRepository;
use Chamilo\CourseBundle\Entity\CForumForum;
use Doctrine\Persistence\ManagerRegistry;
@ -16,7 +17,7 @@ final class CForumForumRepository extends ResourceRepository
parent::__construct($registry, CForumForum::class);
}
public function delete(AbstractResource $resource)
public function delete(ResourceInterface $resource)
{
/** @var CForumForum $resource */
$threads = $resource->getThreads();

@ -6,6 +6,7 @@ namespace Chamilo\CourseBundle\Repository;
use Chamilo\CoreBundle\Entity\AbstractResource;
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\ResourceInterface;
use Chamilo\CoreBundle\Entity\User;
use Chamilo\CoreBundle\Repository\ResourceRepository;
use Chamilo\CourseBundle\Entity\CForumPost;
@ -76,7 +77,7 @@ class CForumPostRepository extends ResourceRepository
->getResult();
}
public function delete(AbstractResource $resource)
public function delete(ResourceInterface $resource)
{
/** @var CForumPost $resource */
$attachments = $resource->getAttachments();

@ -5,6 +5,7 @@
namespace Chamilo\CourseBundle\Repository;
use Chamilo\CoreBundle\Entity\AbstractResource;
use Chamilo\CoreBundle\Entity\ResourceInterface;
use Chamilo\CoreBundle\Repository\ResourceRepository;
use Chamilo\CourseBundle\Entity\CForumThread;
use Doctrine\Persistence\ManagerRegistry;
@ -19,7 +20,7 @@ class CForumThreadRepository extends ResourceRepository
parent::__construct($registry, CForumThread::class);
}
public function delete(AbstractResource $resource)
public function delete(ResourceInterface $resource)
{
/** @var CForumThread $resource */
$posts = $resource->getPosts();

@ -4,6 +4,7 @@
namespace Chamilo\CourseBundle\Repository;
use Chamilo\CoreBundle\Entity\ResourceInterface;
use Chamilo\CoreBundle\Repository\ResourceNodeRepository;
use Chamilo\CoreBundle\ToolChain;
use Chamilo\CourseBundle\Entity\CThematicAdvance;
@ -82,7 +83,7 @@ final class CThematicAdvanceRepository extends ServiceEntityRepository
return $this;
}
public function delete($resource)
public function delete(ResourceInterface $resource)
{
$this->getEntityManager()->remove($resource);
$this->getEntityManager()->flush();

Loading…
Cancel
Save