コード例 #1
0
 private function displayDetails(Model_Articles $article)
 {
     if (empty($article)) {
         $this->response->error('L\'article demandé est introuvable.', 404);
         return;
     }
     $author = $article->load('author');
     $isPublished = $article->prop('is_published');
     $canReadUnpublished = $this->_currentUser->hasPermission(Model_Groups::PERM_READ_UNPUBLISHED_ARTICLES);
     if (!$isPublished && !$canReadUnpublished && !$this->_currentUser->equals($author)) {
         $this->response->error('L\'article demandé n\'est pas ou plus publié.', 403);
         return;
     }
     $canonical_url = $article->getUrl();
     $og_article = ['publisher' => \Eliya\Config('main')->FACEBOOK['PAGE_URL'], 'category' => $article->load('category')->prop('name'), 'modified_time' => $article->prop('date_last_update'), 'published_time' => $article->prop('date_publication')];
     Library_Facebook::setMetaOG(['og' => ['title' => $article->prop('title'), 'description' => $article->prop('introduction'), 'site_name' => \Eliya\Config('main')->SITE_NAME, 'url' => $canonical_url, 'image' => $article->getMainPictureURL(), 'type' => Library_Facebook::TYPE_ARTICLE, 'locale' => Library_Facebook::LOCALE_FR_FR], 'fb' => ['app_id' => \Eliya\Config('main')->FACEBOOK['APP_ID']], 'article' => $og_article]);
     \Eliya\Tpl::set('page_title', $article->prop('title'));
     \Eliya\Tpl::set('page_description', $article->prop('introduction'));
     \Eliya\Tpl::set('canonical_url', $canonical_url);
     $category = $article->prop('category');
     $twitterDefaultText = $article->prop('title');
     if ($category !== null) {
         $twitterDefaultText = $category->prop('name') . ' - ' . $twitterDefaultText;
     }
     $templateShareLinks = \Eliya\Tpl::get('articles/share_links', ['url' => $article->getUrl(), 'twitterDefaultText' => $twitterDefaultText]);
     $this->response->set(\Eliya\Tpl::get('articles/article', ['article' => $article, 'category' => $category, 'templateShareLinks' => $templateShareLinks]));
 }
コード例 #2
0
 public function get_index()
 {
     $tpl_articles = null;
     $my_articles = $this->_currentUser->getArticles();
     if ($my_articles->isEmpty()) {
         $tpl_articles = \Eliya\Tpl::get('admin/articles/none');
     } else {
         $tpl_articles = \Eliya\Tpl::get('admin/articles/list', ['articles' => $my_articles]);
     }
     $this->response->set(\Eliya\Tpl::get('admin/articles/index', ['tpl_articles' => $tpl_articles, 'categories' => Model_Categories::getAll()]));
 }
コード例 #3
0
 public function get_index()
 {
     $tpl_categories = null;
     $all_categories = Model_Categories::getAll();
     if ($all_categories->isEmpty()) {
         $tpl_categories = \Eliya\Tpl::get('admin/categories/none');
     } else {
         $tpl_categories = \Eliya\Tpl::get('admin/categories/list', ['all_categories' => $all_categories]);
     }
     $tpl_form = \Eliya\Tpl::get('admin/categories/form', ['edit_mode' => false, 'end_action_url' => '']);
     $this->response->set(\Eliya\Tpl::get('admin/categories/index', ['tpl_categories' => $tpl_categories, 'tpl_form' => $tpl_form]));
 }
コード例 #4
0
 public function post_index($username, $email, $id_group)
 {
     $checkExisting = Model_Users::createRequest()->where('username = ? OR email = ?', [$username, $email])->exec();
     if (!$checkExisting->isEmpty()) {
         $this->response->error('Un utilisateur avec ce pseudo ou cette adresse existe déjà.', 403);
         return;
     }
     $password = Library_String::generatePassword();
     $group = Model_Groups::getById($id_group);
     Model_Users::add(new Model_Users($username, $email, $password, $group));
     $email_content = \Eliya\Tpl::get('emails/register', ['username' => $username, 'email' => $email, 'password' => $password, 'login_url' => BASE_URL . 'admin/login']);
     Library_Email::send($email, 'Bienvenue sur Le Chomp Enchaîné !', $email_content);
     $this->get_index();
 }
コード例 #5
0
 public function get_index($page = 1)
 {
     $articles = Model_Articles::getLast($page, self::ARTICLES_BY_PAGE);
     if ($articles->isEmpty()) {
         $this->response->set(\Eliya\Tpl::get('index/no_articles'));
         return;
     }
     $tpl_articles = Eliya\Tpl::get('common/articles/list', ['articles' => $articles]);
     $nbrPages = ceil(Model_Articles::count('is_published = ?', [1]) / self::ARTICLES_BY_PAGE);
     if ($page == 1) {
         \Eliya\Tpl::set('canonical_url', BASE_URL);
     }
     $this->response->set(\Eliya\Tpl::get('index/index', ['tpl_articles' => $tpl_articles, 'nbr_pages' => $nbrPages, 'current_page' => $page]));
 }
