Файл: concrete5.7.5.6/concrete/attributes/date_time/controller.php
Строк: 91
<?php
namespace ConcreteAttributeDateTime;
use Loader;
use Core;
use ConcreteCoreAttributeController as AttributeTypeController;
class Controller extends AttributeTypeController
{
public $helpers = array('form');
protected $searchIndexFieldDefinition = array('type' => 'datetime', 'options' => array('notnull' => false));
public function saveKey($data)
{
$akDateDisplayMode = $data['akDateDisplayMode'];
if (!$akDateDisplayMode) {
$akDateDisplayMode = 'date_time';
}
$this->setDisplayMode($akDateDisplayMode);
}
public function setDisplayMode($akDateDisplayMode)
{
$db = Loader::db();
$ak = $this->getAttributeKey();
$db->Replace('atDateTimeSettings', array(
'akID' => $ak->getAttributeKeyID(),
'akDateDisplayMode' => $akDateDisplayMode
), array('akID'), true);
}
public function type_form()
{
$this->load();
}
public function getDisplayValue()
{
$this->load();
$v = $this->getValue();
if(empty($v)) {
return '';
}
$dh = Core::make('helper/date'); /* @var $dh ConcreteCoreLocalizationServiceDate */
if ($this->akDateDisplayMode == 'date') {
// Don't use user's timezone to avoid showing wrong dates
return $dh->formatDate($v, false, 'system');
}
else {
return $dh->formatDateTime($v);
}
}
public function searchForm($list)
{
$dateFrom = $this->request('from');
$dateTo = $this->request('to');
if ($dateFrom) {
$dateFrom = date('Y-m-d', strtotime($dateFrom));
$list->filterByAttribute($this->attributeKey->getAttributeKeyHandle(), $dateFrom, '>=');
}
if ($dateTo) {
$dateTo = date('Y-m-d', strtotime($dateTo));
$list->filterByAttribute($this->attributeKey->getAttributeKeyHandle(), $dateTo, '<=');
}
return $list;
}
public function form()
{
$this->load();
$dt = Loader::helper('form/date_time');
$caValue = $this->getValue();
$html = Loader::helper('html');
switch ($this->akDateDisplayMode) {
case 'text':
$form = Loader::helper('form');
print $form->text($this->field('value'), $this->getDisplayValue());
break;
case 'date':
$this->requireAsset('jquery/ui');
print $dt->date($this->field('value'), $caValue == null ? '' : $caValue);
break;
default:
$this->requireAsset('jquery/ui');
print $dt->datetime($this->field('value'), $caValue == null ? '' : $caValue);
break;
}
}
public function exportKey($akey)
{
$this->load();
$type = $akey->addChild('type');
$type->addAttribute('mode', $this->akDateDisplayMode);
return $akey;
}
public function importKey($akey)
{
if (isset($akey->type)) {
$data['akDateDisplayMode'] = $akey->type['mode'];
$this->saveKey($data);
}
}
public function validateValue()
{
$v = $this->getValue();
return $v != false;
}
public function validateForm($data)
{
if (!isset($this->akDateDisplayMode)) {
$this->load();
}
switch ($this->akDateDisplayMode) {
case 'date_time':
if (empty($data['value_dt']) || (!is_numeric($data['value_h'])) || (!is_numeric($data['value_m']))) {
return false;
}
$dh = Core::make('helper/date'); /* @var $dh ConcreteCoreLocalizationServiceDate */
switch ($dh->getTimeFormat()) {
case 12:
if (empty($data['value_a'])) {
return false;
}
break;
}
return true;
default:
return $data['value'] != '';
}
}
public function getValue()
{
$db = Loader::db();
$value = $db->GetOne("select value from atDateTime where avID = ?", array($this->getAttributeValueID()));
return $value;
}
public function search()
{
$dt = Loader::helper('form/date_time');
$html = $dt->date($this->field('from'), $this->request('from'), true);
$html .= ' ' . t('to') . ' ';
$html .= $dt->date($this->field('to'), $this->request('to'), true);
print $html;
}
public function saveValue($value)
{
if ($value != '') {
$value = date('Y-m-d H:i:s', strtotime($value));
} else {
$value = null;
}
$db = Loader::db();
$db->Replace('atDateTime', array('avID' => $this->getAttributeValueID(), 'value' => $value), 'avID', true);
}
public function duplicateKey($newAK)
{
$this->load();
$db = Loader::db();
$db->Execute('insert into atDateTimeSettings (akID, akDateDisplayMode) values (?, ?)', array($newAK->getAttributeKeyID(), $this->akDateDisplayMode));
}
public function saveForm($data)
{
$this->load();
$dt = Loader::helper('form/date_time');
switch ($this->akDateDisplayMode) {
case 'text':
$this->saveValue($data['value']);
break;
case 'date':
case 'date_time':
$value = $dt->translate('value', $data);
$this->saveValue($value);
break;
}
}
protected function load()
{
$ak = $this->getAttributeKey();
if (!is_object($ak)) {
return false;
}
$db = Loader::db();
$row = $db->GetRow('select akDateDisplayMode from atDateTimeSettings where akID = ?', $ak->getAttributeKeyID());
$this->akDateDisplayMode = $row['akDateDisplayMode'];
$this->set('akDateDisplayMode', $this->akDateDisplayMode);
}
public function deleteKey()
{
$db = Loader::db();
$arr = $this->attributeKey->getAttributeValueIDList();
foreach ($arr as $id) {
$db->Execute('delete from atDateTime where avID = ?', array($id));
}
}
public function deleteValue()
{
$db = Loader::db();
$db->Execute('delete from atDateTime where avID = ?', array($this->getAttributeValueID()));
}
}