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') ? '' : ''.$val.''.(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".''; $res = preg_replace('`<[[:space:]]*/[[:space:]]*body[[:space:]]*>`i',$code,$res); } } } public function apresclient(){ // $this->trackPageview('/inscription'); } /* -- ACTIONS -- apresconnexion apresdeconnexion avantcommande apresVenteprod aprescommande avantclient apresclient avantmodifcompte apresmodifcompte apres_creerlivraison apres_modifierlivraison avantpromo aprespromo */ public function aprescommande($commande){ $this->commande = $commande->id; $this->referer = $_COOKIE['ganalytics']; $this->gclid = $_COOKIE['gclid']; $this->add(); $this->statut($commande); } public function confirmation($commande){ $this->statut($commande); } public function statut($commande){ $this->charger($commande->id); $ga_insert_statuts = $this->getArrayFromStringVar('ga_insert_statuts'); $ga_annul_statuts = $this->getArrayFromStringVar('ga_annul_statuts'); if(in_array($commande->statut, $ga_insert_statuts) and $this->ga_statut == 0){ $this->GanalyticsUpdate($commande); $this->ga_statut = 1; $this->maj(); } elseif(in_array($commande->statut, $ga_annul_statuts) and $this->ga_statut == 1){ $this->GanalyticsUpdate($commande, -1); $this->ga_statut = 0; $this->maj(); } } public function GanalyticsUpdate($commande, $sens = 1){ if($this->logs) X_writeLogs($this->getUrlSite().$this->_logFile, ""); if($this->logs) X_writeLogs($this->getUrlSite().$this->_logFile, "###############################################"); if($this->logs) X_writeLogs($this->getUrlSite().$this->_logFile, ""); if($this->logs) X_writeLogs($this->getUrlSite().$this->_logFile, "#Function - GanalyticsUpdate | order = ".$commande->ref." | sens = ".$sens); $urlsite = new Variable(); $urlsite->charger("urlsite"); $this->charger($commande->id); $_codeGA = new Variable(); $_codeGA->charger('codeGA'.$commande->lang); $commande_infos = $this->getTransaction($commande->ref,$sens); $ga_params = array(); $referer = $this->referer; $gclid = $this->gclid; if($this->logs) X_writeLogs($this->getUrlSite().$this->_logFile, '#REFERER => '.$referer); $url = $urlsite->valeur.'/client/plugins/ganalytics/ganalytics_update.php'; $commande_order = $commande_infos['order']; $ga = new X_GoogleAnalyticsMobile($_codeGA->valeur, str_replace('www.','',$_SERVER['HTTP_HOST']), $referer, $gclid, NULL, $ga_params); $ga->SetTransaction($commande_order['id'], $commande_order['total'], $commande_order['port'], $commande_order['tva'], $commande_order['city'], $commande_order['region'], $commande_order['country']); if(count($commande_infos['products']) > 0) foreach($commande_infos['products'] as $product) $ga->SetTransactionItem($product['order_id'], $product['ref'], $product['category'], $product['name'], $product['price'], $product['quantity']); $tracking_codes = $ga->GetTrackingCode(); if(count($tracking_codes) > 0) foreach($tracking_codes as $tracking_code){ if($this->logs) X_writeLogs($this->getUrlSite().$this->_logFile, $tracking_code); $ch = @curl_init($tracking_code); if ($ch){ @curl_setopt($ch, CURLOPT_TIMEOUT, 30); @curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); @curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); @curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); $result = @curl_exec($ch); if($this->logs) X_writeLogs($this->getUrlSite().$this->_logFile, "#result : ".$result); @curl_close($ch); } } } public function trackPageview($page){ if($this->logs) X_writeLogs($this->getUrlSite().$this->_logFile, ""); if($this->logs) X_writeLogs($this->getUrlSite().$this->_logFile, "###############################################"); if($this->logs) X_writeLogs($this->getUrlSite().$this->_logFile, ""); if($this->logs) X_writeLogs($this->getUrlSite().$this->_logFile, "#Function - trackPageView - | page = ".$page); $urlsite = new Variable(); $urlsite->charger("urlsite"); $_codeGA = new Variable(); $_codeGA->charger('codeGA'.$_SESSION['navig']->lang); $ga_params = array(); //$referer = $this->referer; //if($this->logs) X_writeLogs($this->getUrlSite().$this->_logFile, '#REFERER => '.$referer); $ga = new X_GoogleAnalyticsMobile($_codeGA->valeur, str_replace('www.','',$_SERVER['HTTP_HOST']), $_SERVER['HTTP_REFERER'], '', NULL, $ga_params); $ga->SetTrackPageview($page); $tracking_codes = $ga->GetTrackingCode(); if(count($tracking_codes) > 0) foreach($tracking_codes as $tracking_code){ if($this->logs) X_writeLogs($this->getUrlSite().$this->_logFile, $tracking_code); $ch = @curl_init($tracking_code); if ($ch){ @curl_setopt($ch, CURLOPT_TIMEOUT, 30); @curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); @curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); @curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); $result = @curl_exec($ch); if($this->logs) X_writeLogs($this->getUrlSite().$this->_logFile, "#result : ".$result); @curl_close($ch); } } } public function trackEvent($event){ if($this->logs) X_writeLogs($this->getUrlSite().$this->_logFile, ""); if($this->logs) X_writeLogs($this->getUrlSite().$this->_logFile, "###############################################"); if($this->logs) X_writeLogs($this->getUrlSite().$this->_logFile, ""); if($this->logs) X_writeLogs($this->getUrlSite().$this->_logFile, "#Function - trackEvent - | event = ".$event); $urlsite = new Variable(); $urlsite->charger("urlsite"); $_codeGA = new Variable(); $_codeGA->charger('codeGA'.$_SESSION['navig']->lang); $ga_params = array(); //$referer = $this->referer; //if($this->logs) X_writeLogs($this->getUrlSite().$this->_logFile, '#REFERER => '.$referer); $ga = new X_GoogleAnalyticsMobile($_codeGA->valeur, str_replace('www.','',$_SERVER['HTTP_HOST']), $_SERVER['HTTP_REFERER'], '', NULL, $ga_params); $ga->SetTrackEvent($event); $tracking_codes = $ga->GetTrackingCode(); if(count($tracking_codes) > 0) foreach($tracking_codes as $tracking_code){ if($this->logs) X_writeLogs($this->getUrlSite().$this->_logFile, $tracking_code); $ch = @curl_init($tracking_code); if ($ch){ @curl_setopt($ch, CURLOPT_TIMEOUT, 30); @curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); @curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); @curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); $result = @curl_exec($ch); if($this->logs) X_writeLogs($this->getUrlSite().$this->_logFile, "#result : ".$result); @curl_close($ch); } } } public function displayCalendar($date_depart, $date_fin){ # Soustraire 1 pour les semaines si l'année ne commence pas un lundi $firstMondayHack = (date("w",mktime(0,0,0,1,1,date('Y'))) != 1) ? 1 : 0; $first_day_of_month = date('Y-m',time()) . '-01 00:00:01'; $t = strtotime($first_day_of_month); return '








Du :

Au :


'; } function cleanEncodage($str){ if(!$this->is_sup_15()) $str = utf8_decode($str); return $str; } public function is_sup_15(){ $version = new Variable(); $version->charger("version"); return (intval(substr($version->valeur,0,2)) >= 15) ? 1 : 0; } } ?>