[ Index ]
 

Code source de SPIP Agora 1.4

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/Agora1-4/ecrire/include/bd/ -> visite.php (source)

   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  ?>


Généré le : Sat Feb 24 14:40:03 2007 par Balluche grâce à PHPXref 0.7