meraproject/module/shop/item/model.php

744 lines
32 KiB
PHP
Raw Permalink Normal View History

<?
namespace shop;
use common\Gallery;
use common\gallery\Slide;
use common\Review;
use common\Seo;
use core\columns\structure\eFilterType;
use core\core\structure\eRowClick;
use core\db\structure\Column as C;
use core\db\structure\eColumnType;
use ModuleBZ\Layout\Row;
use ms\MS;
use ms\ms\structure\eTab;
use ms\ms\structure\eTabType;
use ms\ms\structure\msTo;
use shop\core\structure\shopModuleTable;
use shop\item\Growth;
use shop\item\structure\eShopItemPriceType;
use shop\item\Value;
use ui\form\structure\eInputType;
use ui\Form;
use ui\input\Input;
use core\lang\structure\LangVariable as V;
use shop\item\structure\shopItemLang as Vars;
use shop\category\Item as CategoryItem;
use common\Image;
use shop\item\price\Variant as PriceVariant;
use shop\item\price\Component as PriceComponent;
use shop\item\price\MultiComponent as PriceMultiComponent;
use shop\item\price\Filial as PriceFilial;
class Item extends shopModuleTable {
static $self;
static $table_name = 'shopItem';
static $controller = 'shop.item';
//static $easy_left_joins;
static $ID = 'id';
static $NAME = 'name';
static $PRICE = 'price';
static $PRICE_TYPE = 'price_type';
static $COMPONENT = 'component';
static $TEXT_ID = 'text_id';
static $IMAGE = 'image';
static $GALLERY = 'gallery';
static $ANNOTATION = 'annotation';
static $TEXT = 'text';
static $ARTICLE = 'article';
static $VIS = 'vis';
static $ID_1C = 'id_1c';
static $COMPONENT_MIN = 'component_min';
static $COMPONENT_MAX = 'component_max';
static $COMPONENT_DEFAULT = 'component_default';
static $COUNT = 'count';
static $ACCOUNT = 'account';
static $CREATED = 'created';
static $UPDATED = 'updated';
static function getTitle(){return V::get(Vars::$MODULE_NAME);}
static function getSystemLangValues():array{ return Vars::getArray(); }
public function _update(\Where $w, array $values) {
$values[self::$UPDATED] = time();
return parent::_update($w, $values);
}
public static function installUniques() {
\DB::addIndex(self::$table_name,self::$COMPONENT);
\DB::addIndex(self::$table_name,self::$VIS);
\DB::addIndex(self::$table_name,self::$ACCOUNT);
\DB::addIndex(self::$table_name,self::$TEXT_ID);
\DB::addIndex(self::$table_name,self::$IMAGE);
\DB::addIndex(self::$table_name,self::$ID_1C);
}
public function _insert(array $values, array $options = array()) {
$res = parent::_insert($values, $options);
self::prepareItem($res->id);
return $res;
}
static function prepareItem($C){
if(is_numeric($C)) $C = self::getByID($C);
$id = $C[self::$ID];
if(!$C[self::$GALLERY]) {
$r = Gallery::insert([
Gallery::$TO => msTo::ITEM,
Gallery::$OID => $id,
]);
self::updateById($id, [Item::$GALLERY => $r->id]);
}
}
public static function getName($v, array $options = []): string { return $v?(string)$v[self::$NAME]:'-'; }
public static function getDescription($v, array $options = []): string { return $v?$v[self::$TEXT]:'-'; }
public static function getEditTitle($values = []): string { return self::getTitle().' '.self::getName($values); }
public static function getWindowTableRules() {
return [
\ModuleTable::COPY=>true,
\Query::WHERE=>new \Where(\Where::_operator(self::$ACCOUNT,'=',UID))
];
}
static function getGrowthPrices($item_id,$isAssocArray = true){
return Growth::select( [
\Query::WHERE=>new \Where(\Where::_operator(Growth::$ITEM,'=',$item_id)),
], $isAssocArray );
}
public static function afterUadd($values, $id, $result) {
$res = parent::afterUadd($values, $id, $result);
$C = self::getByID($id);
$upd = [];
if($C[self::$COMPONENT_MAX] < $C[self::$COMPONENT_MIN] ) $upd[self::$COMPONENT_MAX] = $C[self::$COMPONENT_MIN];
if($C[self::$COMPONENT_DEFAULT] < $C[self::$COMPONENT_MIN] ) $upd[self::$COMPONENT_DEFAULT] = $C[self::$COMPONENT_MIN];
if($upd) {
self::updateById($id,$upd);
}
if(isset($values['gallery'])) {
Gallery::setSlidesFromInput($C[self::$GALLERY], $values['gallery']);
}
if(isset($values['category'])){
$cat = $values['category'];
if($cat){
CategoryItem::setCategories($id,[$cat]);
}
}
if(isset($values[self::$TEXT_ID])){
$tid = $values[self::$TEXT_ID];
if($tid==""){
self::updateById($id,[
self::$TEXT_ID => translit($values[self::$NAME]),
]);
}
}
return $res;
}
public static function getEditTabs($values=[]) {
$id = $values[self::$ID];
self::prepareItem($values);
return
[
[
eTab::NAME=>'Редактировать товар',
eTab::TYPE=>eTabType::FORM,
eTab::CONTENT=>function($values=[]){
return self::_getForm($values, static::getFormOptions($values));
},
],
[
eTab::NAME => 'Категории, в которых расположен товар',
eTab::TYPE=>eTabType::TABLE,
eTab::CONTENT => function ($values) {
$id = $values[self::$ID];
$justData = boolval($values['justData']);
$o = [
\Query::COUNT=>0,
\Query::WHERE=>new \Where(
\Where::_operator(CategoryItem::$ITEM,'=',$id)
),
\ModuleTable::FORM_INIT_DATA=>[
CategoryItem::$ITEM => $id,
'react'=>$justData?1:0,
],
\ModuleTable::ROW_CLICK => eRowClick::OPEN_UADD,
\ModuleTable::TABLE_ID => self::$table_name.'_'.CategoryItem::$table_name.'_'.$id
];
return $justData ? CategoryItem::getTableData( $o ) : CategoryItem::drawTable( $o );
}
],
[
eTab::NAME=>'Фотографии',
eTab::TYPE=>eTabType::TABLE,
eTab::CONTENT=>function($values=[]){
$gallery_id = $values[self::$GALLERY];
$o = [
\ModuleTable::SORTABLE => true,
\Query::COUNT => 0,
\Query::SORT => [Slide::$POS=>'ASC'],
\ModuleTable::ROW_CLICK => eRowClick::CARD,
\Query::WHERE=>new \Where(\Where::_operator(Slide::$GALLERY,'=',$gallery_id)),
\ModuleTable::FORM_INIT_DATA=>[
Slide::$GALLERY => $gallery_id,
],
\ModuleTable::TABLE_ID => self::$table_name.'_'.Slide::$table_name.'_'.$gallery_id,
\ModuleTable::COLUMN_RENDER => [
Slide::$IMAGE => [
\ModuleTable::COLUMN_RENDER_IMAGE_WRAP => true,
\ModuleTable::COLUMN_RENDER_LINK_MODAL=>true,
],
]
];
return $values['justData'] ? Slide::getTableData( $o ) : Slide::drawTable( $o );
},
],
[
eTab::NAME=>'Свойства товара',
eTab::TYPE=>eTabType::TABLE,
eTab::CONTENT=>function($values=[]){
$id = $values[self::$ID];
$justData = boolval($values['justData']);
$init_data = [
Value::$ITEM => $id,
'react'=>$justData?1:0,
];
$o = [
\Query::WHERE=>new \Where(\Where::_operator(Value::$ITEM,'=',$id)),
\ModuleTable::FORM_INIT_DATA => $init_data,
\ModuleTable::TABLE_ID => self::$table_name.'_'.Value::$table_name.'_'.$id,
\ModuleTable::ROW_CLICK => eRowClick::OPEN_UADD,
];
return $justData ? Value::getTableData( $o ) : Value::drawTable( $o );
},
],
[
eTab::NAME => 'SEO',
eTab::TYPE=>eTabType::FORM,
eTab::CONTENT => function ($values = []) {
$id = $values[self::$ID];
return Seo::getFormTO(msTo::ITEM, $id);
},
],
[
eTab::NAME=>'Отзывы',
eTab::TYPE=>eTabType::TABLE,
eTab::CONTENT=>function($values=[]){
$id = $values[self::$ID];
$o = [
\ModuleTable::ROW_CLICK => eRowClick::CARD,
\Query::WHERE=>new \Where(\Where::_and([
\Where::_operator(Review::$TO,'=',msTo::ITEM),
\Where::_operator(Review::$OID,'=',$id),
])
),
\ModuleTable::FORM_INIT_DATA=>[
Review::$TO => msTo::ITEM,
Review::$OID => $id,
],
\ModuleTable::TABLE_ID => self::$table_name.'_'.Review::$table_name.'_'.$id,
\ModuleTable::COLUMN_RENDER =>[
Review::$IMAGE => [
\ModuleTable::COLUMN_RENDER_IMAGE_WRAP => true,
//\ModuleTable::COLUMN_RENDER_LINK_ID => $link_id,
//\ModuleTable::COLUMN_RENDER_LINK_CSS_CLASS => 'link',
//ModuleTable::COLUMN_RENDER_LINK_MODAL=>true,
],
/*
Review::$NAME=>[
\ModuleTable::COLUMN_RENDER_LINK_CSS_CLASS=>'link',
\ModuleTable::COLUMN_RENDER_LINK_MODAL=>true,
],
*/
]
];
return $values['justData'] ? Review::getTableData( $o ) : Review::drawTable( $o );
},
],
[
eTab::NAME => 'Варианты цены',
eTab::TYPE=>eTabType::TABLE,
eTab::CONTENT => function ($values = []) {
$id = $values[self::$ID];
$o = [
\Query::WHERE =>new \Where(\Where::_and([
\Where::_operator(PriceVariant::$ITEM,'=',$id),
\Where::_operator(PriceVariant::$ACCOUNT,'=',UID),
])),
\ModuleTable::FORM_INIT_DATA=>[
PriceVariant::$ITEM => $id,
],
\ModuleTable::TABLE_ID => self::$table_name.'_'.PriceVariant::$table_name.'_'.$id,
\ModuleTable::ROW_CLICK => eRowClick::CARD,
];
return $values['justData'] ? PriceVariant::getTableData( $o ) : PriceVariant::drawTable( $o );
},
],
[
eTab::NAME => 'Предложения компонента',
eTab::TYPE=>eTabType::TABLE,
eTab::CONTENT => function ($values = []) {
$id = $values[self::$ID];
$o = [
\Query::WHERE =>new \Where(\Where::_and([
\Where::_operator(PriceComponent::$ITEM,'=',$id),
\Where::_operator(PriceComponent::$ACCOUNT,'=',UID),
])),
\ModuleTable::FORM_INIT_DATA=>[
PriceComponent::$ITEM => $id,
],
\ModuleTable::TABLE_ID => self::$table_name.'_'.PriceComponent::$table_name.'_'.$id,
\ModuleTable::ROW_CLICK => eRowClick::CARD,
];
return $values['justData'] ? PriceComponent::getTableData( $o ) : PriceComponent::drawTable( $o );
},
],
[
eTab::NAME => 'Ростовые цены',
eTab::TYPE=>eTabType::TABLE,
eTab::CONTENT => function ($values = []) {
$id = $values[self::$ID];
$o = [
\Query::WHERE =>new \Where(\Where::_operator(Growth::$ITEM,'=',$id)),
\ModuleTable::FORM_INIT_DATA=>[
Growth::$ITEM => $id,
],
\ModuleTable::TABLE_ID => self::$table_name.'_'.Growth::$table_name.'_'.$id,
\ModuleTable::ROW_CLICK => eRowClick::CARD,
];
return $values['justData'] ? Growth::getTableData( $o ) : Growth::drawTable( $o );
},
],
[
eTab::NAME => 'Цены в филиалах',
eTab::TYPE=>eTabType::TABLE,
eTab::CONTENT => function ($values = []) {
$id = $values[self::$ID];
$o = [
\Query::WHERE =>new \Where(\Where::_operator(PriceFilial::$ITEM,'=',$id)),
\ModuleTable::FORM_INIT_DATA=>[
PriceFilial::$ITEM => $id,
],
\ModuleTable::TABLE_ID => self::$table_name.'_'.PriceFilial::$table_name.'_'.$id,
\ModuleTable::ROW_CLICK => eRowClick::CARD,
];
return $values['justData'] ? PriceFilial::getTableData( $o ) : PriceFilial::drawTable( $o );
},
],
[
eTab::NAME => 'Компоненты для суммы',
eTab::TYPE=>eTabType::TABLE,
eTab::CONTENT => function ($values = []) {
$id = $values[self::$ID];
$o = [
\Query::WHERE =>new \Where(\Where::_and([
\Where::_operator(PriceMultiComponent::$ITEM,'=',$id),
\Where::_operator(PriceMultiComponent::$ACCOUNT,'=',UID),
])),
\ModuleTable::FORM_INIT_DATA=>[
PriceMultiComponent::$ITEM => $id,
],
\ModuleTable::TABLE_ID => self::$table_name.'_'.PriceMultiComponent::$table_name.'_'.$id,
\ModuleTable::ROW_CLICK => eRowClick::CARD,
];
return $values['justData'] ? PriceMultiComponent::getTableData( $o ) : PriceMultiComponent::drawTable( $o );
},
],
];
}
static function formatForEcommerce($item,$count=1){
return [
'id' => intval($item[self::$ID]),
'price' => $item['price'],
'name' => self::getName($item),
'quantity' => $count,
];
}
static function getForm($values = [], $options = []) :array {
return [
self::getCommonFormInputs(),
[
Form::VIEW=>Form::ROW,
Form::COLS => [
[
Form::VIEW => Form::INPUT,
Form::COL_CLASSES => 'c',
Form::KEY_VALUE => self::$IMAGE,
Form::TYPE => eInputType::IMAGE,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$IMAGE),
Input::LABEL => $c,
Input::SRC => ($c = $values[self::$IMAGE]) ? Image::imageResize(Image::getByID($c)[Image::$URL],600,0,100) : '',
],
],
]
],
[
Form::VIEW=>Form::ROW,
Form::COLS => [
[
Form::VIEW =>Form::INPUT,
Form::KEY_VALUE =>'category',
Form::TYPE =>eInputType::HIDDEN,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$NAME),
Input::VALUE => $values['category'],
],
],
[
Form::VIEW =>Form::INPUT,
Form::COL_CLASSES =>'c c-1-3',
Form::KEY_VALUE =>self::$NAME,
Form::TYPE =>eInputType::TEXT,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$NAME),
Input::LABEL => $c,
],
],
[
Form::VIEW =>Form::INPUT,
Form::COL_CLASSES =>'c c-1-3',
Form::KEY_VALUE =>self::$TEXT_ID,
Form::TYPE =>eInputType::TEXT,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$TEXT_ID),
Input::LABEL => $c,
input::VALUE=> ($c = $values[self::$TEXT_ID])?$c:'',
],
],
[
Form::VIEW =>Form::INPUT,
Form::COL_CLASSES =>'c c-1-3',
Form::KEY_VALUE =>self::$VIS,
Form::TYPE =>eInputType::CHECKBOX,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$VIS),
Input::LABEL => '&nbsp;',
Input::VALUE => 1,
Input::CHECKED => boolval($values[self::$VIS]),
],
],
]
],
[
Form::VIEW=>Form::ROW,
Form::COLS => [
[
Form::VIEW =>Form::INPUT,
Form::COL_CLASSES =>'c c-1-3',
Form::KEY_VALUE =>self::$PRICE_TYPE,
Form::TYPE =>eInputType::SELECT,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$PRICE_TYPE),
Input::LABEL => $c,
Input::OPTIONS => eShopItemPriceType::getArray(),
Input::VALUE => $values[self::$PRICE_TYPE] ? : (UID==3 ? eShopItemPriceType::GROWTH : null),
],
],
[
Form::VIEW =>Form::INPUT,
Form::COL_CLASSES =>'c c-1-3',
Form::KEY_VALUE =>self::$PRICE,
Form::TYPE =>eInputType::TEXT,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$PRICE),
Input::LABEL => $c,
],
],
[
Form::VIEW =>Form::INPUT,
Form::COL_CLASSES =>'c c-1-3',
Form::KEY_VALUE =>self::$COMPONENT,
Form::TYPE =>eInputType::SELECT_SEARCH,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$COMPONENT),
Input::LABEL => $c,
Input::OPTIONS => Component::getNameList([
'zero'=>true,
\Query::WHERE => new \Where(\Where::_operator(Component::$ACCOUNT,'=',UID))
]),
],
],
]
],
[
Form::VIEW=>Form::ROW,
Form::COLS => [
[
Form::VIEW =>Form::INPUT,
Form::COL_CLASSES =>'c c-1-3',
Form::KEY_VALUE =>self::$COMPONENT_MIN,
Form::TYPE =>eInputType::TEXT,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$COMPONENT_MIN),
Input::LABEL => $c,
],
],
[
Form::VIEW =>Form::INPUT,
Form::COL_CLASSES =>'c c-1-3',
Form::KEY_VALUE =>self::$COMPONENT_DEFAULT,
Form::TYPE =>eInputType::TEXT,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$COMPONENT_DEFAULT),
Input::LABEL => $c,
],
],
[
Form::VIEW =>Form::INPUT,
Form::COL_CLASSES =>'c c-1-3',
Form::KEY_VALUE =>self::$COMPONENT_MAX,
Form::TYPE =>eInputType::TEXT,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$COMPONENT_MAX),
Input::LABEL => $c,
],
],
[
Form::VIEW =>Form::INPUT,
Form::COL_CLASSES =>'c c-1-3',
Form::KEY_VALUE =>self::$COUNT,
Form::TYPE =>eInputType::TEXT,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$COUNT),
Input::LABEL => $c,
],
],
]
],
[
Form::VIEW=>Form::ROW,
Form::COLS => [
[
Form::VIEW =>Form::INPUT,
Form::COL_CLASSES =>'c c-1-3',
Form::KEY_VALUE =>self::$ARTICLE,
Form::TYPE =>eInputType::TEXT,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$ARTICLE),
Input::LABEL => $c,
],
],
]
],
[
Form::VIEW=>Form::ROW,
Form::COLS => [
[
Form::VIEW =>Form::INPUT,
Form::COL_CLASSES =>'c ',
Form::KEY_VALUE =>self::$TEXT,
Form::TYPE =>eInputType::TEXTAREA,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$TEXT),
Input::LABEL => $c,
],
],
[
Form::VIEW =>Form::INPUT,
Form::COL_CLASSES =>'c ',
Form::KEY_VALUE =>self::$ANNOTATION,
Form::TYPE =>eInputType::TEXTAREA,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$ANNOTATION),
Input::LABEL => $c,
],
],
]
],
self::getCommonFormSubmits($values),
];
}
static function columnInfo() : array {
return [
new C([
C::VAR_NAME =>&self::$ID,
C::TYPE =>eColumnType::INT,
C::AUTO_INCREMENT =>true,
C::PRIMARY =>true,
C::DEFAULT =>0,
C::HIDDEN =>true,
C::TH =>V::get(Vars::$ID),
]),
new C([
C::VAR_NAME => &self::$IMAGE,
C::TYPE => eColumnType::INT,
C::TH => V::get(Vars::$IMAGE),
C::HIDDEN => false,
C::FUNC_VALUE => function($v){
$img = Image::getByID($v[self::$IMAGE]);
return '<img src="'.Image::imageResize($img[Image::$URL],50,50,100,['crop'=>'center']).'"/>';
},
C::FUNC_VALUE_DATA => function($v){
$img = Image::getByID($v[self::$IMAGE]);
return Image::imageResize($img[Image::$URL],50,50,100,['crop'=>'center']);
},
]),
new C([
C::VAR_NAME => &self::$NAME,
C::TYPE => eColumnType::VARCHAR,
C::LENGTH => 1023,
C::TH => V::get(Vars::$NAME),
C::FILTER_TYPE => eFilterType::TEXT,
]),
new C([
C::VAR_NAME => &self::$ANNOTATION,
C::TYPE => eColumnType::TEXT,
C::HIDDEN => true,
]),
new C([
C::VAR_NAME => &self::$TEXT,
C::TYPE => eColumnType::LONGTEXT,
C::HIDDEN => true,
]),
new C([
C::VAR_NAME => &self::$TEXT_ID,
C::TYPE => eColumnType::VARCHAR,
C::LENGTH => 1023,
C::TH => V::get(Vars::$TEXT_ID),
]),
new C([
C::VAR_NAME => &self::$ID_1C,
C::TYPE => eColumnType::VARCHAR,
C::LENGTH => 63,
C::TH => V::get(Vars::$ID_1C),
C::HIDDEN => true,
C::DEFAULT => '',
]),
new C([
C::VAR_NAME => &self::$ARTICLE,
C::TYPE => eColumnType::VARCHAR,
C::LENGTH => 63,
C::TH => V::get(Vars::$ARTICLE),
C::HIDDEN => true,
C::DEFAULT => '',
]),
new C([
C::VAR_NAME => &self::$PRICE,
C::TYPE => eColumnType::DOUBLE,
C::TH => V::get(Vars::$PRICE),
]),
new C([
C::VAR_NAME => &self::$COMPONENT_MIN,
C::TYPE => eColumnType::DOUBLE,
C::TH => V::get(Vars::$COMPONENT_MIN),
C::HIDDEN => true,
]),
new C([
C::VAR_NAME => &self::$COMPONENT_MAX,
C::TYPE => eColumnType::DOUBLE,
C::TH => V::get(Vars::$COMPONENT_MAX),
C::HIDDEN => true,
]),
new C([
C::VAR_NAME => &self::$COMPONENT_DEFAULT,
C::TYPE => eColumnType::DOUBLE,
C::TH => V::get(Vars::$COMPONENT_DEFAULT),
C::HIDDEN => true,
]),
new C([
C::VAR_NAME => &self::$PRICE_TYPE,
C::TYPE => eColumnType::INT,
C::DEFAULT => 1,
C::COL_DEFAULT => 1,
C::LENGTH => 11,
C::TH => V::get(Vars::$PRICE_TYPE),
C::HIDDEN => true,
]),
new C([
C::VAR_NAME => &self::$COMPONENT,
C::TYPE => eColumnType::INT,
C::DEFAULT => 0,
C::LENGTH => 11,
C::TH => V::get(Vars::$COMPONENT),
C::HIDDEN => true,
]),
new C([
C::VAR_NAME => &self::$COUNT,
C::TYPE => eColumnType::DOUBLE,
C::DEFAULT => 0,
C::TH => V::get(Vars::$COUNT),
]),
new C([
C::VAR_NAME => &self::$GALLERY,
C::TYPE => eColumnType::INT,
C::HIDDEN => true,
]),
new C([
C::VAR_NAME => &self::$VIS,
C::TYPE => eColumnType::TINYINT,
C::LENGTH => 1,
C::DEFAULT => 0,
C::TH => V::get(Vars::$VIS),
C::FUNC_VALUE => function($v){
return MS::getBoolValText($v[self::$VIS]);
},
C::FUNC_VALUE_DATA => function($v){
return MS::getBoolValText($v[self::$VIS]);
},
]),
new C([
C::VAR_NAME => &self::$ACCOUNT,
C::TYPE => eColumnType::INT,
C::LENGTH => 11,
C::TH => V::get(Vars::$ACCOUNT),
C::DEFAULT => intval(UID),
c::HIDDEN=>true,
c::FUNC_VALUE => function($v){
if($id = $v[self::$ACCOUNT]) {
return \Account::getName( \Account::getByID($id) );
} else return '-';
},
]),
new C([
C::VAR_NAME => &self::$CREATED,
C::TYPE => eColumnType::INT,
C::LENGTH => 11,
C::TH => V::get(Vars::$CREATED),
C::DEFAULT => time(),
c::FUNC_VALUE => function($v){return self::formatDate($v[self::$CREATED]);},
c::HIDDEN=>true,
]),
new C([
C::VAR_NAME => &self::$UPDATED,
C::TYPE => eColumnType::INT,
C::DEFAULT => time(),
C::TH => V::get(Vars::$UPDATED),
c::FUNC_VALUE => function($v){return self::formatDate($v[self::$UPDATED]);},
c::HIDDEN=>true,
]),
];
}
}
new Item();
///