new \Where(\Where::_operator(Property::$ACCOUNT ,'=',UID)), ],false); $ids = []; while($l = \DB::fetch($r)){ $id = $l[Property::$ID]; $ids[] = $id; $res[$id] = [ 'id' => $id, 'title' => Property::getName($l), 'type' => $l[Property::$TYPE], 'is_price' => boolval($l[Property::$IS_PRICE]), 'values' => [], ]; } // Теперь получаем все возможные значения для свойств if($ids) { $r = Value::select([ \Query::SELECT => [Value::$ID,Value::$PROPERTY,Value::$TEXT], \Query::WHERE => new \Where(\Where::_in(Value::$PROPERTY,$ids)), \Query::SORT => Value::$POS, ],false); while($l = \DB::fetch($r)){ $prop_id = $l[Value::$PROPERTY]; $res[$prop_id]['values'][] = [ 'id'=>$l[Value::$ID], 'title'=>Value::getName($l), ]; } } return array_values($res); } public static function getEditTabs($values = []) { $res = [ [ eTab::NAME => 'Редактировать', eTab::TYPE=>eTabType::FORM, eTab::CONTENT => function ($values) { return self::_getForm($values, static::getFormOptions($values)); } ], ]; switch ($values[self::$TYPE]) { case ePropertyType::VALUES_ONE: case ePropertyType::VALUES_MANY: $res[] = [ eTab::NAME => 'Значения свойств', eTab::TYPE=>eTabType::TABLE, eTab::CONTENT => function ($values) { $id = $values[self::$ID]; $o = [ \Query::SORT => Value::$POS, \Query::COUNT => 0, \Query::WHERE=>new \Where(\Where::_operator(Value::$PROPERTY,'=',$id)), \ModuleTable::FORM_INIT_DATA=>[ Value::$PROPERTY => $id, ], \ModuleTable::SORTABLE => true, \ModuleTable::COLUMN_RENDER => [ Value::$IMAGE => [ \ModuleTable::COLUMN_RENDER_IMAGE_WRAP => true, ] ], \ModuleTable::ROW_CLICK => eRowClick::CARD, \ModuleTable::TABLE_ID => self::$table_name.'_'.Property::$table_name.'_'.$id ]; return $values['justData'] ? Value::getTableData( $o ) : Value::drawTable( $o ); } ]; break; } return $res; } static function getForm($values = [], $options = []) :array { return [ self::getCommonFormInputs(), [ Form::VIEW=>Form::ROW, Form::COLS => [ [ 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::$TYPE, Form::TYPE =>eInputType::SELECT, Form::INPUT_OPT => [ Input::OPTIONS => ePropertyType::getArray(), Input::PLACEHOLDER => $c = V::get(Vars::$TYPE), 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:'property'.time(), ], ], [ Form::VIEW =>Form::INPUT, Form::COL_CLASSES =>'c c-1-3', Form::KEY_VALUE =>self::$ID_1C, Form::TYPE =>eInputType::TEXT, Form::INPUT_OPT => [ Input::PLACEHOLDER => $c = V::get(Vars::$ID_1C), Input::LABEL => $c, ], ], ] ], [ Form::VIEW=>Form::ROW, Form::COLS => [ [ Form::VIEW =>Form::INPUT, Form::COL_CLASSES =>'c c-1-3', Form::KEY_VALUE =>self::$IS_PRICE, Form::TYPE =>eInputType::SWITCH_IOS, Form::INPUT_OPT => [ Input::PLACEHOLDER => $c = V::get(Vars::$IS_PRICE), //Input::LABEL => $c, Input::CHECKED => boolval($values[self::$IS_PRICE]) ], ], ] ], 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::$NAME, C::TYPE => eColumnType::VARCHAR, C::LENGTH => 1023, C::TH => V::get(Vars::$NAME), ]), new C([ C::VAR_NAME => &self::$TYPE, C::TYPE => eColumnType::TINYINT, C::LENGTH => 1, C::TH => V::get(Vars::$TYPE), c::FUNC_VALUE => function($v){ return ePropertyType::getName($v[self::$TYPE]); }, c::FUNC_VALUE_DATA => function($v){ return ePropertyType::getName($v[self::$TYPE]); }, ]), new C([ C::VAR_NAME => &self::$TEXT_ID, C::TYPE => eColumnType::VARCHAR, C::LENGTH => 255, 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::$IS_PRICE, C::TYPE => eColumnType::TINYINT, C::LENGTH => 1, C::DEFAULT => 0, C::TH => V::get(Vars::$IS_PRICE), c::FUNC_VALUE => function($v){ return MS::getBoolValText($v[self::$IS_PRICE]); }, c::FUNC_VALUE_DATA => function($v){ return MS::getBoolValText($v[self::$IS_PRICE]); }, ]), 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 Property();