/** * Pobranie danych do wysyłki pakietu z uwzględnieniem ustawień zawartych w ServiceSet * @param integer $wsServiceSetId * @param Row_WsPackageData $wsPackageData * @return array */ public static function getData($wsServiceSetId, Zend_Db_Table_Row &$wsPackageData) { $data = array(); $wsServiceSetModel = new WsServiceSet(); $wsServiceSetRow = $wsServiceSetModel->findOne($wsServiceSetId); $data['id'] = $wsPackageData->id; switch ($wsServiceSetRow->file_type) { case self::TYPE_CONST: $data['text'] = $wsServiceSetRow->message; $data['dest'] = array_fill_keys(array_keys(Zend_Json::decode($wsPackageData->tags)), ''); break; case self::TYPE_ANY: case self::TYPE_VAR: $data['dest'] = Zend_Json::decode($wsPackageData->tags); break; } $data['type'] = $wsServiceSetRow->file_type; return $data; }
/** * Ładowanie danych do pakietu * @param type $limit */ public function loadPackage($package) { $config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV); $updloadDir = $config->uploads->destination; if (false === is_readable($fileName = $updloadDir . DIRECTORY_SEPARATOR . $package['file_name']) || false === is_file($fileName)) { throw new Exception("File for packageId = " . $package['id'] . " does not exists or is not readable"); } $serviceSet = new WsServiceSet(); $serviceSetRow = $serviceSet->findOne($package['ws_service_set_id']); $fileHandler = fopen($fileName, 'r'); $dataToSave = array(); $errors = array(); $this->_getDataFromFileByConfig($fileHandler, $serviceSetRow->getDelimiter(), $serviceSetRow->file_type, $dataToSave, $serviceSetRow->message, $errors); $packageDataModel = new WsPackageData(); $packageModel = new WsPackage(); if (false === empty($errors)) { $this->packageError($package['id'], $errors); } Base_Model_Table::getDefaultAdapter()->beginTransaction(); try { foreach ($dataToSave as &$chunk) { $packageDataModel->createRow(array('ws_package_id' => $package['id'], 'tags' => Zend_Json::encode($chunk), 'id_status' => WsPackageStatus::STATUS_READY))->save(); } Base_Model_Table::getDefaultAdapter()->commit(); } catch (Exception $exc) { Base_Model_Table::getDefaultAdapter()->rollBack(); throw new Logic_Exception("Cannot save package data! Error: " . $exc->getMessage(), null, $exc); } fclose($fileHandler); }