Exemplo n.º 1
0
 public function init(Website $website, Request $request)
 {
     $categoryId = $request->getParamInt(0, 0);
     $categoriesRepo = new CategoryRepository($website->getDatabase());
     $this->category = $categoriesRepo->getCategory($categoryId);
     $articlesRepo = new ArticleRepository($website);
     $this->articles = $articlesRepo->getArticlesData($categoryId);
     $this->showArticleEditLinks = $website->isLoggedInAsStaff();
     $this->showCategoryEditLinks = $website->isLoggedInAsStaff(true);
 }
Exemplo n.º 2
0
 public function init(Website $website, Request $request)
 {
     $isStaff = $website->isLoggedInAsStaff();
     $id = $request->getParamInt(0);
     $this->editLinks = $website->isLoggedInAsStaff(true);
     // Load document
     $documentRepo = new DocumentRepository($website->getDatabase(), $isStaff);
     $this->document = $documentRepo->getDocument($id);
     // Load document widgets
     $this->widgetLoader = $website->getWidgets();
     $widgetRepo = new WidgetRepository($website);
     $this->widgets = $widgetRepo->getWidgetsInDocumentWithId($id);
 }
Exemplo n.º 3
0
 public function init(Website $website, Request $request)
 {
     $isStaff = $website->isLoggedInAsStaff(true);
     $documentRepo = new DocumentRepository($website->getDatabase(), $isStaff);
     $this->documents = $documentRepo->getAll();
     $this->editLinks = $isStaff;
 }
Exemplo n.º 4
0
 public function init(Website $website, Request $request)
 {
     $text = $website->getText();
     $articleId = $request->getParamInt(0);
     $showAdminPageLink = $website->isLoggedInAsStaff(true);
     $oArticles = new ArticleRepository($website);
     $article = $oArticles->getArticleOrFail($articleId);
     $this->article = $article;
     $formToken = RequestToken::generateNew();
     $action = $request->getRequestString("action");
     if ($action == "delete" && Validate::requestToken($request)) {
         // Bye bye article
         if ($oArticles->delete($article)) {
             $this->view = new ArticleDeleteTemplate($text, $article, $formToken, $showAdminPageLink, ArticleDeleteTemplate::STATE_DELETED);
         } else {
             $this->view = new ArticleDeleteTemplate($text, $article, $formToken, $showAdminPageLink, ArticleDeleteTemplate::STATE_ERROR);
         }
         return;
     } elseif ($action == "make_private" && Validate::requestToken($request)) {
         // Hide article for visitors
         $article->setHidden(true);
         if ($oArticles->saveArticle($article)) {
             $this->view = new ArticleDeleteTemplate($text, $article, $formToken, $showAdminPageLink, ArticleDeleteTemplate::STATE_HIDDEN);
         } else {
             $this->view = new ArticleDeleteTemplate($text, $article, $formToken, $showAdminPageLink, ArticleDeleteTemplate::STATE_ERROR);
         }
         return;
     } else {
         // Ask what to do
         $this->view = new ArticleDeleteTemplate($text, $article, $formToken, $showAdminPageLink, ArticleDeleteTemplate::STATE_CONFIRMATION);
     }
     $formToken->saveToSession();
 }
Exemplo n.º 5
0
 public function init(Website $website, Request $request)
 {
     $this->keyword = trim($request->getRequestString("searchbox"));
     $this->pageNumber = $request->getRequestInt("page", 0);
     $this->showEditLinks = $website->isLoggedInAsStaff();
     if (strLen($this->keyword) < self::MIN_SEARCH_LENGTH) {
         // Don't search for too short words
         if (!empty($this->keyword)) {
             $website->addError($website->t("articles.search_term") . " " . $website->tReplaced("errors.is_too_short_num", self::MIN_SEARCH_LENGTH));
         }
         return;
     }
     // Fetch article count
     $articles = new ArticleRepository($website);
     $this->totalResults = $articles->getMatchesFor($this->keyword);
     // Count total number of pages, limit current page number
     $this->highestPageNumber = floor($this->totalResults / self::ARTICLES_PER_PAGE);
     if ($this->pageNumber < 0 || $this->pageNumber > $this->highestPageNumber) {
         $this->pageNumber = 0;
     }
     // Fetch articles
     $this->displayedArticles = $articles->getArticlesDataMatch($this->keyword, self::ARTICLES_PER_PAGE, $this->pageNumber * self::ARTICLES_PER_PAGE);
     // Fetch links
     $menus = new LinkRepository($website->getDatabase());
     $this->links = $menus->getLinksBySearch($this->keyword);
 }
Exemplo n.º 6
0
 public function init(Website $website, Request $request)
 {
     $this->installedWidgets = $website->getWidgets();
     $this->siteTitle = $website->getConfig()->get(Config::OPTION_SITE_TITLE);
     $widgetsRepo = new WidgetRepository($website);
     $this->widgets = $widgetsRepo->getWidgetsInDocumentWithId(self::DOCUMENT_ID);
     $this->editLinks = $website->isLoggedInAsStaff(true);
 }
