/** * checks if all providers received publish * if not sends again to the ones who didnt. * * @param array $request * @return void */ public function checkPublish($request) { if (!isset($request['forceAll']) || !$request['forceAll']) { $problem_providers = Application_Model_General::getProvidersRequestWithoutPublishResponse($request['request_id'], $request['from_provider'], $request['to_provider']); } else { // if force all - send to all providers except source & destination $problem_providers = array_diff(Application_Model_General::getProviderArray(), array($request['from_provider'], $request['to_provider'])); } if ($problem_providers) { //problem! - send providers again $ret = array(); foreach ($problem_providers as $provider) { $request['provider'] = $provider; Application_Model_General::forkProcess("/cron/publish", $request); $ret[] = $request; } return $ret; } else { // all providers return response - update publish_response $req_tbl = new Application_Model_DbTable_Requests(Np_Db::master()); $req_tbl->update(array('last_transaction' => 'Publish_response', 'status' => 0), 'id=' . $request['id']); // @TODO: send to internal! } return TRUE; }
public function editAction() { $model = new Application_Model_Monitor(); $editForm = new Application_Form_Edit(); if ($this->getRequest()->isPost()) { $post_data = $this->getRequest()->getPost(); unset($post_data['submit']); $model->saveRow($post_data); $this->_redirect(Application_Model_General::getBaseUrl() . '/monitor?phone=' . (string) $post_data['phone_number']); exit('redirect...'); //redirect to logger } $table = (string) $this->getRequest()->getParam('table'); $id = (int) $this->getRequest()->getParam('id'); $data = $model->getTableRow($table, $id); $last_transaction = strtolower($data['last_transaction']); if ($data) { $model->createForm($editForm, $table, $data); $this->view->editForm = $editForm; if ($data['status']) { if (!empty($data['transfer_time'] && ($data['to_provider'] == Application_Model_General::getSettings('InternalProvider') || $data['from_provider'] == Application_Model_General::getSettings('InternalProvider'))) && ($last_transaction == 'kd_update' || $last_transaction == 'kd_update_response' || $last_transaction == 'request' || $last_transaction == 'request_response' || $last_transaction == 'update' || $last_transaction == 'update_response' || $last_transaction == 'execute_response')) { $executeData = array('id' => $data['id'], 'request_id' => $data['request_id'], 'from_provider' => $data['from_provider'], 'to_provider' => $data['to_provider'], 'phone_number' => $data['phone_number']); $executeForm = new Application_Form_Execute(); $executeForm->setDefaults($executeData); if ($data['from_provider'] == Application_Model_General::getSettings('InternalProvider')) { $executeForm->getElement('submit')->setLabel('Receive execute'); } $this->view->executeForm = $executeForm; } if ((!empty($data['transfer_time']) || $last_transaction == 'return_response') && $data['to_provider'] == Application_Model_General::getSettings('InternalProvider') && ($last_transaction == 'publish' || $last_transaction == 'execute_response' || $last_transaction == 'return_response')) { $publishForm = new Application_Form_Publish(); $publishForm->setDefaults($data); $this->view->publishForm = $publishForm; } } else { $this->view->executeForm = ''; } } if (strpos($last_transaction, 'publish') !== FALSE) { $this->view->publishNotResponse = Application_Model_General::getProvidersRequestWithoutPublishResponse($data['request_id'], $data['from_provider'], $data['to_provider']); } $this->view->headLink()->appendStylesheet(Application_Model_General::getBaseUrl() . '/css/style.css'); }