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

namespace ConcreteAttributeTextarea;

use 
ConcreteCoreAttributeDefaultController;
use 
Core;
use 
Database;

class 
Controller extends DefaultController
{
    protected 
$searchIndexFieldDefinition = array('type' => 'text''options' => array('length' => 4294967295'default' => null'notnull' => false));

    public 
$helpers = array('form');

    public function 
saveKey($data)
    {
        
$data += array(
            
'akTextareaDisplayMode' => null,
        );
        
$akTextareaDisplayMode $data['akTextareaDisplayMode'];
        if (!
$akTextareaDisplayMode) {
            
$akTextareaDisplayMode 'text';
        }
        
$options = array();
        if (
$akTextareaDisplayMode == 'rich_text_custom') {
            
$options $data['akTextareaDisplayModeCustomOptions'];
        }
        
$this->setDisplayMode($akTextareaDisplayMode$options);
    }

    public function 
getDisplaySanitizedValue()
    {
        
$this->load();
        if (
$this->akTextareaDisplayMode == 'text') {
            return 
parent::getDisplaySanitizedValue();
        }

        return 
htmLawed(parent::getValue(), array('safe' => 1'deny_attribute' => 'style'));
    }

    public function 
form($additionalClass false)
    {
        
$this->load();
        
$this->requireAsset('jquery/ui');

        if (
is_object($this->attributeValue)) {
            
$value $this->getAttributeValue()->getValue();
        }
        
// switch display type here
        
if ($this->akTextareaDisplayMode == 'text' || $this->akTextareaDisplayMode == '') {
            print 
Core::make('helper/form')->textarea($this->field('value'), $value, array('class' => $additionalClass'rows' => 5));
        } else {
            print 
Core::make('editor')->outputStandardEditor($this->field('value'), $value);
        }
    }

    public function 
composer()
    {
        
$this->form();
    }

    public function 
searchForm($list)
    {
        
$list->filterByAttribute($this->attributeKey->getAttributeKeyHandle(), '%' $this->request('value') . '%''like');

        return 
$list;
    }

    public function 
search()
    {
        
$f Core::make('helper/form');
        print 
$f->text($this->field('value'), $this->request('value'));
    }

    public function 
setDisplayMode($akTextareaDisplayMode$akTextareaDisplayModeCustomOptions = array())
    {
        
$db Database::connection();
        
$ak $this->getAttributeKey();
        
$akTextareaDisplayModeCustomOptionsValue '';
        if (
is_array($akTextareaDisplayModeCustomOptions) && count($akTextareaDisplayModeCustomOptions) > 0) {
            
$akTextareaDisplayModeCustomOptionsValue serialize($akTextareaDisplayModeCustomOptions);
        }
        
$db->Replace('atTextareaSettings', array(
            
'akID' => $ak->getAttributeKeyID(),
            
'akTextareaDisplayMode' => $akTextareaDisplayMode,
            
'akTextareaDisplayModeCustomOptions' => $akTextareaDisplayModeCustomOptionsValue,
        ), array(
'akID'), true);
    }

    
/*
    public function saveForm($data)
    {
        $this->saveValue($data['value']);
    }
    */

    // should have to delete the at thing
    
public function deleteKey()
    {
        
$db Database::connection();
        
$arr $this->attributeKey->getAttributeValueIDList();
        foreach (
$arr as $id) {
            
$db->Execute('delete from atDefault where avID = ?', array($id));
        }

        
$db->Execute('delete from atTextareaSettings where akID = ?', array($this->attributeKey->getAttributeKeyID()));
    }

    public function 
type_form()
    {
        
$this->set('akTextareaDisplayModeCustomOptions', array());
        
$this->load();
    }

    protected function 
load()
    {
        
$ak $this->getAttributeKey();
        if (!
is_object($ak)) {
            return 
false;
        }

        
$db Database::connection();
        
$row $db->GetRow('select akTextareaDisplayMode, akTextareaDisplayModeCustomOptions from atTextareaSettings where akID = ?', array($ak->getAttributeKeyID()));
        
$this->akTextareaDisplayMode $row['akTextareaDisplayMode'];
        
$this->akTextareaDisplayModeCustomOptions = array();
        if (
$row['akTextareaDisplayMode'] == 'rich_text_custom') {
            
$this->akTextareaDisplayModeCustomOptions unserialize($row['akTextareaDisplayModeCustomOptions']);
        }
        
$this->set('akTextareaDisplayMode'$this->akTextareaDisplayMode);
        
$this->set('akTextareaDisplayModeCustomOptions'$this->akTextareaDisplayModeCustomOptions);
    }

    public function 
exportKey($akey)
    {
        
$this->load();
        
$akey->addChild('type')->addAttribute('mode'$this->akTextareaDisplayMode);

        return 
$akey;
    }

    public function 
importKey($akey)
    {
        if (isset(
$akey->type)) {
            
$data['akTextareaDisplayMode'] = $akey->type['mode'];
            
$this->saveKey($data);
        }
    }

    public function 
duplicateKey($newAK)
    {
        
$this->load();
        
$db Database::connection();
        
$db->Replace('atTextareaSettings', array(
            
'akID' => $newAK->getAttributeKeyID(),
            
'akTextareaDisplayMode' => $this->akDateDisplayMode,
        ), array(
'akID'), true);
    }
}
Онлайн: 0
Реклама