/**
  * Imports the given user
  * @param int $id Old ID
  * @param bool|true $flush Should be true if the entity should get flushed
  * @return null|User Newly imported user
  * @throws \Doctrine\DBAL\DBALException
  */
 public function importUser($id, $flush = true)
 {
     $this->consoleOutput->writeln("Reading user #" . $id . "... ", true);
     $sql = "SELECT * FROM users WHERE users.user_id = :id " . ImportHelper::spamUsersFilterSql();
     $statement = $this->dbalConnection->prepare($sql);
     $statement->bindValue('id', $id);
     $statement->execute();
     $faker = Factory::create();
     $pkpUser = $statement->fetch();
     $user = null;
     if ($pkpUser) {
         if (!empty($pkpUser['username'])) {
             $user = $this->em->getRepository('OjsUserBundle:User')->findOneBy(['username' => $pkpUser['username']]);
             if (!$user) {
                 $user = $this->em->getRepository('OjsUserBundle:User')->findOneBy(['email' => $pkpUser['email']]);
             }
         }
         if (is_null($user)) {
             $user = new User();
             !empty($pkpUser['username']) ? $user->setUsername($pkpUser['username']) : $user->setUsername($faker->userName);
             !empty($pkpUser['email']) ? $user->setEmail($pkpUser['email']) : $user->setEmail($faker->companyEmail);
             !empty($pkpUser['disabled']) ? $user->setEnabled(!$pkpUser['disabled']) : $user->setEnabled(1);
             // Set a random password
             $password = mb_substr($this->tokenGenerator->generateToken(), 0, 8);
             $user->setPlainPassword($password);
             // Fields which can't be blank
             !empty($pkpUser['first_name']) ? $user->setFirstName($pkpUser['first_name']) : $user->setFirstName('Anonymous');
             !empty($pkpUser['last_name']) ? $user->setLastName($pkpUser['last_name']) : $user->setLastName('Anonymous');
             // Optional fields
             !empty($pkpUser['billing_address']) && $user->setBillingAddress($pkpUser['billing_address']);
             !empty($pkpUser['mailing_address']) && $user->setAddress($pkpUser['mailing_address']);
             !empty($pkpUser['gender']) && $user->setGender($pkpUser['gender']);
             !empty($pkpUser['phone']) && $user->setPhone($pkpUser['phone']);
             !empty($pkpUser['fax']) && $user->setFax($pkpUser['fax']);
             !empty($pkpUser['url']) && $user->setUrl($pkpUser['url']);
             $this->em->persist($user);
             if ($flush) {
                 $this->em->flush();
             }
         }
         return $user;
     }
     return null;
 }
Example #2
0
 /**
  * @param AdminEvent $event
  */
 public function onJournalApplicationHappen(AdminEvent $event)
 {
     /** @var Journal $journal */
     $journal = $event->getEntity();
     $getMailEvent = $this->ojsMailer->getEventByName(AdminEvents::JOURNAL_APPLICATION_HAPPEN);
     if (!$getMailEvent) {
         goto lookforapplicationuser;
     }
     //send to admin user group
     foreach ($this->ojsMailer->getAdminUsers() as $user) {
         $transformParams = ['journal.title' => $journal->getTitle(), 'receiver.username' => $user->getUsername(), 'receiver.fullName' => $user->getFullName()];
         $template = $this->ojsMailer->transformTemplate($getMailEvent->getTemplate(), $transformParams);
         $this->ojsMailer->sendToUser($user, $getMailEvent->getSubject(), $template);
     }
     lookforapplicationuser:
     //send to applier user
     $getMailEvent = $this->ojsMailer->getEventByName(AdminEvents::JOURNAL_APPLICATION_HAPPEN . '.application.user');
     if (!$getMailEvent) {
         return;
     }
     $transformParams = ['journal.title' => $journal->getTitle(), 'journal.phone' => $journal->getPhone(), 'journal.address' => $journal->getAddress()];
     if ($this->ojsMailer->currentUser() instanceof UserInterface) {
         $user = $this->ojsMailer->currentUser();
     } else {
         $user = new User();
         $user->setEmail($journal->getEmail())->setUsername($this->ojsMailer->translator->trans('journal.manager'));
     }
     $template = $this->ojsMailer->transformTemplate($getMailEvent->getTemplate(), $transformParams);
     $this->ojsMailer->sendToUser($user, $getMailEvent->getSubject(), $template);
 }