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 => ' ', 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 ''; }, 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(); ///