namespace academy; use common\Image; use core\db\structure\Column as C; use core\db\structure\Column; use core\db\structure\eColumnType; use ui\form\structure\eInputType; use ui\Form; use ui\input\Input; use core\lang\structure\LangVariable as V; use ms\ms\structure\msModuleTable; use academy\project\structure\academyProjectLang as Vars; use academy\course\Teacher as CourseTeacher; class Project extends msModuleTable { static $self; static $table_name = 'academyProject'; static $controller = 'academy.project'; static $easy_left_joins = null; static $ID = 'id'; static $NAME = 'name'; static $DESCR = 'descr'; static $BG = 'bg'; static $AVA = 'ava'; static $PRICE = 'price'; static $ANNOTATION = 'annotation'; static $TEXT_ID = 'text_id'; static $PROFILE = 'profile'; static $VIS = 'vis'; static $PUBLIC = 'public'; static $CATEGORY = 'category'; static $ACCOUNT = 'account'; static $CREATED = 'created'; static $UPDATED = 'updated'; public function __construct($install_id = null) { parent::__construct($install_id); static::$easy_left_joins = [ [[Image::$table_name,'bg' ],self::$BG ,Image::$ID], [[Image::$table_name,'ava'],self::$AVA,Image::$ID], ]; } static function getCourses($id){ return Course::select([ \Query::WHERE => new \Where(\Where::_operator(Course::$PROJECT,'=',$id)) ],true); } static function getCountCourses($id){ $r = Course::select([ \Query::SELECT => 'COUNT('.Course::$ID.') as cc', \Query::WHERE => new \Where(\Where::_operator(Course::$PROJECT,'=',$id)) ],false); $l = \DB::fetch($r); $res = intval($l['cc']); return $res; } static function getCountPublicCourses($id){ $r = Course::select($q = [ \Query::TABLES => Course::$table_name, \Query::SELECT => 'COUNT('.Course::$ID.') as cc', \Query::WHERE => new \Where(\Where::_and([ \Where::_operator(Course::$PROJECT,'=',$id), //\Where::_operator(Course::$VIS,'=',1), ]) ) ],false); $l = \DB::fetch($r); $res = intval($l['cc']); return $res; } static function getTeachersCount($project_id){ $res = 0; $project_id = intval($project_id); if(!$project_id) return $res; $res = CourseTeacher::select($q = [ \Query::SELECT => 'COUNT( DISTINCT '.CourseTeacher::$TEACHER.') as cc', \Query::WHERE => new \Where(\Where::_operator(CourseTeacher::$PROJECT,'=',$project_id)), ],false); $res = \DB::fetch($res); return intval($res['cc']); } static function getTeachers($project_id){ $res = []; $project_id = intval($project_id); if(!$project_id) return $res; $res = CourseTeacher::select($q = [ \Query::TABLES => CourseTeacher::$table_name, \Query::WHERE => new \Where(\Where::_operator(CourseTeacher::$PROJECT,'=',$project_id)), \Query::GROUP_BY => CourseTeacher::$TEACHER, \Query::SORT => [CourseTeacher::$POS], ],false); return $res; } static function getBgImg($v,$width=600,$height=0,$o=100){ if($c = $v['bg_'.Image::$URL]) { return Image::imageResize($c,$width,$height,$o); } else return ''; } static function getAvaImg($v,$width=600,$height=0,$o=100){ if($c = $v['ava_'.Image::$URL]) { return Image::imageResize($c,$width,$height,$o); } else return ''; } static function getDescr($C){ return ($c = $C[self::$DESCR])?$c:'
Введите описание
'; } public function _select($options, $collectToAssocArray = false) { $select = [self::$table_name.'.*']; $c = Image::getColumns(); /** @var Column $v */ foreach ($c as $v){ $name = $v->getName(); $select[] = 'bg.'.$name.' as bg_'.$name; $select[] = 'ava.'.$name.' as ava_'.$name; } $options[\Query::SELECT] = implode(",",$select); return parent::_select($options, $collectToAssocArray); // TODO: Change the autogenerated stub } 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); } static function getAllByMyProfile(){ $res = []; if(IF_PROFILE) { $res = self::select([ \Query::WHERE => new \Where(\Where::_operator(self::$PROFILE,'=',PID)) ],true); } return $res; } static function getForm($values = [], $options = []) :array { return [ self::getCommonFormInputs(), [ Form::VIEW=>Form::ROW, Form::COLS => [ [ Form::VIEW =>Form::INPUT, Form::COL_CLASSES =>'col-12', Form::KEY_VALUE =>self::$NAME, Form::TYPE =>eInputType::TEXT, Form::INPUT_OPT => [ Input::PLACEHOLDER => $c = V::get(Vars::$NAME), 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::$PRICE, C::TYPE => eColumnType::DOUBLE, C::DEFAULT => 0, C::TH => V::get(Vars::$PRICE), ]), new C([ C::VAR_NAME => &self::$ANNOTATION, C::TYPE => eColumnType::VARCHAR, C::DEFAULT => 511, C::HIDDEN => true, C::TH => V::get(Vars::$ANNOTATION), ]), new C([ C::VAR_NAME => &self::$BG, C::TYPE => eColumnType::INT, C::DEFAULT => 0, ]), new C([ C::VAR_NAME => &self::$AVA, C::TYPE => eColumnType::INT, C::DEFAULT => 0, ]), new C([ C::VAR_NAME => &self::$CATEGORY, C::TYPE => eColumnType::INT, C::DEFAULT => 0, C::HIDDEN => true, ]), 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::$DESCR, C::TYPE => eColumnType::TEXT, //C::LENGTH => 1023, //C::TH => V::get(Vars::$NAME), C::HIDDEN => true, ]), new C([ C::VAR_NAME => &self::$TEXT_ID, C::TYPE => eColumnType::VARCHAR, C::LENGTH => 63, C::TH => V::get(Vars::$TEXT_ID), ]), new C([ C::VAR_NAME => &self::$PROFILE, C::TYPE => eColumnType::INT, C::DEFAULT => PID, //C::TH => V::get(Vars::$NAME), ]), new C([ C::VAR_NAME => &self::$VIS, C::TYPE => eColumnType::TINYINT, C::LENGTH => 1, C::DEFAULT => 0, C::TH => V::get(Vars::$VIS), ]), new C([ C::VAR_NAME => &self::$PUBLIC, C::TYPE => eColumnType::TINYINT, C::LENGTH => 1, C::DEFAULT => 1, C::TH => V::get(Vars::$PUBLIC), ]), 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 Project();