protected function getsmsAction() { $lock = APPLICATION_PATH . '/../tmp/.build_sms'; $this->lockFile($lock); $this->_recipientColumn = 'phone_number'; $this->_dataModel = new WsPackageDataSms(); $this->_packageModel = new WsPackageSms(); $queueModel = new SmsQueue(); $db = $this->_dataModel->getDefaultAdapter(); try { $db->beginTransaction(); $data = $this->_getData(); if (!empty($data)) { foreach ($data as $package => $info) { foreach ($info as $d) { $insert[] = array('ws_package_id' => $package, 'phone_number' => $d['recipient'], 'message' => $d['message']); } } $queueModel->addQueue($insert, $this->_packageSize); $db->commit(); } } catch (Exception $e) { $this->_logger->log($e->getMessage() . " TRACE:" . $e->getTraceAsString(), Zend_Log::CRIT); $db->rollBack(); } }
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); } } }
public static function sendSms($jobId) { $model = SmsQueue::model()->findByPk($jobId); if ($model && $model->sent) { return false; } else { // Send SMS Here } }