Exemple #1
0
 public function process($parameters)
 {
     //do control panela maju pristup len prihlaseny uzivatelia
     $this->checkUser();
     //hlavicka stranky
     $this->head['title'] = 'Ovládací panel';
     $userManager = new UserManager();
     $validation = new Validation();
     //zadane URL pre odhlasenie
     if (!empty($parameters[0]) && $parameters[0] == 'odhlasit') {
         $userManager->logOut();
         $this->redirect('prihlasenie');
     }
     //data pre sablonu
     $user = $userManager->returnUser();
     $this->data['admin'] = $user['admin'];
     $this->data['userRank'] = $validation->returnUserRank($user['admin']);
     $this->data['user'] = $user['name'];
     $this->data['avatar'] = $user['avatar'];
     $this->data['registrationDate'] = $user['registration_date'];
     $this->data['lastVisit'] = $user['last_visit'];
     $this->data['comments'] = $user['comments'];
     $this->data['articles'] = $user['articles'];
     $this->data['sex'] = $user['sex'];
     $this->data['email'] = $user['email'];
     //nastavenie sablony
     $this->view = 'controlPanel';
 }
 public function route($params)
 {
     $userManager = new UserManager();
     $user = $userManager->returnUser();
     if (!$user) {
         $this->redirect("login");
     }
     switch ($user['role']) {
         case 2:
             $this->view = 'admin_dashboard';
             break;
         case 1:
             $reviewManager = new ReviewManager();
             $this->data['no_reviewed'] = $reviewManager->return_no_reviewed($user['id_user']);
             $this->data['reviewed'] = $reviewManager->return_reviewed($user['id_user']);
             $this->view = 'reviewer_dashboard';
             break;
         case 0:
         default:
             $this->view = 'author_dashboard';
             break;
     }
     $header_menu = 'login_bar';
     $this->data['title_html'] = 'Hlavní panel';
     $this->head['title_html'] = $this->data['title_html'];
     $this->header_menu = $header_menu;
 }
Exemple #3
0
 public function checkUser($admin = false)
 {
     $userManager = new UserManager();
     $user = $userManager->returnUser();
     if (!$user || $admin && $user['admin'] != '1') {
         $this->createMessage('Nemáte dostatočné oprávnenie.', 'info');
         $this->redirect('prihlasenie');
     }
 }
Exemple #4
0
 public function route($params)
 {
     $userManager = new UserManager();
     $user = $userManager->returnUser();
     $header_menu = "unlogin_bar";
     if ($user) {
         $header_menu = 'login_bar';
     }
     // Hlavička stránky
     http_response_code(404);
     $this->head['title_html'] = 'Stránka nenalezena';
     $this->header_menu = $header_menu;
     $this->view = 'error';
 }
Exemple #5
0
 public function route($params)
 {
     $userManager = new UserManager();
     $user = $userManager->returnUser();
     $header_menu = 'login_bar';
     if (!$user) {
         $this->addMessage("Pro tuto akci je nutné se přihlásit");
         $this->redirect("login");
     }
     $this->header_menu = $header_menu;
     $this->head['title_html'] = 'Správa uživatelů';
     $this->checkUser(2);
     //oveření, zda jde o administrátora
     switch ($params[0]) {
         case 'my':
             $this->redirect("user");
         case 'add':
             $article = DBmodel::fromPOST(Article::class);
             // ověřím vyplnění zaslaných dat
             if ($article) {
                 $articleManager->add_new_article($article);
                 $this->addMessage("Článek byl úspěšně přidán");
             } else {
                 $this->addMessage("Článek nebyl přidán kvůlu nevyplněným údajům");
             }
             $this->view = 'new_article';
             break;
         default:
             $this->data['users'] = $userManager->return_all_users();
             foreach ($this->data['users'] as $user) {
                 if ($user['role'] == 0) {
                     $user['color'] = "green";
                 } else {
                     if ($user['role'] == 1) {
                         $user['color'] = "purple";
                     } else {
                         $user['color'] = "red";
                     }
                 }
             }
             $this->view = 'users';
             break;
     }
 }
 public function process($parameters)
 {
     $userManager = new UserManager();
     if ($userManager->returnUser()) {
         $this->redirect('panel');
     }
     //hlavicka stranky
     $this->data['title'] = 'Prihlásenie';
     if ($_POST) {
         try {
             $userManager->logIn($_POST['name'], $_POST['password']);
             $this->createMessage('Boli ste úspešne prihlásený.', 'success');
             $this->redirect('panel');
         } catch (UserError $error) {
             $this->createMessage($error->getMessage(), 'warning');
         }
     }
     //nastavenie sablony
     $this->view = 'logIn';
 }
 public function process($parameters)
 {
     $userManager = new UserManager();
     $articleManager = new ArticleManager();
     $parsedURL = $this->parseURL($parameters[0]);
     //predanie URL do funkcie
     //zobrazenie uvodnej stranky
     if (empty($parsedURL[0])) {
         $frontPageContentManager = new frontPageContentManager();
         $this->data['user'] = $userManager->returnUserName();
         $this->data['title'] = 'Coding - Programovanie, Novinky, Software, Hardware';
         $this->data['key_words'] = 'Programovanie, Novinky, Software, Hardware, Blog, Spravodajstvo';
         $this->data['description'] = 'blog, články o programovaní, novinky zo sveta IT, rôzne zaujímavosti';
         $this->data['messages'] = $this->returnMessages();
         $this->data['topArticles'] = $articleManager->returnTopArticles();
         $this->data['topArticlesTiles'] = $frontPageContentManager->returnLastArticles();
         $this->view = 'frontPage';
     } else {
         $controllerClass = $this->camelCase(array_shift($parsedURL)) . 'Controller';
         //spracovanie URL na parametre, volanie pozadovaneho kontroleru
         if (file_exists('controllers/' . $controllerClass . '.php')) {
             //ak existuje kontroler z URL
             $this->controller = new $controllerClass();
         } else {
             $this->redirect('chyba');
         }
         //ak neexistuje, presmeruj na chybove hlasenie
         $this->controller->process($parsedURL);
         //spracovanie ostatnych parametrov vo vnorenom kontroleri
         //predanie premennych do hlavnej sablony
         $this->data['user'] = $userManager->returnUserName();
         $this->data['loggedUser'] = $userManager->returnUser();
         $this->data['title'] = $this->controller->head['title'];
         $this->data['key_words'] = $this->controller->head['key_words'];
         $this->data['description'] = $this->controller->head['description'];
         $this->data['messages'] = $this->returnMessages();
         $this->data['topArticles'] = $articleManager->returnTopArticles();
         $this->view = 'layout';
         //nastavenie hlavnej sablony
     }
 }
