Frontend\Modules\Blog\Actions\Archive::getData PHP Method

getData() private method

Load the data, don't forget to validate the incoming data
private getData ( )
    private function getData()
    {
        // get parameters
        $this->year = $this->URL->getParameter(1);
        $this->month = $this->URL->getParameter(2);
        // redirect /2010/6 to /2010/06 to avoid duplicate content
        if ($this->month !== null && mb_strlen($this->month) != 2) {
            $queryString = isset($_SERVER['QUERY_STRING']) ? '?' . $_SERVER['QUERY_STRING'] : '';
            $this->redirect(FrontendNavigation::getURLForBlock('Blog', 'Archive') . '/' . $this->year . '/' . str_pad($this->month, 2, '0', STR_PAD_LEFT) . $queryString, 301);
        }
        if (mb_strlen($this->year) != 4) {
            $this->redirect(FrontendNavigation::getURL(404));
        }
        // redefine
        $this->year = (int) $this->year;
        if ($this->month !== null) {
            $this->month = (int) $this->month;
        }
        // validate parameters
        if ($this->year == 0 || $this->month === 0) {
            $this->redirect(FrontendNavigation::getURL(404));
        }
        // requested page
        $requestedPage = $this->URL->getParameter('page', 'int', 1);
        // rebuild url
        $url = $this->year;
        // build timestamp
        if ($this->month !== null) {
            $this->startDate = gmmktime(00, 00, 00, $this->month, 01, $this->year);
            $this->endDate = gmmktime(23, 59, 59, $this->month, gmdate('t', $this->startDate), $this->year);
            $url .= '/' . str_pad($this->month, 2, '0', STR_PAD_LEFT);
        } else {
            // year
            $this->startDate = gmmktime(00, 00, 00, 01, 01, $this->year);
            $this->endDate = gmmktime(23, 59, 59, 12, 31, $this->year);
        }
        // set URL and limit
        $this->pagination['url'] = FrontendNavigation::getURLForBlock('Blog', 'Archive') . '/' . $url;
        $this->pagination['limit'] = $this->get('fork.settings')->get('Blog', 'overview_num_items', 10);
        // populate count fields in pagination
        $this->pagination['num_items'] = FrontendBlogModel::getAllForDateRangeCount($this->startDate, $this->endDate);
        $this->pagination['num_pages'] = (int) ceil($this->pagination['num_items'] / $this->pagination['limit']);
        // redirect if the request page doesn't exists
        if ($requestedPage > $this->pagination['num_pages'] || $requestedPage < 1) {
            $this->redirect(FrontendNavigation::getURL(404));
        }
        // populate calculated fields in pagination
        $this->pagination['requested_page'] = $requestedPage;
        $this->pagination['offset'] = $this->pagination['requested_page'] * $this->pagination['limit'] - $this->pagination['limit'];
        // get articles
        $this->items = FrontendBlogModel::getAllForDateRange($this->startDate, $this->endDate, $this->pagination['limit'], $this->pagination['offset']);
    }