コード例 #1
0
ファイル: UserInfo.php プロジェクト: ppiedaderawnet/concrete5
 /**
  * @inheritdoc
  */
 public function getLastOnline()
 {
     return $this->entity->getUserLastOnline();
 }
コード例 #2
0
 /**
  * @param array $data
  *
  * @return UserInfo|false|null
  */
 public function create($data)
 {
     $uae = new AddUser($data);
     $uae = \Events::dispatch('on_before_user_add', $uae);
     if (!$uae->proceed()) {
         return false;
     }
     $config = $this->application->make('config');
     $hasher = new PasswordHash($config->get('concrete.user.password.hash_cost_log2'), $config->get('concrete.user.password.hash_portable'));
     if (isset($data['uIsValidated']) && $data['uIsValidated'] == 1) {
         $uIsValidated = 1;
     } elseif (isset($data['uIsValidated']) && $data['uIsValidated'] == 0) {
         $uIsValidated = 0;
     } else {
         $uIsValidated = -1;
     }
     if (isset($data['uIsFullRecord']) && $data['uIsFullRecord'] == 0) {
         $uIsFullRecord = 0;
     } else {
         $uIsFullRecord = 1;
     }
     $password_to_insert = isset($data['uPassword']) ? $data['uPassword'] : null;
     $hash = $hasher->HashPassword($password_to_insert);
     $uDefaultLanguage = null;
     if (isset($data['uDefaultLanguage']) && $data['uDefaultLanguage'] != '') {
         $uDefaultLanguage = $data['uDefaultLanguage'];
     }
     $entity = new UserEntity();
     $entity->setUserName($data['uName']);
     $entity->setUserEmail($data['uEmail']);
     $entity->setUserPassword($hash);
     $entity->setUserIsValidated($uIsValidated);
     $entity->setUserIsFullRecord($uIsFullRecord);
     $entity->setUserDefaultLanguage($uDefaultLanguage);
     $entity->setUserIsActive(true);
     $this->entityManager->persist($entity);
     $this->entityManager->flush();
     $newUID = $entity->getUserID();
     $ui = $this->userInfoRepository->getByID($newUID);
     if (is_object($ui)) {
         $uo = $ui->getUserObject();
         $groupControllers = \Group::getAutomatedOnRegisterGroupControllers($uo);
         foreach ($groupControllers as $ga) {
             if ($ga->check($uo)) {
                 $uo->enterGroup($ga->getGroupObject());
             }
         }
         // run any internal event we have for user add
         $ue = new UserInfoWithPassword($ui);
         $ue->setUserPassword($password_to_insert);
         \Events::dispatch('on_user_add', $ue);
         // Now we notify any relevant users.
         /**
          * @var $type UserSignupType
          */
         $type = $this->application->make('manager/notification/types')->driver('user_signup');
         $u = new User();
         $createdBy = null;
         if (is_object($u)) {
             $creator = $u->getUserInfoObject();
             if (is_object($creator)) {
                 $createdBy = $creator->getEntityObject();
             }
         }
         $signup = new UserSignup($ui->getEntityObject(), $createdBy);
         $notifier = $type->getNotifier();
         $subscription = $type->getSubscription($signup);
         $notified = $notifier->getUsersToNotify($subscription, $signup);
         $notification = $type->createNotification($signup);
         $notifier->notify($notified, $notification);
     }
     return $ui;
 }