meraproject/module/core/lang/structure/Translate.php

93 lines
2.9 KiB
PHP
Raw Permalink Normal View History

<?
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,
]),
];
}
}