Exemplo n.º 7
0
 public function init(Website $website, Request $request)
 {
     $oArticles = new ArticleRepository($website);
     $yearNumber = $request->getParamInt(0, date('Y'));
     if ($yearNumber < self::MIN_YEAR || $yearNumber > self::MAX_YEAR) {
         $yearNumber = date('Y');
     }
     $this->year = DateTime::createFromFormat('Y', $yearNumber);
     $this->yearNumber = $yearNumber;
     $this->articlesInYear = $oArticles->getArticlesDataCalendarYear($this->year);
     $this->showCreateLinks = $website->isLoggedInAsStaff();
 }
Exemplo n.º 8
0
 public function init(Website $website, Request $request)
 {
     $this->request = $request;
     // Handle login ourselves
     // (Using the provided getMinimumRank helper gives an ugly
     // "You need to be logged in to view this page" message.)
     $this->loggedIn = $website->getAuth()->check(Authentication::RANK_USER, false);
     $this->loggedInAsAdmin = $website->isLoggedInAsStaff(true);
     if (!$this->loggedIn) {
         $this->errorMessage = $this->getLoginErrorMessage($website->getText(), $website->getAuth());
     }
     $this->canCreateAccounts = (bool) $website->getConfig()->get(Config::OPTION_USER_ACCOUNT_CREATION);
 }
Exemplo n.º 9
0
 public function init(Website $website, Request $request)
 {
     $articleId = $request->getParamInt(0);
     $oArticles = new ArticleRepository($website);
     $this->article = $oArticles->getArticleOrFail($articleId);
     $this->editLinks = $website->isLoggedInAsStaff();
     $this->currentUser = $website->getAuth()->getCurrentUser();
     if ($this->article->showComments) {
         $oComments = new CommentRepository($website->getDatabase());
         $this->comments = $oComments->getCommentsArticle($this->article->getId());
     } else {
         $this->comments = [];
     }
 }
Exemplo n.º 10
0
 public function writeText(StreamInterface $stream, Website $website, $id, $data)
 {
     // Check variables
     if (!isset($data["title"]) || !isset($data["count"]) || !isset($data["display_type"]) || !isset($data["categories"])) {
         // The order variable is not checked, as older configurations may
         // not have it. The default value will be used instead.
         return;
     }
     // Title
     if (strLen($data["title"]) > 0) {
         $stream->write("<h2>" . htmlSpecialChars($data["title"]) . "</h2>");
     }
     // Get options
     $categories = $data["categories"];
     $articlesCount = (int) $data["count"];
     $displayType = (int) $data["display_type"];
     // Sorting
     $oldestTop = false;
     if (isset($data["order"]) && $data["order"] == self::SORT_OLDEST_TOP) {
         $oldestTop = true;
     }
     // Archive link
     $showArchiveLink = false;
     if (!isset($data["archive"]) || $data["archive"] == true) {
         $showArchiveLink = true;
     }
     $oArticles = new ArticleRepository($website);
     $articles = $oArticles->getArticlesData($categories, $articlesCount, $oldestTop);
     if ($displayType >= self::TYPE_LIST) {
         // Small <ul> list
         $oArticlesTemplate = new ArticleSmallListTemplate($website->getText(), $articles, $website->isLoggedInAsStaff(), $categories[0], $displayType == self::TYPE_LIST_WITH_IMAGES, $showArchiveLink);
     } else {
         // Real paragraphs
         $oArticlesTemplate = new ArticleListTemplate($website->getText(), $articles, $categories[0], $displayType == self::TYPE_WITH_METADATA, $showArchiveLink, $website->isLoggedInAsStaff());
     }
     $oArticlesTemplate->writeText($stream);
 }
Exemplo n.º 11
0
 public function writeText(StreamInterface $stream, Website $website, $id, $data)
 {
     $text = $website->getText();
     $editLinks = $website->isLoggedInAsStaff();
     // Title
     $title = "";
     if (isset($data["title"]) && strLen($data["title"]) > 0) {
         $title = "<h2>" . $text->e($data["title"]) . "</h2>";
     }
     $stream->write($title);
     $oArticles = new ArticleRepository($website);
     $articles = $oArticles->getArticlesDataUpcomingEvents();
     $articlesTemplate = new ArticleEventListTemplate($text, $articles, $editLinks, 0, true);
     // Articles
     $articlesTemplate->writeText($stream);
 }
Exemplo n.º 12
0
 public function init(Website $website, Request $request)
 {
     $this->showEditLinks = $website->isLoggedInAsStaff();
     $this->selectedYear = $request->getRequestInt("year", 0);
     $this->selectedCategory = $request->getParamInt(0);
     // Fetch all categories
     $categories = new CategoryRepository($website->getDatabase());
     $this->allCategories = $categories->getCategoriesArray();
     // Check if valid category
     if ($this->selectedCategory != 0 && !array_key_exists($this->selectedCategory, $this->allCategories)) {
         $website->addError($website->t("main.category") . " " . $website->t("errors.not_found"));
         $this->selectedCategory = 0;
     }
     // Fetch all articles
     $articles = new ArticleRepository($website);
     $this->articleCountInYears = $articles->getArticleCountInYears($this->selectedCategory);
     $this->foundArticles = $articles->getArticlesDataArchive($this->selectedYear, $this->selectedCategory);
 }