Exemple #8
0
 public function route($params)
 {
     $userManager = new UserManager();
     if ($userManager->returnUser()) {
         $this->redirect('dashboard');
     }
     $header_menu = "login_bar_none";
     $this->header_menu = $header_menu;
     // Hlavička stránky
     $this->head['title_html'] = 'Přihlášení do konferečního systému';
     if ($_POST) {
         try {
             $userManager->login($_POST['jmeno'], $_POST['heslo']);
             $this->redirect('dashboard');
         } catch (Exception $chyba) {
             $this->addMessage("Špatně zadané údaje");
         }
     }
     // Nastavení šablony
     $this->view = 'login';
 }
 public function route($params)
 {
     $userManager = new UserManager();
     $user = $userManager->returnUser();
     if ($user) {
         $this->redirect("dashboard");
     }
     $header_menu = 'login_bar_none';
     $this->head['title_html'] = 'Registrace';
     if ($_POST) {
         $new_user = DBmodel::fromPOST(NewUser::class);
         // ověřím vyplnění zaslaných dat
         if ($new_user) {
             if (!filter_var($new_user->email, FILTER_VALIDATE_EMAIL)) {
                 $this->addMessage("Zadaný email má neplatný formát");
             } else {
                 if ($new_user->password != $new_user->password2) {
                     $this->addMessage("Zadaná hesla se neshodují");
                 } else {
                     $userManager = new UserManager();
                     $exist = $userManager->return_users_by_login($new_user->username);
                     if ($exist) {
                         $this->addMessage("Účet se zadaným loginem již existuje");
                     } else {
                         $userManager->register($new_user);
                         $this->addMessage("Registrace proběhla úspěšně, nyní se můžete přihlásit");
                         $this->redirect("login");
                     }
                 }
             }
         } else {
             $this->addMessage("Registrace selhala kvůli nevyplněným údajům");
         }
     } else {
         $_POST = NULL;
     }
     $this->header_menu = $header_menu;
     $this->view = 'registration';
 }
Exemple #10
0
 public function route($params)
 {
     $webManager = new WebManager();
     $userManager = new UserManager();
     $user = $userManager->returnUser();
     $header_menu = "login_bar_none";
     if ($user) {
         $header_menu = 'login_bar';
     }
     // echo $user['user'];
     $this->side_menu = $webManager->return_all_pages();
     // Je zadáno URL článku ke smazání
     if (!empty($params[1]) && $params[1] == 'odstranit') {
         $this->checkUser(true);
         $webManager->odstranClanek($params[0]);
         $this->addMessage('Článek byl úspěšně odstraněn');
         $this->redirect('clanek');
     } else {
         if (!empty($params[0])) {
             // Získání článku podle URL
             $webPage = $webManager->return_page($params[0]);
             if (!$webPage) {
                 $this->redirect('chyba');
             }
             // Hlavička stránky
             $this->head = array('title_html' => $webPage['title'], 'key_words' => $webPage['key_words'], 'description' => $webPage['description']);
             // Naplnění proměnných pro šablonu
             $this->data['title'] = $webPage['title'];
             $this->data['obsah'] = $webPage['content'];
             $this->header_menu = $header_menu;
             $this->view = 'webpage';
         } else {
             $this->redirect('web/home');
         }
     }
 }
Exemple #11
0
 public function checkUser($authority)
 {
     $userManager = new UserManager();
     $user = $userManager->returnUser();
     if ($user['role'] != $authority) {
         $this->addMessage('Nedostatečná oprávnění.');
         $this->redirect('login');
     }
 }
