/**
  * 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 CustomerMessagesAfterLoginManager($config, $args);
     }
     return self::$instance;
 }
 public function service()
 {
     $customerMessagesAfterLoginManager = CustomerMessagesAfterLoginManager::getInstance($this->config, $this->args);
     $customer_emails = $this->secure($_REQUEST['to']);
     if (empty($customer_emails)) {
         $this->error(array('message' => "Please select recipients!"));
     }
     $title_formula = $_REQUEST['title_formula'];
     if (empty($title_formula)) {
         $this->error(array('message' => "Please input message title formula!"));
     }
     $message_formula = $_REQUEST['message_formula'];
     if (empty($message_formula)) {
         $this->error(array('message' => "Please input message body formula!"));
     }
     $type = $this->secure($_REQUEST['type']);
     $shows_count = $this->secure($_REQUEST['shows_count']);
     $customer_emails_array = explode(',', $customer_emails);
     foreach ($customer_emails_array as $customer_email) {
         $dto = $customerMessagesAfterLoginManager->createDto();
         $dto->setType($type);
         $dto->setMessageFormula($message_formula);
         $dto->setTitleFormula($title_formula);
         $dto->setFromEmail($this->getCustomerLogin());
         $dto->setEmail($customer_email);
         $dto->setShowsCount($shows_count);
         $dto->setDatetime(date('Y-m-d H:i:s'));
         $customerMessagesAfterLoginManager->insertDto($dto);
     }
     $this->ok();
 }
 public function service()
 {
     $onlineUserManager = new OnlineUsersManager($this->config, $this->args);
     $customer = $this->getCustomer();
     if ($this->getUserLevel() !== UserGroups::$GUEST) {
         //add to online users table
         $customerEmail = $customer->getEmail();
         $newAdded = $onlineUserManager->addOnlineUser($this->getUserLevel(), $customer) > 0;
         if ($newAdded) {
             $customerMessagesAfterLoginManager = CustomerMessagesAfterLoginManager::getInstance($this->config, $this->args);
             $customerAfterLoginMessagesDtos = $customerMessagesAfterLoginManager->getCustomerMessages($customer->getEmail());
             $customerMessagesAfterLoginManager->incrementCustomerMessagesShowedCount($customerAfterLoginMessagesDtos);
             $customerAfterLoginMessagesDtosToArray = AbstractDto::dtosToArray($customerAfterLoginMessagesDtos);
         }
         //check user alerts
         $winUid = $_REQUEST['win_uid'];
         $customerAlertListManager = CustomerAlertListManager::getInstance($this->config, $this->args);
         $registeredCustomerAlertsDtosToArray = $customerAlertListManager->getRegisteredCustomerAlerts($customer, $winUid);
         $customerAlertsManager = CustomerAlertsManager::getInstance($this->config, $this->args);
         $customerMessagesDtos = $customerAlertsManager->getCustomerAlertsByCustomerLogin($customerEmail, $winUid);
         $customerMessagesToPhpArray = AbstractDto::dtosToArray($customerMessagesDtos);
     } else {
         //add guest in online users table
         $guest_online_table_id = $_COOKIE['guest_online_table_id'];
         if ($guest_online_table_id) {
             $onlineUser = $onlineUserManager->selectByPK($guest_online_table_id);
             if (isset($onlineUser)) {
                 $onlineUserManager->updateOnlineUserAttributes($onlineUser);
             } else {
                 $newId = $onlineUserManager->addOnlineUser($this->getUserLevel(), null);
                 if (isset($newId)) {
                     $this->setcookie('guest_online_table_id', $newId);
                 }
             }
         } else {
             $newId = $onlineUserManager->addOnlineUser($this->getUserLevel(), null);
             if (isset($newId)) {
                 $this->setcookie('guest_online_table_id', $newId);
             }
         }
     }
     $jsonArr = array('status' => "ok");
     if (!empty($registeredCustomerAlertsDtosToArray)) {
         $jsonArr['alerts'] = $registeredCustomerAlertsDtosToArray;
     }
     if (!empty($customerAfterLoginMessagesDtosToArray)) {
         $jsonArr['customer_after_login_messages'] = $customerAfterLoginMessagesDtos;
     }
     if (!empty($customerMessagesToPhpArray)) {
         $jsonArr['messages'] = $customerMessagesToPhpArray;
     }
     echo json_encode($jsonArr);
     return true;
 }
 public function service()
 {
     $message_ids = $this->secure($_REQUEST['message_ids']);
     $message_ids_array = explode(',', $message_ids);
     $customerMessagesAfterLoginManager = CustomerMessagesAfterLoginManager::getInstance($this->config, $this->args);
     foreach ($message_ids_array as $mId) {
         $customerMessagesAfterLoginManager->setMesssageNotShowAnyMoreToCustomer($mId);
     }
     $jsonArr = array('status' => "ok");
     echo json_encode($jsonArr);
     return true;
 }
 public function load()
 {
     $customerMessagesAfterLoginManager = CustomerMessagesAfterLoginManager::getInstance($this->config, $this->args);
     $dtos = $customerMessagesAfterLoginManager->getByFromEmail($this->getCustomerLogin());
     $this->addParam('dtos', $dtos);
 }
 public function service()
 {
     $action = $_REQUEST['action'];
     $params = array();
     switch ($action) {
         case 'delete_user':
             $this->deleteUser($_REQUEST['user_id']);
             break;
         case 'delete_all_unnecessary_items_pictures':
             $ret = $this->deleteAllUnnecessaryItemsPictures();
             $params = array('removed_items_ids' => implode(',', $ret));
             break;
         case 'set_item_spec':
             $itemId = $_REQUEST['item_id'];
             $shortSpec = $_REQUEST['short_spec'];
             $fullSpec = $_REQUEST['full_spec'];
             require_once CLASSES_PATH . "/managers/ItemManager.class.php";
             $itemManager = ItemManager::getInstance($this->config, $this->args);
             $itemManager->updateTextField($itemId, 'short_description', $shortSpec);
             $itemManager->updateTextField($itemId, 'full_description', $fullSpec);
             break;
         case 'get_item_spec':
             $itemId = $_REQUEST['item_id'];
             require_once CLASSES_PATH . "/managers/ItemManager.class.php";
             $itemManager = ItemManager::getInstance($this->config, $this->args);
             $itemDto = $itemManager->selectByPK($itemId);
             $params['short_spec'] = $itemDto->getShortDescription();
             $params['full_spec'] = $itemDto->getFullDescription();
             break;
         case 'get_camera_1_snap':
             $url = $this->getCmsVar('pcstore_camera_1_url');
             $login = $this->getCmsVar('pcstore_camera_1_login');
             $pass = $this->getCmsVar('pcstore_camera_1_pass');
             $ch = curl_init($url);
             curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
             curl_setopt($ch, CURLOPT_USERPWD, $login . ':' . $pass);
             $img = curl_exec($ch);
             header("Content-Type: image/jpeg");
             echo $img;
             exit;
         case 'filter_emails':
             require_once CLASSES_PATH . "/managers/EmailSenderManager.class.php";
             require_once CLASSES_PATH . "/managers/UninterestingEmailsManager.class.php";
             $emails = $_REQUEST['emails'];
             $emailsArray = EmailSenderManager::getEmailsFromText($emails);
             $uninterestingEmailsManager = UninterestingEmailsManager::getInstance($this->config, $this->args);
             $filteredEmailsArray = $uninterestingEmailsManager->removeUninterestingEmailsFromList($emailsArray);
             $params['count'] = count($filteredEmailsArray);
             $params['emails'] = implode(';', $filteredEmailsArray);
             break;
         case 'is_price_values_ready':
             $companyId = intval($_REQUEST['company_id']);
             require_once CLASSES_PATH . "/managers/PriceTextsManager.class.php";
             $priceTextsManager = PriceTextsManager::getInstance($this->config, $this->args);
             $companyPriceValuesReady = $priceTextsManager->isCompanyPriceValuesReady($companyId);
             $params['ready'] = $companyPriceValuesReady ? '1' : '0';
             break;
         case 'delete_price_values_column':
             $companyId = intval($_REQUEST['company_id']);
             $sheetIndex = intval($_REQUEST['sheet_index']);
             $priceIndex = intval($_REQUEST['price_index']);
             $columnLetter = $this->secure($_REQUEST['column_letter']);
             require_once CLASSES_PATH . "/managers/PriceValuesManager.class.php";
             $priceValuesManager = PriceValuesManager::getInstance($this->config, $this->args);
             $priceValuesManager->moveColumnValuesToLastColumn($companyId, $priceIndex, $sheetIndex, $columnLetter);
             break;
         case 'delete_customer_amessage_after_login':
             $pk = intval($_REQUEST['id']);
             require_once CLASSES_PATH . "/managers/CustomerMessagesAfterLoginManager.class.php";
             $customerMessagesAfterLoginManager = CustomerMessagesAfterLoginManager::getInstance($this->config, $this->args);
             $customerMessagesAfterLoginManager->deleteByPK($pk);
             break;
         case 'preview_customer_message':
             $pk = intval($_REQUEST['id']);
             require_once CLASSES_PATH . "/managers/CustomerMessagesAfterLoginManager.class.php";
             $customerMessagesAfterLoginManager = CustomerMessagesAfterLoginManager::getInstance($this->config, $this->args);
             $dto = $customerMessagesAfterLoginManager->selectByPK($pk);
             $params = AbstractDto::dtoToArray($dto);
             break;
         case 'delete_old_hidden_items':
             $monthsNumber = intval($_REQUEST['months_number']);
             require_once CLASSES_PATH . "/managers/ItemManager.class.php";
             $itemManager = ItemManager::getInstance($this->config, $this->args);
             $params['count'] = $itemManager->deleteOldHiddenItemsByMonthsNumber($monthsNumber);
             break;
         case 'update_companies_price_text':
             $company_id = intval($_REQUEST['company_id']);
             $companyManager = CompanyManager::getInstance($this->config, $this->args);
             if ($company_id == 0) {
                 $allCompanies = $companyManager->getAllCompanies(true, true);
             } else {
                 $allCompanies[] = $companyManager->selectByPK($company_id);
             }
             $cidsArray = array();
             foreach ($allCompanies as $c) {
                 $cidsArray[] = $c->getId();
             }
             $this->updateCompanyPriceText(implode(',', $cidsArray));
             break;
         case 'deploy_latest_pcstore_changes':
             $protocol = "http://";
             if (isset($_SERVER["HTTPS"])) {
                 $protocol = "https://";
             }
             $content = file_get_contents($protocol . HTTP_HOST . '/8350e5a3e24c153df2275c9f80692773.php');
             $params['message'] = $content;
             break;
     }
     $this->ok($params);
 }
 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;
 }