public function downloadAction() { $updateId = (int) $this->_getParam('id'); $version = $this->_session->versions[$updateId]; $updateFile = new UpdateFile(); $uploadDir = $updateFile->getUploadDir(); $error = false; if (!is_dir($uploadDir)) { $error = $uploadDir . ' directory does not exists'; trigger_error($error, E_USER_NOTICE); } else { if (!is_writable($uploadDir)) { $error = $uploadDir . ' directory is not writable'; trigger_error($error, E_USER_NOTICE); } } if ($error !== false) { $ret = $error; } else { if (($ret = $this->_fetch('download', array('updateFileId' => $updateId))) === false) { $ret = __('There was an error connecting to HealthCloud'); trigger_error($ret, E_USER_NOTICE); } else { try { $filename = tempnam(sys_get_temp_dir(), 'uf_'); file_put_contents($filename, $ret); $updateFile->active = 1; $updateFile->dateTime = date('Y-m-d H:i:s'); try { $updateFile->populateWithArray($this->_session->versions[$updateId]); if (substr($updateFile->name, -3) == '.gz') { $updateFile->name = substr($updateFile->name, 0, -3); } $updateFile->version = $version['version']; $updateFile->persist(); $contents = $updateFile->verify($filename); unset($this->_session->versions[$updateId]); $ret = true; list($index, $next) = each($this->_session->versions); if ($next !== null) { $ret = array('next' => $next); } } catch (Exception $e) { $error = __('Invalid signature'); $msg = $error . ': ' . $e->getMessage(); try { $xml = new SimpleXMLElement($ret); if ($xml->error) { $msg = (string) $xml->error->errorMsg; } } catch (Exception $ex) { } $ret = $msg; $updateFile->setPersistMode(WebVista_Model_ORM::DELETE); trigger_error($ret, E_USER_NOTICE); } $updateFile->persist(); } catch (Exception $e) { $error = __('There was an error with the downloaded file'); $ret = $error . ': ' . $e->getMessage(); $error .= ' Error code: ' . $e->getCode() . ' Error Message: ' . $e->getMessage(); trigger_error($error, E_USER_NOTICE); } } } $json = Zend_Controller_Action_HelperBroker::getStaticHelper('json'); $json->suppressExit = true; $json->direct($ret); }
public function downloadAction() { $param = $this->_getParam('version'); $x = explode('_', $param); $version = (int) $x[0]; $channel = 0; if (isset($x[1])) { $channel = (int) $x[1]; } $version = array('version' => $version, 'channel' => $channel); $updateFile = new UpdateFile(); $uploadDir = $updateFile->getUploadDir(); $error = false; if (!is_dir($uploadDir)) { $error = $uploadDir . ' directory does not exists'; trigger_error($error, E_USER_NOTICE); } else { if (!is_writable($uploadDir)) { $error = $uploadDir . ' directory is not writable'; trigger_error($error, E_USER_NOTICE); } } if ($error !== false) { $ret = $error; } else { if (($ret = $this->_fetch('download', $version)) === false) { $ret = __('There was an error connecting to HealthCloud'); trigger_error($ret, E_USER_NOTICE); } else { try { $filename = tempnam(sys_get_temp_dir(), 'uf_'); file_put_contents($filename, $ret); ob_start(); readgzfile($filename); $ret = ob_get_clean(); unlink($filename); $responseXml = simplexml_load_string($ret); if (isset($responseXml->error)) { $error = __('There was an error fetching update file'); $error .= ' Error code: ' . $responseXml->error->errorCode . ' Error Message: ' . $responseXml->error->errorMsg; $ret = (string) $responseXml->error->errorMsg; trigger_error($error, E_USER_NOTICE); } else { $updateFile->active = 1; $updateFile->dateTime = date('Y-m-d H:i:s'); try { $updateFile->verify($ret); $updateFile->persist(); file_put_contents($updateFile->getUploadFilename(), $ret); unset($this->_session->versions[$param]); $ret = true; $next = array_shift($this->_session->versions); if ($next !== null) { $ret = array('next' => $next); } } catch (Exception $e) { $error = __('Invalid signature'); $ret = $error . ': ' . $e->getMessage(); trigger_error($ret, E_USER_NOTICE); } } } catch (Exception $e) { $error = __('There was an error with the downloaded file'); $ret = $error . ': ' . $e->getMessage(); $error .= ' Error code: ' . $e->getCode() . ' Error Message: ' . $e->getMessage(); trigger_error($error, E_USER_NOTICE); } } } $json = Zend_Controller_Action_HelperBroker::getStaticHelper('json'); $json->suppressExit = true; $json->direct($ret); }