Exemple #12
0
 public function process($parameters)
 {
     $articleManager = new ArticleManager();
     $userManager = new UserManager();
     $commentManager = new CommentManager();
     $validation = new Validation();
     $user = $userManager->returnUser();
     $this->data['admin'] = $user['admin'];
     //ak je zadane URL pre clanok, uloz clanok do premennej $article
     if (!empty($parameters[0]) && $parameters[0] != 'page' && $parameters[0] != 'unpublished') {
         $article = $articleManager->returnArticle($parameters[0]);
     }
     //nie je zadane url clanku, tak vypise zoznam clankov
     if (empty($parameters[0])) {
         $articles = $articleManager->returnPublicArticles(0);
         $this->data['articles'] = $validation->statusOfArticles($articles);
         //zisti pocet clankov, a pripravi pocet stran
         $countArticles = sizeof($articles);
         $modulo = $countArticles % 5;
         if ($modulo == 0) {
             $this->data['pages'] = $countArticles / 5;
         } else {
             $this->data['pages'] = intval($countArticles / 5 + 1);
         }
         $this->data['currentPage'] = 1;
         //aktualna strana
         $this->view = 'articles';
     }
     //ak je zadane URL pre zobrazenie nepublikovanych clankov
     if (!empty($parameters[0]) && $parameters[0] == 'unpublished') {
         $articles = $articleManager->returnUnpublishedArticles();
         $this->data['articles'] = $validation->statusOfArticles($articles);
         $this->view = 'articles';
     }
     //ak je zadane URL pre zobrazenie konkretnej strany
     if (!empty($parameters[0]) && $parameters[0] == 'page') {
         //ak je zadane cislo strany
         if (!empty($parameters[1]) && is_numeric($parameters[1])) {
             if ($parameters[1] == 1) {
                 $offset = 0;
             } else {
                 $offset = $parameters[1] * 5 - 5;
             }
             //zisti pocet clankov, a pripravi pocet stran
             $articles = $articleManager->returnPublicArticles(0);
             //vsetky clanky
             $countArticles = sizeof($articles);
             $modulo = $countArticles % 5;
             if ($modulo == 0) {
                 $this->data['pages'] = $countArticles / 5;
             } else {
                 $this->data['pages'] = intval($countArticles / 5 + 1);
             }
             $this->data['currentPage'] = $parameters[1];
             //aktualna strana
             //vratenie clankov s pozadovanym offsetom
             $articles = $articleManager->returnPublicArticles($offset);
             $this->data['articles'] = $validation->statusOfArticles($articles);
             $this->view = 'articles';
         } else {
             $this->redirect('clanky');
         }
     }
     //ak je zadane URL pre zmazanie clanku
     if (!empty($parameters[1]) && $parameters[1] == 'odstranit' && $parameters[0] != 'page') {
         //overi ci clanok z URL existuje
         if (!$article) {
             $this->redirect('chyba');
         }
         //overi ci je prihlaseny admin
         $this->checkUser(true);
         $articleManager->deleteArticle($parameters[0]);
         $this->createMessage('Článok bol odstránený', 'success');
         $this->redirect('clanky');
     }
     //ak je zadane URL pre zmazanie komentara
     if (!empty($parameters[0]) && !empty($parameters[1]) && $parameters[1] == 'odstranit-komentar' && !empty($parameters[2])) {
         //overi ci clanok z URL existuje
         if (!$article) {
             $this->redirect('chyba');
         }
         $this->checkUser(true);
         //overi ci je prihlaseny admin
         $commentManager->deleteComment($parameters[2]);
         $this->createMessage('Komentár bol odstránený', 'success');
     }
     //ak je zadane URL clanku
     if (!empty($parameters[0]) && $parameters[0] != 'page' && $parameters[0] != 'unpublished') {
         //ak nebol clanok na zadanej URL najdeny
         //alebo ak uzivatel nie je admin a clanok nie je publikovany
         //presmeruj na chybove hlasenie
         if (!$article || $user['admin'] != '1' && $article['public'] == '0') {
             $this->redirect('chyba');
         }
         //ak bol odoslany komentar
         if ($_POST) {
             //ak bol spravne vyplneny antispam
             if ($_POST['year'] == date('Y')) {
                 //vyber udajov z $_POST a ich ulozenie do premennej $comment
                 $keys = array('article_id', 'comment', 'author');
                 $comment = array_intersect_key($_POST, array_flip($keys));
                 //ulozenie komentara do DB
                 $commentManager->saveComment($comment, $user['name']);
                 $this->createMessage('Váš komentár bol úspešne pridaný', 'success');
                 $this->redirect('clanky/' . $article['url']);
             } else {
                 $this->createMessage('Chybne vyplnený antispam', 'warning');
                 $this->redirect('clanky/' . $article['url']);
             }
         }
         //hlavicka stranky
         $this->head = array('title' => $article['title'], 'key_words' => $article['key_words'], 'description' => $article['description']);
         //naplnenie premennych pre sablonu
         $this->data['article'] = $article;
         $this->data['user'] = $user['name'];
         //status clanku (publikovany/nepublikovany)
         $status = $validation->statusOfArticles(array($article));
         $this->data['article']['status'] = $status[0]['status'];
         //komentare k clanku
         $this->data['comments'] = $commentManager->returnCommentsById($article['article_id']);
         //priradenie avataru uzivatela do komentarov
         $i = 0;
         foreach ($this->data['comments'] as $commentData) {
             $userData = $userManager->returnUserInfo($commentData['author']);
             $this->data['comments'][$i]['avatar'] = $userData['avatar'];
             $this->data['comments'][$i]['userRank'] = $validation->returnUserRank($userData['admin']);
             $i += 1;
         }
         //zaznamena navstevu clanku
         $articleManager->newVisit($article['article_id'], $article['visits']);
         //nastavenie sablony
         $this->view = 'article';
     }
 }
 public function process($parameters)
 {
     $articleManager = new ArticleManager();
     $userManager = new UserManager();
     $validation = new Validation();
     $this->checkUser();
     $loggedUser = $userManager->returnUser();
     //editor je pristupny iba pre admina a redaktorov
     if ($loggedUser['admin'] == 1 || $loggedUser['admin'] == 2) {
         $article = array('article_id' => '', 'title' => '', 'thumbnail_img' => '', 'content' => '', 'url' => '', 'category' => '', 'description' => '', 'key_words' => '', 'author' => '');
         //ak je odoslany formular
         if ($_POST) {
             //ziskanie clanku z $_POST
             $keys = array('article_id', 'title', 'thumbnail_img', 'content', 'url', 'category', 'description', 'key_words', 'author', 'public');
             $article = array_intersect_key($_POST, array_flip($keys));
             //upload a spracovanie suboru
             $imageUpload = new upload($_FILES['image_field'], 'sk_SK');
             //nastavenie ID noveho clanku
             if (empty($article['article_id'])) {
                 $article['article_id'] = $articleManager->returnLastArticleId() + 1;
             }
             $targetDirectory = 'img/articles/' . $article['article_id'] . '/';
             $filePath = $targetDirectory . 'thumbnail.png';
             try {
                 //vytvori novy adresar podla ID noveho clanku
                 if (!file_exists($targetDirectory)) {
                     mkdir($targetDirectory, '0777', true);
                 }
                 //ak bol obrazok nahraty
                 if ($imageUpload->uploaded) {
                     $imageUpload->allowed = array('image/*');
                     //povolene formaty
                     $imageUpload->mime_check = true;
                     //kontrola formatu zapnuta
                     $imageUpload->file_new_name_body = 'thumbnail';
                     //novy nazov suboru
                     $imageUpload->image_resize = true;
                     //zmensenie
                     $imageUpload->image_convert = 'png';
                     //konvertovanie na png
                     $imageUpload->image_x = 120;
                     //vysledna sirka 120px
                     $imageUpload->image_ratio_y = true;
                     //vyska: auto
                     //zmazanie existujuceho nahladoveho obrazka
                     if (file_exists($filePath)) {
                         unlink($filePath);
                     }
                     $imageUpload->process($targetDirectory);
                     //uloz vysledny obrazok
                     //ak bol obrazok ulozeny
                     if ($imageUpload->processed) {
                         //uloz cestu k obrazku do '$article'
                         $article['thumbnail_img'] = $filePath;
                         $imageUpload->clean();
                     } else {
                         throw new UserError($imageUpload->error);
                     }
                 }
             } catch (UserError $error) {
                 $this->createMessage($error->getMessage(), 'warning');
             }
             //ulozenie clanku do databazy
             try {
                 //vytvorenie URL adresy z pola title
                 $article['url'] = $validation->checkUrl($article['title']);
                 //ulozenie clanku do databazy
                 $articleManager->saveArticle($_POST['article_id'], $article);
                 $this->createMessage('Článok bol úspešne uložený', 'success');
                 //presmeruj na clanok
                 $this->redirect('clanky/' . $article['url']);
             } catch (UserError $error) {
                 $this->createMessage($error->getMessage(), 'warning');
                 $this->redirect('editor');
             }
         }
         //ak je zadana URL adresa clanku na jeho editaciu
         if (!empty($parameters[0])) {
             $loadedArticle = $articleManager->returnArticle($parameters[0]);
             if ($loadedArticle) {
                 $article = $loadedArticle;
             } else {
                 $this->createMessage('Článok sa nenašiel', 'warning');
                 $this->redirect('chyba');
             }
             $this->data['article'] = $article;
             //hlavicka stranky
             $this->head = array('title' => 'Editor - ' . $article['title'], 'key_words' => 'coding.wz.sk - editor', 'description' => 'Editor článkov');
             $this->view = 'editor';
         } else {
             $article['author'] = $userManager->returnUser()['name'];
             $this->data['article'] = $article;
             //hlavicka stranky
             $this->head = array('title' => 'Editor - Nový článok', 'key_words' => 'coding.wz.sk - editor', 'description' => 'Editor článkov');
             $this->view = 'editor';
         }
     }
 }
