[ Index ] |
|
Code source de SPIP Agora 1.4 |
1 <?php 2 /***************************************************** 3 * This file is part of Agora, web based content management system. 4 * 5 * Agora is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; version 2 of the License. 8 * 9 * Agora is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details (file "COPYING"). 13 * 14 * Copyright © Arnaud Martin, Antoine Pitrou et Philippe Rivière. 15 * List of authors detailed in "copyright_fr.html" file. 16 * E-mail : agora@sig.premier-ministre.gouv.fr 17 * Web site : http://www.agora.gouv.fr 18 *****************************************************/ 19 // Base class for Visite business persistence abstraction. 20 // 21 22 if (defined("_BD_VISITE")) 23 return; 24 25 define("_BD_VISITE", "1"); 26 27 //require_once("PEAR.php"); 28 //require_once("DB.php"); 29 require_once dirname(__FILE__). "/metier.php"; 30 31 define("VISITE_ALL_FIELDS", " date_heure, visites, maj "); 32 33 /** 34 * BD_visite is a base class for visite business persistence abstraction implementations, and must be 35 * inherited by all such. 36 * @package BD 37 * @author Antoine Angenieux <aangenieux@clever-age.com> 38 * @author Erwan Le Bescond <elebescond@clever-age.com> 39 * @access public 40 */ 41 class BD_visite extends BD_metier { 42 // {{{ properties 43 44 /** 45 * Date. 46 * @var Date 47 * @access private 48 */ 49 var $_date; 50 51 /** 52 * Visites. 53 * @var int 54 * @access private 55 */ 56 var $_visites; 57 58 /** 59 * Last Update. 60 * @var Date 61 * @access private 62 */ 63 var $_maj; 64 65 // }}} 66 67 // {{{ factory() 68 function &factory ($dbParameters = null, $dbOptions = null) { 69 if (file_exists( 70 dirname(__FILE__). "/" . $dbParameters->_dbEngine . "/visite_" . $dbParameters->_dbEngine . ".php") 71 == false) { 72 include_once (dirname(__FILE__). "/common/visite_common.php"); 73 $classname = "BD_visite_common"; 74 } 75 else { 76 include_once 77 (dirname(__FILE__). "/" . $dbParameters->_dbEngine . "/visite_" . $dbParameters->_dbEngine . ".php"); 78 $classname = "BD_visite_" . $dbParameters->_dbEngine; 79 } 80 81 if (!class_exists($classname)) { 82 return PEAR::raiseError("Cannot instanciate class $classname", null, null, null, null, null, false); 83 } 84 85 $obj = &new $classname; 86 $result = $obj->setDbParameters($dbParameters); 87 88 if ($dbOptions != null) { 89 $obj->setDbOptions($dbOptions); 90 } 91 92 if ($obj->_pearIncluded()) { 93 if (PEAR::isError($result)) { 94 return $result; 95 } 96 else { 97 return $obj; 98 } 99 } 100 else { 101 //no error check, sorry 102 return $obj; 103 } 104 } 105 106 // }}} 107 108 // {{{ constructor 109 110 /** 111 * DB_visite constructor. 112 * 113 * @access public 114 */ 115 116 function BD_visite () { } 117 118 // }}} 119 120 // {{{ getDate() 121 122 function getDate () { 123 return $this->_date; 124 } 125 126 // }}} 127 128 // {{{ setDate() 129 130 function setDate ($date) { 131 $this->_date = $date; 132 } 133 134 // }}} 135 136 // {{{ getVisites() 137 138 function getVisites () { 139 return $this->_visites; 140 } 141 142 // }}} 143 144 // {{{ setVisites() 145 146 function setVisites ($visites) { 147 $this->_visites = $visites; 148 } 149 150 // }}} 151 152 // {{{ getMaj() 153 154 function getMaj () { 155 return $this->_maj; 156 } 157 158 // }}} 159 160 // {{{ setMaj() 161 162 function setMaj ($maj) { 163 $this->_maj = $maj; 164 } 165 166 // }}} 167 168 // {{{ create() 169 170 function create () { 171 $db = &$this->_getDB(); 172 173 if (DB::isError($db)) { 174 return PEAR::raiseError("[" . get_class($this). " DB_visite : create()] " . $db->getMessage(). "", null, 175 null, null, 176 null, null, 177 false); 178 } 179 180 $maDate = new Date(); 181 $this->setMaj($maDate->getDate(DATE_FORMAT_ISO)); 182 183 $query 184 = "INSERT INTO " . $GLOBALS['table_prefix']. "_visites (" . VISITE_ALL_FIELDS . ") VALUES " . "('" . $db->quoteString( 185 $this->_date). "', " . "'" . $db->quoteString( 186 $this->_visites). "', " . "'" . $db->quoteString( 187 $this->_maj). "')"; 188 spip_log ("Creating a visit $query"); 189 //echo "<br><br>$query\n\n<br><br>"; 190 $result = $db->query($query); 191 192 if (DB::isError($result)) { 193 return PEAR::raiseError("[" . get_class($this). " DB_visite : create()] " . $result->getMessage(). "", null, 194 null, null, 195 null, null, 196 false); 197 } 198 } 199 200 // }}} 201 202 // {{{ delete() 203 204 function delete ($date) { 205 $db = &$this->_getDB(); 206 207 if (DB::isError($db)) { 208 return PEAR::raiseError("[" . get_class($this). " DB_visite : delete()] " . $db->getMessage(). "", null, 209 null, null, 210 null, null, 211 false); 212 } 213 214 $query = "DELETE FROM " . $GLOBALS['table_prefix']. "_visites WHERE date_heure = '$date'"; 215 216 $result = $db->query($query); 217 218 if (DB::isError($result)) { 219 return PEAR::raiseError("[" . get_class($this). " DB_visite : delete()] " . $result->getMessage(). "", null, 220 null, null, 221 null, null, 222 false); 223 } 224 } 225 226 // }}} 227 228 // {{{ update() 229 230 function update () { 231 $db = &$this->_getDB(); 232 233 if (DB::isError($db)) { 234 return PEAR::raiseError("[" . get_class($this). " DB_visite : update()] " . $db->getMessage(). "", null, 235 null, null, 236 null, null, 237 false); 238 } 239 240 $maDate = new Date(); 241 $this->setMajDate($maDate->getDate(DATE_FORMAT_ISO)); 242 243 $query = "UPDATE " . $GLOBALS['table_prefix']. "_visites " . "SET date_heure = '" . $db->quoteString( 244 $this->_date). "', " . "visites = '" . $db->quoteString( 245 $this->_visites). "', maj = '" . $db->quoteString( 246 $this->_maj). "' " . "WHERE date_heure = '" . $db->quoteString( 247 $this->_date). "'"; 248 249 $result = $db->query($query); 250 251 if (DB::isError($result)) { 252 return PEAR::raiseError("[" . get_class($this). " DB_visite : update()] " . $result->getMessage(). "", null, 253 null, null, 254 null, null, 255 false); 256 } 257 } 258 259 // }}} 260 261 // {{{ load() 262 263 function load ($date) { 264 $db = &$this->_getDB(); 265 266 if (DB::isError($db)) { 267 return PEAR::raiseError("[" . get_class($this). " DB_visite : load()] " . $db->getMessage(). "", null, null, 268 null, null, null, 269 false); 270 } 271 272 $query 273 = "SELECT" . VISITE_ALL_FIELDS . "FROM " . $GLOBALS['table_prefix']. "_visites WHERE date_heure = '$date'"; 274 275 $result = $db->query($query); 276 277 if (DB::isError($result)) { 278 return PEAR::raiseError("[" . get_class($this). " DB_visite : load()] " . $result->getMessage(). "", null, 279 null, null, 280 null, null, 281 false); 282 } 283 else { 284 if ($row = $result->fetchRow()) { 285 $maDate = new Date($row['maj']); 286 $row['maj'] = $maDate->getDate(DATE_FORMAT_TIMESTAMP); 287 288 $this->_fetchData($row); 289 } 290 else { 291 return PEAR::raiseError( 292 "[" . get_class( 293 $this). " DB_visite : load(" . $date . ")] Aucune visite ne correspond pas a cette date!", 294 null, 295 null, 296 null, 297 null, 298 null, 299 false); 300 } 301 $result->free(); 302 } 303 } 304 305 // }}} 306 307 // {{{ _fetchData() 308 309 function _fetchData ($row) { 310 $this->setDate($row['date_heure']); 311 $this->setVisites($row['visites']); 312 $this->setMaj($row['maj']); 313 } 314 315 // }}} 316 317 // {{{ deleteMajDate($majDate) 318 319 /** 320 * This method is used to delete all visits former to mydate 321 * @access public 322 */ 323 324 function deleteMajDate ($mydate) { 325 $db = &$this->_getDB(); 326 327 if (DB::isError($db)) { 328 return PEAR::raiseError("[" . get_class($this). " DB_visite : deleteMajDate()] " . $db->getMessage(). "", 329 null, 330 null, 331 null, 332 null, 333 null, 334 false); 335 } 336 337 $dateTmp = new Date($mydate); 338 $mydate = $dateTmp->getDate(DATE_FORMAT_ISO); 339 340 $query = "DELETE FROM " . $GLOBALS['table_prefix']. "_visites WHERE maj < '$mydate'"; 341 342 $result = $db->query($query); 343 344 if (DB::isError($result)) { 345 return PEAR::raiseError( 346 "[" . get_class($this). " DB_visite : deleteMajDate()] " . $result->getMessage(). "", null, null, 347 null, null, null, 348 false); 349 } 350 } 351 352 // }}} 353 354 // {{{ deleteAllVisiteTemp() 355 356 function deleteAllVisiteTemp () { 357 $db = &$this->_getDB(); 358 359 if (DB::isError($db)) { 360 return PEAR::raiseError( 361 "[" . get_class($this). " DB_visite : deleteAllVisiteTemp()] " . $db->getMessage(). "", null, 362 null, null, 363 null, null, 364 false); 365 } 366 367 $query = "DELETE FROM " . $GLOBALS['table_prefix']. "_visites_temp"; 368 369 $result = $db->query($query); 370 371 if (DB::isError($result)) { 372 return PEAR::raiseError( 373 "[" . get_class($this). " DB_visite : deleteAllVisiteTemp()] " . $result->getMessage(). "", null, 374 null, null, 375 null, null, 376 false); 377 } 378 } 379 380 // }}} 381 382 // {{{ howManyDistinctVisite() 383 384 function howManyDistinctVisite () { 385 $howManyVisite = 0; 386 $db = &$this->_getDB(); 387 388 if (DB::isError($db)) { 389 return PEAR::raiseError( 390 "[" . get_class($this). " DB_visite : howManyDistinctVisite()] " . $db->getMessage(). "", null, 391 null, null, 392 null, null, 393 false); 394 } 395 396 $query = "SELECT COUNT(DISTINCT ip) AS total_visites FROM " . $GLOBALS['table_prefix']. "_visites_temp"; 397 398 $result = $db->query($query); 399 400 if (DB::isError($result)) { 401 return PEAR::raiseError( 402 "[" . get_class($this). " DB_visite : howManyDistinctVisite()] " . $result->getMessage(). "", 403 null, 404 null, 405 null, 406 null, 407 null, 408 false); 409 } 410 411 if ($row = $result->fetchRow()) { 412 $howManyVisite = intval($row["total_visites"]); 413 } 414 415 $result->free(); 416 return $howManyVisite; 417 } 418 419 // }}} 420 421 // {{{ howManyVisite() 422 423 function howManyVisite () { 424 $howManyVisite = 0; 425 $db = &$this->_getDB(); 426 427 if (DB::isError($db)) { 428 return PEAR::raiseError("[" . get_class($this). " DB_visite : howManyVisite()] " . $db->getMessage(). "", 429 null, 430 null, 431 null, 432 null, 433 null, 434 false); 435 } 436 437 $query = "SELECT SUM(visites) AS total_absolu FROM " . $GLOBALS['table_prefix']. "_visites"; 438 439 $result = $db->query($query); 440 441 if (DB::isError($result)) { 442 return PEAR::raiseError( 443 "[" . get_class($this). " DB_visite : howManyVisite()] " . $result->getMessage(). "", null, null, 444 null, null, null, 445 false); 446 } 447 448 if ($row = $result->fetchRow()) { 449 $howManyVisite = intval($row["total_absolu"]); 450 } 451 452 $result->free(); 453 return $howManyVisite; 454 } 455 456 // }}} 457 458 // {{{ howManyDistinctVisiteForAnArticle($id_article = null) 459 460 function howManyDistinctVisiteForAnArticle ($id_article = null) { 461 $howManyVisite = 0; 462 $db = &$this->_getDB(); 463 464 if (DB::isError($db)) { 465 return PEAR::raiseError( 466 "[" . get_class( 467 $this). " DB_visite : howManyDistinctVisiteForAnArticle()] " . $db->getMessage(). "", 468 null, 469 null, 470 null, 471 null, 472 null, 473 false); 474 } 475 476 $query = "SELECT COUNT(DISTINCT ip) AS c FROM " . $GLOBALS['table_prefix']. "_visites_temp"; 477 478 if ($id_article != null) { 479 $query .= " WHERE type='article' AND id_objet=$id_article"; 480 } 481 482 $result = $db->query($query); 483 484 if (DB::isError($result)) { 485 return PEAR::raiseError( 486 "[" . get_class( 487 $this). " DB_visite : howManyDistinctVisiteForAnArticle()] " . $result->getMessage(). "", 488 null, 489 null, 490 null, 491 null, 492 null, 493 false); 494 } 495 496 if ($row = $result->fetchRow()) { 497 $howManyVisite = intval($row["c"]); 498 } 499 500 $result->free(); 501 return $howManyVisite; 502 } 503 504 // }}} 505 506 // {{{ getAllUniqueVisiteForArticleId() 507 508 /** 509 * Returns an array of Visite and id_objet. 510 * 511 * @return an array of Visite and id_objet. 512 * @access public 513 */ 514 515 function getAllUniqueVisiteForArticleId () { 516 $visites = array(); 517 $db = &$this->_getDB(); 518 519 if (DB::isError($db)) { 520 return PEAR::raiseError( 521 "[" . get_class( 522 $this). " DB_visite : getAllUniqueVisiteForArticleId()] " . $db->getMessage(). "", 523 null, 524 null, 525 null, 526 null, 527 null, 528 false); 529 } 530 531 $query 532 = "SELECT COUNT(DISTINCT ip) AS visites, id_objet FROM " . $GLOBALS['table_prefix']. "_visites_temp WHERE type='article' GROUP BY id_objet"; 533 534 //echo '<br>'.$query.'<br>'; 535 536 $result = $db->query($query); 537 538 if (DB::isError($result)) { 539 return PEAR::raiseError( 540 "[" . get_class( 541 $this). " DB_visite : getAllUniqueVisiteForArticleId()] " . $result->getMessage(). "", 542 null, 543 null, 544 null, 545 null, 546 null, 547 false); 548 } 549 550 while ($row = $result->fetchRow()) { 551 $visites[] = $row; 552 } 553 554 $result->free(); 555 return $visites; 556 } 557 558 // }}} 559 560 // {{{ addArticleVisite($visite_insert) 561 562 function addArticleVisite ($visites_insert) { 563 $db = &$this->_getDB(); 564 565 if (DB::isError($db)) { 566 return PEAR::raiseError("[" . get_class($this). " DB_visite : addArticleVisite()] " . $db->getMessage(). "", 567 null, 568 null, 569 null, 570 null, 571 null, 572 false); 573 } 574 575 while (list(, $maVisite) = each($visites_insert)) { 576 $query 577 = "SELECT date_heure, id_article FROM " . $GLOBALS['table_prefix']. "_visites_articles WHERE date_heure = " . $maVisite['date']. " AND id_article = " . $maVisite['id_article']. ""; 578 579 //echo "<br><br>\n\n$query\n<br><br>"; 580 $result = $db->query($query); 581 582 if (DB::isError($result)) { 583 return PEAR::raiseError( 584 "[" . get_class($this). " DB_visite : addArticleVisite()] " . $result->getMessage(), null, 585 null, null, 586 null, null, 587 false); 588 } 589 if ($result->numRows() == 0) { 590 $query 591 = "INSERT INTO " . $GLOBALS['table_prefix']. "_visites_articles (date_heure, id_article, visites) VALUES (" . $maVisite['date']. "," . $maVisite['id_article']. "," . $maVisite['visites']. ")"; 592 //echo "<br><br>\n\n$query\n<br><br>"; 593 594 $result = $db->query($query); 595 if (DB::isError($result)) { 596 return PEAR::raiseError( 597 "[" . get_class($this). " DB_visite : addArticleVisite()] " . $result->getMessage(). "", 598 null, 599 null, 600 null, 601 null, 602 null, 603 false); 604 } 605 } 606 } 607 } 608 609 // }}} 610 611 // {{{ getAllVisiteForTypeSinceXsec($duree, $type) 612 613 function getAllVisiteForTypeSinceXsec ($duree, $type) { 614 $visites = array(); 615 $db = &$this->_getDB(); 616 617 if (DB::isError($db)) { 618 return PEAR::raiseError( 619 "[" . get_class($this). " DB_visite : getAllVisiteForTypeSinceXsec()] " . $db->getMessage(). "", 620 null, 621 null, 622 null, 623 null, 624 null, 625 false); 626 } 627 628 $maDate = new Date(); 629 $maDate->subtractSeconds(intval($duree)); 630 631 $query 632 = "SELECT COUNT(*) as count,id_objet FROM " . $GLOBALS['table_prefix']. "_visites_temp WHERE maj > '" . $maDate->getDate( 633 DATE_FORMAT_ISO). "' AND type='$type' GROUP BY id_objet"; 634 //spip_log("Visites since $duree sec: $query"); 635 636 $result = $db->query($query); 637 638 if (DB::isError($result)) { 639 return PEAR::raiseError( 640 "[" . get_class( 641 $this). " DB_visite : getAllVisiteForTypeSinceXsec()] " . $result->getMessage(). "", 642 null, 643 null, 644 null, 645 null, 646 null, 647 false); 648 } 649 650 while ($row = $result->fetchRow()) { 651 $visites[] = array('count' => $row['count'], 'id_objet' => $row['id_objet']); 652 } 653 654 $result->free(); 655 return $visites; 656 } 657 658 // }}} 659 660 // {{{ getAllForArticleIdAndDate($id_article) 661 662 function getAllForArticleIdAndDate ($id_article) { 663 $db = &$this->_getDB(); 664 665 if (DB::isError($db)) { 666 return PEAR::raiseError( 667 "[" . get_class($this). " DB_visite : getAllForArticleIdAndDate()] " . $db->getMessage(). "", 668 null, 669 null, 670 null, 671 null, 672 null, 673 false); 674 } 675 676 $maDate = new Date(); 677 $maDate->subtractSeconds(intval(89 * 24 * 3600)); 678 679 $query 680 = "SELECT date_heure AS date_unix, visites FROM " . $GLOBALS['table_prefix']. "_visites_articles WHERE id_article=$id_article AND date_heure > '" . $maDate->getDate( 681 DATE_FORMAT_ISO). "' ORDER BY date_heure"; 682 //$query = "SELECT UNIX_TIMESTAMP(date) AS date_unix, visites FROM ".$GLOBALS['table_prefix']."_visites_articles WHERE id_article=$id_article AND date > DATE_SUB(NOW(),INTERVAL 89 DAY) ORDER BY date"; 683 684 $result = $db->query($query); 685 686 if (DB::isError($result)) { 687 return PEAR::raiseError( 688 "[" . get_class($this). " DB_visite : getAllForArticleIdAndDate()] " . $result->getMessage(). "", 689 null, 690 null, 691 null, 692 null, 693 null, 694 false); 695 } 696 697 while ($row = $result->fetchRow()) { 698 $maDate = new Date($row['date_unix']); 699 $row['date_unix'] = $maDate->getDate(DATE_FORMAT_UNIXTIME); 700 $visites[] = $row; 701 } 702 703 $result->free(); 704 return $visites; 705 } 706 707 // }}} 708 709 // {{{ getAllForDate() 710 711 function getAllForDate () { 712 $db = &$this->_getDB(); 713 714 if (DB::isError($db)) { 715 return PEAR::raiseError("[" . get_class($this). " DB_visite : getAllForDate()] " . $db->getMessage(). "", 716 null, 717 null, 718 null, 719 null, 720 null, 721 false); 722 } 723 724 $maDate = new Date(); 725 $maDate->subtractSeconds(intval(89 * 24 * 3600)); 726 727 $query 728 = "SELECT date_heure AS date_unix, visites FROM " . $GLOBALS['table_prefix']. "_visites WHERE date_heure > '" . $maDate->getDate( 729 DATE_FORMAT_ISO). "' ORDER BY date_heure"; 730 //$query = "SELECT UNIX_TIMESTAMP(date) AS date_unix, visites FROM ".$GLOBALS['table_prefix']."_visites WHERE date > DATE_SUB(NOW(),INTERVAL 89 DAY) ORDER BY date"; 731 732 $result = $db->query($query); 733 734 if (DB::isError($result)) { 735 return PEAR::raiseError( 736 "[" . get_class($this). " DB_visite : getAllForDate()] " . $result->getMessage(). "", null, null, 737 null, null, null, 738 false); 739 } 740 741 while ($row = $result->fetchRow()) { 742 $maDate = new Date($row['date_unix']); 743 $row['date_unix'] = $maDate->getDate(DATE_FORMAT_UNIXTIME); 744 745 $visites[] = $row; 746 } 747 748 $result->free(); 749 return $visites; 750 } 751 752 // }}} 753 754 // {{{ getAllforArticleIdPerMonth($id_article) 755 756 function getAllForArticleIdPerMonth ($id_article) { 757 $db = &$this->_getDB(); 758 759 if (DB::isError($db)) { 760 return PEAR::raiseError( 761 "[" . get_class($this). " DB_visite : getAllForArticleIdPerMonth()] " . $db->getMessage(). "", 762 null, 763 null, 764 null, 765 null, 766 null, 767 false); 768 } 769 770 $maDate = new Date(); 771 $maDate->subtractSeconds(intval(2700 * 24 * 3600)); 772 773 $query 774 = "SELECT date_heure AS date_unix, SUM(visites) AS total_visites FROM " . $GLOBALS['table_prefix']. "_visites_articles WHERE id_article=$id_article AND date_heure > '" . $maDate->getDate( 775 DATE_FORMAT_ISO). "' GROUP BY date_unix ORDER BY date_heure"; 776 //$query = "SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(date),'%Y-%m') AS date_unix, SUM(visites) AS total_visites FROM ".$GLOBALS['table_prefix']."_visites_articles WHERE id_article=$id_article AND date > DATE_SUB(NOW(),INTERVAL 2700 DAY) GROUP BY date_unix ORDER BY date"; 777 778 $result = $db->query($query); 779 780 if (DB::isError($result)) { 781 return PEAR::raiseError( 782 "[" . get_class( 783 $this). " DB_visite : getAllForArticleIdPerMonth()] " . $result->getMessage(). "", 784 null, 785 null, 786 null, 787 null, 788 null, 789 false); 790 } 791 792 while ($row = $result->fetchRow()) { 793 //XXX Why, oh why? On prend la date, on la formate et on finit avec la meme? 794 $maDate = new Date($row['date_unix']); 795 $maDate2 = new Date($maDate->format('%Y-%m-00 00:00:00')); 796 $row['date_unix'] = $maDate2->getDate(DATE_FORMAT_UNIXTIME); 797 798 $visites[] = $row; 799 } 800 801 $result->free(); 802 return $visites; 803 } 804 805 // }}} 806 807 // {{{ getAllPerMonth() 808 809 function getAllPerMonth () { 810 $db = &$this->_getDB(); 811 812 if (DB::isError($db)) { 813 return PEAR::raiseError("[" . get_class($this). " DB_visite : getAllPerMonth()] " . $db->getMessage(). "", 814 null, 815 null, 816 null, 817 null, 818 null, 819 false); 820 } 821 822 $maDate = new Date(); 823 $maDate->subtractSeconds(intval(2700 * 24 * 3600)); 824 825 $query 826 = "SELECT date_heure AS date_unix, SUM(visites) AS total_visites FROM " . $GLOBALS['table_prefix']. "_visites WHERE date_heure > '" . $maDate->getDate( 827 DATE_FORMAT_ISO). "' GROUP BY date_unix ORDER BY date_heure"; 828 //$query = "SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(date),'%Y-%m') AS date_unix, SUM(visites) AS total_visites FROM ".$GLOBALS['table_prefix']."_visites WHERE date > DATE_SUB(NOW(),INTERVAL 2700 DAY) GROUP BY date_unix ORDER BY date"; 829 830 $result = $db->query($query); 831 832 if (DB::isError($result)) { 833 return PEAR::raiseError( 834 "[" . get_class($this). " DB_visite : getAllPerMonth()] " . $result->getMessage(). "", null, 835 null, null, 836 null, null, 837 false); 838 } 839 840 while ($row = $result->fetchRow()) { 841 //XXX Why oh why? On prend la date, on la formate et on finit avec la meme? 842 $maDate = new Date($row['date_unix']); 843 $maDate2 = new Date($maDate->format('%Y-%m-00 00:00:00')); 844 $row['date_unix'] = $maDate2->getDate(DATE_FORMAT_UNIXTIME); 845 846 $visites[] = $row; 847 } 848 849 $result->free(); 850 return $visites; 851 } 852 853 // }}} 854 855 // {{{ addVisiteTemp($log_ip, $log_type, $log_id_num) 856 857 function addVisiteTemp ($log_ip, $log_type, $log_id_num) { 858 $db = &$this->_getDB(); 859 860 if (DB::isError($db)) { 861 return PEAR::raiseError("[" . get_class($this). " DB_visite : addVisiteTemp()] " . $db->getMessage(). "", 862 null, 863 null, 864 null, 865 null, 866 null, 867 false); 868 } 869 870 $query 871 = "SELECT ip, type, id_objet FROM " . $GLOBALS['table_prefix']. "_visites_temp WHERE ip='$log_ip' AND type='$log_type' AND id_objet=$log_id_num"; 872 //echo "<br><br>$query\n\n<br><br>"; 873 874 $result = $db->query($query); 875 876 if (DB::isError($result)) { 877 return PEAR::raiseError( 878 "[" . get_class($this). " DB_visite : addVisiteTemp()] " . $result->getMessage(). "", null, null, 879 null, null, null, 880 false); 881 } 882 883 if ($result->numRows() == 0) { 884 $query 885 = "INSERT INTO " . $GLOBALS['table_prefix']. "_visites_temp (ip, type, id_objet) VALUES ('$log_ip', '$log_type', $log_id_num)"; 886 //echo "<br><br>$query\n\n<br><br>"; 887 888 $result = $db->query($query); 889 if (DB::isError($result)) { 890 return PEAR::raiseError( 891 "[" . get_class($this). " DB_visite : addVisiteTemp()] " . $result->getMessage(). "", null, 892 null, null, 893 null, null, 894 false); 895 } 896 } 897 } 898 899 // }}} 900 } 901 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sat Feb 24 14:40:03 2007 | par Balluche grâce à PHPXref 0.7 |