getRequest(); if ($request->getMethod() == sfRequest::POST) { $i18n = $this->getContext()->getI18N(); $file = $request->getFile('online_files[file]'); if (!$request->getParameter('online_files[name]')) { $request->setError('online_files{name}', $i18n->__('Proszę uzupełnić pole.')); } $fileValidator = new sfFileValidator(); $fileValidator->initialize($this->getContext(), array('required' => !$request->getParameter('id'))); if (!$fileValidator->execute($file, $error)) { $request->setError('online_files{filename}', $error); } elseif (isset($file['name']) && !empty($file['name'])) { $c = new Criteria(); $c->add(OnlineFilesPeer::FILENAME, $file['name']); $c->add(OnlineFilesPeer::PRODUCT_ID, $request->getParameter('product_id')); if (OnlineFilesPeer::doCount($c)) { $request->setError('online_files{filename}', $i18n->__('Podany plik jest już przypisany do produktu.')); } } } return !$request->hasErrors(); } /** * Akcja do pobirania pliku w panelu. */ public function executeDownload() { $id = $this->getRequestParameter('id'); $onlineFile = OnlineFilesPeer::retrieveByPK($id); if (null !== $onlineFile) { $file = sfConfig::get('sf_data_dir') . '/online-files/' . $onlineFile->getProductId() . '/' . $onlineFile->getFilename(); $handle = fopen($file, 'rb'); if ($handle) { $this->setLayout(false); $response = $this->getContext()->getResponse(); $response->setContentType("application/octet-stream"); $response->setHttpHeader('Content-Disposition', 'attachment; filename="' . $onlineFile->getFilename() . '"'); $response->sendHttpHeaders(); while (!feof($handle)) { echo fread($handle, 8192); ob_flush(); flush(); } fclose($handle); } else { return $this->forward404(); } } else { return $this->forward404(); } throw new sfStopException(); } protected function updateOnlineFilesFromRequest() { parent::updateOnlineFilesFromRequest(); /** * @var sfWebRequest $request */ $request = $this->getRequest(); if ($request->getFileError('online_files[file]') == UPLOAD_ERR_OK) { $filepath = $this->online_files->getFilePath(); $this->online_files->setFilename($request->getFileName('online_files[file]')); $this->online_files->setFilesize($request->getFileSize('online_files[file]')); if ($request->moveFile('online_files[file]', $this->online_files->getFilePath()) && !$this->online_files->isNew()) { unlink($filepath); } } } }