Files
zurawik.pl/core/model/MfDictionaryDAL.class.php
2026-05-15 18:33:51 +02:00

297 lines
8.0 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Klasa obsĹugi tablicy slownika
*
*/
class MfDictionaryDAL extends DefaultDAL {
protected static $objClassName;
protected static $objClassTable;
protected static $objClassTablePK;
private static $optClass;
public static function Save( $obj) {
$id = null;
if($obj->GetId()==-1) {
$id = self::Insert($obj);
} else {
self::Update($obj);
$id = $obj->GetId();
}
return $id;
}
/**
* @param Feed $obj
*
*/
public static function Insert($obj) {
$dalData = new DalData();
$dalData->setObjClassTable(self::GetObjClassTable());
$dalData->setObj($obj);
$id = self::DefaultInsert($dalData);
return $id;
}
/**
* @param Text $obj
*
*/
public static function Update($obj) {
//Utils::ArrayDisplay($obj);
$dalData = new DalData();
$dalData->setObjClassTable(self::GetObjClassTable());
$dalData->setObjClassTablePK(self::GetObjClassTablePK());
$dalData->setObj($obj);
return self::DefaultUpdate($dalData);
}
/**
*
* @param integer $id
*
*/
public static function Delete($obj) {
$dalData = new DalData();
$dalData->setObjClassTable(self::GetObjClassTable());
$dalData->setObjClassTablePK(self::GetObjClassTablePK());
$dalData->setObj($obj);
//MfFileDescriptionDAL::DeleteByParentId($obj->GetId());
return self::DefaultDelete($dalData);
}
/**
*
*
*/
public static function DeleteByKey($keyword) {
$db = Registry::Get('db');
$sql = "DELETE FROM mf_dictionary WHERE mf_dictionary.keyword = :01 ";
$stmt = $db->prepare($sql)
->bindParam("01", $keyword)
->execute();
}
/**
*
* @param $id
*/
public static function GetById($id) {
$dalData = self::GetDalDataObj();
$dalData->setCondition(array(self::GetObjClassTablePK()=>$id));
$dalData->setLimit(1);
$result = self::GetResult($dalData);
if ((count($result) > 0) && (is_object($result[0]))) {
return $result[0];
} else {
throw new Exception('Brak rekordu w tablicy '.self::GetObjClassTable().' o id <b>'.$id.'</b>!');
}
}
public static function GetArrayObjAll($data, $queryFields = array(), $limit = 0, $sortBy = null,$count = null) {
$dalData = self::GetDalDataObj();
$dalData->setCondition($data);
$dalData->setLimit($limit);
$dalData->setSortBy($sortBy);
$dalData->setCount($count);
$result = self::DefaultGetResult($dalData);
return $result;
}
public static function GetResult($data,$queryFields = array(),$limit = 0, $sortBy = null,$count = null) {
if(!is_array($data)){
$data = array();
}
$db = Registry::Get('db');
$queryCacheName = __CLASS__. "_" .__FUNCTION__. "_" .md5(implode($queryFields));
if(isset(QueryCacheTemp::$cacheQuery[$queryCacheName]))
{
$sql = QueryCacheTemp::$cacheQuery[$queryCacheName];
}
else
{
if($count == true)
$select = "count(*) as count";
else {
$select =" " . SQL::ToSelect(self::GetOptClass(),$queryFields);
$select .= ",
en.replacement as MfDictionary_replacementEn,
de.replacement as MfDictionary_replacementDe,
ru.replacement as MfDictionary_replacementRu " ;
// $select .= ", (SELECT ru.replacement FROM mf_dictionary ru WHERE 1=1 AND MfDictionary_keyword = ru.keyword AND lang = 'ru' GROUP BY replacement) as MfDictionary_replacementRu" ;
// $select .= ", (SELECT de.replacement FROM mf_dictionary de WHERE 1=1 AND MfDictionary_keyword = de.keyword AND lang = 'de' GROUP BY replacement) as MfDictionary_replacementDe" ;
//", (SELECT fr.replacement FROM mf_dictionary fr WHERE 1=1 AND MfDictionary_keyword = fr.keyword AND lang = 'fr') as MfDictionary_replacementFr" .
//", (SELECT ua.replacement FROM mf_dictionary ua WHERE 1=1 AND MfDictionary_keyword = ua.keyword AND lang = 'ua') as MfDictionary_replacementUa " ;
//", (SELECT no.replacement FROM mf_dictionary no WHERE 1=1 AND MfDictionary_keyword = no.keyword AND lang = 'no') as MfDictionary_replacementNo " ;
}
$sql = " SELECT $select FROM " . self::GetObjClassTable() .
" JOIN mf_dictionary en ON mf_dictionary.keyword = en.keyword AND en.lang = 'en'
JOIN mf_dictionary de ON mf_dictionary.keyword = de.keyword AND de.lang = 'de'
JOIN mf_dictionary ru ON mf_dictionary.keyword = ru.keyword AND ru.lang = 'ru' ".
" WHERE 1=1 ";
$q = new QueryCache($queryCacheName,$sql);
}
foreach ($data as $key => $value)
{
// Utils::ArrayDisplay($value);
if($key == "id")
$key = $objId ;
if(is_array($value))
$sql .= ( is_numeric($value['value']) || $value ? " AND ".$key." ".$value['condition']." ". $value['value'] : "");
else
$sql .= ( is_numeric($value) || $value ? " AND mf_dictionary.".$key." = ". $value : "");
}
$sql .= ( $sortBy ? " ORDER BY $sortBy " : "").
( $limit ? " LIMIT " . $limit : "").
" ";
//Utils::ArrayDisplay($sql);
$stmt = $db->prepare($sql)
->execute();
$array = $stmt->fetchAllAssoc();
if($count == true)
return $array[0]['count'];
$done = array();
//Utils::ArrayDisplay($array);
for($i=0;$i<count($array);$i++)
{
$className=self::GetObjClassName();
$obj = new $className();
$obj->FromArray($array[$i],1);
$obj->SetReplacementEn($array[$i]['MfDictionary_replacementEn']);
$obj->SetReplacementDe($array[$i]['MfDictionary_replacementDe']);
$obj->SetReplacementRu($array[$i]['MfDictionary_replacementRu']);
// $obj->SetReplacementFr($array[$i]['MfDictionary_replacementFr']);
// $obj->SetReplacementUa($array[$i]['MfDictionary_replacementUa']);
$done[] = $obj;
}
return $done;
}
/**
* Pobiera z tabeli liste slowek i cacheuje
*
* @param integer $cacheTime
* @return Array
*/
public static function GetAllVariables($lang, $cacheTime, $location = 0) {
$db = Registry::Get('db');
$sql = "SELECT keyword, replacement FROM ".self::GetObjClassTable()." WHERE lang='".$lang."' AND location='".$location."'";
//Utils::ArrayDisplay($sql);
$stmt=$db->execute($sql);
$stmt->CacheStart($cacheTime);
$array = $stmt->FetchAllAssoc();
$returnArray = array();
foreach ($array as $keyword => $value) {
$returnArray[$value['keyword']] = $value['replacement'];
}
//Utils::ArrayDisplay($returnArray);
return $returnArray;
}
/**
* Pobiera z tabeli liste slowek i cacheuje
*
* @param integer $cacheTime
* @return Array
*/
public static function IsVariables($keyword, $lang, $location = 0) {
$db = Registry::Get('db');
$sql = "SELECT keyword, replacement FROM ".self::GetObjClassTable()." WHERE lang='".$lang."' AND keyword='".$keyword."' AND location='".$location."'";
//Utils::ArrayDisplay($sql);
$stmt=$db->execute($sql);
$array = $stmt->FetchAllAssoc();
if (count($array) > 0) {
return true;
} else {
return false;
}
}
public static function GetObjClassName() {
if(self::$objClassName != '') {
$class = self::$objClassName;
} else {
$class = str_replace('DAL', '', __CLASS__);
}
return $class;
}
public static function GetOptClass() {
if(self::$optClass!=null) {
return self::$optClass;
} else {
return self::GetObjClassName();
}
}
public static function GetObjClassTablePK() {
if(self::$objClassTablePK != '') {
$return = self::$objClassTablePK;
} else {
$class = self::GetObjClassName();
$classObj = new $class();
$return = $classObj->GetClassTablePK();
}
return $return;
}
public static function GetObjClassTable() {
if(self::$objClassTable!='') {
$return = self::$objClassTable;
} else {
$class = self::GetObjClassName();
$classObj = new $class();
$return = $classObj->GetTableName();
}
return $return;
}
public static function GetDalDataObj() {
$dalData = new DalData();
$dalData->setObjClassName(self::GetObjClassName());
$dalData->setObjClassTable(self::GetObjClassTable());
$dalData->setObjClassTablePK(self::GetObjClassTablePK());
$dalData->setOptClass(self::GetOptClass());
//$dalData->setDatabaseType('dbTemp');
return $dalData;
}
}
?>