Файл: concrete5.7.5.6/concrete/attributes/image_file/controller.php
Строк: 110
<?php
namespace ConcreteAttributeImageFile;
use Core;
use Database;
use File;
use ConcreteCoreBackupContentExporter;
use ConcreteCoreBackupContentImporter;
use ConcreteCoreAttributeController as AttributeTypeController;
class Controller extends AttributeTypeController
{
protected $searchIndexFieldDefinition = array('type' => 'integer', 'options' => array('default' => 0, 'notnull' => false));
public function getValue()
{
$db = Database::connection();
$value = $db->GetOne("select fID from atFile where avID = ?", array($this->getAttributeValueID()));
if ($value > 0) {
$f = File::getByID($value);
return $f;
}
}
public function getDisplayValue()
{
$f = $this->getValue();
if (is_object($f)) {
return '<a href="' . $f->getDownloadURL() . '">' . $f->getTitle() . '</a>';
}
}
public function getDisplaySanitizedValue()
{
return $this->getDisplayValue();
}
public function exportValue(SimpleXMLElement $akn)
{
$av = $akn->addChild('value');
$fo = $this->getValue();
if (is_object($fo)) {
$av->addChild('fID', ContentExporter::replaceFileWithPlaceHolder($fo->getFileID()));
} else {
$av->addChild('fID', 0);
}
}
public function searchForm($list)
{
$fileID = $this->request('value');
$list->filterByAttribute($this->attributeKey->getAttributeKeyHandle(), $fileID);
return $list;
}
public function getSearchIndexValue()
{
$db = Database::connection();
$value = $db->GetOne("select fID from atFile where avID = ?", array($this->getAttributeValueID()));
return $value;
}
public function importValue(SimpleXMLElement $akv)
{
if (isset($akv->value->fID)) {
$fIDVal = (string) $akv->value->fID;
$inspector = Core::make('import/value_inspector');
$result = $inspector->inspect($fIDVal);
$fID = $result->getReplacedValue();
if ($fID) {
return File::getByID($fID);
}
}
}
public function search()
{
// search by file causes too many problems
//$al = Core::make('helper/concrete/asset_library');
//print $al->file('ccm-file-akID-' . $this->attributeKey->getAttributeKeyID(), $this->field('value'), t('Choose File'), $bf);
}
public function form()
{
$bf = false;
if ($this->getAttributeValueID() > 0) {
$bf = $this->getValue();
}
$al = Core::make('helper/concrete/asset_library');
$form = '<div class="ccm-attribute ccm-attribute-image-file">';
$form .= $al->file('ccm-file-akID-' . $this->attributeKey->getAttributeKeyID(), $this->field('value'), t('Choose File'), $bf);
$form .= '</div>';
print $form;
}
// run when we call setAttribute(), instead of saving through the UI
public function saveValue($obj)
{
if (!is_object($obj)) {
$obj = File::getByID($obj);
}
$db = Database::connection();
if (is_object($obj) && (!$obj->isError())) {
$db->Replace('atFile', array('avID' => $this->getAttributeValueID(), 'fID' => $obj->getFileID()), 'avID', true);
}
}
public function deleteKey()
{
$db = Database::connection();
$arr = $this->attributeKey->getAttributeValueIDList();
foreach ($arr as $id) {
$db->Execute('delete from atFile where avID = ?', array($id));
}
}
public function validateValue()
{
$f = $this->getValue();
if (!is_object($f)) {
$e = Core::make('helper/validation/error');
$e->add(t('You must specify a valid file for %s', $this->attributeKey->getAttributeKeyDisplayName()));
}
return $e;
}
public function validateForm($data)
{
if (Core::make('helper/validation/numbers')->integer($data['value'])) {
$f = File::getByID($data['value']);
if (is_object($f) && !$f->isError()) {
return true;
}
}
$e = Core::make('helper/validation/error');
$e->add(t('You must specify a valid file for %s', $this->attributeKey->getAttributeKeyDisplayName()));
return $e;
}
public function saveForm($data)
{
if ($data['value'] > 0) {
$f = File::getByID($data['value']);
$this->saveValue($f);
} else {
$db = Database::connection();
$db->Replace('atFile', array('avID' => $this->getAttributeValueID(), 'fID' => 0), 'avID', true);
}
}
public function deleteValue()
{
$db = Database::connection();
$db->Execute('delete from atFile where avID = ?', array($this->getAttributeValueID()));
}
}