Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Attribute/Controller.php
Строк: 186
<?php

namespace ConcreteCoreAttribute;

use 
ConcreteCoreControllerAbstractController;
use 
ConcreteCoreSearchItemListDatabaseAttributedItemList;
use 
Core;
use 
ConcreteCoreAttributeView as AttributeTypeView;
use 
ConcreteCoreAttributeKeyCategory as AttributeKeyCategory;

class 
Controller extends AbstractController
{
    protected 
$identifier;
    
/** @var ConcreteCoreAttributeKeyKey */
    
protected $attributeKey;
    
/** @var ConcreteCoreAttributeValueValue */
    
protected $attributeValue;
    protected 
$searchIndexFieldDefinition;
    protected 
$requestArray false;

    public function 
setRequestArray($array)
    {
        
$this->requestArray $array;
    }

    public function 
setAttributeKey($attributeKey)
    {
        
$this->attributeKey $attributeKey;
    }

    public function 
setAttributeValue($attributeValue)
    {
        
$this->attributeValue $attributeValue;
    }

    public function 
getAttributeKey()
    {
        return 
$this->attributeKey;
    }

    public function 
getAttributeValue()
    {
        return 
$this->attributeValue;
    }

    public function 
getAttributeType()
    {
        return 
$this->attributeType;
    }

    public function 
exportKey($ak)
    {
        return 
$ak;
    }

    public function 
importValue(SimpleXMLElement $akv)
    {
        if (isset(
$akv->value)) {
            return (string) 
$akv->value;
        }
    }

    public function 
exportValue(SimpleXMLElement $akv)
    {
        
$val $this->attributeValue->getValue();
        if (
is_object($val)) {
            
$val = (string) $val;
        }

        if (
is_array($val)) {
            
$val json_encode($val);
        }

        
$cnode $akv->addChild('value');
        
$node dom_import_simplexml($cnode);
        
$no $node->ownerDocument;
        
$node->appendChild($no->createCDataSection($val));

        return 
$cnode;
    }

    public function 
importKey($akn)
    {
    }

    protected function 
getAttributeValueID()
    {
        if (
is_object($this->attributeValue)) {
            return 
$this->attributeValue->getAttributeValueID();
        }
    }

    public function 
filterByAttribute(AttributedItemList $list$value$comparison '=')
    {
        
$list->filter('ak_' $this->attributeKey->getAttributeKeyHandle(), $value$comparison);
    }

    public function 
field($fieldName)
    {
        return 
'akID[' $this->attributeKey->getAttributeKeyID() . '][' $fieldName ']';
    }

    public function 
label($customText false)
    {
        if (
$customText == false) {
            
$text $this->attributeKey->getAttributeKeyDisplayName();
        } else {
            
$text $customText;
        }
        
/** @var ConcreteCoreFormServiceForm $form */
        
$form Core::make('helper/form');
        print 
$form->label($this->field('value'), $text);
    }

    
/**
     * @param ConcreteCoreAttributeType $attributeType
     */
    
public function __construct($attributeType)
    {
        
$this->identifier $attributeType->getAttributeTypeID();
        
$this->attributeType $attributeType;
        
$this->set('controller'$this);
    }

    public function 
post($field false$defaultValue null)
    {
        
// the only post that matters is the one for this attribute's name space
        
$req = ($this->requestArray == false) ? $_POST $this->requestArray;
        if (
is_object($this->attributeKey) && isset($req['akID']) && is_array($req['akID'])) {
            
$p $req['akID'][$this->attributeKey->getAttributeKeyID()];
            if (
$field) {
                return 
$p[$field];
            }

            return 
$p;
        }

        return 
parent::post($field$defaultValue);
    }

    public function 
requestFieldExists()
    {
        
$req = ($this->requestArray == false) ? $_REQUEST $this->requestArray;
        if (
is_object($this->attributeKey) && is_array($req['akID'])) {
            return 
true;
        }
        return 
false;
    }

    public function 
request($field false)
    {
        
$req = ($this->requestArray == false) ? $_REQUEST $this->requestArray;

        if (
is_object($this->attributeKey) && is_array($req['akID'])) {
            
$p $req['akID'][$this->attributeKey->getAttributeKeyID()];
            if (
$field) {
                return 
$p[$field];
            }

            return 
$p;
        }

        return 
parent::request($field);
    }

    public function 
getView()
    {
        if (
$this->attributeValue) {
            
$av = new AttributeTypeView($this->attributeValue);
        } else {
            if (
$this->attributeKey) {
                
$av = new AttributeTypeView($this->attributeKey);
            } else {
                
$av = new AttributeTypeView($this->attributeType);
            }
        }

        return 
$av;
    }

    public function 
getSearchIndexFieldDefinition()
    {
        return 
$this->searchIndexFieldDefinition;
    }

    public function 
setupAndRun($method)
    {
        
$args func_get_args();
        
$args array_slice($args1);
        if (
$method) {
            
$this->task $method;
        }
        if (
method_exists($this'on_start')) {
            
$this->on_start($method);
        }
        if (
$method == 'composer') {
            
$method = array('composer''form');
        }

        if (
$method) {
            
$this->runTask($method$args);
        }

        if (
method_exists($this'on_before_render')) {
            
$this->on_before_render($method);
        }
    }

    public function 
saveKey($data)
    {
    }

    public function 
duplicateKey($newAK)
    {
    }

    public function 
searchKeywords($keywords$queryBuilder)
    {
        return 
$queryBuilder->expr()->like('ak_' $this->attributeKey->getAttributeKeyHandle(), ':keywords');
    }

    
/**
     * Automatically run when an attribute key is added or updated.
     *
     * @param bool|array $args
     *
     * @return ConcreteCoreErrorError
     */
    
public function validateKey($args false)
    {
        if (
$args == false) {
            
$args $this->post();
        }
        
/** @var ConcreteCoreFormServiceValidation $val */
        
$val Core::make('helper/validation/form');
        
/** @var ConcreteCoreValidationCSRFToken $valt */
        
$valt Core::make('helper/validation/token');
        
$val->setData($args);
        
$val->addRequired("akHandle"t("Handle required."));
        
$val->addRequired("akName"t('Name required.'));
        
$val->addRequired("atID"t('Type required.'));
        
$val->test();
        
$error $val->getError();

        if (!
$valt->validate('add_or_update_attribute')) {
            
$error->add($valt->getErrorMessage());
        }

        
/** @var ConcreteCoreUtilityServiceValidationStrings $stringValidator */
        
$stringValidator Core::make('helper/validation/strings');
        if (!
$stringValidator->handle($args['akHandle'])) {
            
$error->add(t('Attribute handles may only contain letters, numbers and underscore "_" characters'));
        }

        
$akc AttributeKeyCategory::getByID($args['akCategoryID']);
        if (
is_object($akc)) {
            if (
$akc->handleExists($args['akHandle'])) {
                if (
is_object($this->attributeKey)) {
                    
$ak2 $akc->getAttributeKeyByHandle($args['akHandle']);
                    if (
$ak2->getAttributeKeyID() != $this->attributeKey->getAttributeKeyID()) {
                        
$error->add(t("An attribute with the handle %s already exists."$args['akHandle']));
                    }
                } else {
                    
$error->add(t("An attribute with the handle %s already exists."$args['akHandle']));
                }
            }
        } else {
            
$error->add('Invalid attribute category.');
        }

        return 
$error;
    }
}
Онлайн: 0
Реклама