No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

accesbd.php 53KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633
  1. <?php
  2. require_once(dirname(__FILE__)."/classes/lesclasses.php");
  3. include_once(dirname(__FILE__)."/db/db.php");
  4. include_once(dirname(__FILE__)."/tools/tools.php");
  5. include_once(dirname(__FILE__)."/tools/sessions.php");
  6. $__PARAMETERTURBOLEAD_ASSOCIATIF_CACHE__=false; // variable globale contenant les parametres sous format de tableau associatif
  7. $__PARAMETERTURBOLEAD_INDEX_CACHE__=false; // variable globale contenant les parametres sous format de tableau indexe
  8. $__PARAMETERTURBOLEAD_CACHE_LOCK=false; // blocage de la memoire cache false: force la recharge des parametres
  9. /*
  10. Nom fonction : getParameterTurbolead
  11. Description : recupere le tableau des parametres de turbolead
  12. Entrees : $associatif: false par defaut. si true recupere le tableau associatif ($name,$value) des parametres
  13. Sorties : $retour tableau de parametre
  14. Globales :
  15. Auteur : Frederic Royet
  16. V: 1.0
  17. */
  18. function getParameterTurbolead($associatif=false,$uncache=false) {
  19. global $db,$__PARAMETERTURBOLEAD_ASSOCIATIF_CACHE__,$__PARAMETERTURBOLEAD_INDEX_CACHE__,$__PARAMETERTURBOLEAD_CACHE_LOCK;
  20. if ($uncache==true) $__PARAMETERTURBOLEAD_CACHE_LOCK=false;
  21. if (($__PARAMETERTURBOLEAD_ASSOCIATIF_CACHE__==false)||($__PARAMETERTURBOLEAD_CACHE_LOCK==false)) {
  22. $__PARAMETERTURBOLEAD_ASSOCIATIF_CACHE__=array();
  23. $__PARAMETERTURBOLEAD_INDEX_CACHE__=array();
  24. $requete="select * from turbo_config order by name";
  25. $resultat=$db->sql_query($requete,TRUE);
  26. while($unParam=$db->sql_fetchrow($resultat)) {
  27. $__PARAMETERTURBOLEAD_ASSOCIATIF_CACHE__[$unParam['name']]=$unParam['value'];
  28. $__PARAMETERTURBOLEAD_INDEX_CACHE__[]=$unParam;
  29. }
  30. $__PARAMETERTURBOLEAD_CACHE_LOCK=true;
  31. }
  32. if ($associatif) return $__PARAMETERTURBOLEAD_ASSOCIATIF_CACHE__;
  33. else return $__PARAMETERTURBOLEAD_INDEX_CACHE__;
  34. }
  35. /*
  36. * Nom fonction : HasDroit
  37. * Description : defini les droits de l'utilisateur identifié
  38. * Entrees : $aUser l'utilisateur et $idDroit l'identifiant du droit. Cette
  39. * Sorties : boolean true si l'utilisateur a le droit, false sinon'
  40. * Globales :
  41. * Auteur : F. Royet V: 1.0 le 16/3/2005
  42. * */
  43. function hasDroit(&$aUser,$idDroit) {
  44. global $db;
  45. if (isset($aUser['cache_droit'])) {
  46. if (isset($aUser['cache_droit'][$idDroit])) return true;
  47. return false;
  48. } else {
  49. $cache_droit=array();
  50. $requete="select ref_droit from mod_map_droit_utilisateur where ref_utilisateur=".$aUser['id_utilisateur'];
  51. $resultat=$db->sql_query($requete,TRUE);
  52. while ($tuple=$db->sql_fetchrow($resultat)) {
  53. $cache_droit[$tuple['ref_droit']]=true;
  54. }
  55. $requete="select ref_groupe from mod_map_groupe_utilisateur where ref_utilisateur=".$aUser['id_utilisateur'];
  56. $resultat=$db->sql_query($requete,TRUE);
  57. $lesgroupes=array();
  58. while ($tuple=$db->sql_fetchrow($resultat)) {
  59. $lesgroupes[]=$tuple['ref_groupe'];
  60. }
  61. for($i=0;$i<sizeof($lesgroupes);$i=$i+1) {
  62. $requete="select ref_droit from mod_map_droit_groupe where ref_groupe=".$lesgroupes[$i];
  63. $resultat=$db->sql_query($requete,TRUE);
  64. while ($tuple=$db->sql_fetchrow($resultat)) {
  65. $cache_droit[$tuple['ref_droit']]=true;
  66. }
  67. }
  68. $aUser['cache_droit']=$cache_droit;
  69. if (isset($aUser['cache_droit'][$idDroit])) return true;
  70. return false;
  71. }
  72. }
  73. //----------------------------------------------------------------------------------------------------
  74. /** OBSOLETE: cette fonction est a supprimée des que mod_diderot/lib.php n'y fera plus appel
  75. *
  76. */
  77. function verifierLogin($nom,$motPasse)
  78. {
  79. global $db;
  80. $table="mod_utilisateur"; //on récupère le nom de la table
  81. //on prépare la requète
  82. $requete="select * from ".$table." where mp='".addslashesifnot($motPasse)."' AND nom='".addslashesifnot($nom)."';";
  83. //on exécute la requète
  84. $resultat=$db->sql_query($requete,TRUE);
  85. //on récupère le nombre de tuple:
  86. $nbreTuple=$db->sql_numrows($resultat);
  87. $tuple=$db->sql_fetchrow($resultat);
  88. // si 0 tuple retourne false sinon retourne l'id de l'utilisateur
  89. return ($nbreTuple)?$tuple['id_utilisateur']:false;
  90. }
  91. function addUser(&$aUser) {
  92. global $db;
  93. $User=getAllUserByNom($aUser['nom']);
  94. if (($User!==false )&&(($User["id_utilisateur"]!="") || ($aUser['nom']=="") || ($aUser['mp']=="") ) ) {
  95. return 0;
  96. } else {
  97. $requete=buildInsertRequete("mod_utilisateur",$aUser);
  98. /*$requete="INSERT INTO `mod_utilisateur` ( `id_utilisateur` , `nom` , `mp` , `ref_langue` ) "
  99. . " VALUES ( '', '".addslashesifnot($aUser['nom'])."', '".addslashesifnot($aUser['mp'])."', '".addslashesifnot($aUser['ref_langue'])."' );";
  100. */
  101. $resultat=$db->sql_query($requete,TRUE);
  102. $id = $db->sql_insert_id();
  103. $aUser['id_utilisateur']=$id;
  104. return $id;
  105. }
  106. }
  107. function getUser($id_utilisateur) {
  108. global $db;
  109. $requete="SELECT * FROM mod_utilisateur WHERE id_utilisateur='".addslashesifnot($id_utilisateur)."';";
  110. $resultat=$db->sql_query($requete,TRUE);
  111. $resultat=$db->sql_fetchrow($resultat);
  112. return $resultat;
  113. }
  114. function updateUser(&$aUser) {
  115. global $db;
  116. $User=getAllUserByNom($aUser['nom']);
  117. if (($User["id_utilisateur"]!="")&&($User["id_utilisateur"]!=$aUser["id_utilisateur"]) || ($aUser['nom']=="") || ($aUser['mp']=="") )
  118. return 0;
  119. else {
  120. $requete=buildUpdateRequete("mod_utilisateur",$aUser);
  121. //$requete="UPDATE mod_utilisateur SET nom='".addslashesifnot($aUser['nom'])."', mp='".addslashesifnot($aUser['mp'])."' WHERE id_utilisateur='".addslashesifnot($aUser['id_utilisateur'])."'";
  122. $resultat=$db->sql_query($requete,TRUE);
  123. return true;
  124. }
  125. }
  126. //********************** Gestion de la table module*************************//
  127. /*
  128. Nom fonction : getModuleByCode
  129. Description : recuperer un module logiciel par rapport a son code logiciel
  130. Entrees : $code le code du logiciel (ce sont des constantes prédéfinit dans const.php)
  131. Sorties : $aModule le module qui correpond (false si pas trouvé)
  132. Globales : [$db]
  133. Auteur : F. Royet - 21/12/2006
  134. */
  135. function getModuleByCode($code) {
  136. switch($code) {
  137. case _code_did: return getModuleByNom('mod_diderot');
  138. case _code_idc: return getModuleByNom('mod_idcommerce');
  139. case _code_imo: return getModuleByNom('mod_immobilier');
  140. case _code_dde: return getModuleByNom('mod_dde');
  141. case _code_arc: return getModuleByNom('mod_architecte');
  142. case _code_grh: return getModuleByNom('mod_grh');
  143. case _code_ann: return getModuleByNom('mod_annuaire');
  144. }
  145. return false;
  146. }
  147. /*
  148. Nom fonction : updateModule
  149. Description : modification d'un module (remarque: A FAIRE: ici la vue n'est pas modifiée...)
  150. Entrees : &$aModule
  151. Sorties :
  152. Globales : [$db]
  153. Auteur : F. Royet 19/12/2006 (V2)
  154. */
  155. function updateModule(&$aModule) {
  156. global $db;
  157. if ($aModule['lib_nom']==0) $aModule['_force_lib_nom']=true;
  158. if ($aModule['lib_nom']!="") buildLanguage($aModule); // preparation de l'objet au multilangue
  159. if ($requete=buildUpdateRequete("module",$aModule)) $resultat=$db->sql_query($requete,TRUE);
  160. return $id;
  161. }
  162. function addMapUtilisateurModule($id_user,$id_module,$statut){
  163. global $db;
  164. $requete="insert into map_utilisateur_module (ref_utilisateur,ref_module,statut) values (".$id_user.",".$id_module.",'".$statut."')";
  165. $resultat=$db->sql_query($requete,TRUE);
  166. }
  167. function getMapUtilisateurModule($id_module,$id_utilisateur){
  168. global $db;
  169. $requete="select * from map_utilisateur_module where ref_module=".$id_module." and ref_utilisateur=".$id_utilisateur."";
  170. $res_requete=$db->sql_query($requete,TRUE);
  171. $resultat=$db->sql_fetchrow($res_requete);
  172. return $resultat;
  173. }
  174. function getMapUtilisateurModuleByUtilisateur($id_utilisateur){
  175. global $db;
  176. $requete="select * from map_utilisateur_module,module where map_utilisateur_module.ref_module=id_module and ref_utilisateur=".$id_utilisateur."";
  177. $res_requete=$db->sql_query($requete,TRUE);
  178. $resultat=$db->sql_fetchrow($res_requete);
  179. return $resultat;
  180. }
  181. /*
  182. function getNomModuleByUtilisateur($id_utilisateur){
  183. global $db;
  184. $requete="select nom_module from map_utilisateur_module,module where ref_module=id_module and ref_utilisateur=".$id_utilisateur."";
  185. $res_requete=$db->sql_query($requete,TRUE);
  186. while ($aValue=$db->sql_fetchrow($res_requete)){
  187. $resultat[]=$aValue['nom_module'];
  188. }
  189. return $resultat;
  190. }
  191. */
  192. function getModuleByNom($nom){
  193. global $db;
  194. $aModule=false;
  195. $requete="select id_module from module where nom_module='".$nom."'";
  196. $res_requete=$db->sql_query($requete,TRUE);
  197. if ($aLigne=$db->sql_fetchrow($res_requete)) {
  198. $aModule=getModule($aLigne['id_module']);
  199. }
  200. return $aModule;
  201. }
  202. function UpdateMapUtilisateurModule($id_user,$id_module,$statut){
  203. global $db;
  204. $requete="update map_utilisateur_module set statut='".$statut."' where ref_module=".$id_module." and ref_utilisateur=".$id_user."";
  205. $res_requete=$db->sql_query($requete,TRUE);
  206. }
  207. function getHTMLSelectUser($id_utilisateur=0){
  208. $resultat=getAllUser();
  209. $select="";
  210. $select='<select name="id_utilisateur">';
  211. for ($i=0;$i<sizeof($resultat);$i++){
  212. if ($resultat[$i]['id_utilisateur']==$id_utilisateur) $default="selected";
  213. else $default="";
  214. $select.='<option value="'.$resultat[$i]['id_utilisateur'].'"'.$default.' >'.$resultat[$i]['nom_utilisateur'].' '.$resultat[$i]['prenom'].' : '.$resultat[$i]['nom'].'</option>';
  215. }
  216. $select.='</select>';
  217. return $select;
  218. }
  219. function getNbMapModuleByStatut($id_module,$statut){
  220. global $db;
  221. $requete="select count(*) as nbre from map_utilisateur_module where ref_module=".$id_module." and statut='".$statut."'";
  222. $res_requete=$db->sql_query($requete,TRUE);
  223. $resultat=$db->sql_fetchrow($res_requete);
  224. return $resultat;
  225. }
  226. /*
  227. Nom fonction : isTableExists
  228. Description : verifie si une table existe dans la base
  229. Entrees : $table_name : le nom de la table
  230. Sorties : true si la table existe, false sinon
  231. Globales : [$db]
  232. Auteur :F. Royet V: 1.0 - 18/06/2005
  233. */
  234. function isTableExists($table_name) {
  235. global $db;
  236. $requete="SHOW TABLE STATUS";
  237. $res_requete=$db->sql_query($requete,TRUE);
  238. while ($aValue=$db->sql_fetchrow($res_requete)){
  239. if ($aValue['Name']==$table_name) return true;
  240. }
  241. return false;
  242. }
  243. /*
  244. Nom fonction : isColonneExists
  245. Description : verifie si une colonne dans une table donnee existe
  246. Entrees : $table_name : le nom de la table
  247. Sorties : true si la table existe, false sinon
  248. Globales : [$db]
  249. Auteur :F. Royet V: 1.0 - 18/06/2005
  250. */
  251. function isColonneExists($table_name,$col_name) {
  252. global $db;
  253. $requete="SHOW COLUMNS FROM ".$table_name;
  254. $res_requete=$db->sql_query($requete,TRUE);
  255. while ($aValue=$db->sql_fetchrow($res_requete)){
  256. if ($aValue['Field']==$col_name) return true;
  257. }
  258. return false;
  259. }
  260. /*
  261. Nom fonction : isIndexExists
  262. Description : verifie si un index dans une table donnee existe
  263. Entrees : $table_name : le nom de la table, $index_name: le nom de l'index
  264. Sorties : true si la table existe, false sinon
  265. Globales : [$db]
  266. Auteur :F. Royet V: 1.0 - 18/06/2005
  267. */
  268. function isIndexExists($table_name,$index_name) {
  269. global $db;
  270. $requete="SHOW INDEX FROM ".$table_name;
  271. $res_requete=$db->sql_query($requete,TRUE);
  272. while ($aValue=$db->sql_fetchrow($res_requete)){
  273. if ($aValue['Key_name']==$index_name) return true;
  274. }
  275. return false;
  276. }
  277. /////////////////////////////////////////
  278. /// GESTION DES SESSIONS
  279. /*
  280. Nom fonction : getSessionArchiveAll
  281. Description : recupere toutes les sessions archives
  282. Entrees :
  283. Sorties : $resultat: tableau de session
  284. Globales : [$db]
  285. Auteur : F. Royet V: 1.0 - 21/09/2005
  286. */
  287. function getSessionArchiveAll($whereclause=false) {
  288. global $db;
  289. $tsess=array();
  290. $requete="SELECT * FROM session_archive";
  291. if ($whereclause!=false) $requete.=" ".$whereclause;
  292. $resrequete=$db->sql_query($requete,TRUE);
  293. while($aSession=$db->sql_fetchrow($resrequete)) {
  294. $tsess[]=$aSession;
  295. }
  296. return $tsess;
  297. }
  298. /*
  299. Nom fonction : getSessionArchiveByDate
  300. Description : recupere toutes les sessions archives
  301. Entrees :
  302. Sorties : $resultat: tableau de session
  303. Globales : [$db]
  304. Auteur : F. Royet V: 1.0 - 21/09/2005
  305. */
  306. function getSessionArchiveByDate($debut,$fin,$limit='') {
  307. global $db;
  308. $tsess=array();
  309. $requete="SELECT * FROM session_archive WHERE date_creation>='$debut' and date_creation<='$fin' order by date_creation $limit";
  310. if ($whereclause!=false) $requete.=" ".$whereclause;
  311. $resrequete=$db->sql_query($requete,TRUE);
  312. while($aSession=$db->sql_fetchrow($resrequete)) {
  313. $tsess[]=$aSession;
  314. }
  315. return $tsess;
  316. }
  317. /*
  318. Nom fonction : getDateOfFirstSessionArchive
  319. Description : renvoie la date de la plus ancienne archive
  320. Entrees :
  321. Sorties : une chaine de date: YYYY-MM-JJ HH:MM:SS ou false si pas de session
  322. Globales : [$db]
  323. Auteur : F. Royet V: 1.0 - 21/09/2005
  324. */
  325. function getDateOfFirstSessionArchive() {
  326. global $db;
  327. $requete="SELECT min( date_creation ) AS date_creation FROM session_archive";
  328. $resultat=$db->sql_query($requete,TRUE);
  329. $resultat=$db->sql_fetchrow($resultat);
  330. if ($resultat===false) return false;
  331. return $resultat['date_creation'];
  332. }
  333. /*
  334. Nom fonction : getSessionArchive
  335. Description : recupere une session par son identifiant
  336. Entrees : $id_session_archive identifiant de la session
  337. Sorties : $resultat: la session ou false
  338. Globales : [$db]
  339. Auteur : F. Royet V: 1.0 - 21/09/2005
  340. */
  341. function getSessionArchive($id_session_archive) {
  342. global $db;
  343. $requete="SELECT * FROM session_archive WHERE id_session_archive='".$id_session_archive."'";
  344. $resultat=$db->sql_query($requete,TRUE);
  345. $resultat=$db->sql_fetchrow($resultat);
  346. return $resultat;
  347. }
  348. /*
  349. Nom fonction : getSessionArchiveByKey
  350. Description : recupere une session par son identifiant dynamique
  351. Entrees : $key identifiant dynamique de la session (si $key n'est pas renseigné, prend la clef de la session courante)
  352. Sorties : $resultat: la session ou false
  353. Globales : [$db]
  354. Auteur : F. Royet V: 1.0 - 21/09/2005
  355. */
  356. function getSessionArchiveByKey($key=false)
  357. {
  358. include_once(dirname(__FILE__).'/classes/session/Session.php');
  359. $session = Session::getInstance();
  360. $aSession=$session->getSessionArchive($session->getCurrentSessionArchiveId());
  361. return $aSession;
  362. }
  363. /*
  364. Nom fonction : getSessionArchiveNotClosed
  365. Description : recupere les session qui n'ont pas ete ferme
  366. Entrees :
  367. Sorties : $resultat: la session ou false
  368. Globales : [$db]
  369. Auteur : F. Royet V: 1.0 - 21/09/2005
  370. */
  371. function getSessionArchiveNotClosed() {
  372. global $db;
  373. $tsess=array(); // variable de retour contenant les sessions non fermees
  374. $tPHPSession=getPHPSessionAll();
  375. $keys="'',";
  376. for($i=0;$i<sizeof($tPHPSession);$i++) {
  377. $keys.="'".$tPHPSession[$i]['session_id']."',";
  378. }
  379. $keys=substr($keys,0,-1);
  380. $requete="SELECT id_session_archive FROM session_archive WHERE session_id not in (".$keys.")";
  381. $resultat=$db->sql_query($requete,TRUE);
  382. while($aSession=$db->sql_fetchrow($resultat)) {
  383. $tsess[$aSession['id_session_archive']]=getSessionArchive($aSession['id_session_archive']);
  384. }
  385. return $tsess;
  386. }
  387. /*
  388. Nom fonction : getSessionArchiveFromRobot
  389. Description : recupere les session qui proviennent d'un robot
  390. Entrees :
  391. Sorties : $resultat: la session ou false
  392. Globales : [$db]
  393. Auteur : F. Royet V: 1.0 - 21/09/2005
  394. */
  395. function getSessionArchiveFromRobot() {
  396. global $db;
  397. $tsess=array(); // variable de retour contenant les sessions non fermees
  398. $Where="HTTP_USER_AGENT like '%bot%' and HTTP_USER_AGENT not like '%AdsBot-Google%'";
  399. $keys=substr($keys,0,-1);
  400. $requete="SELECT id_session_archive FROM session_archive WHERE $Where";
  401. $resultat=$db->sql_query($requete,TRUE);
  402. while($aSession=$db->sql_fetchrow($resultat)) {
  403. $tsess[$aSession['id_session_archive']]=getSessionArchive($aSession['id_session_archive']);
  404. }
  405. return $tsess;
  406. }
  407. /*
  408. Nom fonction : deleteSessionArchive
  409. Description : suppression d'une session
  410. Entrees : $id_session_archive
  411. Sorties : true
  412. Globales : [$db]
  413. Auteur : F. Royet V: 1.0 - 21/09/2005
  414. */
  415. function deleteSessionArchive($id_session_archive){
  416. global $db;
  417. deleteSessionPageBySessionArchive($id_session_archive); // destuction des pages associées
  418. $requete="DELETE FROM session_archive WHERE id_session_archive=".$id_session_archive.";";
  419. $resultat=$db->sql_query($requete,TRUE);
  420. return true;
  421. }
  422. function dateStr2Tab(&$strDate) {
  423. list($dd,$hh)=split(' ',$strDate);
  424. $tDate=array();
  425. list($tDate['y'],$tDate['m'],$tDate['d'])=split('-',$dd);
  426. list($tDate['h'],$tDate['i'],$tDate['s'])=split(':',$hh);
  427. $tDate['y']=intval($tDate['y']);
  428. $tDate['m']=intval($tDate['m']);
  429. $tDate['d']=intval($tDate['d']);
  430. $tDate['h']=intval($tDate['h']);
  431. $tDate['i']=intval($tDate['i']);
  432. $tDate['s']=intval($tDate['s']);
  433. return $tDate;
  434. }
  435. function dateStr2Time($strDate) {
  436. $tDate=dateStr2Tab($strDate);
  437. return mktime($tDate['h'],$tDate['i'],$tDate['s'],$tDate['m'],$tDate['d'],$tDate['y']);
  438. }
  439. function _initStatsJour(&$tSessions) {
  440. $aDay=array();
  441. $moteurs=getAllMoteurs();
  442. $duree_moyenne=0;
  443. $nb_page_total=0; // nombre de page vue pour la totalite des sessions
  444. $nb_page_moy=0; // nombre moyen de pages vues par sessions
  445. for($i=0;$i<sizeof($tSessions);$i++) {
  446. $aSession=$tSessions[$i];
  447. $duree=dateStr2Time($aSession['date_last_modified'])-dateStr2Time($aSession['date_creation']);
  448. $duree_moyenne+=$duree;
  449. $nb_page=countSessionPageBySessionArchive($aSession['id_session_archive']);
  450. $nb_page_total+=$nb_page;
  451. // recupration des mots cles
  452. $referer=$aSession['HTTP_REFERER'];
  453. for($j=0;$j<sizeof($moteurs);$j++) {
  454. $aMoteur=$moteurs[$j];
  455. $matches=array();
  456. preg_match($aMoteur['signature'], $referer , $matches); //http://www.google.fr/search?as_q=&num=10&hl=fr&btnG=Recherche+Google&as_epq=&as_oq=je+vous+join&as_eq=&lr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=&safe=images
  457. if (sizeof($matches)>$aMoteur['matcheindice']) {
  458. $keyword=str_replace("-"," ",$matches[$aMoteur['matcheindice']]);
  459. $aDay['k'][]=$aMoteur['nom'].'-'.$keyword;
  460. }
  461. }
  462. }
  463. $aDay['n']=sizeof($tSessions); // nombre total de sessions
  464. $aDay['nps']=$nb_page_total; // nombre total de page vues
  465. if ($aDay['n']>0) {
  466. $aDay['dms']=round($duree_moyenne/$aDay['n']); // duree moyenne des sessions de la journée
  467. $aDay['pms']=round($nb_page_total/$aDay['n']); // nombre moyen de pages vues par session
  468. }
  469. return $aDay;
  470. }
  471. /*
  472. Nom fonction : calculerKeywords
  473. Description : construit la structure des mots clefs avec un jour. La structure des mots clefs devient tres dynamique puisqu'elle correspond
  474. a un periode de temps.
  475. Entrees : $aDay : les infos du jours (mots clefs saisis), $keywords meta structure
  476. Sorties : $keywords la meta structure mot clef modifiées
  477. Globales :
  478. Auteur : F. Royet V: 1.0 - 29/08/2006
  479. */
  480. function calculerKeywords($aDay,&$keywords) {
  481. if (isset($aDay['k'])) {
  482. $taille=sizeof($aDay['k']);
  483. for($i=0;$i<$taille;$i++) {
  484. list($nom_moteur,$keyword)=split('-',$aDay['k'][$i]);
  485. // il faut "arranger" les mots clefs
  486. $search=array('/\s\s+/', // suppression des espaces en trop
  487. '/%([\S,\d]{2})/e',
  488. '/"/',
  489. '/\+/'
  490. );
  491. $replace=array(' ',
  492. "chr(hexdec('\\1'))",
  493. '',
  494. ' '
  495. );
  496. $keyword=preg_replace($search,$replace,$keyword);
  497. if (!isset($keywords[$keyword])) {
  498. $keywords[$keyword]=array();
  499. $keywords[$keyword]['occurence']=0;
  500. $keywords[$keyword]['moteurs']=array();
  501. }
  502. $keywords[$keyword]['occurence']+=1;
  503. if (!isset($keywords[$keyword]['moteurs'][$nom_moteur])) {
  504. $keywords[$keyword]['moteurs'][$nom_moteur]=0;
  505. }
  506. $keywords[$keyword]['moteurs'][$nom_moteur]+=1;
  507. }
  508. }
  509. }
  510. function _initStatistiques(&$CACHE_STATS) {
  511. //ON RENOMME LE FICHIER DE STATS
  512. $url_turbolead=getURLTurbolead();
  513. $url_turbolead.="upload/cache/stats-sessions-days.cac";
  514. if (file_exists($url_turbolead)) {
  515. rename("upload/cache/stats-sessions-days.cac", "upload/cache/stats-sessions-days.stat");
  516. echo "Fichier renommé<br/>";
  517. }
  518. //if (read_cache($cache,'stats-sessions-days.cac')) {
  519. if (read_cache($cache,'stats-sessions-days.stat')) {
  520. $CACHE_STATS=$cache; // mettre les stats dans la memoire cache (en RAM)
  521. } else {
  522. $CACHE_STATS=array();
  523. $CACHE_STATS['last_date']=false; // tous les elements avant cette date sont en caches
  524. $CACHE_STATS['internet']=array(); // tableau indexe des annees: chaque annees
  525. $CACHE_STATS['keywords']=array(); // mots clef
  526. }
  527. // calcul les stats du dernier jours ne se trouvant pas dans le cache
  528. // lorsque le jour correspond a la date du jour, le cache du dernier jour est systematiquement reconstitué
  529. // les données de la date du jour ne sont pas prises en compte dans les moyennes
  530. if ($CACHE_STATS['last_date']==false) { // le cache est il vide ?
  531. //$tSessions=getSessionArchiveByDate('0000-00-00 00:00:00','3000-00-00 00:00:00','limit 1');
  532. $CACHE_STATS['last_date']=getDateOfFirstSessionArchive();
  533. /*if ($tSessions) $CACHE_STATS['last_date']=$tSessions[0]['date_creation'];
  534. else $CACHE_STATS['last_date']=date('Y-m-d').' 00:00:00'; // normalement c'est la date de jour a 0 heure
  535. */
  536. // Remarque: s'il y a une date d'archive plus ancienne, il faut la prendre en compte
  537. $info=lireArchive('session','info'); // recuperation des infos sur la toutes premiere archive (la plus ancienne)
  538. if ($info!==false) {
  539. $t_info=dateStr2Time($info['first'].' 00:00:00');
  540. $t_ld=dateStr2Time($CACHE_STATS['last_date']);
  541. if ($t_info<$t_ld) {
  542. $CACHE_STATS['last_date']=$info['first'].' 00:00:00';
  543. }
  544. }
  545. }
  546. $debut=$CACHE_STATS['last_date'];
  547. $tDebut=dateStr2Tab($debut);
  548. $d_jour=date('d');
  549. $m_jour=date('m');
  550. $y_jour=date('Y');
  551. $time_jour=mktime(0,0,0,$m_jour,$d_jour+1,$y_jour);
  552. $time_debut=dateStr2Time($debut);
  553. $time_fin=mktime(0,0,0,$tDebut['m'],$tDebut['d']+1,$tDebut['y']);
  554. $time_dernier_jour_mois=mktime(0,0,0,$m_jour+1,1,$y_jour);
  555. $_i=0; // compteur d'iteration..
  556. while($time_fin<=$time_dernier_jour_mois) {
  557. $fin=date('Y-m-d H:i:s',$time_fin);
  558. //echo "($fin<=".date('Y-m-d H:i:s',$time_jour).")";
  559. if ($time_fin<=$time_jour) {
  560. $tSessionsDay=getSessionArchiveByDate($debut,$fin,'');
  561. if (sizeof($tSessionsDay)>0) { // si on trouve des sessions corespondant au jour dans la base alors on les transforme en $aDay
  562. $aDay=_initStatsJour($tSessionsDay); //,$CACHE_STATS['keywords']);
  563. } else { // si pas de session dans la base on essaie de recuperer une archive
  564. $aDay=lireArchive('session',$tDebut['y'].'-'.$tDebut['m'].'-'.$tDebut['d']);
  565. if ($aDay==false) { // si pas d'archive dans la base, en desespoir de cause, construction de $aDay avec un tableau vide de session
  566. $aDay=_initStatsJour($tSessionsDay); //
  567. }
  568. }
  569. } else $aDay=array(); // on complete les dernieres valeurs du mois
  570. $CACHE_STATS['internet'][$tDebut['y']][$tDebut['m']][$tDebut['d']]=$aDay;
  571. $_i++; // sauve le cache de temps en temps : utile pour les sites tres long
  572. if (($_i%10)==0) {
  573. $CACHE_STATS['last_date']=$fin;
  574. //write_cache($CACHE_STATS,'stats-sessions-days.cac');
  575. write_cache($CACHE_STATS,'stats-sessions-days.stat');
  576. }
  577. $time_debut=$time_fin;
  578. $debut=date('Y-m-d H:i:s',$time_debut);
  579. $tDebut=dateStr2Tab($debut);
  580. //$time_fin+=86400;
  581. $time_fin=mktime(0,0,0,$tDebut['m'],$tDebut['d']+1,$tDebut['y']);
  582. }
  583. $current_hour=mktime(date('H'),0,0,$m_jour,$d_jour,$y_jour);
  584. if (!isset($CACHE_STATS['derniere_168heures'])) { // cache d'heure en heure: il y a un decalage toutes les nouvelles heures (current) pour l'heure en cours
  585. $CACHE_STATS['derniere_168heures']['current']=$current_hour;
  586. $CACHE_STATS['derniere_168heures']['h']=array();
  587. $time_fin=$current_hour-167*3600;
  588. for($i=0;$i<168;$i++) {
  589. $time_debut=$time_fin;
  590. $time_fin+=3600;
  591. $debut=date('Y-m-d H:i:s',$time_debut);
  592. $fin=date('Y-m-d H:i:s',$time_fin);
  593. $tSessionsDay=getSessionArchiveByDate($debut,$fin,'');
  594. $CACHE_STATS['derniere_168heures']['h'][$i]=sizeof($tSessionsDay);
  595. }
  596. }
  597. if ($current_hour>$CACHE_STATS['derniere_168heures']['current']) { // il faut faire le decalage
  598. $CACHE_STATS['derniere_168heures']['current']=$current_hour;
  599. for($i=0;$i<167;$i++) $CACHE_STATS['derniere_168heures']['h'][$i]=$CACHE_STATS['derniere_168heures']['h'][$i+1];
  600. $time_debut=$current_hour;
  601. $time_fin=$time_debut+3600;
  602. $debut=date('Y-m-d H:i:s',$time_debut);
  603. $fin=date('Y-m-d H:i:s',$time_fin);
  604. $tSessionsDay=getSessionArchiveByDate($debut,$fin,'');
  605. $CACHE_STATS['derniere_168heures']['h'][167]=sizeof($tSessionsDay);
  606. }
  607. $CACHE_STATS['last_date']=date('Y-m-d 00:00:00');
  608. //write_cache($CACHE_STATS,'stats-sessions-days.cac');
  609. write_cache($CACHE_STATS,'stats-sessions-days.stat');
  610. }
  611. /*
  612. Nom fonction : statisticsSessionArchive
  613. Description : prepare une image representant les statistiques ainsi qu'une meta structure de mots clefs
  614. Entrees : $type (type de statistiques : periodicite annuelle, mensuelle...), $keywords meta strcuture des mots clefs
  615. Sorties : $keywords la meta structure mot clef modifiées
  616. Globales :
  617. Auteur : F. Royet V: 1.0 - 29/08/2006
  618. */
  619. function statisticsSessionArchive($type,&$keywords) {
  620. include_once(dirname(__FILE__).'/classes/graph/Graphe.php');
  621. $CACHE_STATS=array();
  622. _initStatistiques($CACHE_STATS);
  623. $nom_mois=array('1'=>'Janvier','2'=>'Fevrier','3'=>'Mars','4'=>'Avril','5'=>'Mai','6'=>'Juin','7'=>'Juillet','8'=>'Aout','9'=>'Septembre','10'=>'Octobre','11'=>'Novembre','12'=>'Decembre');
  624. $couleur=6;
  625. $data=array();
  626. $data_lib=array();
  627. if ($type==__statistiques_mensuelles) {
  628. /*$chart = new VerticalChart(600,400);
  629. $chart->setLabelMarginLeft(40);
  630. $chart->setLabelMarginRight(20);
  631. $chart->setLabelMarginTop(10);
  632. $chart->setLabelMarginBottom(40);*/
  633. $chart = new Graphe(600,400,'vertical');
  634. $chart->addSerie("","0,255,0");
  635. $nb_item=0;
  636. $item_max=5;
  637. $filename="statmois.png";
  638. $ANNEE=intval(date('Y'));
  639. $MOIS=intval(date('m'));
  640. $titre="Sessions du mois en cours:".$nom_mois[$MOIS];
  641. $label_ordonnees="Nombre de sessions";
  642. $label_abscisses="Jours";
  643. $jour=0;
  644. $mois=$CACHE_STATS['internet'][$ANNEE][$MOIS];
  645. foreach($mois as $jour => $aDay) {
  646. if (isset($aDay['n'])) {
  647. $valeur=$aDay['n'];
  648. calculerKeywords($aDay,$keywords);
  649. }
  650. else $valeur=0;
  651. $chart->addPoint($jour, $valeur);
  652. $jour++;
  653. }
  654. $chart->setTitre($titre); //$aStat['titre']);
  655. $affichage='<img src="'.$chart->render($filename).'" alt="" />';
  656. }
  657. if ($type==__statistiques_annee) {
  658. /*$chart = new VerticalChart(600,400);
  659. $chart->setLabelMarginLeft(40);
  660. $chart->setLabelMarginRight(20);
  661. $chart->setLabelMarginTop(10);
  662. $chart->setLabelMarginBottom(50);*/
  663. $chart = new Graphe(600,400,'vertical');
  664. $chart->addSerie("","0,255,0");
  665. $nb_item=0;
  666. $item_max=5;
  667. $filename="statannee.png";
  668. $titre="Sessions de l'annee en cours:".date('Y');
  669. $label_ordonnees="Nombre de sessions";
  670. $label_abscisses="Mois";
  671. $ANNEE=intval(date('Y'));
  672. $jour=0;
  673. $dernier_mois=date('m');
  674. for($i=1;$i<=$dernier_mois;$i++) {
  675. $mois=$CACHE_STATS['internet'][$ANNEE][$i];
  676. $nb_session=0;
  677. if (is_array($mois)) {
  678. foreach($mois as $jour => $aDay) {
  679. calculerKeywords($aDay,$keywords);
  680. if (isset($aDay['n'])) $nb_session+=$aDay['n'];
  681. }
  682. }
  683. $chart->addPoint($nom_mois[$i], $nb_session);
  684. }
  685. for($i=$dernier_mois+1;$i<=12;$i++) $chart->addPoint($nom_mois[$i], 0);
  686. $chart->setTitre($titre); //$aStat['titre']);
  687. $affichage='<img src="'.$chart->render($filename).'" alt="" />';
  688. $affichage2="";
  689. $ANNEE_LAST=$ANNEE;
  690. foreach($CACHE_STATS['internet'] as $ANNEE => $tAnnee) {
  691. if ($ANNEE==$ANNEE_LAST) break;
  692. unset($chart);
  693. /*$chart = new VerticalChart(300,200);
  694. $chart->setLabelMarginLeft(50);
  695. $chart->setLabelMarginRight(20);
  696. $chart->setLabelMarginTop(10);
  697. $chart->setLabelMarginBottom(50);*/
  698. $chart = new Graphe(300,200,'vertical');
  699. $chart->addSerie("","50,255,50");
  700. for($i=1;$i<=12;$i++) {
  701. if (!isset($tAnnee[$i])) { // le mois peut ne pas exister
  702. $nb_session=0;
  703. } else { // dans le cas ou le mois existe
  704. $mois=$tAnnee[$i];
  705. $nb_session=0;
  706. foreach($mois as $jour => $aDay) {
  707. if (isset($aDay['n'])) $nb_session+=$aDay['n'];
  708. calculerKeywords($aDay,$keywords);
  709. }
  710. }
  711. $chart->addPoint($nom_mois[$i], $nb_session);
  712. }
  713. $chart->setTitre(''.$ANNEE);
  714. $filename="statannee".$ANNEE.".png";
  715. $affichage2='<img src="'.$chart->render($filename).'" alt="" />';
  716. }
  717. $affichage.="<br /><br />".$affichage2;
  718. }
  719. if ($type==__statistiques_30jours) {
  720. /*$chart = new VerticalChart(600,400);
  721. $chart->setLabelMarginLeft(40);
  722. $chart->setLabelMarginRight(20);
  723. $chart->setLabelMarginTop(10);
  724. $chart->setLabelMarginBottom(40);*/
  725. $chart = new Graphe(600,400,'vertical');
  726. $chart->addSerie("","0,255,0");
  727. $nb_item=0;
  728. $item_max=5;
  729. $filename="stat30j.png";
  730. $ANNEE=intval(date('Y'));
  731. $MOIS=intval(date('m'));
  732. $JOUR=intval(date('d'));
  733. $titre="statistiques des 30 derniers jours";
  734. $label_ordonnees="Nombre de sessions";
  735. $label_abscisses="Jours";
  736. $jour=0;
  737. $nb_j=30; // nombre de jour a afficher
  738. $valeurs=array();
  739. $aDay=$CACHE_STATS['internet'][$ANNEE][$MOIS][$JOUR];
  740. for($i=0;$i<$nb_j;$i++) {
  741. calculerKeywords($aDay,$keywords);
  742. if (isset($aDay['n'])) $valeurs[$i]['n']=$aDay['n'];
  743. else $valeurs[$i]['n']=0;
  744. if ($JOUR<=0) {
  745. $MOIS--;
  746. if ($MOIS<=0) {
  747. $MOIS=12;
  748. $ANNEE--;
  749. }
  750. $JOUR=sizeof($CACHE_STATS['internet'][$ANNEE][$MOIS]);
  751. }
  752. $valeurs[$i]['date']="$JOUR/$MOIS";
  753. $JOUR--;
  754. $aDay=$CACHE_STATS['internet'][$ANNEE][$MOIS][$JOUR];
  755. }
  756. for($i=$nb_j-1;$i>=0;$i--) $chart->addPoint($valeurs[$i]['date'], $valeurs[$i]['n']);
  757. $chart->setTitre($titre); //$aStat['titre']);
  758. $affichage='<img src="'.$chart->render($filename).'" alt="" />';
  759. }
  760. if ($type==__statistiques_24h) {
  761. /*$chart = new VerticalChart(600,400);
  762. $chart->setLabelMarginLeft(40);
  763. $chart->setLabelMarginRight(20);
  764. $chart->setLabelMarginTop(10);
  765. $chart->setLabelMarginBottom(40);*/
  766. $chart = new Graphe(600,400,'vertical');
  767. $chart->addSerie("","0,255,0");
  768. $nb_item=0;
  769. $item_max=5;
  770. $filename="stat24h.png";
  771. $nb_h=24;
  772. for($i=0;$i<$nb_h-1;$i++) {
  773. $lib_heure=date('H\h/d',mktime(date('H')-$nb_h+1+$i,0,0));
  774. $chart->addPoint($lib_heure, $CACHE_STATS['derniere_168heures']['h'][$i+168-$nb_h]);
  775. }
  776. $chart->setTitre('Statistiques des 24 dernieres heures');
  777. $affichage='<img src="'.$chart->render($filename).'" alt="" />';
  778. $ANNEE=intval(date('Y'));
  779. $MOIS=intval(date('m'));
  780. $JOUR=intval(date('d'));
  781. $aDay=$CACHE_STATS['internet'][$ANNEE][$MOIS][$JOUR];
  782. calculerKeywords($aDay,$keywords);
  783. }
  784. return $affichage;
  785. }
  786. /*
  787. Nom fonction : getSessionPage
  788. Description : recupere une page de session
  789. Entrees : $id_session_page identifiant de la page
  790. Sorties : $resultat: la page ou false
  791. Globales : [$db]
  792. Auteur : F. Royet V: 1.0 - 21/09/2005
  793. */
  794. function getSessionPage($id_session_page) {
  795. global $db;
  796. $requete="SELECT * FROM session_page WHERE id_session_page='".$id_session_page."'";
  797. $resultat=$db->sql_query($requete,TRUE);
  798. $resultat=$db->sql_fetchrow($resultat);
  799. return $resultat;
  800. }
  801. /*
  802. Nom fonction : getSessionPageAll
  803. Description : recupere toutes les sessions pages
  804. Entrees :
  805. Sorties : $resultat: tableau de session
  806. Globales : [$db]
  807. Auteur : F. Royet V: 1.0 - 21/09/2005
  808. */
  809. function getSessionPageAll() {
  810. global $db;
  811. $tsess=array();
  812. $requete="SELECT * FROM session_page";
  813. $resrequete=$db->sql_query($requete,TRUE);
  814. while($aSession=$db->sql_fetchrow($resrequete)) {
  815. $tsess[]=$aSession;
  816. }
  817. return $tsess;
  818. }
  819. /*
  820. Nom fonction : getSessionPageBySessionArchive
  821. Description : recupere toutes les pages d'une session
  822. Entrees : $id_session_archive identifiant de la session
  823. Sorties : $resultat: un tableau de pages
  824. Globales : [$db]
  825. Auteur : F. Royet V: 1.0 - 21/09/2005
  826. */
  827. function getSessionPageBySessionArchive($id_session_archive) {
  828. global $db;
  829. $tsess=array();
  830. $requete="SELECT * FROM session_page WHERE ref_session_archive=".$id_session_archive." order by date_creation desc";
  831. $resrequete=$db->sql_query($requete,TRUE);
  832. while($aSession=$db->sql_fetchrow($resrequete)) {
  833. $tsess[]=$aSession;
  834. }
  835. return $tsess;
  836. }
  837. /*
  838. Nom fonction : countSessionPageBySessionArchive
  839. Description : compte le nombre de page d'une session
  840. Entrees : $id_session_archive identifiant de la session
  841. Sorties : le nombre de page (ou false si probleme)
  842. Globales : [$db]
  843. Auteur : F. Royet V: 1.0 - 28/08/2006
  844. */
  845. function countSessionPageBySessionArchive($id_session_archive) {
  846. global $db;
  847. $requete="SELECT count(id_session_page) as valeur FROM session_page WHERE ref_session_archive=".$id_session_archive;
  848. $resrequete=$db->sql_query($requete,TRUE);
  849. $count=$db->sql_fetchrow($resrequete);
  850. if ($count!=false) return $count['valeur'];
  851. return false;
  852. }
  853. /*
  854. Nom fonction : deleteSessionPage
  855. Description : suppression d'une page
  856. Entrees : $id_session_page
  857. Sorties : true
  858. Globales : [$db]
  859. Auteur : F. Royet V: 1.0 - 21/09/2005
  860. */
  861. function deleteSessionPage($id_session_page){
  862. global $db;
  863. $requete="DELETE FROM session_page WHERE id_session_page=".$id_session_page.";";
  864. $resultat=$db->sql_query($requete,TRUE);
  865. return true;
  866. }
  867. /*
  868. Nom fonction : deleteSessionPageBySessionArchive
  869. Description : suppression de toutes les pages
  870. Entrees : $id_session_archive
  871. Sorties : true
  872. Globales : [$db]
  873. Auteur : F. Royet V: 1.0 - 21/09/2005
  874. */
  875. function deleteSessionPageBySessionArchive($id_session_archive){
  876. global $db;
  877. $requete="DELETE FROM session_page WHERE ref_session_archive=".$id_session_archive.";";
  878. $resultat=$db->sql_query($requete,TRUE);
  879. return true;
  880. }
  881. /*
  882. Nom fonction : addSessionPage
  883. Description : ajout d'une page session. La page est construite, seule l'id de session archive est necessaire
  884. Entrees : $id_session_archive
  885. Sorties : $id
  886. Globales : [$db]
  887. Auteur : F. Royet V: 1.0 - 3/08/2005
  888. */
  889. function addSessionPage($id_session_archive) {
  890. global $db;
  891. $aPage=array();
  892. $aPage['ref_session_archive']=$id_session_archive;
  893. $aPage['date_creation']=date("Y-m-d H:i:s");
  894. $aPage['SERVER_NAME']=$_SERVER['SERVER_NAME'];
  895. $aPage['SERVER_PORT']=$_SERVER['SERVER_PORT'];
  896. $aPage['REQUEST_METHOD']=$_SERVER['REQUEST_METHOD'];
  897. $aPage['QUERY_STRING']=$_SERVER['QUERY_STRING'];
  898. $aPage['REQUEST_URI']=$_SERVER['REQUEST_URI'];
  899. $aPage['SCRIPT_NAME']=$_SERVER['SCRIPT_NAME'];
  900. $aPage['REDIRECT_STATUS']=$_SERVER['REDIRECT_STATUS'];
  901. $aPage['REDIRECT_URL']=$_SERVER['REDIRECT_URL'];
  902. $requete=buildInsertRequete("session_page",$aPage);
  903. $resultat=$db->sql_query($requete,TRUE);
  904. $id = $db->sql_insert_id();
  905. $aPage['id_session_archive']=$id;
  906. return $id;
  907. }
  908. /*
  909. Nom fonction : getStatisticKeywords
  910. Description : renvoi les statistiques de recherche par mot clef en fonction des moteurs de recherches
  911. Entrees :
  912. Sorties : $keywords: tableau associatif de mots clef (la clef du tableau est le mot clef)
  913. $keywords[keyword] le mots clef chaine
  914. $keywords[keyword]['occurence'] le nombre de fois ou ce mots clef est apparu
  915. $keywords[keyword]['moteurs'] array de moteurs
  916. $keywords[keyword]['moteurs']['google.fr'] nombre d'occurence pour le moteur google.fr
  917. Globales : [$db]
  918. Auteur : F. Royet V: 1.0 - 3/08/2005
  919. */
  920. // recuperation de tous les moteurs de recherche
  921. function getAllMoteurs() {
  922. $moteurs=array();
  923. $aMoteur['nom']="google.fr";
  924. $aMoteur['url']="www.google.fr";
  925. $aMoteur['signature']="/google\.fr.*search.*(&as_oq=|&q=|\?q=|\?as_oq=)+([+%a-zA-Z0-9-]*).*/"; //http://www.google.fr/search?sourceid=navclient&hl=fr&ie=UTF-8&rls=DVXA,DVXA:2005-12,DVXA:fr&q=circa+lopez
  926. $aMoteur['matcheindice']=2; // est identique au nombre de parentheses (**) de la signature
  927. $moteurs[]=$aMoteur;
  928. $aMoteur['nom']="google.be";
  929. $aMoteur['url']="www.google.be";
  930. $aMoteur['signature']="/google\.be.*search.*(&as_oq=|&q=|\?q=|\?as_oq=)+([+%a-zA-Z0-9-]*).*/";
  931. $aMoteur['matcheindice']=2;
  932. $moteurs[]=$aMoteur;
  933. $aMoteur['nom']="google.ch";
  934. $aMoteur['url']="www.google.ch";
  935. $aMoteur['signature']="/google\.ch.*search.*(&as_oq=|&q=|\?q=|\?as_oq=)+([+%a-zA-Z0-9-]*).*/";
  936. $aMoteur['matcheindice']=2;
  937. $moteurs[]=$aMoteur;
  938. $aMoteur['nom']="msn.fr";
  939. $aMoteur['url']="www.msn.fr";
  940. $aMoteur['signature']="/msn\.fr.*results.*(&q=|\?q=)+([+%a-zA-Z0-9-]*).*/"; // ex http://search.msn.fr/results.aspx?q=+montres+nixon&FORM=QBRE&lf=1&X=1
  941. $aMoteur['matcheindice']=2;
  942. $moteurs[]=$aMoteur;
  943. $aMoteur['nom']="msn.ca";
  944. $aMoteur['url']="www.msn.ca";
  945. $aMoteur['signature']="/msn\.ca.*results.*(&q=|\?q=)+([+%a-zA-Z0-9-]*).*/"; // ex: http://search.sympatico.msn.ca/results.aspx?q=dvs+stratos+white+leather&cp=1252&first=11&FORM=PORE
  946. $aMoteur['matcheindice']=2;
  947. $moteurs[]=$aMoteur;
  948. $aMoteur['nom']="altavista.com";
  949. $aMoteur['url']="www.altavista.com";
  950. $aMoteur['signature']="/altavista\.com.*results.*(&q=|\?q=)+([+%a-zA-Z0-9-]*).*/"; //http://www.altavista.com/image/results?q=OSIRIS+TRAP&mik=photo&mik=graphic&mip=all&mis=all&miwxh=all
  951. $aMoteur['matcheindice']=2;
  952. $moteurs[]=$aMoteur;
  953. $aMoteur['nom']="yahoo.com";
  954. $aMoteur['url']="www.yahoo.com";
  955. $aMoteur['signature']="/search\.yahoo\.com.*search.*(&p=|\?p=)+([+%a-zA-Z0-9-]*).*/"; //http://fr.search.yahoo.com/search?p=eastpack&prssweb=Rechercher&ei=UTF-8&fr=fp-tab-web-t-1&fl=0&vc=countryFR&x=wrt&meta=vl%3D
  956. $aMoteur['matcheindice']=2;
  957. $moteurs[]=$aMoteur;
  958. $aMoteur['nom']="vizsla24.hu";
  959. $aMoteur['url']="www.vizsla24.hu";
  960. $aMoteur['signature']="/search\.vizsla24\.hu.*(&q=|\?q=)+([+%a-zA-Z0-9-]*).*/"; //http://fr.search.yahoo.com/search?p=eastpack&prssweb=Rechercher&ei=UTF-8&fr=fp-tab-web-t-1&fl=0&vc=countryFR&x=wrt&meta=vl%3D
  961. $aMoteur['matcheindice']=2;
  962. $moteurs[]=$aMoteur;
  963. return $moteurs;
  964. }
  965. function getStatisticKeywords() {
  966. _initStatistiques($CACHE_STATS);
  967. return $CACHE_STATS['keywords'];
  968. }
  969. /*
  970. Nom fonction : getIDModule
  971. Description : recuperation des identifiants des modules
  972. Entrees : $module: le nom du module (chaine)
  973. Sorties : valeur numérique du module
  974. Globales : [$db]
  975. Auteur : F. Royet V: 1.0 - 21/12/2005
  976. */
  977. function getIDModule($module) {
  978. if ($module=='diderot') return _code_did;
  979. if ($module=='idcommerce') return _code_idc;
  980. if ($module=='immobilier') return _code_imo;
  981. if ($module=='dde') return _code_dde;
  982. if ($module=='architecte') return _code_arc;
  983. if ($module=='annuaire') return _code_ann;
  984. if ($module=='grh') return _code_grh;
  985. }
  986. function getAllNomModuleByCode() {
  987. $lesModules=array();
  988. $lesModules[_code_did]='mod_diderot';
  989. $lesModules[_code_idc]='mod_idcommerce';
  990. $lesModules[_code_imo]='mod_immobilier';
  991. $lesModules[_code_dde]='mod_dde';
  992. $lesModules[_code_arc]='mod_architecte';
  993. $lesModules[_code_ann]='mod_annuaire';
  994. $lesModules[_code_grh]='mod_grh';
  995. return $lesModules;
  996. }
  997. function AddAssocObjet(&$aObjet){
  998. global $db;
  999. $requete=buildInsertRequete("assoc_objet",$aObjet);
  1000. $resultat=$db->sql_query($requete,TRUE);
  1001. }
  1002. function delAssocObjet(&$aObjet){
  1003. global $db;
  1004. $requete="delete from assoc_objet where ref_objet1=".$aObjet['ref_objet1']." and ref_objet2=".$aObjet['ref_objet2']." and type_lien=".$aObjet['type_lien']."";
  1005. $resultat=$db->sql_query($requete,TRUE);
  1006. }
  1007. function delAllAssocObjet($objet1,$type_lien){
  1008. global $db;
  1009. $requete="delete from assoc_objet where ref_objet1=".$objet1." and type_lien=".$type_lien;
  1010. $resultat=$db->sql_query($requete,TRUE);
  1011. }
  1012. function getObjet2ByObjet1($id_objet1,$type_lien){
  1013. global $db;
  1014. if(existeIdcommerce_v3()){
  1015. include_once(dirname(__FILE__).'/mod/idcommerce/model/FamilleHome.php');
  1016. $homeFamille=&FamilleHome::getInstance('FamilleHome');
  1017. $lesObjets=$homeFamille->getMapProduitFamilleByProduit($id_objet1);
  1018. }else{
  1019. $lesObjets=array();
  1020. $requete="select * from assoc_objet where ref_objet1=".$id_objet1." and type_lien=".$type_lien;
  1021. //echo "<br>1 ".$requete."<br>";
  1022. $resultat=$db->sql_query($requete,TRUE);
  1023. while ($ligne=$db->sql_fetchrow($resultat)) {
  1024. $lesObjets[$ligne['ref_objet2']]=$ligne;
  1025. }
  1026. }
  1027. return $lesObjets;
  1028. }
  1029. function getObjet1ByObjet2($id_objet2,$type_lien){
  1030. global $db;
  1031. if(existeIdcommerce_v3()){
  1032. include_once(dirname(__FILE__).'/mod/idcommerce/model/ProduitHome.php');
  1033. $homeProduit=&ProduitHome::getInstance('ProduitHome');
  1034. $lesObjets=array();
  1035. $lesObjets=$homeProduit->getMapProduitFamilleByFamille($id_objet2);
  1036. }else{
  1037. $lesObjets=array();
  1038. $requete="select * from assoc_objet where ref_objet2=".$id_objet2." and type_lien=".$type_lien;
  1039. //echo "<br>2 ".$requete."<br>";
  1040. $resultat=$db->sql_query($requete,TRUE);
  1041. while ($ligne=$db->sql_fetchrow($resultat)) {
  1042. $lesObjets[$ligne['ref_objet1']]=$ligne;
  1043. }
  1044. }
  1045. return $lesObjets;
  1046. }
  1047. function getObjet1ByIDSObjet2($str_ids_objet2,$type_lien) {
  1048. global $db;
  1049. if(existeIdcommerce_v3()){
  1050. include_once(dirname(__FILE__).'/mod/idcommerce/model/ProduitHome.php');
  1051. $homeProduit=&ProduitHome::getInstance('ProduitHome');
  1052. $lesObjets=array();
  1053. $lesObjets=$homeProduit->getMapProduitFamilleByIdFamille($str_ids_objet2);
  1054. }else{
  1055. $lesObjets=array();
  1056. $requete="select * from assoc_objet where ref_objet2 in (".$str_ids_objet2.") and type_lien=".$type_lien;
  1057. //echo "<br>3 ".$requete."<br>";
  1058. $resultat=$db->sql_query($requete,TRUE);
  1059. while ($ligne=$db->sql_fetchrow($resultat)) {
  1060. $lesObjets[$ligne['ref_objet1']]=$ligne;
  1061. }
  1062. }
  1063. return $lesObjets;
  1064. }
  1065. function createWebsiteGroupeArray() {
  1066. $lesGroupes=array();
  1067. $groupe=array();
  1068. $groupe['id_groupe']=__id_groupe_turbo_webmaster;
  1069. $groupe['ref_parent']=__id_groupe_mod_turbolead;
  1070. $groupe['nom']=array();
  1071. $groupe['lib_nom']="__id_groupe_turbo_webmaster";
  1072. $groupe['nom'][1]="Gestion des pages du site (Webmaster)";
  1073. $lesGroupes[$groupe['id_groupe']]=$groupe;
  1074. $groupe=array();
  1075. $groupe['id_groupe']=__id_groupe_turbo_ecrivain;
  1076. $groupe['ref_parent']=__id_groupe_turbo_webmaster;
  1077. $groupe['nom']=array();
  1078. $groupe['lib_nom']="__id_groupe_turbo_ecrivain";
  1079. $groupe['nom'][1]="Ecrivain : peut modifier le contenu des pages";
  1080. $lesGroupes[$groupe['id_groupe']]=$groupe;
  1081. $groupe=array();
  1082. $groupe['id_groupe']=__id_groupe_turbo_redacteur;
  1083. $groupe['ref_parent']=__id_groupe_turbo_webmaster;
  1084. $groupe['nom']=array();
  1085. $groupe['lib_nom']="__id_groupe_turbo_redacteur";
  1086. $groupe['nom'][1]="Redacteur : creer des pages dans un site, choix d'un modele";
  1087. $lesGroupes[$groupe['id_groupe']]=$groupe;
  1088. $groupe=array();
  1089. $groupe['id_groupe']=__id_groupe_turbo_editeur;
  1090. $groupe['ref_parent']=__id_groupe_turbo_webmaster;
  1091. $groupe['nom']=array();
  1092. $groupe['lib_nom']="__id_groupe_turbo_editeur";
  1093. $groupe['nom'][1]="Editeur: creer des sites, envoi FTP";
  1094. $lesGroupes[$groupe['id_groupe']]=$groupe;
  1095. $groupe=array();
  1096. $groupe['id_groupe']=__id_groupe_turbo_graphiste;
  1097. $groupe['ref_parent']=__id_groupe_turbo_webmaster;
  1098. $groupe['nom']=array();
  1099. $groupe['lib_nom']="__id_groupe_turbo_graphiste";
  1100. $groupe['nom'][1]="Graphiste: creer des modeles, creer des themes";
  1101. $lesGroupes[$groupe['id_groupe']]=$groupe;
  1102. $groupe=array();
  1103. $groupe['id_groupe']=__id_groupe_turbo_configurateur;
  1104. $groupe['ref_parent']=__id_groupe_turbo_webmaster;
  1105. $groupe['nom']=array();
  1106. $groupe['lib_nom']="__id_groupe_turbo_configurateur";
  1107. $groupe['nom'][1]="Configurateur: configure FTP, theme de base";
  1108. $lesGroupes[$groupe['id_groupe']]=$groupe;
  1109. return $lesGroupes;
  1110. }
  1111. function createWebsiteDroitArray() {
  1112. $lesDroits=array();
  1113. $droit=array();
  1114. $droit['id_droit']=__id_droit_turbo_acces_module;
  1115. $droit['nom']=array();
  1116. $droit['lib_nom']="";
  1117. $droit['nom'][1]="__id_droit_turbo_acces_module";
  1118. $droit['lib_description']="";
  1119. $droit['description'][1]="Acces aux fonctionnalites Website";
  1120. $lesDroits[$droit['id_droit']]=$droit;
  1121. $droit=array();
  1122. $droit['id_droit']=__id_droit_turbo_gestion_page;
  1123. $droit['nom']=array();
  1124. $droit['lib_nom']="";
  1125. $droit['nom'][1]="__id_droit_turbo_gestion_page";
  1126. $droit['lib_description']="";
  1127. $droit['description'][1]="Gestion des pages";
  1128. $lesDroits[$droit['id_droit']]=$droit;
  1129. $droit=array();
  1130. $droit['id_droit']=__id_droit_turbo_contenu_page;
  1131. $droit['nom']=array();
  1132. $droit['lib_nom']="";
  1133. $droit['nom'][1]="__id_droit_turbo_contenu_page";
  1134. $droit['lib_description']="";
  1135. $droit['description'][1]="modifier le contenu d'une page";
  1136. $lesDroits[$droit['id_droit']]=$droit;
  1137. $droit=array();
  1138. $droit['id_droit']=__id_droit_turbo_creer_page;
  1139. $droit['nom']=array();
  1140. $droit['lib_nom']="";
  1141. $droit['nom'][1]="__id_droit_turbo_creer_page";
  1142. $droit['lib_description']="";
  1143. $droit['description'][1]="creer, supprimer une page";
  1144. $lesDroits[$droit['id_droit']]=$droit;
  1145. $droit=array();
  1146. $droit['id_droit']=__id_droit_turbo_choixmodele_page;
  1147. $droit['nom']=array();
  1148. $droit['lib_nom']="";
  1149. $droit['nom'][1]="__id_droit_turbo_choixmodele_page";
  1150. $droit['lib_description']="";
  1151. $droit['description'][1]="choisir un modele pour une page";
  1152. $lesDroits[$droit['id_droit']]=$droit;
  1153. $droit=array();
  1154. $droit['id_droit']=__id_droit_turbo_creer_website;
  1155. $droit['nom']=array();
  1156. $droit['lib_nom']="";
  1157. $droit['nom'][1]="__id_droit_turbo_creer_website";
  1158. $droit['lib_description']="";
  1159. $droit['description'][1]="creer website";
  1160. $lesDroits[$droit['id_droit']]=$droit;
  1161. $droit=array();
  1162. $droit['id_droit']=__id_droit_turbo_envoi_ftp;
  1163. $droit['nom']=array();
  1164. $droit['lib_nom']="";
  1165. $droit['nom'][1]="__id_droit_turbo_envoi_ftp";
  1166. $droit['lib_description']="";
  1167. $droit['description'][1]="envoyer par FTP du website";
  1168. $lesDroits[$droit['id_droit']]=$droit;
  1169. $droit=array();
  1170. $droit['id_droit']=__id_droit_turbo_gerer_modele;
  1171. $droit['nom']=array();
  1172. $droit['lib_nom']="";
  1173. $droit['nom'][1]="__id_droit_turbo_gerer_modele";
  1174. $droit['lib_description']="";
  1175. $droit['description'][1]="gerer les modeles";
  1176. $lesDroits[$droit['id_droit']]=$droit;
  1177. $droit=array();
  1178. $droit['id_droit']=__id_droit_turbo_gerer_theme;
  1179. $droit['nom']=array();
  1180. $droit['lib_nom']="";
  1181. $droit['nom'][1]="__id_droit_turbo_gerer_theme";
  1182. $droit['lib_description']="";
  1183. $droit['description'][1]="gerer les themes (sauf themes de base)";
  1184. $lesDroits[$droit['id_droit']]=$droit;
  1185. $droit=array();
  1186. $droit['id_droit']=__id_droit_turbo_configurer_ftp;
  1187. $droit['nom']=array();
  1188. $droit['lib_nom']="";
  1189. $droit['nom'][1]="__id_droit_turbo_configurer_ftp";
  1190. $droit['lib_description']="";
  1191. $droit['description'][1]="configurer FTP";
  1192. $lesDroits[$droit['id_droit']]=$droit;
  1193. $droit=array();
  1194. $droit['id_droit']=__id_droit_turbo_gerer_themebase;
  1195. $droit['nom']=array();
  1196. $droit['lib_nom']="";
  1197. $droit['nom'][1]="__id_droit_turbo_gerer_themebase";
  1198. $droit['lib_description']="";
  1199. $droit['description'][1]="gerer les themes de base";
  1200. $lesDroits[$droit['id_droit']]=$droit;
  1201. $droit=array();
  1202. $droit['id_droit']=__id_droit_turbo_voir_apparence;
  1203. $droit['nom']=array();
  1204. $droit['lib_nom']="";
  1205. $droit['nom'][1]="__id_droit_turbo_voir_apparence";
  1206. $droit['lib_description']="";
  1207. $droit['description'][1]="voir les apparences";
  1208. $lesDroits[$droit['id_droit']]=$droit;
  1209. return $lesDroits;
  1210. }
  1211. function createWebsiteDroitGroupeArray() {
  1212. $lesDroitGroupe=array();
  1213. $ObGroupe=array();
  1214. $ObGroupe['ref_groupe']=__id_groupe_turbo_webmaster;
  1215. $ObGroupe['ref_droit']=__id_droit_turbo_gestion_page;
  1216. $lesDroitGroupe[]=$ObGroupe;
  1217. $ObGroupe['ref_groupe']=__id_groupe_turbo_webmaster;
  1218. $ObGroupe['ref_droit']=__id_droit_turbo_acces_module;
  1219. $lesDroitGroupe[]=$ObGroupe;
  1220. $ObGroupe['ref_groupe']=__id_groupe_turbo_ecrivain;
  1221. $ObGroupe['ref_droit']=__id_droit_turbo_acces_module;
  1222. $lesDroitGroupe[]=$ObGroupe;
  1223. $ObGroupe['ref_groupe']=__id_groupe_turbo_ecrivain;
  1224. $ObGroupe['ref_droit']=__id_droit_turbo_contenu_page;
  1225. $lesDroitGroupe[]=$ObGroupe;
  1226. $ObGroupe['ref_groupe']=__id_groupe_turbo_redacteur;
  1227. $ObGroupe['ref_droit']=__id_droit_turbo_acces_module;
  1228. $lesDroitGroupe[]=$ObGroupe;
  1229. $ObGroupe['ref_groupe']=__id_groupe_turbo_redacteur;
  1230. $ObGroupe['ref_droit']=__id_droit_turbo_creer_page;
  1231. $lesDroitGroupe[]=$ObGroupe;
  1232. $ObGroupe['ref_groupe']=__id_groupe_turbo_redacteur;
  1233. $ObGroupe['ref_droit']=__id_droit_turbo_choixmodele_page;
  1234. $lesDroitGroupe[]=$ObGroupe;
  1235. $ObGroupe['ref_groupe']=__id_groupe_turbo_editeur;
  1236. $ObGroupe['ref_droit']=__id_droit_turbo_acces_module;
  1237. $lesDroitGroupe[]=$ObGroupe;
  1238. $ObGroupe['ref_groupe']=__id_groupe_turbo_editeur;
  1239. $ObGroupe['ref_droit']=__id_droit_turbo_creer_website;
  1240. $lesDroitGroupe[]=$ObGroupe;
  1241. $ObGroupe['ref_groupe']=__id_groupe_turbo_editeur;
  1242. $ObGroupe['ref_droit']=__id_droit_turbo_envoi_ftp;
  1243. $lesDroitGroupe[]=$ObGroupe;
  1244. $ObGroupe['ref_groupe']=__id_groupe_turbo_graphiste;
  1245. $ObGroupe['ref_droit']=__id_droit_turbo_acces_module;
  1246. $lesDroitGroupe[]=$ObGroupe;
  1247. $ObGroupe['ref_groupe']=__id_groupe_turbo_graphiste;
  1248. $ObGroupe['ref_droit']=__id_droit_turbo_gerer_modele;
  1249. $lesDroitGroupe[]=$ObGroupe;
  1250. $ObGroupe['ref_groupe']=__id_groupe_turbo_graphiste;
  1251. $ObGroupe['ref_droit']=__id_droit_turbo_gerer_theme;
  1252. $lesDroitGroupe[]=$ObGroupe;
  1253. $ObGroupe['ref_groupe']=__id_groupe_turbo_configurateur;
  1254. $ObGroupe['ref_droit']=__id_droit_turbo_acces_module;
  1255. $lesDroitGroupe[]=$ObGroupe;
  1256. $ObGroupe['ref_groupe']=__id_groupe_turbo_configurateur;
  1257. $ObGroupe['ref_droit']=__id_droit_turbo_configurer_ftp;
  1258. $lesDroitGroupe[]=$ObGroupe;
  1259. $ObGroupe['ref_groupe']=__id_groupe_turbo_configurateur;
  1260. $ObGroupe['ref_droit']=__id_droit_turbo_gerer_themebase;
  1261. $lesDroitGroupe[]=$ObGroupe;
  1262. /*$ObGroupe['ref_groupe']=__id_groupe_turbo_editeur;
  1263. $ObGroupe['ref_droit']=__id_droit_turbo_voir_apparence;
  1264. $lesDroitGroupe[]=$ObGroupe;*/
  1265. return $lesDroitGroupe;
  1266. }
  1267. /*
  1268. Nom fonction : addMessage
  1269. Description : ajout d'un nouveau message
  1270. Entrees : &$aMessage
  1271. Sorties : $id_message
  1272. Globales : [$db]
  1273. Auteur : F. Royet 15/06/2006
  1274. */
  1275. function addMessage(&$aMessage) {
  1276. global $db;
  1277. buildLanguage($aMessage); // preparation de l'objet au multilangue
  1278. $requete="INSERT INTO `message` ( `id_message` , `nom` , `lib_sujet` , `lib_message` ) VALUES ('".addslashesifnot($aMessage['id_message'])."', '".addslashesifnot($aMessage['nom'])."','".addslashesifnot($aMessage['lib_sujet'])."', '".addslashesifnot($aMessage['lib_message'])."');";
  1279. $resultat=$db->sql_query($requete,TRUE);
  1280. //$id = $db->sql_insert_id();
  1281. //$aMessage['id_message']=$id;
  1282. //return $id;
  1283. }
  1284. /*
  1285. Nom fonction : updateMessage
  1286. Description : modification d'un message
  1287. Entrees : &$aMessage
  1288. Sorties :
  1289. Globales : [$db]
  1290. Auteur : F. Royet 15/06/2006
  1291. */
  1292. function updateMessage(&$aMessage) {
  1293. global $db;
  1294. buildLanguage($aMessage); // preparation de l'objet au multilangue
  1295. $requete=buildUpdateRequete("message",$aMessage);
  1296. $resultat=$db->sql_query($requete,TRUE);
  1297. return $id;
  1298. }
  1299. /*
  1300. Nom fonction : getMessage
  1301. Description : recuperation d'un message
  1302. Entrees : $id_message
  1303. Sorties :
  1304. Globales : [$db]
  1305. Auteur : F. Royet 15/06/2006
  1306. */
  1307. function getMessage($id_message) {
  1308. global $db;
  1309. $requete="select * from message where id_message=$id_message";
  1310. $resultat=$db->sql_query($requete,TRUE);
  1311. $aMessage=$db->sql_fetchrow($resultat);
  1312. if ($aMessage!=false) {
  1313. fillLib($aMessage);
  1314. return $aMessage;
  1315. }
  1316. return false;
  1317. }
  1318. /*
  1319. Nom fonction : sendMessage
  1320. Description : envoi d'un message
  1321. Entrees : $expediteur, $destinataire, $data
  1322. Sorties :
  1323. Globales : [$db]
  1324. Auteur : F. Royet 15/06/2006
  1325. */
  1326. function sendMessage(&$aMessage,&$expediteur, &$destinataire, &$data, $id_langue=1) {
  1327. define("_GLOBALS","");
  1328. include_once(dirname(__FILE__).'/classes/mail/htmlMimeMail.php');
  1329. include_once(dirname(__FILE__).'/classes/util/Tools.php');
  1330. $contenumailHTML=$aMessage['message'][$id_langue];
  1331. $contenumail=$aMessage['message'][$id_langue];
  1332. $sujet=Tools::cleanTxtHtml($aMessage['sujet'][$id_langue]);
  1333. $contenumailTXT = Tools::cleanTxtHtml($contenumail);
  1334. $mail = new htmlMimeMail();
  1335. $mail->setFrom($expediteur['mail']);
  1336. $mail->setSubject($sujet);
  1337. $mail->setHTML($contenumailHTML,$contenumailTXT);
  1338. $mail->send(array($destinataire['mail']));
  1339. }
  1340. /*
  1341. Nom fonction : buildUpdateRequete
  1342. Description : construit une requete de mise a jour dans une table à partir d'un objet
  1343. Cette fonction parcourt toutes les colonnes de la table, chaque fois qu'il y a un champ d'objet correspondant
  1344. a la colonne cela construit un morceau de la requete update: `nom_colonne`='valeur_champ_objet'
  1345. Exceptions:
  1346. 1) les colonnes commencant par id_ sont considérées comme des clefs primaires autoincrement (ou les N premieres colonnes commencan par ref_) et géré par le SGBD,
  1347. il n'y a pas possibilité de mise a jour.
  1348. 2) les champs qui commence par lib_ sont théoriquements des entiers references de la table libelle. Ces valeurs
  1349. ne doivent pas etre modifiée. Cependant, si avec le champ lib_xxx se trouve un champ _force_lib_xxx le champ est
  1350. quand meme modifié. Cela est utile lorsque le champ lib_xxx etait a 0 (donc pas initialisé) d'être initialisé.
  1351. Avant l'appele à la fonction, il faut ecrire une ligne du style:
  1352. if ($theObject['lib_xxx']==0) $theObject['_force_lib_xxx']=true;
  1353. buildUpdateRequete('nomdunetable',$theObject);
  1354. Entrees : $tableName
  1355. Sorties : aucune
  1356. Globales : [$db]
  1357. Auteur : F. Royet V: 1.0 - 13/12/2005
  1358. */
  1359. function buildUpdateRequete($tableName,&$aObject) {
  1360. global $db;
  1361. $requete="SHOW COLUMNS FROM ".$tableName;
  1362. $resultat=$db->sql_query($requete,TRUE);
  1363. $chaine1="";
  1364. $idField="";
  1365. $where='';
  1366. while($aCol=$db->sql_fetchrow($resultat)) {
  1367. $colField=$aCol['Field'];
  1368. if (isset($aObject[$colField])) {
  1369. $aValue="";
  1370. $aValue="`".$colField."`='".addslashesifnot($aObject[$colField])."'";
  1371. if ($aCol['Key']=='PRI') {
  1372. $where.=$aValue." and ";
  1373. }
  1374. if (substr($colField,0,4)== "lib_") {
  1375. if (isset($aObject['_force_'.$colField])==false) $aValue="";
  1376. }
  1377. if (($chaine1!="")&&($aValue!="")) $aValue=",".$aValue;
  1378. $chaine1.=$aValue;
  1379. }
  1380. }
  1381. $where=substr($where,0,-5);
  1382. if (($chaine1=='')||($where=='')) return false;
  1383. $requete_resultat="UPDATE `$tableName` SET ".$chaine1." WHERE $where LIMIT 1;";
  1384. return $requete_resultat;
  1385. }
  1386. ?>