Exemple #14
0
 public function route($params)
 {
     $articleManager = new ArticleManager();
     $userManager = new UserManager();
     $user = $userManager->returnUser();
     $this->data['title_html'] = "";
     $header_menu = 'login_bar';
     if (!$user) {
         $this->addMessage("Pro tuto akci je nutné se přihlásit");
         $this->redirect("login");
     }
     $this->header_menu = $header_menu;
     if (empty($params[0])) {
         $this->redirect("dashboard");
     }
     switch ($params[0]) {
         case 'new':
             $this->checkUser(0);
             $_POST = NULL;
             $this->data['title_html'] = 'Nový článek';
             $this->view = 'new_article';
             break;
         case 'my':
             $this->data['title_html'] = 'Mé články';
             $this->checkUser(0);
             if (isset($params[1])) {
                 $article = $articleManager->return_article($params[1]);
                 //var_dump($article);
                 $this->data['id_article'] = $article['id_article'];
                 $this->data['title'] = $article['title'];
                 $this->data['authors'] = $article['authors'];
                 $this->data['notes'] = $article['notes'];
                 $this->data['link_pdf'] = $article['link_pdf'];
                 $this->view = 'my_article';
             } else {
                 //$this->data['articles'] = $articleManager->return_all_articles();
                 $this->data['articles'] = $articleManager->return_my_articles($user['id_user']);
                 $this->view = 'my_articles';
             }
             break;
         case 'add':
             $this->checkUser(0);
             $this->data['title'] = $_POST['title'];
             $article = DBmodel::fromPOST(Article::class);
             // ověřím vyplnění zaslaných dat
             if ($article) {
                 $articleManager = new ArticleManager();
                 $res = $articleManager->get_last_id()->fetch();
                 $id = "_1";
                 if ($res) {
                     $id = "_" . ($res['id_article'] + 1);
                 }
                 $file_ok = 0;
                 $target_dir = "pdf/";
                 $target_name = explode(".", $_FILES["link_pdf"]["name"])[0] . $id;
                 $target_extension = explode(".", $_FILES["link_pdf"]["name"])[1];
                 $target_file = $target_dir . $target_name . "." . $target_extension;
                 if ($target_extension != "pdf") {
                     $this->addMessage("Nahraný dokument není ve formátu pdf");
                 } else {
                     // je to pdf
                     if (move_uploaded_file($_FILES["link_pdf"]["tmp_name"], $target_file)) {
                         $this->addMessage("Dokument byl úspěšně nahrán na server");
                         $file_ok = 1;
                     } else {
                         $file_ok = 0;
                         $this->addMessage("Chyba při nahrávání dokumentu na server");
                     }
                 }
                 if ($file_ok) {
                     $article->link_pdf = $target_file;
                     $articleManager->add_new_article($article, $user['id_user']);
                     $this->addMessage("Článek byl úspěšně přidán");
                 } else {
                     $this->addMessage("PDF dokument se nepodařilo nahrát na server <b>" . $_FILES["link_pdf"]["name"] . "</b>");
                 }
                 $this->redirect("article/my");
             } else {
                 $this->addMessage("Článek nebyl přidán kvůli nevyplněným údajům");
             }
             $this->data['title'] = $_POST['title'];
             $this->view = 'new_article';
             break;
         case 'remove':
             $this->checkUser(0);
             $articleManager->delete_article_database($params[1], $user['id_user']);
             $this->redirect("article/my");
             break;
         case 'manager':
             $this->data['title_html'] = 'Správa článků';
             $this->checkUser(2);
             $articles = $articleManager->return_all_articles_w_reviews();
             // final articles
             $fa = array();
             foreach ($articles as $key => $a) {
                 if (!isset($fa[$a['id_article']])) {
                     $fa[$a['id_article']] = $a->toArray();
                     $fa[$a['id_article']]['reviews'] = [];
                 }
                 if ($a['id_review'] != null) {
                     $fa[$a['id_article']]['reviews'][] = $a;
                 }
                 if (count($fa[$a['id_article']]['reviews']) == 3) {
                     if ($fa[$a['id_article']]['reviews'][0]['accepted']) {
                         $fa[$a['id_article']]['can_accept'] = "<span class='accepted'>Schváleno!</span>";
                     } else {
                         $fa[$a['id_article']]['can_accept'] = '<input type="submit" class="btn  btn-primary btn-block" value="Schválit">';
                     }
                     //die();
                 } else {
                     $fa[$a['id_article']]['can_accept'] = "<span class='accepted-no'>Nedostatek recenzí</span>";
                 }
             }
             $this->data['users'] = $userManager->return_all_users_by_role(1);
             $this->data['articles'] = $fa;
             $this->view = 'articles_editor';
             break;
         case 'review':
             $this->data['title_html'] = 'Recenze článku';
             if (!isset($params[1])) {
                 $this->redirect("dashboard");
             }
             $article = $articleManager->return_article($params[1]);
             $this->data['title'] = $article['title'];
             $this->data['authors'] = $article['authors'];
             $this->data['notes'] = $article['notes'];
             $this->data['link_pdf'] = $article['link_pdf'];
             $this->data['article_id_article'] = $params[1];
             $this->view = 'review_article';
             break;
         case 'add-review':
             $this->checkUser(1);
             $review = DBmodel::fromPOST(Review::class);
             // ověřím vyplnění zaslaných dat
             if ($review) {
                 $reviewManager = new ReviewManager();
                 $reviewManager->add_review($review, $user['id_user']);
                 $this->addMessage("Recenze byla úspěšně odeslána");
                 $this->redirect("dashboard");
             } else {
                 $this->addMessage("Recenze nebyla přidána kvůli neyplněným údajům");
             }
             break;
         case 'remove-review':
             $this->checkUser(2);
             $reviewManager = new ReviewManager();
             $reviewManager->delete_review($params[1]);
             $this->redirect("article/manager");
             break;
         case 'add-reviewer':
             $this->checkUser(2);
             $reviewManager = new ReviewManager();
             if ($reviewManager->add_reviewer($_POST['id_article'], $_POST['reviewer'])) {
                 $this->addMessage("Recenzent byl úspěšně přidělen");
             } else {
                 $this->addMessage("Vybraný recenzent má již tento článek přidělen");
             }
             $this->redirect("article/manager");
             break;
         case 'accept':
             $this->checkUser(2);
             $accept = DBmodel::fromPOST(Accept::class);
             // ověřím vyplnění zaslaných dat
             if ($accept) {
                 $reviewManager = new ReviewManager();
                 $reviewManager->accept_reviews($accept);
                 $this->addMessage("Recenze byly úspěšně schváleny");
             } else {
                 $this->addMessage("Recenze nemohly být schváleny, protože jich není dostatečný počet: <b>3</b>");
             }
             $this->redirect("article/manager");
             break;
         case 'update':
             // editace článku
             $this->data['title_html'] = 'Úprava článku';
             $this->checkUser(0);
             $article = DBmodel::fromPOST(Article::class);
             // ověřím vyplnění zaslaných dat
             if ($article) {
                 $articleManager->update_article($article, $_POST['id_article']);
                 $this->addMessage("Článek byl úspěšně upraven");
             } else {
                 $this->addMessage("Článek nebyl upraven kvůli nevyplněným údajům");
             }
             $this->redirect("article/my/" . $_POST['id_article']);
             break;
         case 'upload':
             // nahrání nového PDF
             $this->checkUser(0);
             $articleManager = new ArticleManager();
             $res = $articleManager->get_last_id()->fetch();
             $id = "_1";
             if ($res) {
                 $id = "_" . $res['id_article'];
             }
             $target_dir = "pdf/";
             $target_name = explode(".", $_FILES["fileToUpload"]["name"])[0] . $id;
             $target_extension = explode(".", $_FILES["fileToUpload"]["name"])[1];
             $target_file = $target_dir . $target_name . "." . $target_extension;
             if (isset($_POST["submit"])) {
                 if ($target_extension != "pdf") {
                     $this->addMessage("Nahraný dokument není ve formátu pdf");
                 } else {
                     // je to pdf
                     if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
                         $articleManager->update_article_file($target_name . "." . $target_extension, $_POST['id_article']);
                         $this->addMessage("Dokument byl úspěšně nahrán na server");
                     } else {
                         $this->addMessage("Chyba při nahrávání dokumentu na server");
                     }
                 }
             }
             $this->redirect("article/my/" . $_POST['id_article']);
             break;
         default:
             $this->redirect("dashboard");
             break;
     }
     $this->head['title_html'] = $this->data['title_html'];
 }
 public function process($parameters)
 {
     $articleManager = new ArticleManager();
     $userManager = new UserManager();
     $commentManager = new CommentManager();
     $validation = new Validation();
     $user = $userManager->returnUser();
     $this->data['admin'] = $user['admin'];
     //ak je zadane URL pre clanok, uloz clanok do premennej $article
     if (!empty($parameters[0]) && $parameters[0] != 'page' && $parameters[0] != 'unpublished') {
         $article = $articleManager->returnArticle($parameters[0]);
     }
     //nie je zadane url clanku, tak vypise zoznam clankov
     if (empty($parameters[0])) {
         $articles = $articleManager->returnPublicArticles(0);
         $this->data['articles'] = $validation->statusOfArticles($articles);
         if (sizeof($articles) == 0) {
             $this->createMessage('Žiadne články na zobrazenie', 'info');
         }
         //zisti pocet clankov, a pripravi pocet stran
         $countArticles = sizeof($articles);
         $modulo = $countArticles % 5;
         if ($modulo == 0) {
             $this->data['pages'] = $countArticles / 5;
         } else {
             $this->data['pages'] = intval($countArticles / 5 + 1);
         }
         $this->data['currentPage'] = 1;
         //aktualna strana
         //hlavicka stranky
         $this->head = array('title' => 'Zverejnené články', 'key_words' => 'coding.wz.sk - články', 'description' => 'Zverejnené články');
         $this->view = 'articles';
     }
     //ak je zadane URL pre zobrazenie nepublikovanych clankov
     if (!empty($parameters[0]) && $parameters[0] == 'unpublished') {
         $articles = $articleManager->returnUnpublishedArticles();
         $this->data['articles'] = $validation->statusOfArticles($articles);
         if (sizeof($articles) == 0) {
             $this->createMessage('Žiadne články na zobrazenie', 'info');
         }
         //hlavicka stranky
         $this->head = array('title' => 'Nezverejnené články', 'key_words' => 'coding.wz.sk', 'description' => 'Nezverejnené články');
         $this->view = 'articles';
     }
     //ak je zadane URL pre zobrazenie konkretnej strany
     if (!empty($parameters[0]) && $parameters[0] == 'page') {
         //ak je zadane cislo strany
         if (!empty($parameters[1]) && is_numeric($parameters[1])) {
             if ($parameters[1] == 1) {
                 $offset = 0;
             } else {
                 $offset = $parameters[1] * 5 - 5;
             }
             //zisti pocet clankov, a pripravi pocet stran
             $articles = $articleManager->returnPublicArticles(0);
             //vsetky clanky
             $countArticles = sizeof($articles);
             $modulo = $countArticles % 5;
             if ($modulo == 0) {
                 $this->data['pages'] = $countArticles / 5;
             } else {
                 $this->data['pages'] = intval($countArticles / 5 + 1);
             }
             $this->data['currentPage'] = $parameters[1];
             //aktualna strana
             //vratenie clankov s pozadovanym offsetom
             $articles = $articleManager->returnPublicArticles($offset);
             $this->data['articles'] = $validation->statusOfArticles($articles);
             if (sizeof($articles) == 0) {
                 $this->createMessage('Žiadne články na zobrazenie', 'info');
             }
             //hlavicka stranky
             $this->head = array('title' => 'Zverejnené články - Strana ' . $parameters[1], 'key_words' => 'coding.wz.sk - články', 'description' => 'Zverejnené články');
             $this->view = 'articles';
         } else {
             $this->redirect('clanky');
         }
     }
     //ak je zadane URL pre zmazanie clanku
     if (!empty($parameters[1]) && $parameters[1] == 'odstranit' && $parameters[0] != 'page') {
         //overi ci clanok z URL existuje
         if (!$article) {
             $this->redirect('chyba');
         }
         //ak je clanok nepublikovany a je prihlaseny autor tohoto clanku
         if ($article['public'] == 0 && $article['author'] == $user['name']) {
             $articleManager->deleteArticle($parameters[0]);
         } else {
             //overi ci je prihlaseny admin
             $this->checkUser(true);
             $articleManager->deleteArticle($parameters[0]);
         }
         $this->createMessage('Článok bol odstránený', 'success');
         $this->redirect('clanky');
     }
     //ak je zadane URL pre publikovanie clanku
     if (!empty($parameters[1]) && $parameters[1] == 'publikovat' && $parameters[0] != 'page') {
         //overi ci clanok z URL existuje
         if (!$article) {
             $this->redirect('chyba');
         }
         //overi ci je prihlaseny admin
         $this->checkUser(true);
         $articleManager->publishArticle($article['url']);
         $this->createMessage('Článok bol publikovaný', 'success');
         $this->redirect('clanky');
     }
     //ak je zadane URL pre zmazanie komentara
     if (!empty($parameters[0]) && !empty($parameters[1]) && $parameters[1] == 'odstranit-komentar' && !empty($parameters[2])) {
         //overi ci clanok z URL existuje
         if (!$article) {
             $this->redirect('chyba');
         }
         $this->checkUser(true);
         //overi ci je prihlaseny admin
         $commentManager->deleteComment($parameters[2]);
         $this->createMessage('Komentár bol odstránený', 'success');
     }
     //ak je zadane URL clanku
     if (!empty($parameters[0]) && $parameters[0] != 'page' && $parameters[0] != 'unpublished') {
         //ak nebol clanok na zadanej URL najdeny
         if (!$article) {
             $this->redirect('chyba');
         }
         //ak uzivatel nie je admin ALEBO redaktor A clanok nie je publikovany
         if ($article['public'] == 0 && $user['admin'] == 0) {
             $this->redirect('chyba');
         }
         //ak je uzivatel redaktor A nie je autorom daneho clanku
         if ($user['admin'] == 2 && $user['name'] != $article['author'] && $article['public'] == 0) {
             $this->redirect('chyba');
         }
         //ak bol odoslany komentar
         if ($_POST) {
             //odstranenie skodliveho kodu z antispam pola
             $captchaAnswer = strip_tags($_POST['captchaAnswer']);
             //ak bol spravne vyplneny antispam
             if ($validation->checkCaptcha($_POST['captchaNumber1'], $_POST['captchaNumber2'], $captchaAnswer)) {
                 $comment['article_id'] = $_POST['article_id'];
                 $comment['author'] = $_POST['author'];
                 $comment['comment'] = htmlspecialchars($_POST['comment']);
                 //pridanie emoticonov
                 $comment['comment'] = $commentManager->addEmoticons($comment['comment']);
                 //ulozenie komentara do DB
                 $commentManager->saveComment($comment, $user['name']);
                 $this->createMessage('Váš komentár bol úspešne pridaný', 'success');
                 $this->redirect('clanky/' . $article['url']);
             } else {
                 $this->createMessage('Chybne vyplnený antispam', 'warning');
                 $this->redirect('clanky/' . $article['url']);
             }
         }
         //naplnenie premennych pre sablonu
         $this->data['article'] = $article;
         $this->data['category'] = $validation->returnCategoryName($article['category']);
         $this->data['user'] = $user['name'];
         //status clanku (publikovany/nepublikovany)
         $status = $validation->statusOfArticles(array($article));
         $this->data['article']['status'] = $status[0]['status'];
         //komentare k clanku
         $this->data['comments'] = $commentManager->returnCommentsById($article['article_id']);
         //antispam otazka
         $this->data['captcha'] = $validation->returnCaptcha();
         //priradenie avataru uzivatela do komentarov
         $i = 0;
         foreach ($this->data['comments'] as $commentData) {
             $userData = $userManager->returnUserInfo($commentData['author']);
             $this->data['comments'][$i]['avatar'] = $userData['avatar'];
             $this->data['comments'][$i]['userRank'] = $validation->returnUserRank($userData['admin']);
             $i += 1;
         }
         //zaznamena navstevu clanku
         $articleManager->newVisit($article['article_id'], $article['visits']);
         //hlavicka stranky
         $this->head = array('title' => $article['title'], 'key_words' => $article['key_words'], 'description' => $article['description']);
         $this->view = 'article';
     }
 }
 public function process($parameters)
 {
     $userManager = new UserManager();
     $validation = new Validation();
     $user = $userManager->returnUser();
     //ak bol odoslany formular pre ulozenie udajov uzivatela
     //udaje z formularu sa ukladaju do premennej $data, z ktorej sa nakoniec vyberu a zapisu do DB vsetky udaje
     //v celom bloku try sa odchytavaju vsetky vynimky
     if (isset($_POST['submit'])) {
         try {
             $this->checkUser();
             //polia pre zmenu hesla
             //ak bolo vyplnene aspon jedno z poli
             if (!empty($_POST['old']) || !empty($_POST['password'] != '') || !empty($_POST['password2'] != '')) {
                 $userManager->checkPassword($user['name'], $_POST['old']);
                 //over stare heslo
                 if (!empty($_POST['password']) && !empty($_POST['password2'])) {
                     if ($_POST['password'] == $_POST['password2']) {
                         $validation->checkPasswordLength($_POST['password']);
                         //overi minimalnu dlzku hesla
                         $data['password'] = $userManager->returnHash($_POST['password']);
                         //pripravi pole a zasifruje heslo
                         $this->createMessage('Heslo bolo úspešne zmenené.', 'success');
                     } else {
                         throw new UserError('Heslá sa nezhodujú.');
                     }
                 } else {
                     throw new UserError('Nevyplnené pole.');
                 }
             }
             //radio button pohlavie
             if ($_POST['sex'] == 'male') {
                 $data['sex'] = 'muž';
             } else {
                 $data['sex'] = 'žena';
             }
             $userManager->updateUserData($user['name'], $data);
             //zapis udajov uzivatela do DB
             $this->createMessage('Nastavenia boli úspešne uložené.', 'success');
         } catch (UserError $error) {
             $this->createMessage($error->getMessage(), 'warning');
         }
     }
     //ak bol odoslany formular pre upload profiloveho obrazka
     if (isset($_POST['uploadImage'])) {
         $imageUpload = new upload($_FILES['image_field']);
         $targetDirectory = 'img/users/' . $user['name'] . '/';
         $filePath = $targetDirectory . 'user_avatar.gif';
         try {
             //ak neexistuje uzivatelov adresar, vytvor ho
             if (!file_exists($targetDirectory)) {
                 mkdir($targetDirectory, '0777', true);
             }
             //ak bol obrazok nahraty
             if ($imageUpload->uploaded) {
                 $imageUpload->allowed = array('image/*');
                 //povolene formaty
                 $imageUpload->mime_check = true;
                 //kontrola formatu zapnuta
                 $imageUpload->file_new_name_body = 'user_avatar';
                 //novy nazov suboru
                 $imageUpload->image_resize = true;
                 //zmensenie
                 $imageUpload->image_convert = 'gif';
                 //konvertovanie na gif
                 $imageUpload->image_x = 100;
                 //vysledna sirka 100px
                 $imageUpload->image_ratio_y = true;
                 //vyska: auto
                 //zmazanie existujuceho avataru
                 if (file_exists($filePath)) {
                     unlink($filePath);
                 }
                 $imageUpload->process($targetDirectory);
                 //uloz vysledny obrazok
                 //ak bol obrazok ulozeny
                 if ($imageUpload->processed) {
                     //uloz avatar do databazy
                     $userManager->updateUserData($user['name'], array('avatar' => $filePath));
                     $imageUpload->clean();
                 } else {
                     throw new UserError($imageUpload->error);
                 }
                 $this->createMessage('Váš obrázok bol úspešne uložený.', 'success');
             } else {
                 throw new UserError('Obrázok sa nenahral');
             }
         } catch (UserError $error) {
             $this->createMessage($error->getMessage(), 'warning');
         }
     }
     //ak je zadana URL pre odstranenie uzivatela
     if (!empty($parameters[1]) && $parameters[1] == 'odstranit') {
         $this->checkUser(true);
         $userManager->deleteUser($parameters[0]);
         $this->createMessage('Užívateľ<strong> ' . $parameters[0] . ' </strong>bol odstránený', 'success');
         $this->redirect('uzivatelia');
     }
     //ak je zadana URL pre zmenu opravnenia uzivatela
     if (!empty($parameters[1]) && $parameters[1] == 'zmenit-opravnenie') {
         $this->checkUser(true);
         $requiredUser = $userManager->returnUserInfo($parameters[0]);
         //ak ma uzivatel hodnost 'Clen', zmen ho na 'Redaktor'
         if ($requiredUser['admin'] == 0) {
             $value = array('admin' => 2);
             $userManager->updateUserData($parameters[0], $value);
             $this->createMessage('Užívateľovi ' . $parameters[0] . ' bola priradená hodnosť Redaktor', 'success');
             $this->redirect('uzivatelia');
         }
         //ak ma uzivatel hodnost 'Redaktor', zmen ho na 'Clen'
         if ($requiredUser['admin'] == 2) {
             $value = array('admin' => 0);
             $userManager->updateUserData($parameters[0], $value);
             $this->createMessage('Užívateľovi ' . $parameters[0] . ' bola priradená hodnosť Člen', 'success');
             $this->redirect('uzivatelia');
         }
     }
     //ak je zadane URL profilu uzivatela
     if (!empty($parameters[0])) {
         $user = $userManager->returnUserInfo($parameters[0]);
         //ak pouzivatel nebol najdeny, presmeruj na chybove hlasenie
         if (!$user) {
             $this->redirect('chyba');
         }
         //premenne pre sablonu
         $this->head['title'] = 'Užívateľský profil - ' . $user['name'];
         $this->data['userRank'] = $validation->returnUserRank($user['admin']);
         $this->data['user'] = $user['name'];
         $this->data['avatar'] = $user['avatar'];
         $this->data['registrationDate'] = $user['registration_date'];
         $this->data['lastVisit'] = $user['last_visit'];
         $this->data['comments'] = $user['comments'];
         $this->data['articles'] = $user['articles'];
         $this->data['sex'] = $user['sex'];
         $this->data['email'] = $user['email'];
         $this->data['loggedUser'] = $userManager->returnUser();
         //sablona
         $this->view = 'profile';
     } else {
         $this->checkUser(true);
         //premenne pre sablonu
         $this->head['title'] = 'Správa užívateľov';
         $this->data['admin'] = $user && $user['admin'];
         $this->data['users'] = $userManager->returnUsers();
         $this->data['loggedUser'] = $userManager->returnUser();
         $index = 0;
         foreach ($this->data['users'] as $userData) {
             $this->data['users'][$index]['rank'] = $validation->returnUserRank($userData['admin']);
             $index += 1;
         }
         //sablona
         $this->view = 'users';
     }
 }
 public function process($parameters)
 {
     //iba prihlaseny uzivatelia
     $this->checkUser();
     $userManager = new UserManager();
     $messageManager = new MessageManager();
     $loggedUser = $userManager->returnUser();
     //ak je zadane URL pre vytvorenie novej spravy
     if (!empty($parameters[0]) && $parameters[0] == 'vytvorit') {
         $users = $userManager->returnUsers();
         //vytvorenie zdroja pre automaticke doplnovanie uzivatelov v poli 'prijemca'
         $autocompleteSource = '';
         foreach ($users as $user) {
             $autocompleteSource = $autocompleteSource . "'" . $user['name'] . "'" . ', ';
         }
         $autocompleteSource = rtrim($autocompleteSource, ", ");
         $this->data['autocompleteSource'] = $autocompleteSource;
         //ak bol zadany prijemca v URL
         if (!empty($parameters[1])) {
             $this->data['recipient_url'] = strip_tags($parameters[1]);
         } else {
             $this->data['recipient_url'] = '';
         }
         $this->head['title'] = 'Nová správa';
         $this->view = 'messageForm';
     }
     //ak je zadane URL na odstranenie spravy
     if (!empty($parameters[1]) && $parameters[1] == 'odstranit') {
         $message = $messageManager->returnMessage($parameters[0]);
         if ($message) {
             $messageManager->deleteMessage($parameters[0], $loggedUser);
             $this->createMessage('Správa bola odstránená', 'success');
             $this->redirect('panel');
         } else {
             $this->redirect('chyba');
         }
     }
     //ak je zadane URL na zobrazenie spravy
     if (!empty($parameters[1]) && $parameters[1] == 'zobrazit') {
         $message = $messageManager->returnMessage($parameters[0]);
         //ak sprava existuje a otvara ju prijimatel, alebo odosielatel
         if ($message && ($message['sender'] == $loggedUser['name'] || $message['recipient'] == $loggedUser['name'])) {
             //pri prvom otvoreni, oznac spravu ako precitanu
             if ($message['unread'] == 1 && $message['recipient'] == $loggedUser['name']) {
                 $messageManager->readMessage($message['message_id']);
             }
             $this->head['title'] = 'Správa - ' . $message['subject'];
             $this->data['message'] = $message;
             $this->view = 'message';
         } else {
             $this->redirect('chyba');
         }
     }
     //ak bol odoslany formular pre odoslanie spravy
     if ($_POST) {
         $sender = $userManager->returnUser();
         $recipient = strip_tags($_POST['recipient']);
         $subject = htmlspecialchars($_POST['subject']);
         $message = htmlspecialchars($_POST['message']);
         try {
             $recipient = $userManager->returnUserInfo($recipient);
             if (!$recipient) {
                 throw new UserError('Užívateľ neexistuje');
             }
             if ($sender['name'] == $recipient['name']) {
                 throw new UserError('Nemôžete poslať správu sám sebe');
             }
             //odoslanie spravy do databazy
             $messageManager->sendMessage($sender['name'], $recipient['name'], $subject, $message);
             $this->createMessage('Vaša správa bola úspešne odoslaná', 'success');
             $this->redirect('panel');
         } catch (UserError $error) {
             $this->createMessage($error->getMessage(), 'warning');
         }
     }
     //zadane URL bez parametrov
     if (empty($parameters)) {
         $this->redirect('chyba');
     }
 }
 public function process($parameters)
 {
     //do control panela maju pristup len prihlaseny uzivatelia
     $this->checkUser();
     $noticeManager = new NoticeManager();
     $userManager = new UserManager();
     $loggedUser = $userManager->returnUser();
     //zadane URL pre odhlasenie
     if (!empty($parameters[0]) && $parameters[0] == 'odhlasit') {
         $userManager->logOut();
         $this->redirect('prihlasenie');
     }
     //zadane URL pre zobrazenie rozpisanych clankov redaktora alebo admina
     if (!empty($parameters[0]) && $parameters[0] == 'moje-clanky') {
         //ak je prihlaseny redaktor alebo admin
         if ($loggedUser['admin'] == 1 || $loggedUser['admin'] == 2) {
             $articleManager = new ArticleManager();
             $unpublishedArticles = $articleManager->returnUnpublishedArticles();
             //vybratie iba tych nepublikovanych clankov, ktorych autor je momentalne prihlaseny uzivatel
             $userArticles = array();
             foreach ($unpublishedArticles as $article) {
                 if ($article['author'] == $loggedUser['name']) {
                     $userArticles[] = $article;
                 }
             }
             //ak nie su ziadne clanky na zobrazenie
             if (sizeof($userArticles) == 0) {
                 $this->createMessage('Žiadne články na zobrazenie', 'info');
             }
             $this->data['userArticles'] = $userArticles;
             $this->head['title'] = 'Moje články';
             $this->view = 'myArticles';
         }
     }
     //ak bol odoslany formular s novym oznamom
     if (isset($_POST['newNoticeSubmit'])) {
         //overenie ci je prihlaseny admin
         $this->checkUser(true);
         if (isset($_POST['noticeField'])) {
             $noticeManager->addNotice($_POST['noticeField']);
             $this->createMessage('Oznam bol úspešne uložený', 'success');
             $this->redirect('panel');
         }
     }
     //zadane URL pre odstranenie oznamu
     if (!empty($parameters[1]) && $parameters[1] == 'odstranit') {
         //overenie ci je prihlaseny admin
         $this->checkUser(true);
         //odstran oznam s danym ID
         $noticeManager->removeNotice($parameters[0]);
         $this->redirect('panel');
     }
     //ak je zadane URL pre odstranenie uzivatelskeho uctu
     if (!empty($parameters[1]) && $parameters[1] == 'odstranit-ucet') {
         if ($parameters[0] == $loggedUser['name']) {
             $userManager->deleteUser($parameters[0]);
         } else {
             $this->redirect('chyba');
         }
         $this->createMessage('Váš účet bol odstránený zo systému. Ďakujeme', 'warning');
         $userManager->logOut();
         $this->redirect('');
     }
     //zadane URL pre zobrazenie control panelu
     if (empty($parameters[0])) {
         $user = $userManager->returnUser();
         //oznamy
         $this->data['notices'] = $noticeManager->returnNotices();
         //data pre sablonu
         $this->data['admin'] = $user['admin'];
         $this->data['user'] = $user['name'];
         $messageManager = new MessageManager();
         $this->data['receivedMessages'] = $messageManager->returnReceivedMessages($user['name']);
         $this->data['sentMessages'] = $messageManager->returnSentMessages($user['name']);
         //nastavenie sablony a title
         $this->view = 'controlPanel';
         $this->head['title'] = 'Ovládací panel';
     }
 }
 public function process($parameters)
 {
     $articleManager = new ArticleManager();
     $userManager = new UserManager();
     $validation = new Validation();
     $user = $userManager->returnUser();
     $this->data['admin'] = $user['admin'];
     //ak je zadana existujuca kategoria
     if (!empty($parameters[0]) && ($parameters[0] == 'novinky' || $parameters[0] == 'programovanie' || $parameters[0] == 'hardware' || $parameters[0] == 'software' || $parameters[0] == 'ostatne')) {
         //nazov kategorie
         $category = $validation->returnCategoryName($parameters[0]);
         //ak je zadane URL pre zobrazenie konkretnej strany
         if (!empty($parameters[1]) && $parameters[1] == 'page') {
             //ak je zadane cislo strany
             if (!empty($parameters[2]) && is_numeric($parameters[2])) {
                 if ($parameters[2] == 1) {
                     $offset = 0;
                 } else {
                     $offset = $parameters[2] * 5 - 5;
                 }
                 //zisti pocet clankov, a pripravi pocet stran
                 $articles = $articleManager->returnArticlesByCategory($parameters[0], 0);
                 //vsetky clanky z danej kategorie
                 $countArticles = sizeof($articles);
                 if (sizeof($articles) == 0) {
                     $this->createMessage('Žiadne články na zobrazenie', 'info');
                 }
                 $modulo = $countArticles % 5;
                 if ($modulo == 0) {
                     $this->data['pages'] = $countArticles / 5;
                 } else {
                     $this->data['pages'] = intval($countArticles / 5 + 1);
                 }
                 $this->data['currentPage'] = $parameters[2];
                 //aktualna strana
                 $this->data['category'] = $validation->returnCategoryName($parameters[0]);
                 //aktualna kategoria
                 //vratenie clankov s pozadovanym offsetom
                 $articles = $articleManager->returnArticlesByCategory($parameters[0], $offset);
                 $this->data['articles'] = $validation->statusOfArticles($articles);
                 //hlavicka stranky
                 $this->head = array('title' => $category, 'key_words' => 'Kategória - ' . $category, 'description' => 'Články z kategórie ' . $category);
                 $this->view = 'category';
             } else {
                 $this->redirect('kategoria/' . $parameters[0]);
             }
         } else {
             $articles = $articleManager->returnArticlesByCategory($parameters[0], 0);
             $this->data['articles'] = $validation->statusOfArticles($articles);
             //zisti pocet clankov, a pripravi pocet stran
             $countArticles = sizeof($articles);
             if (sizeof($articles) == 0) {
                 $this->createMessage('Žiadne články na zobrazenie', 'info');
             }
             $modulo = $countArticles % 5;
             if ($modulo == 0) {
                 $this->data['pages'] = $countArticles / 5;
             } else {
                 $this->data['pages'] = intval($countArticles / 5 + 1);
             }
             $this->data['currentPage'] = 1;
             //aktualna strana
             $this->data['category'] = $category;
             //aktualna kategoria
             //hlavicka stranky
             $this->head = array('title' => $category, 'key_words' => 'Kategória - ' . $category, 'description' => 'Články z kategórie ' . $category);
             $this->view = 'category';
         }
     } else {
         $this->redirect('chyba');
     }
 }
 public function process($parameters)
 {
     $userManager = new UserManager();
     $validation = new Validation();
     $user = $userManager->returnUser();
     //ak bol odoslany formular pre ulozenie udajov uzivatela
     //udaje z formularu sa ukladaju do premennej $data, z ktorej sa nakoniec vyberu a zapisu do DB vsetky udaje
     //v celom bloku try sa odchytavaju vsetky vynimky
     if (isset($_POST['submit'])) {
         try {
             $this->checkUser();
             //polia pre zmenu hesla
             //ak bolo vyplnene aspon jedno z poli
             if (!empty($_POST['old']) || !empty($_POST['password'] != '') || !empty($_POST['password2'] != '')) {
                 $userManager->checkPassword($user['name'], $_POST['old']);
                 //over stare heslo
                 if (!empty($_POST['password']) && !empty($_POST['password2'])) {
                     if ($_POST['password'] == $_POST['password2']) {
                         $validation->checkPasswordLength($_POST['password']);
                         //overi minimalnu dlzku hesla
                         $data['password'] = $userManager->returnHash($_POST['password']);
                         //pripravi pole a zasifruje heslo
                         $this->createMessage('Heslo bolo úspešne zmenené.', 'success');
                     } else {
                         throw new UserError('Heslá sa nezhodujú.');
                     }
                 } else {
                     throw new UserError('Nevyplnené pole.');
                 }
             }
             //radio button pohlavie
             if ($_POST['sex'] == 'male') {
                 $data['sex'] = 'muž';
             } else {
                 $data['sex'] = 'žena';
             }
             //pole pre email
             $data['email'] = $_POST['email'];
             $userManager->updateUserData($user['name'], $data);
             //zapis udajov uzivatela do DB
             $this->createMessage('Nastavenia boli úspešne uložené.', 'success');
         } catch (UserError $error) {
             $this->createMessage($error->getMessage(), 'warning');
         }
     }
     //ak bol odoslany formular pre upload profiloveho obrazka
     if (isset($_POST['uploadImage'])) {
         try {
             //adresar pre ulozenie obrazkov
             $targetDirectory = 'img/users/' . $user['name'] . '/';
             $targetFile = $targetDirectory . basename($_FILES['fileToUpload']['name']);
             $imageFileType = pathinfo($targetFile, PATHINFO_EXTENSION);
             $targetFile = $targetDirectory . $user['user_id'] . '.' . $imageFileType;
             //ak neexistuje uzivatelov adresar, vytvor ho
             if (!file_exists($targetDirectory)) {
                 mkdir($targetDirectory, '0777', true);
             }
             //ak bol nahraty obrazok
             if (!empty($_FILES['fileToUpload']['tmp_name'])) {
                 //skontroluje ci subor je naozaj obrazok
                 $check = getimagesize($_FILES['fileToUpload']['tmp_name']);
                 if ($check == false) {
                     throw new UserError('Súbor nie je obrázok');
                 }
             } else {
                 throw new UserError('Nenahrali ste žiadny obrázok');
             }
             if ($_FILES['fileToUpload']['size'] > 512000) {
                 throw new UserError('Maximálna veľkosť obrázka je 0,5 MB.');
             }
             if ($imageFileType != 'jpg' && $imageFileType != 'png' && $imageFileType != 'jpeg' && $imageFileType != 'gif') {
                 throw new UserError('Nepovolený formát obrázku1');
             }
             if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $targetFile)) {
                 $this->createMessage('Váš obrázok bol úspešne uložený.', 'success');
             } else {
                 throw new UserError('Pri nahrávaní obrázka sa vyskytla chyba.');
             }
             //zapisanie avataru do databazy
             $userManager->updateUserData($user['name'], array('avatar' => $user['name'] . '/' . $user['user_id'] . '.' . $imageFileType));
         } catch (UserError $error) {
             $this->createMessage($error->getMessage(), 'warning');
         }
     }
     //ak je zadana URL pre odstranenie uzivatela
     if (!empty($parameters[1]) && $parameters[1] == 'odstranit') {
         $this->checkUser(true);
         $userManager->deleteUser($parameters[0]);
         $this->createMessage('Užívateľ<strong> ' . $parameters[0] . ' </strong>bol odstránený', 'success');
         $this->redirect('uzivatelia');
     }
     //ak je zadane URL profilu uzivatela
     if (!empty($parameters[0])) {
         $user = $userManager->returnUserInfo($parameters[0]);
         //ak pouzivatel nebol najdeny, presmeruj na chybove hlasenie
         if (!$user) {
             $this->redirect('chyba');
         }
         //premenne pre sablonu
         $this->head['title'] = 'Užívateľský profil - ' . $user['name'];
         $this->data['userRank'] = $validation->returnUserRank($user['admin']);
         $this->data['user'] = $user['name'];
         $this->data['avatar'] = $user['avatar'];
         $this->data['registrationDate'] = $user['registration_date'];
         $this->data['lastVisit'] = $user['last_visit'];
         $this->data['comments'] = $user['comments'];
         $this->data['articles'] = $user['articles'];
         $this->data['sex'] = $user['sex'];
         $this->data['email'] = $user['email'];
         $this->data['loggedUser'] = $userManager->returnUser();
         //sablona
         $this->view = 'profile';
     } else {
         $this->checkUser(true);
         //premenne pre sablonu
         $this->head['title'] = 'Správa užívateľov';
         $this->data['admin'] = $user && $user['admin'];
         $this->data['users'] = $userManager->returnUsers();
         $index = 0;
         foreach ($this->data['users'] as $userData) {
             $this->data['users'][$index]['rank'] = $validation->returnUserRank($userData['admin']);
             $index += 1;
         }
         //sablona
         $this->view = 'users';
     }
 }