PluginsClassiques("ganalytics");
$this->_initVars();
}
function init(){
$this->ajout_desc("Google Analytics", "Ganalytics", "", 1);
$this->_installDB();
$this->_initLangues();
$this->_initVar('mailGA', '');
$this->_initVar('passGA', '');
$this->_initVar('apiKeyGA', '');
foreach($this->langues as $lang) $this->_initVar('codeGA'.$lang['id'], 'Insérez votre code google Anaytics');
foreach($this->langues as $lang) $this->_initVar('profGA'.$lang['id'], '');
if(!$this->is_sup_15()) foreach($this->langues as $lang) $this->_initVar('urlsiteGA'.$lang['id'], '');
$this->_initVar('ga_suivi_std', 0);
$this->_initVar('ga_insert_statuts', '2');
$this->_initVar('ga_annul_statuts', '5');
$this->_initVar('ga_logs', 0);
}
public function _installDB(){
$cnx = new Cnx();
$query = "CREATE TABLE IF NOT EXISTS `ganalytics` (
`id` int(11) NOT NULL auto_increment, `commande` int(11) NOT NULL, `referer` text NOT NULL,
`gclid` text NOT NULL, `ga_statut` smallint(6) NOT NULL, PRIMARY KEY (`id`)) AUTO_INCREMENT=1 ;";
$resul = mysql_query($query, $cnx->link);
}
public function charger($commande){
return $this->getVars("select * from $this->table where commande=\"$commande\"");
}
public function _initLangues(){
$cnx = new Cnx();
$resul = mysql_query("select * from `lang`",$cnx->link);
while($row = mysql_fetch_assoc($resul)) $this->langues[] = $row;
}
public function _initVars(){
$logs = $this->getVar('ga_logs');
$apiKey = $this->getVar('apiKeyGA');
$this->logs = $logs->valeur;
$this->_apiKey = $apiKey->valeur;
$this->_initLangues();
foreach($this->langues as $lang){
$this->_initVar('codeGA'.$lang['id'], 'Insérez votre code google Anaytics');
$this->_initVar('profGA'.$lang['id'], '');
}
}
public function getLanguesConfigurees(){
$langues_configurees = array();
$_mailGA = $this->getVar('mailGA');
$_passGA = $this->getVar('passGA');
foreach($this->langues as $lang){
$_profGA = $this->getVar('profGA'.$lang['id']);
if(!empty($_profGA->valeur) AND !empty($_mailGA->valeur) AND !empty($_passGA->valeur)) $langues_configurees[] = $lang;
}
return $langues_configurees;
}
public function getLangueDefaut(){
$langue_defaut = 1;
$langues_configurees = $this->getLanguesConfigurees();
if(sizeof($langues_configurees) > 0) $langue_defaut = $langues_configurees[0];
return $langue_defaut = 1;
}
public function _initVar($nom, $valeur, $protege = 0, $cache = 0){
$var = new Variable();
if(!$var->charger($nom)){
$var->nom = $nom;
$var->valeur = $valeur;
$var->protege = $protege;
$var->cache = $cache;
$var->add();
}
}
public function destroy(){
$cnx = new Cnx();
$arr = mysql_fetch_array(mysql_query("SHOW TABLES LIKE '".$this->table."'",$cnx->link));
if ($arr[0] == $this->table) $resultat = mysql_query("DROP TABLE ".$this->table." ",$cnx->link);
}
function getUrlSite(){
$urlsite = new Variable();
$urlsite->charger("urlsite");
return $urlsite->valeur;
}
function getVar($nom){
$var = new Variable();
$var->charger($nom);
return $var;
}
public function getArrayFromStringVar($nom, $sep = ','){
$var = new Variable();
$var->charger($nom);
return explode($sep, $var->valeur);
}
function getGapi($ga_email,$ga_password){
$ga = new gapi($ga_email,$ga_password,(isset($_SESSION['ga_auth_token']) ? $_SESSION['ga_auth_token'] : null),(!empty($this->_apiKey) ? $this->_apiKey : null));
$_SESSION['ga_auth_token'] = $ga->getAuthToken();
return $ga;
}
public function getTransaction($ref, $sens = 1){
$return = array();
$cnx = new Cnx();
$query = 'SELECT `commande`.* FROM `commande` WHERE `ref` = \''.$ref.'\'';
$result = mysql_query($query,$cnx->link) or die(mysql_error());
$res = mysql_fetch_assoc($result);
$query2 = 'SELECT sum(prixu*quantite) as total FROM `venteprod` where commande = '.$res['id'];
$result2 = mysql_query($query2,$cnx->link);
$res2 = mysql_fetch_assoc($result2);
$total = round($res2['total'], 2);
$total = round($total - $res['remise'], 2);
$port = $res['port'];
$totcmdport = $res['port'] + $total;
$query_tva = 'SELECT `valeur` FROM `variable` WHERE `nom` = \'tva\'';
$result_tva = mysql_query($query_tva,$cnx->link);
$res_tva = mysql_fetch_assoc($result_tva);
$query_client = 'SELECT `client`.*, `paysdesc`.`titre` as nom_pays FROM `client`
LEFT JOIN `pays` on `pays`.`id` = `client`.`pays`
LEFT JOIN `paysdesc` on `pays`.`id` = `paysdesc`.`pays`
WHERE `client`.`id` = '.$res['client'].' and `paysdesc`.`lang` = 1';
$result_client = mysql_query($query_client,$cnx->link) or die(mysql_error());;
$res_client = mysql_fetch_assoc($result_client);
$query_lang = ' and `rubriquedesc`.`lang` = '.$res['lang'];
$query_venteprod = 'SELECT `produit`.`tva`,`venteprod`.`ref`,`venteprod`.`titre`, `venteprod`.`prixu`, `venteprod`.`quantite`, `rubriquedesc`.`titre` as category
FROM `venteprod`
LEFT JOIN `produit` on `venteprod`.`ref` = `produit`.`ref`
LEFT JOIN `rubrique` on `produit`.`rubrique` = `rubrique`.`id`
LEFT JOIN `rubriquedesc` on `rubrique`.`id` = `rubriquedesc`.`rubrique`
WHERE commande = '.$res['id'];
$result_venteprod = mysql_query($query_venteprod.$query_lang,$cnx->link) or die(mysql_error());
if(0 === mysql_num_rows($result_venteprod)) $result_venteprod = mysql_query($query_venteprod,$cnx->link) or die(mysql_error());
$i = 1;
while($res_venteprod = mysql_fetch_assoc($result_venteprod)){
$total_produit = $res_venteprod['prixu'] * $res_venteprod['quantite'];
$total_produit_ht = $total_produit / (1 + $res_venteprod['tva']/100);
$tva += round($total_produit - $total_produit_ht,2);
$return['products']['product'.$i]['order_id'] = $res['ref'];
$return['products']['product'.$i]['ref'] = $res_venteprod['ref'];
$return['products']['product'.$i]['category'] = $res_venteprod['category'];
$return['products']['product'.$i]['name'] = $res_venteprod['titre'];
$return['products']['product'.$i]['price'] = $sens * $res_venteprod['prixu'];
$return['products']['product'.$i]['quantity'] = $sens * $res_venteprod['quantite'];
$i++;
}
$return['order']['id'] = $res['ref'];
$return['order']['total'] = $sens * $total;
$return['order']['port'] = $sens * $port;
$return['order']['tva'] = $sens * $tva;
$return['order']['city'] = $res_client['ville'];
$return['order']['region'] = '';
$return['order']['country'] = $res_client['nom_pays'];
return $return;
}
public function GetSearchEngine($referer){
$return = array('moteur','keywords');
$return['keywords'] = $referer;
$ref = $this->GetReferer($referer);
for($i = 0;$i < count($this->ga_search);$i++){
if(strpos(strtolower($ref["host"]), strtolower($this->ga_search[$i][0]))>-1){
$test1 = strpos($ref["referer"], "?".$this->ga_search[$i][1]."=");
$test2 = strpos($ref["referer"], "&".$this->ga_search[$i][1]."=");
$j = ($test1 > -1) ? $test1 : $test2;
if($j >- 1){
$keywords = substr($ref["referer"], $j+strlen($this->ga_search[$i][1])+2, strlen($ref["referer"]));
$j = strpos($keywords,"&");
if($j > -1) $keywords = substr($keywords,0,$j);
$return['moteur'] = $this->ga_search[$i][0];
$return['keywords'] = utf8_decode(urldecode($keywords));
}
}
} return $return;
}
public function GetReferer($referer){
$referer_tmp = $referer;
$pos = strpos($referer_tmp, "://");
if($pos>0) $referer_tmp = $referer_tmp = substr($referer_tmp,$pos+3);
$pos = strpos($referer_tmp, "/");
if($pos>0) return array("host"=>substr($referer_tmp, 0, $pos), "uri"=>substr($referer_tmp, $pos), "referer"=>$referer);
else return array("host"=>$referer_tmp, "uri"=>"", "referer"=>$referer);
}
function GetDomain($url){
$domain = parse_url(preg_replace('`www\.`','',$url));
return (empty($domain["host"])) ? $domain["path"] : $domain["host"];
}
function getFleche($val1,$vals2,$result,$results,$dimensions,$sens_gagnant,$unite='',$callback=''){
$return = '';
$gagnant = $sens_fleche = 0;
if(!is_array($vals2)) $val2 = $vals2;
else
foreach($results as $k =>$result_compare_tmp){
$test = 0;
foreach($dimensions as $dimension){
$funcDim = 'get'.ucfirst($dimension);
if($result_compare_tmp->$funcDim() == $result->$funcDim()) $test += 1;
if(count($dimensions) == $test){$val2 = $vals2[$k];break;}
}
}
if($val2){
$diff = ($val1 - $val2 > 0) ? ceil($val1 - $val2) : floor($val1 - $val2);
if($diff != 0){$gagnant = ($diff / abs($diff) == $sens_gagnant) ? 1 : -1; $sens_fleche = ($diff > 0) ? 1 : -1;}
switch($sens_fleche){case 1 : $sens_fleche = 'haut'; break; case -1 : $sens_fleche = 'bas'; break; case 0 : $sens_fleche = 'droite'; break;}
switch($gagnant){case 1 : $gagnant = 'gagnant'; break; case -1 : $gagnant = 'perdant'; break; case 0 : $gagnant = 'neutre'; break;}
$val = round($val1 - $val2,2);
if(!empty($callback)) $val = call_user_func($callback, $val);
$return = ($gagnant == 'neutre') ? '' : '
'.(round($val1 - $val2,2) > 0 ? '+' : '').$val.'';
}
return $return;
}
# `datefact` date NOT NULL default '0000-00-00'
function getTransactions($date_depart,$date_fin,$lang = null){
$where = ($lang) ? ' AND lang = '.$lang : '';
$query = "SELECT COUNT(*) AS nbCommande FROM commande
WHERE statut>=2 AND statut<>5 AND datefact >= '".$date_depart."' AND datefact <= '".$date_fin."'".$where;
$resul = mysql_query($query);
$nbCommande = mysql_result($resul,0,"nbCommande");
return $nbCommande;
}
function getCA($date_depart,$date_fin,$lang= null,$pourc=100,$port=1){
$commande = new Commande();
$where = ($lang) ? ' AND lang = '.$lang : '';
$query = "select * from $commande->table where statut>=2 and statut<>5 AND datefact >= '".$date_depart."' AND datefact <= '".$date_fin."'".$where;
$resul = mysql_query($query);
$list="";
while($row = mysql_fetch_object($resul)) $list .= "'" . $row->id . "'" . ",";
$list = substr($list, 0, strlen($list)-1);
$list == "";
if($list == "") $list="''";
$query = "SELECT sum(venteprod.quantite*venteprod.prixu) as ca FROM venteprod where commande in ($list)";
$resul = mysql_query($query);
$ca = round(mysql_result($resul, 0, "ca"), 2);
$query = "SELECT sum(port)as ca FROM commande where id in ($list)";
$resul = mysql_query($query);
$ca += mysql_result($resul, 0, "ca");
$query = "SELECT sum(remise)as ca FROM commande where id in ($list)";
$resul = mysql_query($query);
$ca -= mysql_result($resul, 0, "ca");
if(!$port){
$query = "SELECT sum(port)as port FROM commande where id in ($list)";
$resul = mysql_query($query);
$ca -= mysql_result($resul, 0, "port");
}
return round($ca*$pourc/100, 2);
}
function getCASources($date_depart,$date_fin,$lang= null,$port=1){
$return = array();
$commande = new Commande();
$where = ($lang) ? ' AND lang = '.$lang : '';
$query = "select * from $commande->table where statut>=2 and statut<>5 AND datefact >= '".$date_depart."' AND datefact <= '".$date_fin."'".$where;
$resul = mysql_query($query);
while($commande = mysql_fetch_object($resul)){
$query = "SELECT sum(venteprod.quantite*venteprod.prixu) as ca FROM venteprod where commande = ".$commande->id;
$resul = mysql_query($query);
$ca = round(mysql_result($resul, 0, "ca"), 2);
$query = "SELECT sum(port)as ca FROM commande where id = ".$commande->id;
$resul = mysql_query($query);
$ca += mysql_result($resul, 0, "ca");
$query = "SELECT sum(remise)as ca FROM commande where id = ".$commande->id;
$resul = mysql_query($query);
$ca -= mysql_result($resul, 0, "ca");
if(!$port){
$query = "SELECT sum(port)as port FROM commande where id = ".$commande->id;
$resul = mysql_query($query);
$ca -= mysql_result($resul, 0, "port");
}
/*
$ganalytics = new Ganalytics();
$ganalytics->charger($commande->id);
$referer = $ganalytics->referer;
$gclid = $ganalytics->gclid;
# TO DO: Retrouver le NDD de façon dynamique..
$ga = new X_GoogleAnalyticsMobile('',str_replace('www.','','http://www.stevialis.fr'),$referer,$gclid,NULL,array());
*/
//$return[$this->getSource($row->id)] = $ca;
$return['test'] += $ca;
// Source ??
}
return $return;
}
public function demarrage(){
$referer = $_SERVER['HTTP_REFERER'];
if(!$_COOKIE['ganalytics'] || (!empty($referer) and $this->GetDomain($referer) != str_replace('www.','',$_SERVER['HTTP_HOST'])))
setcookie("ganalytics", $referer, time() + 18000); // = 5h
if(!$_COOKIE['gclid'] AND isset($_GET['gclid']))
setcookie("gclid", $_GET['gclid'], time() + 43200); // 24h * 30j * 60s = 30 jours
}
public function action(){
global $res,$ga;
$ga_suivi_std = new Variable();
$ga_suivi_std->charger('ga_suivi_std');
if($ga_suivi_std->valeur){
$_codeGA = new Variable();
$_codeGA->charger('codeGA1');
$urlsite = new Variable();
$urlsite->charger("urlsite");
if(!isset($ga) OR $ga != 0)
if($_codeGA->valeur != 'Insérez votre code google Anaytics'){
$code = "\n".''."\n".'