%PDF- %PDF-
Direktori : /www/varak.net/catalog.varak.net/app/presenters/ |
Current File : //www/varak.net/catalog.varak.net/app/presenters/HomepagePresenter.php |
<?php use Nette\Application\UI\Form; /** * Homepage presenter. */ class HomepagePresenter extends BasePresenter { private $model; public function injectModels(Bookshelf $model) { $this->model = $model; } public function renderDefault() { $this->template->anyVariable = 'any value'; } protected function createComponentAddForm() { $httpRequest = $this->getHttpRequest(); $authorId = $httpRequest->getCookie('authorId'); $genreId = $httpRequest->getCookie('genreId'); $languageId = $httpRequest->getCookie('languageId'); $authors = $this->model->getAuthorsList(); $languages = $this->model->getLanguagesList(); $genres = $this->model->getGenresList(); $form = new Form(); $form->addText("name", 'Nazev knihy', 40, 255)->addRule(Form::FILLED, 'Je nutné zadat název.'); $form->addSelect('author', 'Autor', $authors)->setDefaultValue($authorId); $form->addSelect('genre', 'Žánr', $genres)->setDefaultValue($genreId); $form->addSelect('language', 'Jazyk', $languages)->setDefaultValue($languageId); $form->addUpload('file', 'Soubor s knihou')->addRule(Form::MAX_FILE_SIZE, 'Soubor je příliš velký! Povolená velikost je 32M.', 32 * 1024 * 1024); $form->addSubmit('create', 'Vytvořit'); $form->onSuccess[] = [$this, 'addFormSubmitted']; return $form; } protected function createComponentAddAuthorForm() { $form = new Form(); $form->addText("surname", 'Příjmení autora', 40, 60)->addRule(Form::FILLED, 'Je nutné zadat příjmení.')->addRule(Form::MAX_LENGTH, 'Maximální délka příjmení je 60 znaků', 60); $form->addText("name", 'Jméno autora', 40, 255)->addRule(Form::FILLED, 'Je nutné zadat jméno.')->addRule(Form::MAX_LENGTH, 'Maximální délka jména je 255 znaků', 255); $form->addSubmit('create', 'Vytvořit'); $form->onSuccess[] = [$this, 'addAuthorFormSubmitted']; return $form; } protected function createComponentAddGenreForm() { $form = new Form(); $form->addText("name", 'Název žánru', 40, 255)->addRule(Form::FILLED, 'Je nutné zadat název.')->addRule(Form::MAX_LENGTH, 'Maximální délka názvu žánru je 255 znaků', 255); $form->addSubmit('create', 'Vytvořit'); $form->onSuccess[] = [$this, 'addGenreFormSubmitted']; return $form; } protected function createComponentAddLanguageForm() { $form = new Form(); $form->addText("tag", 'Zkratka', 5, 2)->addRule(Form::FILLED, 'Je nutné zadat zkratku.')->addRule(Form::LENGTH, 'Délka zkratky jsou dva znaky', 2); $form->addText("name", 'Jazyk', 40, 50)->addRule(Form::FILLED, 'Je nutné zadat název.')->addRule(Form::MAX_LENGTH, 'Maximální délka jazyka je 50 znaků', 50); $form->addSubmit('create', 'Vytvořit'); $form->onSuccess[] = [$this, 'addLanguageFormSubmitted']; return $form; } public function addAuthorFormSubmitted(Form $form) { if ($form->isValid()) { // submitted and valid $values = $form->getValues(); $this->model->addAuthor($values['surname'], $values['name']); $this->redirect(302, "Homepage:add"); } } public function addGenreFormSubmitted(Form $form) { if ($form->isValid()) { // submitted and valid $values = $form->getValues(); $this->model->addGenre($values['name']); $this->redirect(302, "Homepage:add"); } } public function addLanguageFormSubmitted(Form $form) { if ($form->isValid()) { // submitted and valid $values = $form->getValues(); $this->model->addLanguage($values['name'], $values['tag']); $this->redirect(302, "Homepage:add"); } } public function addFormSubmitted(Form $form) { if ($form->isValid()) { // submitted and valid $values = $form->getValues(); if ($values['file']->isOk()) { $newid = $this->model->addBook($values['name'], $values['author'], $values['genre'], $values['language']); $httpResponse = $this->getHttpResponse(); // Set cookies $httpResponse->setCookie('authorId', $values['author'], 0); $httpResponse->setCookie('genreId', $values['genre'], 0); $httpResponse->setCookie('languageId', $values['language'], 0); // Determine shard no. $shard = floor($newid / 1000); $fname = __DIR__."/../books/$shard/$newid.epub"; $mfname = __DIR__."/../books/$shard/$newid.mobi"; $fbname = __DIR__."/../books/$shard/$newid.fb2"; if(!file_exists(__DIR__."/../books/$shard/")) { // shard directory doesn't exist, create new one mkdir(__DIR__."/../books/$shard/"); } $values['file']->move($fname); exec("ebook-convert $fname $mfname >> /tmp/convert.log 2>> /tmp/convert2.log &"); exec("ebook-convert $fname $fbname >> /tmp/convert.log 2>> /tmp/convert2.log &"); $this->redirect(302, "Homepage:add"); } } } }