소스 검색

Allow login via symfony2 and chamilo using custom encoder

jmontoyaa 8 년 전
부모
커밋
07eedc9186

+ 6 - 6
app/AppKernel.php

@@ -62,7 +62,6 @@ class AppKernel extends Kernel
             new Sonata\AdminBundle\SonataAdminBundle(),
             new Sonata\DoctrineORMAdminBundle\SonataDoctrineORMAdminBundle(),
 
-
             // CMF Integration
             new Symfony\Cmf\Bundle\RoutingBundle\CmfRoutingBundle(),
             //new Symfony\Cmf\Bundle\SearchBundle\CmfSearchBundle(),
@@ -84,11 +83,12 @@ class AppKernel extends Kernel
             new FOS\UserBundle\FOSUserBundle(),
             new Sonata\UserBundle\SonataUserBundle('FOSUserBundle'),
             new Chamilo\UserBundle\ChamiloUserBundle(),
-            /*
+
             // Sylius
-            /*new Sylius\Bundle\SettingsBundle\SyliusSettingsBundle(),
-            //new Sylius\Bundle\AttributeBundle\SyliusAttributeBundle(),
+            new Sylius\Bundle\SettingsBundle\SyliusSettingsBundle(),
+            new Sylius\Bundle\AttributeBundle\SyliusAttributeBundle(),
             new Sylius\Bundle\ResourceBundle\SyliusResourceBundle(),
+                /*
             new Sylius\Bundle\FlowBundle\SyliusFlowBundle(),
             new WhiteOctober\PagerfantaBundle\WhiteOctoberPagerfantaBundle(),
             new Bazinga\Bundle\HateoasBundle\BazingaHateoasBundle(),*/
@@ -98,9 +98,9 @@ class AppKernel extends Kernel
             new Chamilo\CoreBundle\ChamiloCoreBundle(),
             new Chamilo\CourseBundle\ChamiloCourseBundle(),
             new Chamilo\SkillBundle\ChamiloSkillBundle(),
-            // new Chamilo\SettingsBundle\ChamiloSettingsBundle(),
+            new Chamilo\SettingsBundle\ChamiloSettingsBundle(),
             new Chamilo\ThemeBundle\ChamiloThemeBundle(),
-            //new Chamilo\NotificationBundle\ChamiloNotificationBundle(),
+            new Chamilo\NotificationBundle\ChamiloNotificationBundle(),
             new Chamilo\AdminBundle\ChamiloAdminBundle(),
             new Chamilo\TimelineBundle\ChamiloTimelineBundle(),
             new \Chamilo\ContactBundle\ChamiloContactBundle(),

+ 1 - 1
app/config/fos/fos_user.yml

@@ -3,7 +3,7 @@ fos_user:
     firewall_name:  main
 
     # if you change the class configuration, please also alter the sonata_user.yml file
-    user_class:     Chamilo\PageBundle\Entity\User
+    user_class:     Chamilo\UserBundle\Entity\User
 
     group:
         group_class:   Chamilo\UserBundle\Entity\Group

+ 71 - 0
main/inc/lib/course.lib.php

@@ -3,6 +3,9 @@
 
 use Chamilo\CoreBundle\Entity\ExtraField as EntityExtraField;
 use ChamiloSession as Session;
+//use Chamilo\CourseBundle\Manager\SettingsManager;
+use Chamilo\CourseBundle\ToolChain;
+use Chamilo\CoreBundle\Entity\Course;
 use Chamilo\CourseBundle\Component\CourseCopy\CourseBuilder;
 use Chamilo\CourseBundle\Component\CourseCopy\CourseRestorer;
 
@@ -29,6 +32,58 @@ class CourseManager
     const USER_SEPARATOR = ' |';
     const COURSE_FIELD_TYPE_CHECKBOX = 10;
     public $columns = array();
+    public static $em;
+    private static $manager;
+    public static $toolList;
+    public static $courseSettingsManager;
+
+     /**
+     * @param \Doctrine\ORM\EntityManager
+     */
+    public static function setEntityManager($em)
+    {
+        self::$em = $em;
+    }
+
+    /**
+     * @return \Doctrine\ORM\EntityManager
+     */
+    public static function getEntityManager()
+    {
+        return self::$em;
+    }
+
+    /**
+     * @return Chamilo\CoreBundle\Entity\CourseManager
+     */
+    public static function setCourseManager($manager)
+    {
+        self::$manager = $manager;
+    }
+
+    /**
+     * @return SettingsManager
+     */
+    public static function getCourseSettingsManager()
+    {
+        return self::$courseSettingsManager;
+    }
+
+    /**
+     * @param SettingsManager $courseSettingsManager
+     */
+    public static function setCourseSettingsManager($courseSettingsManager)
+    {
+        self::$courseSettingsManager = $courseSettingsManager;
+    }
+
+    /**
+     * @return Chamilo\CoreBundle\Entity\Manager\CourseManager
+     */
+    public static function getManager()
+    {
+        return self::$manager;
+    }
 
     /**
      * Creates a course
@@ -6196,4 +6251,20 @@ class CourseManager
         $courseFieldValue = new ExtraFieldValue('course');
         $courseFieldValue->saveFieldValues($params);
     }
+
+    /**
+     * @param ToolChain $toolList
+     */
+    public static function setToolList($toolList)
+    {
+        self::$toolList = $toolList;
+    }
+
+    /**
+     * @return ToolChain
+     */
+    public static function getToolList()
+    {
+        return self::$toolList;
+    }
 }

+ 0 - 2288
src/Chamilo/PageBundle/Entity/User.php

