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