Вход Регистрация
Файл: 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);
    }
}
Онлайн: 2
Реклама