Exemplo n.º 13
0
 public function writeText(StreamInterface $stream, Website $website, $id, $data)
 {
     if (!isset($data["menu_id"]) || !isset($data["title"])) {
         return;
     }
     $loggedInStaff = $website->isLoggedInAsStaff(true);
     $menuId = (int) $data["menu_id"];
     // Title
     if (strLen($data["title"]) > 0) {
         $stream->write("<h2>" . htmlSpecialChars($data["title"]) . "</h2>\n");
     }
     // Links
     $oMenu = new LinkRepository($website->getDatabase());
     $links = $oMenu->getLinksByMenu($menuId);
     $linkTemplate = new LinkListTemplate($website->getText(), $links, $loggedInStaff);
     $linkTemplate->writeText($stream);
     // Link to add link
     if ($loggedInStaff) {
         $stream->write('<p><a class="arrow" href="' . $website->getUrlPage("create_link", $menuId));
         $stream->write('">' . $website->t("links.create") . '</a></p>');
     }
 }
Exemplo n.º 14
0
    /** Gets the links for the bottom of the page */
    public function get_account_links_html(Website $website)
    {
        $textToDisplay = "";
        if ($this->editing_someone_else) {
            // Editing someone else, don't show "My account" link
            $textToDisplay .= <<<EOT
            <p>
                <a class="arrow" href="{$website->getUrlPage("account", $this->user->getId())}">
                    {$website->tReplaced("users.profile_page_of", $this->user->getDisplayName())}
                </a><br />
                <a class="arrow" href="{$website->getUrlPage("account_management")}">
                    {$website->t("main.account_management")}
                </a>
EOT;
        } else {
            $textToDisplay .= '<p><a class="arrow" href="' . $website->getUrlPage("account") . '">' . $website->t("main.my_account") . "</a>\n";
            if ($website->isLoggedInAsStaff(true)) {
                $textToDisplay .= '<br /><a class="arrow" href="' . $website->getUrlPage("account_management") . '">' . $website->t("main.account_management") . "</a>\n";
            }
            $textToDisplay .= "</p>";
        }
        return $textToDisplay;
    }
Exemplo n.º 15
0
 public function can_user_edit_someone_else(Website $website)
 {
     return $website->isLoggedInAsStaff(false);
 }
Exemplo n.º 16
0
    /**
     * Returns links to edit the profile, based on the permissions of the user
     * that is viewing this page. 
     */
    public function get_edit_links_html(Website $website)
    {
        $viewing_user = $website->getAuth()->getCurrentUser();
        $returnValue = "";
        // Get privileges
        $is_viewing_themselves = false;
        $is_viewing_as_moderator = false;
        $is_viewing_as_admin = false;
        if ($viewing_user != null) {
            $is_viewing_themselves = $this->user->getId() == $viewing_user->getId();
            if ($website->isLoggedInAsStaff(false)) {
                $is_viewing_as_moderator = true;
            }
            if ($website->isLoggedInAsStaff(true)) {
                $is_viewing_as_admin = true;
            }
        }
        // Gravatar link + help
        if ($is_viewing_themselves) {
            // No way that other admins can edit someone's avatar, so only display help text for owner
            $returnValue .= <<<EOT
                <p>
                     {$website->tReplaced("users.gravatar.explained", '<a href="http://gravatar.com/">gravatar.com</a>')}
                </p>
EOT;
        }
        // Add all account edit links
        $edit_links = [];
        if (!$is_viewing_themselves && $is_viewing_as_moderator) {
            // Accessed by a moderator that isn't viewing his/her own account
            // Add (un)ban link
            $edit_links[] = $this->get_edit_link($website, "edit_account_status", "users.status.edit");
        }
        if ($is_viewing_themselves || $is_viewing_as_admin) {
            // Accessed by the user themselves or an admin
            // Display links to edit profile
            $edit_links[] = $this->get_edit_link($website, "edit_email", "users.email.edit");
            $edit_links[] = $this->get_edit_link($website, "edit_password", "users.password.edit");
            $edit_links[] = $this->get_edit_link($website, "edit_display_name", "users.display_name.edit");
        }
        if (!$is_viewing_themselves && $is_viewing_as_admin) {
            // Accessed by an admin that isn't viewing his/her own account
            // Add rank edit link and login link
            $edit_links[] = $this->get_edit_link($website, "edit_rank", "users.rank.edit");
            // Only display login link if account is not deleted/banned
            if ($this->user->canLogIn()) {
                $edit_links[] = $this->get_edit_link($website, "login_other", "main.log_in");
            }
        }
        if (count($edit_links) > 0) {
            $returnValue .= "<p>\n" . implode($edit_links) . "</p>\n";
        }
        return $returnValue;
    }