Вход Регистрация
Файл: concrete5.7.5.6/concrete/blocks/date_navigation/controller.php
Строк: 98
<?php

namespace ConcreteBlockDateNavigation;
defined('C5_EXECUTE') or die("Access Denied.");
use 
ConcreteCoreBlockBlockController;
use 
ConcreteCorePagePageList;
use 
ConcreteCorePageTypeType;
use 
Core;
use 
Loader;

class 
Controller extends BlockController
{

    public 
$helpers = array('form');

    protected 
$btInterfaceWidth = 400;
    protected 
$btInterfaceHeight = 450;
    protected 
$btExportPageColumns = array('cParentID', 'cTargetID');
    protected 
$btExportPageTypeColumns = array('ptID');
    protected 
$btTable = 'btDateNavigation';

    public function 
getBlockTypeDescription()
    {
        return 
t("Displays a list of months to filter a page list by.");
    }

    public function 
getBlockTypeName()
    {
        return 
t("Date Navigation");
    }

    public function 
add()
    {
        
$this->edit();
        
$this->set('maxResults', 3);
        
$this->set('title', t('Archives'));
    }

    public function 
edit()
    {
        
$types = Type::getList();
        
$this->set('pagetypes', $types);
    }

    public function 
getDateLink($dateArray = null)
    {
        if (
$this->cTargetID) {
            
$c = Page::getByID($this->cTargetID);
        } else {
            
$c = Page::getCurrentPage();
        }
        if (
$dateArray) {
            return 
URL::page($c, $dateArray['year'], $dateArray['month']);
        } else {
            return 
URL::page($c);
        }
    }

    public function 
getDateLabel($dateArray)
    {
        return 
PunicCalendar::getMonthName($dateArray['month']).' '.$dateArray['year'];
    }

    public function 
getPassThruActionAndParameters($parameters)
    {
        if (
Loader::helper("validation/numbers")->integer($parameters[0])) {
            
// then we're going to treat this as a year.
            
$method = 'action_filter_by_date';
            
$parameters[0] = intval($parameters[0]);
            if (isset(
$parameters[1])) {
                
$parameters[1] = intval($parameters[1]);
            }
        }
        return array(
$method, $parameters);
    }

    public function 
action_filter_by_date($year = false, $month = false)
    {
        
$this->selectedYear = $year;
        
$this->selectedMonth = $month;
        
$this->view();
    }

    public function 
isSelectedDate($dateArray)
    {
        if (isset(
$this->selectedYear) && isset($this->selectedMonth)) {
            return 
$dateArray['year'] == $this->selectedYear && $dateArray['month'] == $this->selectedMonth;
        }

    }

    public function 
view()
    {
        
$pl = new PageList();
        if (
$this->ptID) {
            
$pl->filterByPageTypeID($this->ptID);
        }
        if (
$this->cParentID) {
            
$pl->filterByParentID($this->cParentID);
        }
        
$query = $pl->deliverQueryObject();
        
$query->select('date_format(cv.cvDatePublic, "%Y") as navYear, date_format(cv.cvDatePublic, "%m") as navMonth');
        
$query->groupBy('navYear, navMonth');
        
$query->orderBy('cvDatePublic', 'desc');
        
$r = $query->execute();
        
$dates = array();
        while (
$row = $r->fetch()) {
            
$dates[] = array('year' => $row['navYear'], 'month' => $row['navMonth']);
        }
        
$this->set('dates', $dates);
    }

    public function 
save($data)
    {
        if (
$data['redirectToResults']) {
            
$data['cTargetID'] = intval($data['cTargetID']);
        } else {
            
$data['cTargetID'] = 0;
        }
        if (
$data['filterByParent']) {
            
$data['cParentID'] = intval($data['cParentID']);
        } else {
            
$data['cParentID'] = 0;
        }
        
$data['ptID'] = intval($data['ptID']);
        
parent::save($data);
    }
}
Онлайн: 5
Реклама