コード例 #6
0
 public function get_index($id = null)
 {
     $can_manage_categories = $this->_currentUser->hasPermission(Model_Groups::PERM_MANAGE_CATEGORIES);
     if (!$can_manage_categories) {
         $this->response->error('Vous ne pouvez pas modifier cette catégorie.', 403);
         return;
     }
     $category = Model_Categories::getById($id);
     if (empty($category)) {
         $this->response->status(404)->redirectToFullErrorPage(false)->set(\Eliya\Tpl::get('admin/categories/edit/not_found'));
         return;
     }
     $tpl_form = \Eliya\Tpl::get('admin/categories/form', ['edit_mode' => true, 'category_name' => $category->prop('name'), 'category_description' => $category->prop('description'), 'category_picture' => $category->getMainPictureURL(), 'end_action_url' => 'edit?id=' . $id]);
     $this->response->set(\Eliya\Tpl::get('admin/categories/edit/index', ['tpl_form' => $tpl_form]));
 }
コード例 #7
0
 public function get_index($id = null)
 {
     // Force to edit the current user if they don't have the proper permissions
     if (!$this->_currentUser->hasPermission(Model_Groups::PERM_MANAGE_USERS)) {
         $id = $this->_currentUser->getId();
     } else {
         $groups = Model_Groups::getAll();
     }
     $user = Model_Users::getById($id);
     if (!$user) {
         $this->response->error("L'utilisateur demandé n'existe pas !", 404);
         return;
     }
     $this->response->set(\Eliya\Tpl::get('admin/users/edit/index', ['edit_current' => $id == $this->_currentUser->getId(), 'user' => $user, 'usergroup' => $user->load('usergroup'), 'groups' => isset($groups) ? $groups : null]));
 }
コード例 #8
0
 private function displayDetails(Model_Categories $category, $page)
 {
     if (empty($category)) {
         $this->response->error('La catégorie demandée est introuvable.', 404);
         return;
     }
     \Eliya\Tpl::set('page_title', $category->prop('name'));
     $articles = Model_Articles::getLast($page, self::ARTICLES_BY_PAGE, $category);
     if ($articles->isEmpty()) {
         $this->response->set(\Eliya\Tpl::get('categories/no_articles', ['category' => $category]));
         return;
     }
     $tpl_articles = Eliya\Tpl::get('common/articles/list', ['articles' => $articles]);
     $nbrPages = ceil(Model_Articles::countByCategory($category) / self::ARTICLES_BY_PAGE);
     if ($page == 1) {
         \Eliya\Tpl::set('canonical_url', $category->getUrl());
     }
     $this->response->set(\Eliya\Tpl::get('categories/details', ['category' => $category, 'tpl_articles' => $tpl_articles, 'nbr_pages' => $nbrPages, 'current_page' => $page]));
 }
コード例 #9
0
 public function get_index($unused_param = 0)
 {
     $this->response->type(\Eliya\Mime::XML)->isRaw(true);
     $categories = Model_Categories::getAll();
     $categoriesIdsToNames = [];
     foreach ($categories as $category) {
         $categoriesIdsToNames[$category->getId()] = $category->prop('name');
     }
     $authors = Model_Users::getAll();
     $authorsIdsToNames = [];
     foreach ($authors as $author) {
         $authorsIdsToNames[$author->getId()] = $author->prop('username');
     }
     $tpl_items = null;
     $articles = Model_Articles::getLast(1, self::ARTICLES_BY_PAGE);
     foreach ($articles as $article) {
         $tpl_items .= \Eliya\Tpl::get('rss/item_article', ['article' => $article, 'author' => $authorsIdsToNames[$article->id_author] ?: null, 'category' => $categoriesIdsToNames[$article->id_category] ?: null]);
     }
     $this->response->set(\Eliya\Tpl::get('rss/index', ['tpl_items' => $tpl_items]));
 }
コード例 #10
0
 protected function setPublishStatus($id, $published)
 {
     $article = Model_Articles::getById($id);
     if (empty($article)) {
         $this->response->status(404)->redirectToFullErrorPage(false)->set(\Eliya\Tpl::get('admin/articles/edit/not_found'));
         return;
     }
     $author_is_current_user = $article->load('author')->equals($this->_currentUser);
     $can_publish_other_articles = $this->_currentUser->hasPermission(Model_Groups::PERM_PUBLISH_OTHER_ARTICLES);
     if (!$author_is_current_user && !$can_publish_other_articles) {
         $this->response->error('Vous ne pouvez pas modifier la publication de cet article.', 403);
         return;
     }
     $date_publication = $article->prop('date_publication');
     if ($published && empty($date_publication)) {
         $article->prop('date_publication', $_SERVER['REQUEST_TIME']);
     }
     $article->prop('is_published', $published);
     // Don't forget to load category to not erase it!
     $article->load('category');
     Model_Articles::update($article);
     $this->response->redirect($this->request->getBaseURL() . 'articles?id_article=' . $id, 200);
 }
コード例 #11
0
 public function get_index($unused_param = 0)
 {
     $this->response->set(\Eliya\Tpl::get('about/index'));
 }