@@ -1,2288 +0,0 @@
-<?php
-/* For licensing terms, see /license.txt */
-
-namespace Chamilo\PageBundle\Entity;
-
-use Chamilo\CoreBundle\Entity\ExtraFieldValues;
-use Chamilo\CoreBundle\Entity\UsergroupRelUser;
-use Doctrine\Common\Collections\ArrayCollection;
-use Doctrine\ORM\Event\LifecycleEventArgs;
-use Doctrine\ORM\Mapping as ORM;
-//use Sonata\UserBundle\Entity\BaseUser as BaseUser;
-use Sonata\UserBundle\Model\User as BaseUser;
-use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
-use Symfony\Component\HttpFoundation\File\File;
-//use Symfony\Component\Security\Core\User\UserInterface;
-use Symfony\Component\Validator\Constraints as Assert;
-use Symfony\Component\Validator\Mapping\ClassMetadata;
-use FOS\UserBundle\Model\UserInterface;
-use FOS\UserBundle\Model\GroupInterface;
-
-class User extends BaseUser
-{
-    const COURSE_MANAGER = 1;
-    const TEACHER = 1;
-    const SESSION_ADMIN = 3;
-    const DRH = 4;
-    const STUDENT = 5;
-    const ANONYMOUS = 6;
-
-    /**
-     * @var integer
-     *
-     * @ORM\Column(name="id", type="integer")
-     * @ORM\Id
-     * @ORM\GeneratedValue(strategy="AUTO")
-     */
-    protected $id;
-
-    /**
-     * @var integer
-     *
-     * @ORM\Column(name="user_id", type="integer", nullable=true)
-     */
-    protected $userId;
-
-    /**
-     * @var string
-     *
-     * @ORM\Column(name="username", type="string", length=100, nullable=false, unique=true)
-     */
-    //protected $username;
-
-    /**
-     * @var string
-     *
-     * * @ORM\Column(name="username_canonical", type="string", length=100, nullable=false, unique=true)
-     */
-    //protected $usernameCanonical;
-
-    /**
-     * @var string
-     *
-     * @ORM\Column(name="email", type="string", length=100, nullable=false, unique=false)
-     */
-    //protected $email;
-
-    /**
-     * @var boolean
-     * @ORM\Column(name="locked", type="boolean")
-     */
-    //protected $locked;
-
-    /**
-     * @var boolean
-     * @ORM\Column(name="enabled", type="boolean")
-     */
-    //protected $enabled;
-
-    /**
-     * @var boolean
-     * @ORM\Column(name="expired", type="boolean")
-     */
-    //protected $expired;
-
-    /**
-     * @var boolean
-     * @ORM\Column(name="credentials_expired", type="boolean")
-     */
-    //protected $credentialsExpired;
-
-    /**
-     * @var \DateTime
-     * @ORM\Column(name="credentials_expire_at", type="datetime", nullable=true, unique=false)
-     */
-    //protected $credentialsExpireAt;
-
-    /**
-     * @var \DateTime
-     * @ORM\Column(name="expires_at", type="datetime", nullable=true, unique=false)
-     */
-    //protected $expiresAt;
-
-    /**
-     * @var string
-     *
-     * @ORM\Column(name="lastname", type="string", length=60, nullable=true, unique=false)
-     */
-    protected $lastname;
-
-    /**
-     * @var string
-     *
-     * @ORM\Column(name="firstname", type="string", length=60, nullable=true, unique=false)
-     */
-    protected $firstname;
-
-    /**
-     * @var string
-     *
-     * @ORM\Column(name="password", type="string", length=255, nullable=false, unique=false)
-     */
-    //protected $password;
-
-    /**
-     * @var string
-     *
-     * @ORM\Column(name="auth_source", type="string", length=50, nullable=true, unique=false)
-     */
-    private $authSource;
-
-    /**
-     * @var boolean
-     *
-     * @ORM\Column(name="status", type="integer", nullable=false)
-     */
-    private $status;
-
-    /**
-     * @var string
-     *
-     * @ORM\Column(name="official_code", type="string", length=40, nullable=true, unique=false)
-     */
-    private $officialCode;
-
-    /**
-     * @var string
-     *
-     * @ORM\Column(name="phone", type="string", length=30, nullable=true, unique=false)
-     */
-    protected $phone;
-
-    /**
-     * Vich\UploadableField(mapping="user_image", fileNameProperty="picture_uri")
-     *
-     * note This is not a mapped field of entity metadata, just a simple property.
-     *
-     * @var File $imageFile
-     */
-    protected $imageFile;
-
-    /**
-     * @var string
-     * @ORM\Column(name="picture_uri", type="string", length=250, nullable=true, unique=false)
-     */
-    private $pictureUri;
-
-    /**
-     * ORM\ManyToOne(targetEntity="Application\Sonata\MediaBundle\Entity\Media", cascade={"all"} )
-     * @ORM\JoinColumn(name="picture_uri", referencedColumnName="id")
-     */
-    //protected $pictureUri;
-
-    /**
-     * @var integer
-     *
-     * @ORM\Column(name="creator_id", type="integer", nullable=true, unique=false)
-     */
-    private $creatorId;
-
-    /**
-     * @var string
-     *
-     * @ORM\Column(name="competences", type="text", nullable=true, unique=false)
-     */
-    private $competences;
-
-    /**
-     * @var string
-     *
-     * @ORM\Column(name="diplomas", type="text", nullable=true, unique=false)
-     */
-    private $diplomas;
-
-    /**
-     * @var string
-     *
-     * @ORM\Column(name="openarea", type="text", nullable=true, unique=false)
-     */
-    private $openarea;
-
-    /**
-     * @var string
-     *
-     * @ORM\Column(name="teach", type="text", nullable=true, unique=false)
-     */
-    private $teach;
-
-    /**
-     * @var string
-     *
-     * @ORM\Column(name="productions", type="string", length=250, nullable=true, unique=false)
-     */
-    private $productions;
-
-    /**
-     * @var string
-     *
-     * @ORM\Column(name="language", type="string", length=40, nullable=true, unique=false)
-     */
-    private $language;
-
-    /**
-     * @var \DateTime
-     *
-     * @ORM\Column(name="registration_date", type="datetime", nullable=false, unique=false)
-     */
-    private $registrationDate;
-
-    /**
-     * @var \DateTime
-     *
-     * @ORM\Column(name="expiration_date", type="datetime", nullable=true, unique=false)
-     */
-    private $expirationDate;
-
-    /**
-     * @var boolean
-     *
-     * @ORM\Column(name="active", type="boolean", nullable=false, unique=false)
-     */
-    private $active;
-
-    /**
-     * @var string
-     *
-     * @ORM\Column(name="openid", type="string", length=255, nullable=true, unique=false)
-     */
-    private $openid;
-
-    /**
-     * @var string
-     *
-     * @ORM\Column(name="theme", type="string", length=255, nullable=true, unique=false)
-     */
-    private $theme;
-
-    /**
-     * @var integer
-     *
-     * @ORM\Column(name="hr_dept_id", type="smallint", nullable=true, unique=false)
-     */
-    private $hrDeptId;
-
-    /**
-     * @ORM\Column(type="string", length=255)
-     */
-    //protected $salt;
-
-    /**
-     * @var \DateTime
-     *
-     * @ORM\Column(name="last_login", type="datetime", nullable=true, unique=false)
-     */
-    //protected $lastLogin;
-
-    /**
-     * Random string sent to the user email address in order to verify it
-     *
-     * @var string
-     * @ORM\Column(name="confirmation_token", type="string", length=255, nullable=true)
-     */
-    //protected $confirmationToken;
-
-    /**
-     * @var \DateTime
-     *
-     * @ORM\Column(name="password_requested_at", type="datetime", nullable=true, unique=false)
-     */
-    //protected $passwordRequestedAt;
-
-    /**
-     * @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\CourseRelUser", mappedBy="user")
-     **/
-    protected $courses;
-
-    /**
-     * @ORM\OneToMany(targetEntity="Chamilo\CourseBundle\Entity\CItemProperty", mappedBy="user")
-     **/
-    //protected $items;
-
-    /**
-     * @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\UsergroupRelUser", mappedBy="user")
-     **/
-    protected $classes;
-
-    /**
-     * ORM\OneToMany(targetEntity="Chamilo\CourseBundle\Entity\CDropboxPost", mappedBy="user")
-     **/
-    protected $dropBoxReceivedFiles;
-
-    /**
-     * ORM\OneToMany(targetEntity="Chamilo\CourseBundle\Entity\CDropboxFile", mappedBy="userSent")
-     **/
-    protected $dropBoxSentFiles;
-
-    /**
-     * @ORM\Column(type="array")
-     */
-    //protected $roles;
-
-    /**
-     * @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\JuryMembers", mappedBy="user")
-     **/
-    //protected $jurySubscriptions;
-
-    /**
-     * @ORM\ManyToMany(targetEntity="Chamilo\UserBundle\Entity\Group")
-     * @ORM\JoinTable(name="fos_user_user_group",
-     *      joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
-     *      inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")}
-     * )
-     */
-    protected $groups;
-
-
-    //private $isActive;
-
-    /**
-     * ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\CurriculumItemRelUser", mappedBy="user")
-     **/
-    protected $curriculumItems;
-
-    /*
-     * @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\AccessUrlRelUser", mappedBy="user")
-     *
-     */
-    protected $portals;
-
-    /**
-     * @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\Session", mappedBy="generalCoach")
-     **/
-    protected $sessionAsGeneralCoach;
-
-    /**
-     * @var ArrayCollection
-     * ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\UserFieldValues", mappedBy="user", orphanRemoval=true, cascade={"persist"})
-     **/
-    protected $extraFields;
-
-    /**
-     * ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\Resource\ResourceNode", mappedBy="creator")
-     **/
-    protected $resourceNodes;
-
-    /**
-     * @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\SessionRelCourseRelUser", mappedBy="user", cascade={"persist"})
-     **/
-    protected $sessionCourseSubscriptions;
-
-    /**
-     * Constructor
-     */
-    public function __construct()
-    {
-        $this->status = self::STUDENT;
-
-        $this->salt = sha1(uniqid(null, true));
-        $this->isActive = true;
-        $this->active = 1;
-        $this->registrationDate = new \DateTime();
-        $this->authSource = 'platform';
-        $this->courses = new ArrayCollection();
-        $this->items = new ArrayCollection();
-        $this->classes = new ArrayCollection();
-        $this->curriculumItems = new ArrayCollection();
-        $this->portals = new ArrayCollection();
-        $this->dropBoxSentFiles = new ArrayCollection();
-        $this->dropBoxReceivedFiles = new ArrayCollection();
-        //$this->extraFields = new ArrayCollection();
-        //$this->userId = 0;
-        //$this->createdAt = new \DateTime();
-        //$this->updatedAt = new \DateTime();
-
-        $this->enabled = false;
-        $this->locked = false;
-        $this->expired = false;
-        $this->roles = array();
-        $this->credentialsExpired = false;
-    }
-
-    /**
-     * @return string
-     */
-    public function __toString()
-    {
-        return $this->getUsername();
-    }
-
-    /**
-     * Updates the id with the user_id
-     *  @ORM\PostPersist()
-     */
-    public function postPersist(LifecycleEventArgs $args)
-    {
-        //parent::postPersist();
-        // Updates the user_id field
-        $user = $args->getEntity();
-        $this->setUserId($user->getId());
-        /*$em = $args->getEntityManager();
-        $em->persist($user);
-        $em->flush();*/
-    }
-
-    /**
-     * @param int $userId
-     */
-    public function setId($userId)
-    {
-        $this->id = $userId;
-    }
-
-    /**
-     * @param int $userId
-     */
-    public function setUserId($userId)
-    {
-        if (!empty($userId)) {
-            $this->userId = $userId;
-        }
-    }
-
-    /**
-     * @return int
-     */
-    public function getId()
-    {
-        return $this->id;
-    }
-
-    /**
-     * @return string
-     */
-    public function getEncoderName()
-    {
-        return "legacy_encoder";
-    }
-
-    /**
-     * @return ArrayCollection
-     */
-    public function getDropBoxSentFiles()
-    {
-        return $this->dropBoxSentFiles;
-    }
-
-    /**
-     * @return ArrayCollection
-     */
-    public function getDropBoxReceivedFiles()
-    {
-        return $this->dropBoxReceivedFiles;
-    }
-
-    /**
-     * @return ArrayCollection
-     */
-    public function getCourses()
-    {
-        return $this->courses;
-    }
-
-    /**
-     * @return array
-     */
-    public static function getPasswordConstraints()
-    {
-        return
-            array(
-                new Assert\Length(array('min' => 5)),
-                // Alpha numeric + "_" or "-"
-                new Assert\Regex(array(
-                        'pattern' => '/^[a-z\-_0-9]+$/i',
-                        'htmlPattern' => '/^[a-z\-_0-9]+$/i')
-                ),
-                // Min 3 letters - not needed
-                /*new Assert\Regex(array(
-                    'pattern' => '/[a-z]{3}/i',
-                    'htmlPattern' => '/[a-z]{3}/i')
-                ),*/
-                // Min 2 numbers
-                new Assert\Regex(array(
-                        'pattern' => '/[0-9]{2}/',
-                        'htmlPattern' => '/[0-9]{2}/')
-                ),
-            )
-            ;
-    }
-
-    /**
-     * @param ClassMetadata $metadata
-     */
-    public static function loadValidatorMetadata(ClassMetadata $metadata)
-    {
-        //$metadata->addPropertyConstraint('firstname', new Assert\NotBlank());
-        //$metadata->addPropertyConstraint('lastname', new Assert\NotBlank());
-        //$metadata->addPropertyConstraint('email', new Assert\Email());
-        /*
-        $metadata->addPropertyConstraint('password',
-            new Assert\Collection(self::getPasswordConstraints())
-        );*/
-
-        /*$metadata->addConstraint(new UniqueEntity(array(
-            'fields'  => 'username',
-            'message' => 'This value is already used.',
-        )));*/
-
-        /*$metadata->addPropertyConstraint(
-            'username',
-            new Assert\Length(array(
-                'min'        => 2,
-                'max'        => 50,
-                'minMessage' => 'This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.',
-                'maxMessage' => 'This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.',
-            ))
-        );*/
-    }
-
-    /**
-     * @inheritDoc
-     */
-    public function isEqualTo(UserInterface $user)
-    {
-        if (!$user instanceof User) {
-            return false;
-        }
-
-        /*if ($this->password !== $user->getPassword()) {
-            return false;
-        }*/
-
-        /*if ($this->getSalt() !== $user->getSalt()) {
-            return false;
-        }*/
-
-        /*if ($this->username !== $user->getUsername()) {
-            return false;
-        }*/
-
-        return true;
-    }
-
-    /**
-     * @return ArrayCollection
-     */
-    public function getPortals()
-    {
-        return $this->portals;
-    }
-
-    /**
-     * @param $portal
-     */
-    public function setPortal($portal)
-    {
-        $this->portals->add($portal);
-    }
-
-    /**
-     * @return ArrayCollection
-     */
-    public function getCurriculumItems()
-    {
-        return $this->curriculumItems;
-    }
-
-    /**
-     * @param $items
-     */
-    public function setCurriculumItems($items)
-    {
-        $this->curriculumItems = $items;
-    }
-
-    /**
-     * @return bool
-     */
-    public function getIsActive()
-    {
-        return $this->active == 1;
-    }
-
-    /**
-     * @return bool
-     */
-    public function isActive()
-    {
-        return $this->getIsActive();
-    }
-
-
-    /**
-     * @inheritDoc
-     */
-    public function isEnabled()
-    {
-        return $this->enabled;
-    }
-
-    /**
-     *
-     * @return ArrayCollection
-     */
-    /*public function getRolesObj()
-    {
-        return $this->roles;
-    }*/
-
-    /**
-     * Set salt
-     *
-     * @param string $salt
-     *
-     * @return User
-     */
-    public function setSalt($salt)
-    {
-        $this->salt = $salt;
-
-        return $this;
-    }
-
-    /**
-     * Get salt
-     *
-     * @return string
-     */
-    public function getSalt()
-    {
-        return $this->salt;
-    }
-
-    /**
-     * @return ArrayCollection
-     */
-    public function getClasses()
-    {
-        return $this->classes;
-    }
-
-    /**
-     *
-     */
-    public function getLps()
-    {
-        //return $this->lps;
-        /*$criteria = Criteria::create()
-            ->where(Criteria::expr()->eq("id", "666"))
-            //->orderBy(array("username" => "ASC"))
-            //->setFirstResult(0)
-            //->setMaxResults(20)
-        ;
-        $lps = $this->lps->matching($criteria);*/
-        /*return $this->lps->filter(
-            function($entry) use ($idsToFilter) {
-                return $entry->getId() == 1;
-        });*/
-    }
-
-    /**
-     * @todo don't use api_get_person_name
-     * @return string
-     */
-    public function getCompleteName()
-    {
-        return api_get_person_name($this->firstname, $this->lastname);
-    }
-
-    /**
-     * Returns the list of classes for the user
-     * @return string
-     */
-    public function getCompleteNameWithClasses()
-    {
-        $classSubscription = $this->getClasses();
-        $classList = array();
-        /** @var UsergroupRelUser $subscription */
-        foreach ($classSubscription as $subscription) {
-            $class = $subscription->getUsergroup();
-            $classList[] = $class->getName();
-        }
-        $classString = !empty($classList) ? ' ['.implode(', ', $classList).']' : null;
-
-        return $this->getCompleteName().$classString;
-    }
-
-    /**
-     * Get userId
-     *
-     * @return integer
-     */
-    public function getUserId()
-    {
-        return $this->userId;
-    }
-
-    /**
-     * Set lastname
-     *
-     * @param string $lastname
-     *
-     * @return User
-     */
-    public function setLastname($lastname)
-    {
-        $this->lastname = $lastname;
-
-        return $this;
-    }
-
-
-    /**
-     * Set firstname
-     *
-     * @param string $firstname
-     *
-     * @return User
-     */
-    public function setFirstname($firstname)
-    {
-        $this->firstname = $firstname;
-
-        return $this;
-    }
-
-    /**
-     * Set password
-     *
-     * @param string $password
-     * @return User
-     */
-    public function setPassword($password)
-    {
-        $this->password = $password;
-
-        return $this;
-    }
-
-    /**
-     * Get password
-     *
-     * @return string
-     */
-    public function getPassword()
-    {
-        return $this->password;
-    }
-
-    /**
-     * Set authSource
-     *
-     * @param string $authSource
-     * @return User
-     */
-    public function setAuthSource($authSource)
-    {
-        $this->authSource = $authSource;
-
-        return $this;
-    }
-
-    /**
-     * Get authSource
-     *
-     * @return string
-     */
-    public function getAuthSource()
-    {
-        return $this->authSource;
-    }
-
-    /**
-     * Set email
-     *
-     * @param string $email
-     * @return User
-     */
-    public function setEmail($email)
-    {
-        $this->email = $email;
-
-        return $this;
-    }
-
-    /**
-     * Get email
-     *
-     * @return string
-     */
-    public function getEmail()
-    {
-        return $this->email;
-    }
-
-    /**
-     * Set status
-     *
-     * @param int $status
-     *
-     * @return User
-     */
-    public function setStatus($status)
-    {
-        $this->status = $status;
-
-        return $this;
-    }
-
-    /**
-     * Get status
-     *
-     * @return boolean
-     */
-    public function getStatus()
-    {
-        return $this->status;
-    }
-
-    /**
-     * Set officialCode
-     *
-     * @param string $officialCode
-     * @return User
-     */
-    public function setOfficialCode($officialCode)
-    {
-        $this->officialCode = $officialCode;
-
-        return $this;
-    }
-
-    /**
-     * Get officialCode
-     *
-     * @return string
-     */
-    public function getOfficialCode()
-    {
-        return $this->officialCode;
-    }
-
-    /**
-     * Set phone
-     *
-     * @param string $phone
-     * @return User
-     */
-    public function setPhone($phone)
-    {
-        $this->phone = $phone;
-
-        return $this;
-    }
-
-    /**
-     * Get phone
-     *
-     * @return string
-     */
-    public function getPhone()
-    {
-        return $this->phone;
-    }
-
-    /**
-     * Set pictureUri
-     *
-     * @param string $pictureUri
-     * @return User
-     */
-    public function setPictureUri($pictureUri)
-    {
-        $this->pictureUri = $pictureUri;
-
-        return $this;
-    }
-
-    /**
-     * Get pictureUri
-     *
-     * @return Media
-     */
-    public function getPictureUri()
-    {
-        return $this->pictureUri;
-    }
-
-    /**
-     * Set creatorId
-     *
-     * @param integer $creatorId
-     * @return User
-     */
-    public function setCreatorId($creatorId)
-    {
-        $this->creatorId = $creatorId;
-
-        return $this;
-    }
-
-    /**
-     * Get creatorId
-     *
-     * @return integer
-     */
-    public function getCreatorId()
-    {
-        return $this->creatorId;
-    }
-
-    /**
-     * Set competences
-     *
-     * @param string $competences
-     * @return User
-     */
-    public function setCompetences($competences)
-    {
-        $this->competences = $competences;
-
-        return $this;
-    }
-
-    /**
-     * Get competences
-     *
-     * @return string
-     */
-    public function getCompetences()
-    {
-        return $this->competences;
-    }
-
-    /**
-     * Set diplomas
-     *
-     * @param string $diplomas
-     * @return User
-     */
-    public function setDiplomas($diplomas)
-    {
-        $this->diplomas = $diplomas;
-
-        return $this;
-    }
-
-    /**
-     * Get diplomas
-     *
-     * @return string
-     */
-    public function getDiplomas()
-    {
-        return $this->diplomas;
-    }
-
-    /**
-     * Set openarea
-     *
-     * @param string $openarea
-     * @return User
-     */
-    public function setOpenarea($openarea)
-    {
-        $this->openarea = $openarea;
-
-        return $this;
-    }
-
-    /**
-     * Get openarea
-     *
-     * @return string
-     */
-    public function getOpenarea()
-    {
-        return $this->openarea;
-    }
-
-    /**
-     * Set teach
-     *
-     * @param string $teach
-     * @return User
-     */
-    public function setTeach($teach)
-    {
-        $this->teach = $teach;
-
-        return $this;
-    }
-
-    /**
-     * Get teach
-     *
-     * @return string
-     */
-    public function getTeach()
-    {
-        return $this->teach;
-    }
-
-    /**
-     * Set productions
-     *
-     * @param string $productions
-     * @return User
-     */
-    public function setProductions($productions)
-    {
-        $this->productions = $productions;
-
-        return $this;
-    }
-
-    /**
-     * Get productions
-     *
-     * @return string
-     */
-    public function getProductions()
-    {
-        return $this->productions;
-    }
-
-    /**
-     * Set language
-     *
-     * @param string $language
-     * @return User
-     */
-    public function setLanguage($language)
-    {
-        $this->language = $language;
-
-        return $this;
-    }
-
-    /**
-     * Get language
-     *
-     * @return string
-     */
-    public function getLanguage()
-    {
-        return $this->language;
-    }
-
-    /**
-     * Set registrationDate
-     *
-     * @param \DateTime $registrationDate
-     * @return User
-     */
-    public function setRegistrationDate($registrationDate)
-    {
-        $this->registrationDate = $registrationDate;
-
-        return $this;
-    }
-
-    /**
-     * Get registrationDate
-     *
-     * @return \DateTime
-     */
-    public function getRegistrationDate()
-    {
-        return $this->registrationDate;
-    }
-
-    /**
-     * Set expirationDate
-     *
-     * @param \DateTime $expirationDate
-     *
-     * @return User
-     */
-    public function setExpirationDate($expirationDate)
-    {
-        $this->expirationDate = $expirationDate;
-
-        return $this;
-    }
-
-    /**
-     * Get expirationDate
-     *
-     * @return \DateTime
-     */
-    public function getExpirationDate()
-    {
-        return $this->expirationDate;
-    }
-
-    /**
-     * Set active
-     *
-     * @param boolean $active
-     * @return User
-     */
-    public function setActive($active)
-    {
-        $this->active = $active;
-
-        return $this;
-    }
-
-    /**
-     * Get active
-     *
-     * @return boolean
-     */
-    public function getActive()
-    {
-        return $this->active;
-    }
-
-    /**
-     * Set openid
-     *
-     * @param string $openid
-     * @return User
-     */
-    public function setOpenid($openid)
-    {
-        $this->openid = $openid;
-
-        return $this;
-    }
-
-    /**
-     * Get openid
-     *
-     * @return string
-     */
-    public function getOpenid()
-    {
-        return $this->openid;
-    }
-
-    /**
-     * Set theme
-     *
-     * @param string $theme
-     * @return User
-     */
-    public function setTheme($theme)
-    {
-        $this->theme = $theme;
-
-        return $this;
-    }
-
-    /**
-     * Get theme
-     *
-     * @return string
-     */
-    public function getTheme()
-    {
-        return $this->theme;
-    }
-
-    /**
-     * Set hrDeptId
-     *
-     * @param integer $hrDeptId
-     * @return User
-     */
-    public function setHrDeptId($hrDeptId)
-    {
-        $this->hrDeptId = $hrDeptId;
-
-        return $this;
-    }
-
-    /**
-     * Get hrDeptId
-     *
-     * @return integer
-     */
-    public function getHrDeptId()
-    {
-        return $this->hrDeptId;
-    }
-
-    /**
-     * @return Media
-     */
-    public function getAvatar()
-    {
-        return $this->getPictureUri();
-    }
-
-    /**
-     * @return \DateTime
-     */
-    public function getMemberSince()
-    {
-        return $this->registrationDate;
-    }
-
-    /**
-     * @return bool
-     */
-    public function isOnline()
-    {
-        return false;
-    }
-
-    /**
-     * @return int
-     */
-    public function getIdentifier()
-    {
-        return $this->getId();
-    }
-
-    /**
-     * If manually uploading a file (i.e. not using Symfony Form) ensure an instance
-     * of 'UploadedFile' is injected into this setter to trigger the  update. If this
-     * bundle's configuration parameter 'inject_on_load' is set to 'true' this setter
-     * must be able to accept an instance of 'File' as the bundle will inject one here
-     * during Doctrine hydration.
-     *
-     * @param File|\Symfony\Component\HttpFoundation\File\UploadedFile $image
-     */
-    public function setImageFile(File $image)
-    {
-        $this->imageFile = $image;
-
-        if ($image) {
-            // It is required that at least one field changes if you are using doctrine
-            // otherwise the event listeners won't be called and the file is lost
-            $this->updatedAt = new \DateTime('now');
-        }
-    }
-
-    /**
-     * @return File
-     */
-    public function getImageFile()
-    {
-        return $this->imageFile;
-    }
-
-    /**
-     * @param string $imageName
-     */
-    public function setImageName($imageName)
-    {
-        $this->imageName = $imageName;
-    }
-
-    /**
-     * @return string
-     */
-    public function getImageName()
-    {
-        return $this->imageName;
-    }
-
-    /**
-     * @return string
-     */
-    public function getSlug()
-    {
-        return $this->getUsername();
-    }
-
-    /**
-     * @param $slug
-     * @return User
-     */
-    public function setSlug($slug)
-    {
-        return $this->setUsername($slug);
-    }
-
-    /**
-     * Set lastLogin
-     *
-     * @param \DateTime $lastLogin
-     *
-     * @return User
-     */
-    public function setLastLogin(\DateTime $lastLogin)
-    {
-        $this->lastLogin = $lastLogin;
-
-        return $this;
-    }
-
-    /**
-     * Get lastLogin
-     *
-     * @return \DateTime
-     */
-    public function getLastLogin()
-    {
-        return $this->lastLogin;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getExtraFields()
-    {
-        return $this->extraFields;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setExtraFields($extraFields)
-    {
-        $this->extraFields = new ArrayCollection();
-        foreach ($extraFields as $extraField) {
-            $this->addExtraFields($extraField);
-        }
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    /*public function addExtraFields(ExtraFieldValues $extraFieldValue)
-    {
-        $extraFieldValue->setUser($this);
-        $this->extraFields[] = $extraFieldValue;
-
-        return $this;
-    }*/
-
-    /**
-     * {@inheritdoc}
-     */
-    public function addExtraFields(ExtraFieldValues $extraFieldValue)
-    {
-        //if (!$this->hasExtraField($attribute)) {
-        $extraFieldValue->setUser($this);
-        $this->extraFields[] = $extraFieldValue;
-        //}
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function removeExtraField(ExtraFieldValues $attribute)
-    {
-        //if ($this->hasExtraField($attribute)) {
-            //$this->extraFields->removeElement($attribute);
-            //$attribute->setUser($this);
-        //}
-
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    /*public function hasExtraField($attribute)
-    {
-        if (!$this->extraFields) {
-            return false;
-        }
-        return $this->extraFields->contains($attribute);
-    }*/
-
-    /**
-     * {@inheritdoc}
-     */
-    public function hasExtraFieldByName($attributeName)
-    {
-        foreach ($this->extraFields as $attribute) {
-            if ($attribute->getName() === $attributeName) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getExtraFieldByName($attributeName)
-    {
-        foreach ($this->extraFields as $attribute) {
-            if ($attribute->getName() === $attributeName) {
-                return $attribute;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Get sessionCourseSubscription
-     * @return ArrayCollection
-     */
-    public function getSessionCourseSubscriptions()
-    {
-        return $this->sessionCourseSubscriptions;
-    }
-
-    /**
-     * @return string
-     */
-    public function getConfirmationToken()
-    {
-        return $this->confirmationToken;
-    }
-
-    /**
-     * @param string $confirmationToken
-     *
-     * @return User
-     */
-    public function setConfirmationToken($confirmationToken)
-    {
-        $this->confirmationToken = $confirmationToken;
-
-        return $this;
-    }
-
-    /**
-     * @return \DateTime
-     */
-    public function getPasswordRequestedAt()
-    {
-        return $this->passwordRequestedAt;
-    }
-
-
-    /**
-     * @param int $ttl
-     * @return bool
-     */
-    public function isPasswordRequestNonExpired($ttl)
-    {
-        return $this->getPasswordRequestedAt() instanceof \DateTime &&
-        $this->getPasswordRequestedAt()->getTimestamp() + $ttl > time();
-    }
-
-    public function getUsername()
-    {
-        return $this->username;
-    }
-
-    /**
-     * Returns the creation date.
-     *
-     * @return \DateTime|null
-     */
-    public function getCreatedAt()
-    {
-        return $this->createdAt;
-    }
-
-    /**
-     * Sets the last update date.
-     *
-     * @param \DateTime|null $updatedAt
-     *
-     * @return User
-     */
-    public function setUpdatedAt(\DateTime $updatedAt = null)
-    {
-        $this->updatedAt = $updatedAt;
-
-        return $this;
-    }
-
-    /**
-     * Returns the last update date.
-     *
-     * @return \DateTime|null
-     */
-    public function getUpdatedAt()
-    {
-        return $this->updatedAt;
-    }
-
-    /**
-     * Returns the expiration date.
-     *
-     * @return \DateTime|null
-     */
-    public function getExpiresAt()
-    {
-        return $this->expiresAt;
-    }
-
-    /**
-     * Returns the credentials expiration date.
-     *
-     * @return \DateTime
-     */
-    public function getCredentialsExpireAt()
-    {
-        return $this->credentialsExpireAt;
-    }
-
-    /**
-     * Sets the credentials expiration date.
-     *
-     * @param \DateTime|null $date
-     *
-     * @return User
-     */
-    public function setCredentialsExpireAt(\DateTime $date = null)
-    {
-        $this->credentialsExpireAt = $date;
-
-        return $this;
-    }
-
-    /**
-     * Sets the user groups.
-     *
-     * @param array $groups
-     *
-     * @return User
-     */
-    public function setGroups($groups)
-    {
-        foreach ($groups as $group) {
-            $this->addGroup($group);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Sets the two-step verification code.
-     *
-     * @param string $twoStepVerificationCode
-     *
-     * @return User
-     */
-    public function setTwoStepVerificationCode($twoStepVerificationCode)
-    {
-        $this->twoStepVerificationCode = $twoStepVerificationCode;
-
-        return $this;
-    }
-
-    /**
-     * Returns the two-step verification code.
-     *
-     * @return string
-     */
-    public function getTwoStepVerificationCode()
-    {
-        return $this->twoStepVerificationCode;
-    }
-
-    /**
-     * @param string $biography
-     *
-     * @return User
-     */
-    public function setBiography($biography)
-    {
-        $this->biography = $biography;
-
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getBiography()
-    {
-        return $this->biography;
-    }
-
-    /**
-     * @param \DateTime $dateOfBirth
-     *
-     * @return User
-     */
-    public function setDateOfBirth($dateOfBirth)
-    {
-        $this->dateOfBirth = $dateOfBirth;
-
-        return $this;
-    }
-
-    /**
-     * @return \DateTime
-     */
-    public function getDateOfBirth()
-    {
-        return $this->dateOfBirth;
-    }
-
-    /**
-     * @param string $facebookData
-     *
-     * @return User
-     */
-    public function setFacebookData($facebookData)
-    {
-        $this->facebookData = $facebookData;
-
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getFacebookData()
-    {
-        return $this->facebookData;
-    }
-
-    /**
-     * @param string $facebookName
-     *
-     * @return User
-     */
-    public function setFacebookName($facebookName)
-    {
-        $this->facebookName = $facebookName;
-
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getFacebookName()
-    {
-        return $this->facebookName;
-    }
-
-    /**
-     * @param string $facebookUid
-     *
-     * @return User
-     */
-    public function setFacebookUid($facebookUid)
-    {
-        $this->facebookUid = $facebookUid;
-
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getFacebookUid()
-    {
-        return $this->facebookUid;
-    }
-
-    /**
-     * @return string
-     */
-    public function getFirstname()
-    {
-        return $this->firstname;
-    }
-
-    /**
-     * @param string $gender
-     *
-     * @return User
-     */
-    public function setGender($gender)
-    {
-        $this->gender = $gender;
-
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getGender()
-    {
-        return $this->gender;
-    }
-
-    /**
-     * @param string $gplusData
-     *
-     * @return User
-     */
-    public function setGplusData($gplusData)
-    {
-        $this->gplusData = $gplusData;
-
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getGplusData()
-    {
-        return $this->gplusData;
-    }
-
-    /**
-     * @param string $gplusName
-     *
-     * @return User
-     */
-    public function setGplusName($gplusName)
-    {
-        $this->gplusName = $gplusName;
-
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getGplusName()
-    {
-        return $this->gplusName;
-    }
-
-    /**
-     * @param string $gplusUid
-     *
-     * @return User
-     */
-    public function setGplusUid($gplusUid)
-    {
-        $this->gplusUid = $gplusUid;
-
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getGplusUid()
-    {
-        return $this->gplusUid;
-    }
-
-
-    /**
-     * @return string
-     */
-    public function getLastname()
-    {
-        return $this->lastname;
-    }
-
-    /**
-     * @param string $locale
-     *
-     * @return User
-     */
-    public function setLocale($locale)
-    {
-        $this->locale = $locale;
-
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getLocale()
-    {
-        return $this->locale;
-    }
-
-     /**
-     * @param string $timezone
-     *
-     * @return User
-     */
-    public function setTimezone($timezone)
-    {
-        $this->timezone = $timezone;
-
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getTimezone()
-    {
-        return $this->timezone;
-    }
-
-    /**
-     * @param string $twitterData
-     *
-     * @return User
-     */
-    public function setTwitterData($twitterData)
-    {
-        $this->twitterData = $twitterData;
-
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getTwitterData()
-    {
-        return $this->twitterData;
-    }
-
-    /**
-     * @param string $twitterName
-     *
-     * @return User
-     */
-    public function setTwitterName($twitterName)
-    {
-        $this->twitterName = $twitterName;
-
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getTwitterName()
-    {
-        return $this->twitterName;
-    }
-
-    /**
-     * @param string $twitterUid
-     *
-     * @return User
-     */
-    public function setTwitterUid($twitterUid)
-    {
-        $this->twitterUid = $twitterUid;
-
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getTwitterUid()
-    {
-        return $this->twitterUid;
-    }
-
-    /**
-     * @param string $website
-     *
-     * @return User
-     */
-    public function setWebsite($website)
-    {
-        $this->website = $website;
-
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getWebsite()
-    {
-        return $this->website;
-    }
-
-    /**
-     * @param string $token
-     *
-     * @return User
-     */
-    public function setToken($token)
-    {
-        $this->token = $token;
-
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getToken()
-    {
-        return $this->token;
-    }
-
-    /**
-     * @return string
-     */
-    public function getFullname()
-    {
-        return sprintf('%s %s', $this->getFirstname(), $this->getLastname());
-    }
-
-    /**
-     * @return array
-     */
-    public function getRealRoles()
-    {
-        return $this->roles;
-    }
-
-    /**
-     * @param array $roles
-     *
-     * @return User
-     */
-    public function setRealRoles(array $roles)
-    {
-        $this->setRoles($roles);
-
-        return $this;
-    }
-
-    /**
-     * Removes sensitive data from the user.
-     */
-    public function eraseCredentials()
-    {
-        $this->plainPassword = null;
-    }
-
-
-    public function getUsernameCanonical()
-    {
-        return $this->usernameCanonical;
-    }
-
-
-    public function getEmailCanonical()
-    {
-        return $this->emailCanonical;
-    }
-
-    public function getPlainPassword()
-    {
-        return $this->plainPassword;
-    }
-
-      /**
-     * Returns the user roles
-     *
-     * @return array The roles
-     */
-    public function getRoles()
-    {
-        $roles = $this->roles;
-
-        foreach ($this->getGroups() as $group) {
-            $roles = array_merge($roles, $group->getRoles());
-        }
-
-        // we need to make sure to have at least one role
-        $roles[] = static::ROLE_DEFAULT;
-
-        return array_unique($roles);
-    }
-
-    /**
-     * Never use this to check if this user has access to anything!
-     *
-     * Use the SecurityContext, or an implementation of AccessDecisionManager
-     * instead, e.g.
-     *
-     *         $securityContext->isGranted('ROLE_USER');
-     *
-     * @param string $role
-     *
-     * @return boolean
-     */
-    public function hasRole($role)
-    {
-        return in_array(strtoupper($role), $this->getRoles(), true);
-    }
-
-    public function isAccountNonExpired()
-    {
-        if (true === $this->expired) {
-            return false;
-        }
-
-        if (null !== $this->expiresAt && $this->expiresAt->getTimestamp() < time()) {
-            return false;
-        }
-
-        return true;
-    }
-
-    public function isAccountNonLocked()
-    {
-        return !$this->locked;
-    }
-
-    public function isCredentialsNonExpired()
-    {
-        if (true === $this->credentialsExpired) {
-            return false;
-        }
-
-        if (null !== $this->credentialsExpireAt && $this->credentialsExpireAt->getTimestamp() < time()) {
-            return false;
-        }
-
-        return true;
-    }
-
-    public function isCredentialsExpired()
-    {
-        return !$this->isCredentialsNonExpired();
-    }
-
-    public function isExpired()
-    {
-        return !$this->isAccountNonExpired();
-    }
-
-    public function isLocked()
-    {
-        return !$this->isAccountNonLocked();
-    }
-
-    public function isSuperAdmin()
-    {
-        return $this->hasRole(static::ROLE_SUPER_ADMIN);
-    }
-
-    public function isUser(UserInterface $user = null)
-    {
-        return null !== $user && $this->getId() === $user->getId();
-    }
-
-    public function removeRole($role)
-    {
-        if (false !== $key = array_search(strtoupper($role), $this->roles, true)) {
-            unset($this->roles[$key]);
-            $this->roles = array_values($this->roles);
-        }
-
-        return $this;
-    }
-
-    public function setUsername($username)
-    {
-        $this->username = $username;
-
-        return $this;
-    }
-
-    public function setUsernameCanonical($usernameCanonical)
-    {
-        $this->usernameCanonical = $usernameCanonical;
-
-        return $this;
-    }
-
-
-    /**
-     * @param boolean $boolean
-     *
-     * @return User
-     */
-    public function setCredentialsExpired($boolean)
-    {
-        $this->credentialsExpired = $boolean;
-
-        return $this;
-    }
-
-    public function setEmailCanonical($emailCanonical)
-    {
-        $this->emailCanonical = $emailCanonical;
-
-        return $this;
-    }
-
-    public function setEnabled($boolean)
-    {
-        $this->enabled = (Boolean) $boolean;
-
-        return $this;
-    }
-
-    /**
-     * Sets this user to expired.
-     *
-     * @param Boolean $boolean
-     *
-     * @return User
-     */
-    public function setExpired($boolean)
-    {
-        $this->expired = (Boolean) $boolean;
-
-        return $this;
-    }
-
-    /**
-     * @param \DateTime $date
-     *
-     * @return User
-     */
-    public function setExpiresAt(\DateTime $date = null)
-    {
-        $this->expiresAt = $date;
-
-        return $this;
-    }
-
-    public function setSuperAdmin($boolean)
-    {
-        if (true === $boolean) {
-            $this->addRole(static::ROLE_SUPER_ADMIN);
-        } else {
-            $this->removeRole(static::ROLE_SUPER_ADMIN);
-        }
-
-        return $this;
-    }
-
-    public function setPlainPassword($password)
-    {
-        $this->plainPassword = $password;
-
-        return $this;
-    }
-
-    public function setLocked($boolean)
-    {
-        $this->locked = $boolean;
-
-        return $this;
-    }
-
-    public function setPasswordRequestedAt(\DateTime $date = null)
-    {
-        $this->passwordRequestedAt = $date;
-
-        return $this;
-    }
-
-
-    public function setRoles(array $roles)
-    {
-        $this->roles = array();
-
-        foreach ($roles as $role) {
-            $this->addRole($role);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Gets the groups granted to the user.
-     *
-     * @return Collection
-     */
-    public function getGroups()
-    {
-        return $this->groups ?: $this->groups = new ArrayCollection();
-    }
-
-    public function getGroupNames()
-    {
-        $names = array();
-        foreach ($this->getGroups() as $group) {
-            $names[] = $group->getName();
-        }
-
-        return $names;
-    }
-
-    public function hasGroup($name)
-    {
-        return in_array($name, $this->getGroupNames());
-    }
-
-    public function addGroup(GroupInterface $group)
-    {
-        if (!$this->getGroups()->contains($group)) {
-            $this->getGroups()->add($group);
-        }
-
-        return $this;
-    }
-
-    public function removeGroup(GroupInterface $group)
-    {
-        if ($this->getGroups()->contains($group)) {
-            $this->getGroups()->removeElement($group);
-        }
-
-        return $this;
-    }
-
-    public function addRole($role)
-    {
-        $role = strtoupper($role);
-        if ($role === static::ROLE_DEFAULT) {
-            return $this;
-        }
-
-        if (!in_array($role, $this->roles, true)) {
-            $this->roles[] = $role;
-        }
-
-        return $this;
-    }
-
-    /**
-     * Serializes the user.
-     *
-     * The serialized data have to contain the fields used by the equals method and the username.
-     *
-     * @return string
-     */
-    public function serialize()
-    {
-        return serialize(array(
-            $this->password,
-            $this->salt,
-            $this->usernameCanonical,
-            $this->username,
-            $this->expired,
-            $this->locked,
-            $this->credentialsExpired,
-            $this->enabled,
-            $this->id,
-        ));
-    }
-
-    /**
-     * Unserializes the user.
-     *
-     * @param string $serialized
-     */
-    public function unserialize($serialized)
-    {
-        $data = unserialize($serialized);
-        // add a few extra elements in the array to ensure that we have enough keys when unserializing
-        // older data which does not include all properties.
-        $data = array_merge($data, array_fill(0, 2, null));
-
-        list(
-            $this->password,
-            $this->salt,
-            $this->usernameCanonical,
-            $this->username,
-            $this->expired,
-            $this->locked,
-            $this->credentialsExpired,
-            $this->enabled,
-            $this->id
-            ) = $data;
-    }
-}

+ 0 - 25
src/Chamilo/PageBundle/Resources/config/doctrine/User.orm.xml

@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<doctrine-mapping
-        xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
-        xsi="http://www.w3.org/2001/XMLSchema-instance"
-        schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
-    <!--
-         This file has been generated by the EasyExtends bundle ( http://sonata-project.org/easy-extends )
-
-         References :
-            xsd                  : https://github.com/doctrine/doctrine2/blob/master/doctrine-mapping.xsd
-            xml mapping          : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/xml-mapping/en
-            association mapping  : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/association-mapping/en
-    -->
-    <entity
-            name="Chamilo\PageBundle\Entity\User"
-            table="user"
-    >
-
-        <id name="id" type="integer" column="id">
-            <generator strategy="AUTO"/>
-        </id>
-
-
-    </entity>
-</doctrine-mapping>

+ 73 - 20
src/Chamilo/UserBundle/Entity/User.php

@@ -3,8 +3,12 @@
 
 namespace Chamilo\UserBundle\Entity;
 
+//use Chamilo\CoreBundle\Entity\UserFieldValues;
+use Chamilo\CoreBundle\Entity\AccessUrl;
+use Chamilo\CoreBundle\Entity\AccessUrlRelUser;
 use Chamilo\CoreBundle\Entity\ExtraFieldValues;
 use Chamilo\CoreBundle\Entity\UsergroupRelUser;
+use Chamilo\CoreBundle\Entity\Skill;
 use Doctrine\Common\Collections\ArrayCollection;
 use Doctrine\ORM\Event\LifecycleEventArgs;
 use Doctrine\ORM\Mapping as ORM;
@@ -17,7 +21,7 @@ use Symfony\Component\Validator\Constraints as Assert;
 use Symfony\Component\Validator\Mapping\ClassMetadata;
 use FOS\UserBundle\Model\UserInterface;
 use FOS\UserBundle\Model\GroupInterface;
-use Chamilo\CoreBundle\Entity\Skill;
+use Chamilo\ThemeBundle\Model\UserInterface as ThemeUser;
 
 //use Chamilo\CoreBundle\Component\Auth;
 //use FOS\MessageBundle\Model\ParticipantInterface;
@@ -44,7 +48,7 @@ use Chamilo\CoreBundle\Entity\Skill;
  * @ORM\Entity(repositoryClass="Chamilo\UserBundle\Entity\Repository\UserRepository")
  *
  */
-class User implements UserInterface //implements ParticipantInterface, ThemeUser
+class User extends BaseUser implements ThemeUser
 {
     const COURSE_MANAGER = 1;
     const TEACHER = 1;
@@ -74,63 +78,63 @@ class User implements UserInterface //implements ParticipantInterface, ThemeUser
      *
      * @ORM\Column(name="username", type="string", length=100, nullable=false, unique=true)
      */
-    protected $username;
+    //protected $username;
 
     /**
      * @var string
      *
      * @ORM\Column(name="username_canonical", type="string", length=100, nullable=false)
      */
-    protected $usernameCanonical;
+    //protected $usernameCanonical;
 
     /**
      * @var string
      * @ORM\Column(name="email_canonical", type="string", length=100, nullable=false, unique=false)
      */
-    protected $emailCanonical;
+    //protected $emailCanonical;
 
     /**
      * @var string
      *
      * @ORM\Column(name="email", type="string", length=100, nullable=false, unique=false)
      */
-    protected $email;
+    //protected $email;
 
     /**
      * @var boolean
      * @ORM\Column(name="locked", type="boolean")
      */
-    protected $locked;
+    //protected $locked;
 
     /**
      * @var boolean
      * @ORM\Column(name="enabled", type="boolean")
      */
-    protected $enabled;
+    //protected $enabled;
 
     /**
      * @var boolean
      * @ORM\Column(name="expired", type="boolean")
      */
-    protected $expired;
+    //protected $expired;
 
     /**
      * @var boolean
      * @ORM\Column(name="credentials_expired", type="boolean")
      */
-    protected $credentialsExpired;
+    //protected $credentialsExpired;
 
     /**
      * @var \DateTime
      * @ORM\Column(name="credentials_expire_at", type="datetime", nullable=true, unique=false)
      */
-    protected $credentialsExpireAt;
+    //protected $credentialsExpireAt;
 
     /**
      * @var \DateTime
      * @ORM\Column(name="expires_at", type="datetime", nullable=true, unique=false)
      */
-    protected $expiresAt;
+    //protected $expiresAt;
 
     /**
      * @var string
@@ -151,7 +155,7 @@ class User implements UserInterface //implements ParticipantInterface, ThemeUser
      *
      * @ORM\Column(name="password", type="string", length=255, nullable=false, unique=false)
      */
-    protected $password;
+    //protected $password;
 
     /**
      * @var string
@@ -300,17 +304,22 @@ class User implements UserInterface //implements ParticipantInterface, ThemeUser
      */
     private $hrDeptId;
 
+    /**
+     * @var AccessUrl
+     **/
+    protected $currentUrl;
+
     /**
      * @ORM\Column(type="string", length=255)
      */
-    protected $salt;
+    //protected $salt;
 
     /**
      * @var \DateTime
      *
      * @ORM\Column(name="last_login", type="datetime", nullable=true, unique=false)
      */
-    protected $lastLogin;
+    //protected $lastLogin;
 
     /**
      * @var \DateTime
@@ -330,14 +339,14 @@ class User implements UserInterface //implements ParticipantInterface, ThemeUser
      * @var string
      * @ORM\Column(name="confirmation_token", type="string", length=255, nullable=true)
      */
-    protected $confirmationToken;
+    //protected $confirmationToken;
 
     /**
      * @var \DateTime
      *
      * @ORM\Column(name="password_requested_at", type="datetime", nullable=true, unique=false)
      */
-    protected $passwordRequestedAt;
+    //protected $passwordRequestedAt;
 
     /**
      * @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\CourseRelUser", mappedBy="user")
@@ -367,7 +376,7 @@ class User implements UserInterface //implements ParticipantInterface, ThemeUser
     /**
      * @ORM\Column(type="array")
      */
-    protected $roles;
+    //protected $roles;
 
     /**
      * @var boolean
@@ -440,6 +449,7 @@ class User implements UserInterface //implements ParticipantInterface, ThemeUser
     public function __construct()
     {
         $this->status = self::STUDENT;
+        parent::__construct();
         $this->salt = sha1(uniqid(null, true));
         $this->active = 1;
         $this->registrationDate = new \DateTime();
@@ -468,7 +478,7 @@ class User implements UserInterface //implements ParticipantInterface, ThemeUser
      */
     public function __toString()
     {
-        return $this->getUsername();
+        return $this->getCompleteName();
     }
 
     /**
@@ -1308,6 +1318,20 @@ class User implements UserInterface //implements ParticipantInterface, ThemeUser
         return $this->getPictureUri();
     }
 
+    /**
+     * @return string
+     */
+    public function getAvatarOrAnonymous()
+    {
+        $avatar = $this->getAvatar();
+
+        if (empty($avatar)) {
+            return 'bundles/chamilocore/img/unknown.jpg';
+        }
+
+        return $avatar;
+    }
+
     /**
      * @return \DateTime
      */
@@ -2234,7 +2258,7 @@ class User implements UserInterface //implements ParticipantInterface, ThemeUser
      *
      * @return User
      */
-    public function setExpiresAt(\DateTime $date)
+    public function setExpiresAt(\DateTime $date = null)
     {
         $this->expiresAt = $date;
 
@@ -2433,4 +2457,33 @@ class User implements UserInterface //implements ParticipantInterface, ThemeUser
 
         return $this;
     }
+
+
+    /**
+     * Sets the AccessUrl for the current user in memory
+     * @param AccessUrl $url
+     *
+     * @return $this
+     */
+    public function setCurrentUrl(AccessUrl $url)
+    {
+        $urlList = $this->getPortals();
+        /** @var AccessUrlRelUser $item */
+        foreach ($urlList as $item) {
+            if ($item->getPortal()->getId() == $url->getId()) {
+                $this->currentUrl = $url;
+                break;
+            }
+        }
+
+        return $this;
+    }
+
+    /**
+     * @return AccessUrl
+     */
+    public function getCurrentUrl()
+    {
+        return $this->currentUrl;
+    }
 }

+ 0 - 1
src/Chamilo/UserBundle/Security/Encoder.php

@@ -44,7 +44,6 @@ class Encoder implements PasswordEncoderInterface
                 $defaultEncoder = new MessageDigestPasswordEncoder($this->method, false, 1);
                 break;
         }
-
         return $defaultEncoder->encodePassword($raw, $salt);
     }