GetId()=='-1') { $dalData = new DalData(); $dalData->setObjClassTable(self::GetObjClassTable()); $dalData->setObj($obj); return self::DefaultInsert($dalData); } else { $dalData = new DalData(); $dalData->setObjClassTable(self::GetObjClassTable()); $dalData->setObj($obj); return self::DefaultUpdate($dalData); } } public static function Insert(DalData $dalObj) { return self::DefaultInsert($dalObj); } public static function Update(DalData $dalObj) { return self::DefaultUpdate($dalObj); } public static function GetById($id, $lang = 'pl') { $dalData = self::GetDalDataObj(); $dalData->setCondition(array(self::GetObjClassName().'.'.self::GetObjClassTablePK()=>$id, 'lang' => $lang)); if (class_exists(self::GetObjClassName().'Description')) { $dalData->setJoin(array(self::GetObjClassName().'Description' => ' LEFT JOIN '.self::GetObjClassTable().'_description ON '.self::GetObjClassTable().'.id_'.self::GetObjClassTable().'='.self::GetObjClassTable().'_description.id_'.self::GetObjClassTable().'')); } $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 '.$id.'!'); return self::GetEmptyObj(); } } public function GetArrayId($source , $destination, $idDestination, $lang = 'pl') { $db = Registry::Get('db'); $sql = "SELECT id_source FROM `mf_product_link` WHERE `source_type` = '$source' AND `destination_type` = '$destination' AND `id_destination` = $idDestination AND lang = '$lang'"; //Utils::ArrayDisplay($sql); $stmt=$db->prepare($sql) ->execute(); //$stmt->CacheStart($cacheTime); $returnArray = array(); while(($row = $stmt->FetchArray())) { $returnArray[] = $row['id_source']; } return $returnArray; } public function GetIdString($source , $destination, $idDestination, $lang = 'pl', $idDestinationNotIN = null) { $db = Registry::Get('db'); $sql = "SELECT id_source FROM `mf_product_link` WHERE `source_type` = '$source' AND `destination_type` = '$destination' AND lang = '$lang'". ($idDestination ? " AND `id_destination` = $idDestination " : ""). ($idDestinationNotIN ? " AND `id_destination` NOT IN ($idDestinationNotIN) " : ""). " GROUP BY id_source "; $stmt=$db->prepare($sql)->execute(); //Utils::ArrayDisplay($sql); if ($stmt->NumRows() > 0) { } //$stmt->CacheStart($cacheTime); $ids = ' '; $returnArray = array(); while(($row = $stmt->FetchArray())) { $returnArray[] = $row['id_source']; } if (count($returnArray) > 0) { $ids .= implode(',', $returnArray); } else { $ids .= '-1'; } $ids .= ' '; return $ids; } public function GetArrayIdDestinaion($source , $destination, $idSource, $lang = 'pl') { $db = Registry::Get('db'); $sql = "SELECT `id_destination` FROM `mf_product_link` WHERE `source_type` = '$source' AND `destination_type` = '$destination' AND `id_source` = $idSource AND lang = '$lang'"; //Utils::ArrayDisplay($sql); $stmt=$db->prepare($sql) ->execute(); //$stmt->CacheStart($cacheTime); $returnArray = array(); while(($row = $stmt->FetchArray())) { $returnArray[] = $row['id_destination']; } return $returnArray; } public function GetIdStringDestinaion($source , $destination, $idSource, $lang = 'pl', $idSourceNotIN = null) { $db = Registry::Get('db'); $sql = "SELECT id_destination FROM `mf_product_link` WHERE `source_type` = '$source' AND `destination_type` = '$destination' AND lang = '$lang'". ($idSource ? " AND `id_source` = $idSource " : ""). ($idSourceNotIN ? " AND `id_source` NOT IN ($idSourceNotIN) " : ""). " GROUP BY id_destination "; $stmt=$db->prepare($sql)->execute(); //Utils::ArrayDisplay($sql); if ($stmt->NumRows() > 0) { //$stmt->CacheStart($cacheTime); $ids = ' '; $returnArray = array(); while(($row = $stmt->FetchArray())) { $returnArray[] = $row['id_destination']; } if (count($returnArray) > 0) { $ids .= implode(' ,', $returnArray); } else { $ids .= '-1'; } $ids .= ' '; return $ids; } else { return '-1'; } } public static function Delete(DalData $dalObj) { return self::DefaultDelete($dalObj); } public static function GetResult(DalData $dalObj) { return self::DefaultGetResult($dalObj); } public static function DeleteFromLink($idSource = null, $sourceType = null, $idDestination = null, $destinationType = null, $lang=null) { $db = Registry::Get('db'); $sql = "DELETE FROM `mf_product_link` WHERE 1=1 "; if($idSource!= null ) $sql.= " AND id_source = :01 "; if($sourceType!= null) $sql.= " AND source_type = :02 "; if($idDestination!= null) $sql.= " AND id_destination = :03 "; if($destinationType!= null) $sql.= " AND destination_type = :04 "; if($lang!= null) $sql.= " AND lang = :05 "; $stmt=$db->prepare($sql); if($idSource!= null ) $stmt->bindParam('01', $idSource); if($sourceType!= null) $stmt->bindParam('02', $sourceType); if($idDestination!= null) $stmt->bindParam('03', $idDestination); if($destinationType!= null) $stmt->bindParam('04', $destinationType); if($lang!= null) $stmt->bindParam('05', $lang); $stmt->execute(); //Utils::ArrayDisplay($stmt); } public function IsLinked($idSource = null, $sourceType = null, $idDestination = null, $destinationType = null, $lang = null ,$published = '-1', $idSourceSql = '=') { $db = Registry::Get('db'); $sql = "SELECT count(id_mf_product_link) as count FROM `mf_product_link` WHERE 1=1 AND publication NOT IN (".$published.") "; if($idSource!= null ) $sql.= " AND id_source ".$idSourceSql." $idSource "; if($sourceType!= null) $sql.= " AND source_type = :02 "; if($idDestination!= null) $sql.= " AND id_destination ".$idSourceSql." $idDestination "; if($destinationType!= null) $sql.= " AND destination_type = :04 "; if($lang!= null) $sql.= " AND lang = :05 "; $stmt=$db->prepare($sql); if($idSource!= null ) $stmt->bindParam('01', $idSource); if($sourceType!= null) $stmt->bindParam('02', $sourceType); if($idDestination!= null) $stmt->bindParam('03', $idDestination); if($destinationType!= null) $stmt->bindParam('04', $destinationType); if($lang!= null) $stmt->bindParam('05', $lang); $stmt->execute(); $array = $stmt->fetchAllAssoc(); return $array[0]['count']; } public static function GetResultByLink($table, $id ,$destination = false, $data = array(), $queryFields = array(), $limit = 0, $sortBy = null,$count = null) { $dalData = new DalData(); $dalData->setObjClassName(self::GetObjClassName()); $dalData->setObjClassTable(self::GetObjClassTable()); $dalData->setObjClassTablePK(self::GetObjClassTablePK()); $dalData->setOptClass(self::GetOptClass()); $dalData->setCondition($data); $dalData->setQueryFields($queryFields); $dalData->setLimit($limit); $dalData->setSortBy($sortBy); $dalData->setCount($count); $dalData->setDataArray("mf_link_id", $id); $dalData->setDataArray("mf_link_table", $table); $dalData->setDataArray("mf_link_destination", $destination); return self::DefaultGetResultByLink($dalData); } public static function GetObjClassName() { if(self::$objClassName != '') { $class = self::$objClassName; } else { $class = ereg_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; } /** * * @return DalData $dalData */ public static function GetDalDataObj($params = array()) { $dalData = new DalData($params); $dalData->setObjClassName(self::GetObjClassName()); $dalData->setObjClassTable(self::GetObjClassTable()); $dalData->setObjClassTablePK(self::GetObjClassTablePK()); $dalData->setOptClass(self::GetOptClass()); return $dalData; } } ?>