Current File : /home/karenpetzb/application/models/KeyMap.php |
<?php
class KeyMap extends Zend_Db_Table
{
protected $_name = 'key_map';
protected $_primary = 'ID';
public function getKeyCleaned($words, $nb) {
$result = explode(",", $words);
return array_slice($result, 0, $nb, true);
}
public function getKeyByPositionAndCatId($idCat, $listIds) {
$selectCat = "
SELECT c.NOM CAT_NOM, c.NAVNOM CAT_NAVNOM, c.DESCRIPTION CAT_DESCRIPTION, c.ID CAT_ID, c.KEYWORDS KEYWORDS, c.NAVNOM_URLPARENTS CAT_NAVNOM_URLPARENTS
FROM category AS c
WHERE c.ID IN (".$listIds.")
GROUP BY c.ID
LIMIT 0 , 10;";
$result = $this->getAdapter()->fetchAll($selectCat);
$catIds = explode(",", $listIds);
if (sizeof($catIds) == 1) {
$selectProd = "
SELECT c.NOM CAT_NOM, c.NAVNOM CAT_NAVNOM, c.DESCRIPTION CAT_DESCRIPTION, c.ID CAT_ID, p.KEYWORDS KEYWORDS,
p.NAVNOM PROD_NAVNOM, p.ID PROD_ID, c.NAVNOM_URLPARENTS CAT_NAVNOM_URLPARENTS
FROM category AS c
LEFT JOIN product AS p ON p.IDCATEGORY = c.ID
WHERE c.ID = ".$idCat."
LIMIT 0 , 10;";
$result2 = $this->getAdapter()->fetchAll($selectProd);
$result = array_merge((array)$result, (array)$result2);
}
return $result;
}
public function getAllByPOSITION() {
$selectCat = "
SELECT k.ID ID, k.CATID CATID, k.POSITION POSITION, k.SIZE SIZE,k.COLOR COLOR, k.TYPE TYPE, k.isSHOW isSHOW,
c.NOM CAT_NOM, c.NAVNOM CAT_NAVNOM, c.DESCRIPTION CAT_DESCRIPTION
FROM key_map AS k
LEFT JOIN category AS c ON c.ID = k.CATID
WHERE k.isSHOW = 1 AND
k.TYPE = 'CAT'
ORDER BY k.POSITION ASC
LIMIT 0 , 20;";
$selectBrend = "
SELECT k.ID ID, k.BRENDID BRENDID, k.POSITION POSITION, k.SIZE SIZE,k.COLOR COLOR, k.TYPE TYPE, k.isSHOW isSHOW,
b.BREND BREND_NOM
FROM key_map AS k
LEFT JOIN supplier_brend AS b ON b.ID = k.BRENDID
WHERE k.isSHOW = 1 AND
k.TYPE = 'BREND'
ORDER BY k.POSITION ASC
LIMIT 0 , 20;";
$listCat = $this->getAdapter()->fetchAll($selectCat);
$listMap = array();
$i = 0;
foreach ($listCat as $row) {
$listMap[$i]['ID'] = $row['ID'];
$listMap[$i]['CATID'] = $row['CATID'];
$listMap[$i]['SIZE'] = $row['SIZE'];
$listMap[$i]['TYPE'] = $row['TYPE'];
$listMap[$i]['isSHOW'] = $row['isSHOW'];
$listMap[$i]['COLOR'] = $row['COLOR'];
$listMap[$i]['CAT_NAVNOM'] = $row['CAT_NAVNOM'];
$listMap[$i]['CAT_DESCRIPTION'] = $row['CAT_DESCRIPTION'];
$listMap[$i]['TITRE'] = $row['CAT_NOM'];
$i++;
}
$listBrend = $this->getAdapter()->fetchAll($selectBrend);
foreach ($listBrend as $row) {
$listMap[$i]['ID'] = $row['ID'];
$listMap[$i]['BRENDID'] = $row['BRENDID'];
$listMap[$i]['SIZE'] = $row['SIZE'];
$listMap[$i]['TYPE'] = $row['TYPE'];
$listMap[$i]['COLOR'] = $row['COLOR'];
$listMap[$i]['isSHOW'] = $row['isSHOW'];
$listMap[$i]['TITRE'] = $row['BREND_NOM'];
$i++;
}
return $listMap;
}
public function getAllByCAT() {
$select = "
SELECT k.ID ID, k.CATID CATID, k.POSITION POSITION,k.COLOR COLOR, k.SIZE SIZE, k.TYPE TYPE, k.isSHOW isSHOW, k.VIEW VIEW,
c.NOM CAT_NOM, c.NAVNOM CAT_NAVNOM, c.DESCRIPTION CAT_DESCRIPTION
FROM key_map AS k
LEFT JOIN category AS c ON c.ID = k.CATID
ORDER BY c.NOM ASC";
$listTemp = $this->getAdapter()->fetchAll($select);
$listMap = array();
foreach ($listTemp as $row) {
$listMap[$row['CATID']]['ID'] = $row['ID'];
$listMap[$row['CATID']]['CATID'] = $row['CATID'];
$listMap[$row['CATID']]['POSITION'] = $row['POSITION'];
$listMap[$row['CATID']]['SIZE'] = $row['SIZE'];
$listMap[$row['CATID']]['TYPE'] = $row['TYPE'];
$listMap[$row['CATID']]['isSHOW'] = $row['isSHOW'];
$listMap[$row['CATID']]['COLOR'] = $row['COLOR'];
$listMap[$row['CATID']]['VIEW'] = $row['VIEW'];
$listMap[$row['CATID']]['CAT_NOM'] = $row['CAT_NOM'];
$listMap[$row['CATID']]['CAT_NAVNOM'] = $row['CAT_NAVNOM'];
$listMap[$row['CATID']]['CAT_DESCRIPTION'] = $row['CAT_DESCRIPTION'];
}
return $listMap;
}
public function getAllByBREND() {
$select = "
SELECT k.ID ID, k.BRENDID BRENDID, k.POSITION POSITION,k.COLOR COLOR, k.SIZE SIZE, k.TYPE TYPE, k.isSHOW isSHOW, k.VIEW VIEW,
b.BREND BREND_NOM
FROM key_map AS k
LEFT JOIN supplier_brend AS b ON b.ID = k.BRENDID
ORDER BY b.BREND ASC;";
$listTemp = $this->getAdapter()->fetchAll($select);
$listMap = array();
foreach ($listTemp as $row) {
$listMap[$row['BRENDID']]['ID'] = $row['ID'];
$listMap[$row['BRENDID']]['BRENDID'] = $row['BRENDID'];
$listMap[$row['BRENDID']]['POSITION'] = $row['POSITION'];
$listMap[$row['BRENDID']]['SIZE'] = $row['SIZE'];
$listMap[$row['BRENDID']]['TYPE'] = $row['TYPE'];
$listMap[$row['BRENDID']]['COLOR'] = $row['COLOR'];
$listMap[$row['BRENDID']]['VIEW'] = $row['VIEW'];
$listMap[$row['BRENDID']]['isSHOW'] = $row['isSHOW'];
$listMap[$row['BRENDID']]['BREND_NOM'] = $row['BREND_NOM'];
}
return $listMap;
}
public function getKeyByCatID($catID) {
$select = "
SELECT k.ID ID, k.CATID CATID, k.BRENDID BRENDID,k.COLOR COLOR, k.POSITION POSITION, k.SIZE SIZE, k.TYPE TYPE, k.isSHOW isSHOW,
c.NOM CAT_NOM, c.NAVNOM CAT_NAVNOM, c.DESCRIPTION CAT_DESCRIPTION
FROM key_map AS k
LEFT JOIN category AS c ON c.ID = k.CATID
WHERE k.CATID = ".$catID."
ORDER BY c.NOM ASC";
$key = $this->getAdapter()->fetchRow($select);
return $key;
}
public function getKeyByBrendID($brendID) {
$select = "
SELECT k.ID ID, k.BRENDID BRENDID,k.COLOR COLOR, k.POSITION POSITION, k.SIZE SIZE, k.TYPE TYPE, k.isSHOW isSHOW,
b.BREND BREND_NOM
FROM key_map AS k
LEFT JOIN supplier_brend AS b ON b.ID = k.BRENDID
WHERE k.BRENDID = ".$brendID."
ORDER BY b.BREND ASC";
$key = $this->getAdapter()->fetchRow($select);
return $key;
}
private function computeKeySize($view) {
if ($view < 1000) { return 10; }
if ($view < 1500) { return 15; }
if ($view < 2000) { return 20; }
if ($view < 2500) { return 25; }
if ($view < 3000) { return 30; }
if ($view < 3500) { return 35; }
return 40;
}
private function computeUrl() {
$controllerName = Zend_Controller_Front::getInstance()->getRequest()->getControllerName();
$actionName = Zend_Controller_Front::getInstance()->getRequest()->getActionName();
$paramArray = Zend_Controller_Front::getInstance()->getRequest()->getParams();
$params = '';
$baseUrl = Zend_Controller_Front::getInstance()->getBaseUrl();
foreach($paramArray as $key => $value) {
if($key <> "module" && $key <> "controller" && $key <> "action") {
$params .= $key . "/" . $value . "/";
}
}
$url = $baseUrl."/" . $controllerName . "/" . $actionName . "/" . $params;
return $url;
}
private function computeSource() {
$paramArray = Zend_Controller_Front::getInstance()->getRequest()->getParams();
$source = '';
foreach($paramArray as $key => $value) {
if ($key == "source") {
$source = $value;
}
}
$result = 'Lien Direct';
if ($source == 'hellopro') {
$result = "Redirection : Hello Pro";
}
return $result;
}
private function isIpBan($ip) {
$paramIp = new ParamIp();
$sql = "SELECT * FROM admin_param_ip WHERE isBAN = 1 AND IP = '".$ip."'";
$result = $paramIp->getAdapter()->fetchAll($sql);
if (!empty($result)) {
return true;
}
return false;
}
private function logMe($message , $level) {
$loggerDefault = Zend_Registry::get('loggerDefault');
if ($level == 'info') {
$loggerDefault->info($message);
} elseif ($level == 'err') {
$loggerDefault->err($message);
} elseif ($level == 'warn') {
$loggerDefault->warn($message);
} elseif ($level == 'crit') {
$loggerDefault->crit($message);
}
}
public function updateCatEntry($catId) {
$currentIp = $_SERVER['REMOTE_ADDR'];
if (!$this->isIpBan($currentIp)) {
$select = "SELECT k.VIEW VIEW FROM key_map AS k WHERE k.CATID = ".$catId;
$result = $this->getAdapter()->fetchRow($select);
$view = ((int)$result['VIEW'])+1;
//$size = $this->computeKeySize($view);
$url = $this->computeUrl();
$date = new Zend_Date();
//$this->logMe("Click Cat : IP : ".$currentIp." <br> VIEW : ".$view." <br> URL : ".$url." <br> DATE : ".$date->toString('YYYY-MM-dd HH:mm:ss')." <br> IDCAT : ".$catId,'info');
if (!empty($result)) {
$data = array(
'VIEW' => $view
//'SIZE' => $size
);
$this->getAdapter()->update('key_map', $data, 'CATID = '.$catId);
}
$clickStats = new ClickStats();
$data = array(
'URL' => $url,
'IP' => $currentIp,
'DATEINSERT' => $date->toString('YYYY-MM-dd HH:mm:ss'),
'SOURCE' => $this->computeSource()
);
$clickStats->insert($data);
}
}
public function updateBrendEntry($brendId) {
$currentIp = $_SERVER['REMOTE_ADDR'];
if (!$this->isIpBan($currentIp)) {
$select = "SELECT k.VIEW VIEW FROM key_map AS k WHERE k.BRENDID = ".$brendId;
$result = $this->getAdapter()->fetchRow($select);
$view = ((int)$result['VIEW'])+1;
//$size = $this->computeKeySize($view);
$url = $this->computeUrl();
$date = new Zend_Date();
//$this->logMe("Click Brend : IP : ".$currentIp." <br> VIEW : ".$view." <br> URL : ".$url." <br> DATE : ".$date->toString('YYYY-MM-dd HH:mm:ss')." <br> IDBREND : ".$brendId,'info');
if (!empty($result)) {
$data = array(
'VIEW' => $view
// 'SIZE' => $size
);
$this->getAdapter()->update('key_map', $data, 'BRENDID = '.$brendId);
}
}
}
}
?>