0,'m'=>'']; $id = intval($id); $text = trim((string)$text); if(!IF_PROFILE) { $res['e']=1; $res['m']='Пожалуйста, авторизуйтесь, для оставления сообщения'; } if($text=='') { $res['e']=1; $res['m']='Введите текст сообщения'; } if($res['e']==0){ $r = Comment::insert([ Comment::$TO=>msTo::DISCUSS, Comment::$OID=>$id, Comment::$TEXT=>$text, Comment::$PROFILE => PID, ]); self::updateById($id,[ self::$COMMENT => $r->id, self::$UPDATED => time(), ]); } return $res; } static function getComments($id){ $res = []; return Comment::get(msTo::DISCUSS,$id); } static function get($to,$oid,$type=eDiscussType::DISCUSS,$options=[]){ $res = []; $to = intval($to); $oid = intval($oid); $type = intval($type); $search = trim((string)$options['search']); if($to and $oid){ $res = self::select([ \Query::LEFT_JOINS => [ [\Profile::$table_name,\Profile::$ID,self::$PROFILE], [Comment::$table_name,Comment::$ID,self::$COMMENT], ], \Query::WHERE => new \Where(\Where::_and([ \Where::_operator(self::$TO,'=',$to), \Where::_operator(self::$OID,'=',$oid), \Where::_operator(self::$TYPE,'=',$type), $search ? \Where::_operator(self::$NAME,'LIKE','%'.$search.'%') : null, ])), \Query::SORT => [self::$UPDATED=>'DESC'], ],true); } return $res; } static function remathVotes($id){ $id = intval($id); $r = Vote::select($q = [ \Query::SELECT => [ 'COUNT('.Vote::$ID.') as cc' ], \Query::WHERE => new \Where(\Where::_and([ \Where::_operator(Vote::$DISCUSS,'=',$id) ])) ]); $l = \DB::fetch($r); $count = intval($l['cc']); self::updateById($id,[ self::$VOTES => $count, ]); } static function getFormatted($to,$oid,$type=eDiscussType::DISCUSS,$options = []){ $res = []; $a = self::get($to,$oid,$type,$options); foreach ($a as $v){ $res[] = self::format($v); } return $res; } static function getVoted($v){ $res = false; if(!IF_PROFILE) return false; if($v[self::$TYPE]==eDiscussType::PROPOSALS){ $res = boolval(Vote::get($v[self::$ID])); } return $res; } static function format($v){ return [ 'id' => $v[self::$ID], 'date' => $v[self::$CREATED], 'name' => trim((string)$v[self::$NAME]), 'comment' => Comment::format($v), 'comments' => intval($v[self::$COMMENTS]), 'votes' => intval($v[self::$VOTES]), 'voted' => self::getVoted($v), 'type' => intval($v[self::$TYPE]), 'is_my' => boolval($v[self::$PROFILE]==PID), ]; } static function add($to,$oid,$name,$text,$type=eDiscussType::DISCUSS){ $res = ['e'=>0,'m'=>'',]; $name = trim((string)$name); $test = trim((string)$text); $type = trim((string)$type); $to = intval($to); $oid = intval($oid); if( !$to || !$oid ) { $res['e'] = 1; $res['m'] = 'Не удаётся создать обсуждение'; } if($name==''){ $res['e'] = 1; $res['m'] = 'Введите, пожалуйста, название обсуждения'; } else if($text==''){ $res['e'] = 1; $res['m'] = 'Введите, пожалуйста, текст первого сообщения'; } else if(!IF_PROFILE){ $res['e'] = 1; $res['m'] = 'Для начала обсуждения, пожалуйста, авторизуйтесь'; } if($res['e']==0){ $r2 = self::insert([ self::$NAME => $name, self::$PROFILE => PID, self::$TO => $to, self::$OID => $oid, self::$TYPE => $type, ]); $r = comment::insert([ Comment::$TEXT => $text, Comment::$PROFILE => PID, Comment::$TO => msTo::DISCUSS, Comment::$OID => $r2->id, ]); $r3 = self::updateById($r2->id,[ self::$COMMENT => $r->id ]); $res['r'] = $r; $res['r2'] = $r2; $res['r3'] = $r3; $res['id'] = $r2->id; } return $res; } 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::$TO, C::TYPE => eColumnType::INT, ]), new C([ C::VAR_NAME => &self::$OID, C::TYPE => eColumnType::INT, ]), new C([ C::VAR_NAME => &self::$GROUP, C::TYPE => eColumnType::INT, ]), new C([ C::VAR_NAME => &self::$PROFILE, C::TYPE => eColumnType::INT, C::DEFAULT => intval(PID), ]), new C([ C::VAR_NAME => &self::$TYPE, C::TYPE => eColumnType::TINYINT, C::DEFAULT => intval(eDiscussType::DISCUSS), C::COL_DEFAULT => intval(eDiscussType::DISCUSS), ]), new C([ C::VAR_NAME => &self::$COMMENT, C::TYPE => eColumnType::INT, ]), new C([ C::VAR_NAME => &self::$VOTES, C::TYPE => eColumnType::INT, ]), new C([ C::VAR_NAME => &self::$COMMENTS, C::TYPE => eColumnType::INT, ]), 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 Discuss(); ///