117 lines
2.8 KiB
PHP
117 lines
2.8 KiB
PHP
<?php
|
|
|
|
class appOnlineFilesBackendActions extends autoAppOnlineFilesBackendActions
|
|
{
|
|
/**
|
|
* Walidacja zapisy plików.
|
|
*/
|
|
public function validateEdit()
|
|
{
|
|
/**
|
|
* @var sfWebRequest $request
|
|
*/
|
|
$request = $this->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);
|
|
}
|
|
}
|
|
}
|
|
}
|