Example #1
0
 private function _send()
 {
     $model = new SmsQueue();
     $messages = $model->getToSend();
     $loadBalancer = new Logic_LoadBalancer();
     $data = array();
     while ($current = $messages->current()) {
         $data[$current->ws_package_id]['queue'] = $current;
         $data[$current->ws_package_id]['messages'][$current->phone_number] = $current->message;
         $messages->next();
     }
     foreach ($data as $d) {
         $package = $d['queue']->findParentRow('WsPackageSms');
         $serviceSet = $package->findParentRow('WsServiceSet');
         $serviceGroup = $serviceSet->findParentRow('WsServiceSmsGroup');
         $service = $loadBalancer->addServiceGroup($serviceGroup);
         $logic = new Logic_Sms($service->getService());
         $status = $logic->package(null, $d['messages']);
         if (isset($status->packageId) && !empty($status->packageId)) {
             $d['queue']->setFromArray(array('send' => true))->save();
             $packageModel = new SmsPackage();
             $packageModel->updatePackageId($status->packageId, $d['queue']->ws_package_id);
         }
     }
 }
Example #2
0
 /**
  * @param array $numbers
  * @param mixed $content
  * @param string $startDate
  * @throws Logic_WebService_Sms_Exception
  * @return Logic_Service_Multiinfo_Response_Container
  */
 public function handle(array $numbers = array(), $content = null, $startDate = null)
 {
     $timeLimit = 30;
     // zabezpieczenie przed przekroczeniem limitu czasu wykonywania skryptu
     if ($startDate) {
         $validator = new Logic_Validate_DdMMyyHHmmss();
         if (!$validator->isValid($startDate)) {
             throw new Logic_WebService_Sms_Exception('Nieprawidlowy format daty/czasu: ' . $startDate . '/ddMMyyHHmmss', 453);
         }
     }
     $content = new Logic_WebService_Sms_Content($content);
     $toSend = array();
     $toReport = array();
     if (empty($numbers)) {
         throw new Logic_WebService_Sms_Exception('Nie podano numerow do rozsylki', 450);
     }
     foreach ($numbers as $number => $individualContent) {
         set_time_limit($timeLimit + 30);
         try {
             $recipient = new Logic_WebService_Sms_Recipient($number);
             if (!$this->_environment->checkStatus()) {
                 $recipient->checkNumberOnWhiteList();
             }
             if ($recipient->checkNumberOnBlackList($this->_client->getParams()->id)) {
                 $model = new SmsBlacklistStorage();
                 $model->addSms($recipient->getRecipient()->id, $this->_client->getParams()->id, $this->_service->getParams()->id, $content->getHash(), $content->getContentToLog());
                 continue;
             }
             $recipient->checkLimit($this->_client, $this->_service);
             $numberContent = $individualContent ? new Logic_WebService_Sms_Content($individualContent) : $content;
             $recipient->checkLimitByContent($this->_client, $this->_service, $numberContent);
             if (key_exists(strval($recipient->getNumber()), $toSend)) {
                 throw new Logic_WebService_Exception('Zdublowny numer na liscie wysylki: ' . $recipient->getNumber(), 451);
             }
             $toSend[strval($recipient->getNumber())] = $individualContent ? $numberContent->getContent() : null;
             unset($recipient);
             unset($numberContent);
         } catch (Logic_WebService_Exception $e) {
             $toReport[] = array('number' => $number, 'content' => $individualContent, 'reason' => $e->getMessage());
         }
     }
     if (empty($toSend)) {
         throw new Logic_WebService_Sms_Exception('Brak numerow do rozeslania - zaden nie przeszedl weryfikacji', 452);
     } else {
         $multiinfo = new Logic_Service_Multiinfo($this->_service->getParams()->service_login, $this->_service->getParams()->service_password, $this->_service->getParams()->new_api);
         $handler = new Logic_Service_Multiinfo_Response(new Logic_Service_Multiinfo_Response_Package());
         $response = $handler->handle($multiinfo->package($this->_service->getParams()->special_id, $toSend, $content->getContent(), false, $startDate));
         $response->report = $toReport;
         $smsLog = new Logic_WebService_Sms_Log();
         if ($response->status == true) {
             $modelPackage = new SmsPackage();
             $packageID = $modelPackage->addPackage(array('packageid' => $response->packageId, 'start_date' => $startDate));
         } else {
             $this->_errorHandler($response->errorCode, $response->errorMessage, $this->_service->getParams()->id);
         }
         $modelStorage = new SmsStorage();
         foreach ($toSend as $number => $individualContent) {
             set_time_limit($timeLimit + 30);
             $recipient = new Logic_WebService_Sms_Recipient($number);
             $modelStorage->addSms($recipient->getRecipient()->id, $this->_client->getParams()->id, $this->_service->getParams()->id, $individualContent ? md5($individualContent) : $content->getHash(), $individualContent ? $individualContent : $content->getContentToLog(), $response, $packageID);
         }
         return $response;
     }
 }
Example #3
0
 public function savePackage($data)
 {
     $model = new SmsPackage();
     return $model->addPackage(array('packageid' => $data->packageId));
 }