meraproject/module/common/review/model.php

346 lines
13 KiB
PHP
Raw Permalink Normal View History

<?
namespace common;
use core\db\structure\Column as C;
use core\db\structure\eColumnType;
use ms\MS;
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 common\review\structure\reviewLang as Vars;
class Review extends msModuleTable {
static $self;
static $table_name = 'review';
static $controller = 'common.review';
static $default_sort;
static $ID = 'id';
static $NAME = 'name';
static $IMAGE = 'image';
static $TEXT = 'text';
static $EMAIL = 'email';
static $PHONE = 'phone';
static $PROFILE = 'profile';
static $CITY = 'city';
static $DATE = 'date';
static $TO = 'to';
static $OID = 'oid';
static $MARK = 'mark';
static $VIS = 'vis';
static $ACCOUNT = 'account';
static $CREATED = 'created';
static $UPDATED = 'updated';
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);
}
public function __construct($install_id = null) {
parent::__construct($install_id);
static::$default_sort = self::$DATE;
}
static function getAllPublicReviewsFor(int $to,int $oid,$isAssoc = true){
return self::getReviewsFor($to,$oid,0,0,$isAssoc,\Where::_operator(self::$VIS,'=',1));
}
static function getReviewsFor(int $to,int $oid,$count=0,$offset=0,$isAssoc=true,$where = null){
return self::select([
\Query::WHERE => new \Where(\Where::_and([
\Where::_operator(self::$TO,'=',$to),
\Where::_operator(self::$OID,'=',$oid),
$where
])),
\Query::COUNT => $count,
\Query::OFFSET => $offset,
],$isAssoc
);
}
static function getForm($values = [], $options = []) :array {
return [
self::getCommonFormInputs(),
[
Form::VIEW =>Form::INPUT,
Form::KEY_VALUE =>self::$TO,
Form::TYPE =>eInputType::HIDDEN,
],
[
Form::VIEW =>Form::INPUT,
Form::KEY_VALUE =>self::$OID,
Form::TYPE =>eInputType::HIDDEN,
],
[
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 = intval($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 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::$PHONE,
Form::TYPE =>eInputType::TEXT,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$PHONE),
Input::LABEL => $c,
],
],
[
Form::VIEW =>Form::INPUT,
Form::COL_CLASSES =>'c c-1-3',
Form::KEY_VALUE =>self::$EMAIL,
Form::TYPE =>eInputType::TEXT,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$EMAIL),
Input::LABEL => $c,
],
],
[
Form::VIEW =>Form::INPUT,
Form::COL_CLASSES =>'c c-1-3',
Form::KEY_VALUE =>self::$CITY,
Form::TYPE =>eInputType::TEXT,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$CITY),
Input::LABEL => $c,
],
],
/*
[
Form::VIEW =>Form::INPUT,
Form::COL_CLASSES =>'c c-1-3',
Form::KEY_VALUE =>self::$DATE,
Form::TYPE =>eInputType::DATE_TIME,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$DATE),
Input::LABEL => $c,
],
],
/**/
[
Form::VIEW =>Form::INPUT,
Form::COL_CLASSES =>'c c-1-3',
Form::KEY_VALUE =>self::$MARK,
Form::TYPE =>eInputType::TEXT,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$MARK),
Input::LABEL => $c,
],
],
[
Form::VIEW =>Form::INPUT,
Form::COL_CLASSES =>'c',
Form::KEY_VALUE =>self::$TEXT,
Form::TYPE =>eInputType::TEXTAREA,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$TEXT),
Input::LABEL => $c,
],
],
[
Form::VIEW =>Form::INPUT,
Form::COL_CLASSES =>'c c-1-3',
Form::KEY_VALUE =>self::$VIS,
Form::TYPE =>eInputType::CHECKBOX,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$VIS),
//Input::LABEL => '',
Input::VALUE => 1,
Input::CHECKED => boolval($values[self::$VIS]),
],
],
]
],
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::$IMAGE,
C::TYPE => eColumnType::INT,
C::TH => V::get(Vars::$IMAGE),
C::HIDDEN => false,
C::FUNC_VALUE => function($v){
$img = Image::getByID($v[self::$IMAGE]);
return '<img src="'.Image::imageResize($img[Image::$URL],50,50,100,['crop'=>'center']).'"/>';
},
C::FUNC_VALUE_DATA => function($v){
$img = Image::getByID($v[self::$IMAGE]);
return Image::imageResize($img[Image::$URL],50,50,100,['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,
C::TYPE => eColumnType::TEXT,
C::DEFAULT => '',
C::TH => V::get(Vars::$TEXT),
C::TD_CLASS => 'text_wrap',
C::FUNC_VALUE_DATA => function($v){
return $v[self::$TEXT];
},
]),
new C([
C::VAR_NAME => &self::$EMAIL,
C::TYPE => eColumnType::TEXT,
C::DEFAULT => '',
C::TH => V::get(Vars::$EMAIL),
]),
new C([
C::VAR_NAME => &self::$PHONE,
C::TYPE => eColumnType::TEXT,
C::DEFAULT => '',
C::TH => V::get(Vars::$PHONE),
]),
new C([
C::VAR_NAME => &self::$PROFILE,
C::TYPE => eColumnType::INT,
C::DEFAULT => PID,
C::HIDDEN => true,
// C::TH => V::get(Vars::$PROFILE),
]),
new C([
C::VAR_NAME => &self::$CITY,
C::TYPE => eColumnType::TEXT,
C::DEFAULT => '',
C::TH => V::get(Vars::$CITY),
]),
new C([
C::VAR_NAME => &self::$DATE,
C::TYPE => eColumnType::INT,
C::DEFAULT => 0,
C::TH => V::get(Vars::$DATE),
C::FUNC_VALUE_DATA => function($v){
return MS::fdate($v[self::$DATE]);
},
]),
new C([
C::VAR_NAME => &self::$TO,
C::TYPE => eColumnType::INT,
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::$MARK,
C::TYPE => eColumnType::INT,
C::LENGTH => 2,
C::DEFAULT => 0,
C::TH => V::get(Vars::$MARK),
]),
new C([
C::VAR_NAME => &self::$VIS,
C::TYPE => eColumnType::TINYINT,
C::LENGTH => 1,
C::DEFAULT => 0,
C::TH => V::get(Vars::$VIS),
C::FUNC_VALUE_DATA => function($v){
return MS::getBoolValText($v[self::$VIS]);
},
]),
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 Review();
///