new \Where(\Where::_and([ \Where::_operator(static::$ACCOUNT,'=',UID), \Where::_operator(static::$TO,'=',0), \Where::_operator(static::$OID,'=',0), ])) ]; } static function setSlidesFromInput($gallery_id,$slides){ $gallery_id = intval($gallery_id); if($gallery_id){ Slide::delete(new \Where(\Where::_operator(Slide::$GALLERY,'=',$gallery_id))); foreach ($slides as $pos => $v){ $img_id = intval($v['id']); $img = Image::getByID($img_id); if($img[Image::$ACCOUNT]==UID || $img[Image::$PROFILE]==PID) { Slide::insert([ Slide::$GALLERY => $gallery_id, Slide::$VIS => 1, Slide::$IMAGE => $img_id, Slide::$TYPE => eSlideType::IMAGE, Slide::$POS => $pos, Slide::$ACCOUNT => \Site::$owner_id, ]); } } } } static function getSlidesForInput($gallery_id){ $res = []; $gallery_id = intval($gallery_id); if($gallery_id) { $r = Slide::select($q = [ \Query::TABLES=>Slide::$table_name, \Query::WHERE => new \Where(\Where::_and([ \Where::_operator(Slide::$GALLERY, '=', $gallery_id), ])), \Query::SORT=>[Slide::$POS=>'ASC'], ],false); while($l = \DB::fetch($r)){ $res[] = [ 'slide_id' => $l[Slide::$ID], 'id' => $l[Slide::$IMAGE], 'src' => $l[Image::$URL], 'thumb_src' => Image::imageResize($l[Image::$URL],200,200,90,['crop'=>'center']), ]; } } return $res; } static function getVisibleSlides($gallery_id=null,$asArray=true){ $res = null; if($gallery_id) { $res = Slide::select($q = [ \Query::TABLES=>Slide::$table_name, //\Query::LEFT_JOINS=>[ // [Image::$table_name,Slide::$IMAGE,Image::$ID], // [Video::$table_name,Slide::$VIDEO,Video::$ID], //], \Query::WHERE => new \Where(\Where::_and([ \Where::_operator(Slide::$GALLERY, '=', $gallery_id), // \Where::_operator(Slide::$ACCOUNT, '=', $uid), \Where::_operator(Slide::$VIS, '=',1), ])), \Query::SORT=>[Slide::$POS=>'ASC'], ],$asArray); } return $res; } public static function getNameList(array $options = []): array { $res = []; $options[\Query::LEFT_JOINS] = [ [Group::$table_name,Group::$ID,self::$GROUP] ]; $options[\Query::SORT] = [self::$GROUP=>'asc',self::$NAME=>'asc']; $r = static::select($options); if($options['zero']) $res[0] = '-'; while($l = \DB::fetch($r)) $res[ $l[static::$ID] ] = ($l[self::$GROUP]?'[ '.Group::getName($l).' ] ':'').static::getName($l); return $res; } function _getSlides($gallery_id=null,$uid=null,$asArray = true){ $res = null; if(!$gallery_id) $gallery_id = $this->id_for_theme; if(!$uid) $uid = $this->owner_id; $res = self::getVisibleSlides($gallery_id,$asArray); return $res; } public static function getEditTabs($values=[]) { $id = $values[self::$ID]; 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]; $o = [ \ModuleTable::ROW_CLICK => eRowClick::CARD, \Query::WHERE=>new \Where(\Where::_operator(Slide::$GALLERY,'=',$id)), \ModuleTable::FORM_INIT_DATA=>[ Slide::$GALLERY => $id, ], \Query::SORT => Slide::$POS, \ModuleTable::SORTABLE => true, \ModuleTable::TABLE_ID => self::$table_name.'_'.Slide::$table_name.'_'.$id, \ModuleTable::COLUMN_RENDER => [ Slide::$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, ], ] ]; return $values['justData'] ? Slide::getTableData( $o ) : Slide::drawTable( $o ); }, ], ]; } 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::COL_CLASSES =>'c-50', 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-50', Form::KEY_VALUE =>self::$GROUP, Form::TYPE =>eInputType::SELECT, Form::INPUT_OPT => [ Input::PLACEHOLDER => $c = V::get(Vars::$GROUP), Input::LABEL => $c, Input::OPTIONS => Group::getNameList([ 'zero'=>true, \Query::WHERE => new \Where(\Where::_operator(Group::$ACCOUNT,'=',UID)) ]), ], ], ] ], 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::$GROUP, C::TYPE => eColumnType::INT, //C::HIDDEN => true, C::TH => V::get(Vars::$GROUP), c::FUNC_VALUE => function($v){ if($id = $v[self::$GROUP]) { return Group::getName( Group::getByID($id) ); } else return '-'; }, c::FUNC_VALUE_DATA => function($v){ if($id = $v[self::$GROUP]) { return Group::getName( Group::getByID($id) ); } else return '-'; }, ]), new C([ C::VAR_NAME => &self::$TO, C::TYPE => eColumnType::INT, C::LENGTH => 3, C::DEFAULT => 0, C::HIDDEN => true, ]), new C([ C::VAR_NAME => &self::$OID, C::TYPE => eColumnType::INT, C::DEFAULT => 0, C::HIDDEN => true, ]), new C([ C::VAR_NAME => &self::$IMAGE, C::TYPE => eColumnType::INT, C::DEFAULT => 0, C::HIDDEN => true, ]), 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 Gallery(); ///