93 lines
2.9 KiB
PHP
93 lines
2.9 KiB
PHP
<?
|
|
namespace core\lang\structure;
|
|
|
|
use \core\db\structure\Column as C;
|
|
use \core\db\structure\eColumnType;
|
|
|
|
new Translate();
|
|
class Translate extends \ModuleTable {
|
|
// Название таблицы
|
|
static $table_name = 'translate';
|
|
// Ссылка на самого себя
|
|
static $self;
|
|
|
|
// Переменные столбцов
|
|
static $ID = 'id';
|
|
static $TO = 'to';
|
|
static $OID = 'oid';
|
|
static $TYPE = 'type';
|
|
static $LANG = 'lang';
|
|
static $VALUE = 'value';
|
|
|
|
static function add($values){
|
|
self::insert($values,[\Query::ON_DUPLICATE_KEY_UPDATE=>[
|
|
self::$VALUE=>$values[self::$VALUE]
|
|
]]);
|
|
}
|
|
|
|
static function afterInstall() {
|
|
parent::afterInstall();
|
|
\DB::addUnique(self::$table_name,self::$table_name.'unique',
|
|
[self::$TO,self::$OID,self::$TYPE,self::$LANG]
|
|
);
|
|
|
|
}
|
|
|
|
static function getValue($to,$oid,$type,$lang=null) {
|
|
if(!$lang) $lang = \Config::$LANG_ID;
|
|
$a = self::select(
|
|
[\Query::WHERE=>new \Where(\Where::_and([
|
|
\Where::_operator(self::$TO,'=',$to),
|
|
\Where::_operator(self::$OID,'=',$oid),
|
|
\Where::_operator(self::$TYPE,'=',$type),
|
|
\Where::_operator(self::$LANG,'=',$lang),
|
|
]))]
|
|
,true);
|
|
$res = array_pop($a);
|
|
return $res[self::$VALUE];
|
|
}
|
|
|
|
static function updateValue($values) {
|
|
return parent::update(new \Where(\Where::_and([
|
|
\Where::_operator(self::$TO,'=',$values[self::$TO]),
|
|
\Where::_operator(self::$OID,'=',$values[self::$OID]),
|
|
\Where::_operator(self::$TYPE,'=',$values[self::$TYPE]),
|
|
\Where::_operator(self::$LANG,'=',$values[self::$LANG]),
|
|
])),
|
|
[self::$VALUE=>$values[self::$VALUE]]);
|
|
}
|
|
|
|
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,
|
|
]),
|
|
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::$TYPE,
|
|
C::TYPE =>eColumnType::INT,
|
|
]),
|
|
new C([
|
|
C::VAR_NAME =>&self::$LANG,
|
|
C::TYPE =>eColumnType::INT,
|
|
]),
|
|
new C([
|
|
C::VAR_NAME =>&self::$VALUE,
|
|
C::TYPE =>eColumnType::TEXT,
|
|
]),
|
|
];
|
|
}
|
|
}
|
|
|