1]); } static function remath($id){ $id = intval($id); $C = self::getByID($id); if($C[self::$SUPER]) return; $r = GroupSoft::select([ \Query::SELECT => [ 'SUM('.Soft::$PRICE.') as old', 'SUM('.GroupSoft::$PRICE.') as total', ], \Query::WHERE => new \Where(\Where::_and([ \Where::_operator(GroupSoft::$GROUP,'=',$id) ])), ]); $l = \DB::fetch($r); self::updateById($id,[ self::$OLD => cfloatval($l['old']), self::$TOTAL => cfloatval($l['total']), ]); } public static function afterUadd($values, $id, $result) { parent::afterUadd($values, $id, $result); self::remath($id); } static function isSubscribed($group_id,$pid = PID):bool{ $group_id = intval($group_id); $pid = intval($pid); $r = Subscribe::select([ \Query::SELECT => ['COUNT('.Subscribe::$ID.') as cc'], \Query::WHERE => new \Where(\Where::_and([ \Where::_operator(Subscribe::$PROFILE,'=',$pid), \Where::_operator(Subscribe::$GROUP,'=',$group_id), \Where::_in(Subscribe::$ARCHIVE,[ ESoftSubscribeStatus::ACTIVE, ESoftSubscribeStatus::PAUSE, ]) ])) ]); $l = \DB::fetch($r); return intval($l['cc'])>0; } static function canSubscribe($v,$pid = PID){ $errors = []; if(!IF_PROFILE) { //$errors[] = "Вы не авторизованы"; } else{ if(Subscribe::hasSuperSubscribe($pid)){ $errors[] = 'У вас есть супер подписка, которая даёт доступ ко всем программам'; } } if(!$v[self::$ACTIVE]){ $errors[] = 'Набор программ пока формируется и ещё не доступна для продажи'; } if($v[self::$ARCHIVE]){ $errors[] = 'Набор программ находится в архиве и уже не доступен для продажи'; } return [ 'result' => count($errors)==0, 'errors' => $errors, ]; } public static function getFormInputs(\ModuleBZ\Form &$form, array $data, $C, bool $isEdit) { $img = null; if($c = $C[self::$IMAGE]) $img = Image::getByID($c); $form ->addInput((new ImagePicker()) ->setName(self::$IMAGE) ->setLabel(V::get(Vars::$IMAGE)) ->setClassAll('c-1-3') ->setUploadUrl(\Site::sectionUrl(substr(Image::UPLOAD_URL_ACCOUNT,1),true)) // TODO: Удалить ->setAjaxData(['token'=>1]) ->setSrc($img?$img[Image::$URL]:'') ->setValue($C[self::$IMAGE]) ) ->addRow((new Row()) ->addColumn(((new Text()) ->setName(self::$NAME) ->setValue($C[self::$NAME]) ->setClassAll('c-50') ->setLabel(V::get(Vars::$NAME)) ->setPlaceholder(V::get(Vars::$NAME)) )) ->addColumn(((new Text()) ->setName(self::$TEXT_ID) ->setValue($C[self::$TEXT_ID]) ->setClassAll('c-50') ->setLabel(V::get(Vars::$TEXT_ID)) ->setPlaceholder(V::get(Vars::$TEXT_ID)) )) ) ->addRow((new Row()) ->addColumn(((new Switcher()) ->setName(self::$ACTIVE) ->setChecked(boolval($C[self::$ACTIVE])) ->setClassAll('c') ->setPlaceholder(V::get(Vars::$ACTIVE)) )) ->addColumn(((new Switcher()) ->setName(self::$ARCHIVE) ->setChecked(boolval($C[self::$ARCHIVE])) ->setClassAll('c') ->setPlaceholder(V::get(Vars::$ARCHIVE)) )) ->addColumn(((new Switcher()) ->setName(self::$SUPER) ->setChecked(boolval($C[self::$SUPER])) ->setClassAll('c') ->setPlaceholder(V::get(Vars::$SUPER)) )) ) ->addRow((new Row()) ->addColumn(((new Text()) ->setName(self::$OLD) ->setValue($C[self::$OLD]) ->setClassAll('c-50') ->setLabel(V::get(Vars::$OLD)) ->setPlaceholder(V::get(Vars::$OLD)) )) ->addColumn(((new Text()) ->setName(self::$TOTAL) ->setValue($C[self::$TOTAL]) ->setClassAll('c-50') ->setLabel(V::get(Vars::$TOTAL)) ->setPlaceholder(V::get(Vars::$TOTAL)) )) ) ->addInput((new Textarea()) ->setName(self::$ANNOTATION) ->setLabel(V::get(Vars::$ANNOTATION)) ->setValue($C[self::$ANNOTATION]) //->setIsHtmlEditor(true) //->setTinyMCEImageUploadUrl(\Site::$theme::getTinyMCEImageUploadUrl()) //->setTinyMCEApiKey(\Site::$theme::getTinyMCEApiKey()) ) ->addInput((new Textarea()) ->setName(self::$DESCRIPTION) ->setLabel(V::get(Vars::$DESCRIPTION)) ->setValue($C[self::$DESCRIPTION]) ->setIsHtmlEditor(true) ->setTinyMCEImageUploadUrl(\Site::$theme::getTinyMCEImageUploadUrl()) ->setTinyMCEApiKey(\Site::$theme::getTinyMCEApiKey()) ) ; } 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::FUNC_VALUE_DATA => function($v){ return Image::imageResize($v[Image::$URL],40,40,90,['crop'=>'center']); } ]), 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::$TEXT_ID, C::TYPE => eColumnType::VARCHAR, C::LENGTH => 63, C::TH => V::get(Vars::$TEXT_ID), ]), new C([ C::VAR_NAME => &self::$ANNOTATION, C::TYPE => eColumnType::TEXT, C::HIDDEN => true, C::TH => V::get(Vars::$ANNOTATION), ]), new C([ C::VAR_NAME => &self::$DESCRIPTION, C::TYPE => eColumnType::LONGTEXT, C::HIDDEN => true, C::TH => V::get(Vars::$DESCRIPTION), ]), new C([ C::VAR_NAME => &self::$ACTIVE, C::TYPE => eColumnType::TINYINT, C::DEFAULT => 0, C::LENGTH => 1, C::TH => V::get(Vars::$ACTIVE), ]), new C([ C::VAR_NAME => &self::$SUPER, C::TYPE => eColumnType::TINYINT, C::DEFAULT => 0, C::LENGTH => 1, C::TH => V::get(Vars::$SUPER), ]), new C([ C::VAR_NAME => &self::$OLD, C::TYPE => eColumnType::DOUBLE, C::LENGTH => '10,2', C::TH => V::get(Vars::$OLD), ]), new C([ C::VAR_NAME => &self::$TOTAL, C::TYPE => eColumnType::DOUBLE, C::LENGTH => '10,2', C::TH => V::get(Vars::$TOTAL), ]), new C([ C::VAR_NAME => &self::$SALE, C::TYPE => eColumnType::NONE, C::TH => V::get(Vars::$SALE), C::FUNC_VALUE_DATA => function($v){ return number_format((1 - $v[self::$TOTAL]/$v[self::$OLD])*100,0).'%'; } ]), new C([ C::VAR_NAME => &self::$PORTAL, C::TYPE => eColumnType::INT, C::HIDDEN => true, C::DEFAULT => intval(\Site::$portal_id) ]), new C([ C::VAR_NAME => &self::$ARCHIVE, C::TYPE => eColumnType::TINYINT, C::DEFAULT => 0, C::TH => V::get(Vars::$ARCHIVE), ]), new C([ C::VAR_NAME => &self::$ACCOUNT, C::TYPE => eColumnType::INT, C::LENGTH => 11, C::TH => V::get(Vars::$ACCOUNT), C::DEFAULT => intval(\Site::$owner_id), 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 Group(); ///