/**
  * Returns an singleton instance of this class
  *
  * @param object $config
  * @param object $args
  * @return
  */
 public static function getInstance($config, $args)
 {
     if (self::$instance == null) {
         self::$instance = new LoginHistoryManager($config, $args);
     }
     return self::$instance;
 }
Example #2
0
 private function initTodayVisitors()
 {
     $loginHistoryManager = LoginHistoryManager::getInstance($this->config, $this->args);
     $todayVisitors = $loginHistoryManager->getTodayVisitors();
     list($guestVisitors, $userVisitors, $companyVisitors, $serviceCompanyVisitors, $adminVisitors) = $this->filterVisitorsByType($todayVisitors);
     $this->addParam('today_visitors', $todayVisitors);
     $this->addParam('today_guest_visitors', $guestVisitors);
     $this->addParam('today_user_visitors', $userVisitors);
     $this->addParam('today_company_visitors', $companyVisitors);
     $this->addParam('today_service_company_visitors', $serviceCompanyVisitors);
     $this->addParam('today_admin_visitors', $adminVisitors);
 }
 public function addOnlineUser($userLevel, $customerDto)
 {
     $browserInfo = $this->getBrowser();
     //		if ($browserInfo["name"] === 'Unknown') {
     //			return false;
     //		}
     $userEmail = '';
     if (isset($customerDto)) {
         $userEmail = $customerDto->getEmail();
     }
     //last ping time set for customer
     $previousPing = null;
     switch ($userLevel) {
         case UserGroups::$ADMIN:
             $adminManager = AdminManager::getInstance($this->config, $this->args);
             $previousPing = $customerDto->getLastPing();
             $adminManager->setLastPingToNow($customerDto->getId());
             break;
         case UserGroups::$COMPANY:
             $companyManager = CompanyManager::getInstance($this->config, $this->args);
             $previousPing = $customerDto->getLastPing();
             $companyManager->setLastPingToNow($customerDto->getId($customerDto->getId()));
             break;
         case UserGroups::$USER:
             $userManager = UserManager::getInstance($this->config, $this->args);
             $previousPing = $customerDto->getLastPing();
             $userManager->setLastPingToNow($customerDto->getId($customerDto->getId()));
             break;
     }
     if (isset($customerDto)) {
         $onlineUser = $this->getOnlineUserByEmail($userEmail);
         if (isset($onlineUser)) {
             $this->updateOnlineUserAttributes($onlineUser);
             return false;
         }
     }
     $guest_online_table_id = $_COOKIE['guest_online_table_id'];
     $oldRow = $this->selectByPK($guest_online_table_id);
     $ip = $_SERVER["REMOTE_ADDR"];
     $host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
     $country = $_SERVER["GEOIP_COUNTRY_NAME"];
     $browser = $browserInfo["name"];
     $browserVersion = $browserInfo["version"];
     $platform = $browserInfo["platform"];
     $status = "online";
     if ($browser != 'Unknown' && $platform != 'Unknown' && $browserVersion != '?') {
         if (!isset($oldRow)) {
             $dto = $this->mapper->createDto();
         } else {
             $dto = $oldRow;
         }
         $dto->setEmail($userEmail);
         $dto->setIp($ip);
         $dto->setHost($host);
         $dto->setCountry($country);
         $dto->setBrowserName($browser);
         $dto->setBrowserVersion($browserVersion);
         $dto->setBrowserPlatform($platform);
         $dto->setLoginDateTime(date('Y-m-d H:i:s'));
         $dto->setStatus($status);
         if (!isset($oldRow)) {
             $id = $this->mapper->insertDto($dto);
         } else {
             $this->mapper->updateByPK($dto);
             $id = $dto->getId();
         }
     }
     $loginHistoryManager = LoginHistoryManager::getInstance($this->config, $this->args);
     $ulstring = $this->getUserLevelString($userLevel);
     $loginHistoryManager->addRow($userEmail, $ulstring, $ip, $host, $country, $browser, $browserVersion, $platform);
     $customerMessagesAfterLoginManager = CustomerMessagesAfterLoginManager::getInstance($this->config, $this->args);
     $customerMessagesAfterLoginManager->addCustomerMessagesAfterLoginByPreviousPing($customerDto, $userLevel, $previousPing);
     return $id;
 }