[ 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 Syndic business persistence abstraction. 20 // 21 22 if (defined("_BD_SYNDIC")) 23 return; 24 25 define("_BD_SYNDIC", "1"); 26 27 require_once dirname(__FILE__). "/metier.php"; 28 29 define("SYNDIC_ALL_FIELDS", 30 " id_syndic, id_rubrique, id_secteur, nom_site, url_site, url_syndic, descriptif, maj, syndication, statut, date_heure, date_syndic, date_index, moderation "); 31 32 /** 33 * BD_syndic is a base class for syndic business persistence abstraction implementations, and must be 34 * inherited by all such. 35 * @package BD 36 * @author Antoine Angénieux <aangenieux@clever-age.com> 37 * @author Erwan Le Bescond <elebescond@clever-age.com> 38 * @access public 39 */ 40 class BD_syndic extends BD_metier { 41 42 // {{{ properties 43 44 /** 45 * Syndication ID. 46 * @var int 47 * @access private 48 */ 49 var $_syndicId; 50 51 /** 52 * Heading ID. 53 * @var int 54 * @access private 55 */ 56 var $_rubriqueId; 57 58 /** 59 * Sector ID . 60 * @var int 61 * @access private 62 */ 63 var $_secteurId; 64 65 /** 66 * Site Name. 67 * @var String 68 * @access private 69 */ 70 var $_nomSite; 71 72 /** 73 * Site Url. 74 * @var String 75 * @access private 76 */ 77 var $_urlSite; 78 79 /** 80 * Syndication URL. 81 * @var String 82 * @access private 83 */ 84 var $_urlSyndic; 85 86 /** 87 * Description. 88 * @var String 89 * @access private 90 */ 91 var $_descriptif; 92 93 /** 94 * Update Date. 95 * @var Date 96 * @access private 97 */ 98 var $_majDate; 99 100 /** 101 * Syndication. 102 * @var String 103 * @access private 104 */ 105 var $_syndication; 106 107 // }}} 108 109 /** 110 * Statut. 111 * @var String 112 * @access private 113 */ 114 var $_statut; 115 116 /** 117 * _statutsHisto 118 * historique des statuts pour cet instance d'objet 119 * @access private 120 * @var Array 121 **/ 122 var $_statutsHisto = array(); 123 124 /** 125 * Date. 126 * @var Date 127 * @access private 128 */ 129 var $_date; 130 131 /** 132 * Syndication Date. 133 * @var Date 134 * @access private 135 */ 136 var $_dateSyndic; 137 138 /** 139 * Index Date. 140 * @var Date 141 * @access private 142 */ 143 var $_dateIndex; 144 145 /** 146 * Moderation. 147 * @var String 148 * @access private 149 */ 150 var $_moderation; 151 152 /** 153 * _rubriqueIdsHisto 154 * historique des rubriques pour cet instance d'objet 155 * @access private 156 * @var Array 157 **/ 158 var $_rubriqueIdsHisto = array(); 159 160 // {{{ factory() 161 162 /** 163 * This method is a factory static method. It should be used to get any 164 * specific implementation instace of Syndic business data type. 165 * @param BD_parameters DB connection parameters 166 * @access public 167 */ 168 function &factory ($dbParameters, $dbOptions = null) { 169 if (file_exists( 170 dirname(__FILE__). "/" . $dbParameters->_dbEngine . "/syndic_" . $dbParameters->_dbEngine . ".php") 171 == false) { 172 include_once(dirname(__FILE__). "/common/syndic_common.php"); 173 $classname = "BD_syndic_common"; 174 } 175 else { 176 include_once( 177 dirname(__FILE__). "/" . $dbParameters->_dbEngine . "/syndic_" . $dbParameters->_dbEngine . ".php"); 178 $classname = "BD_syndic_" . $dbParameters->_dbEngine; 179 } 180 181 if (!class_exists($classname)) { 182 return PEAR::raiseError("Cannot instanciate class $classname", null, null, null, null, null, false); 183 } 184 185 $obj = &new $classname; 186 $result = $obj->setDbParameters($dbParameters); 187 188 if ($dbOptions != null) { 189 $obj->setDbOptions($dbOptions); 190 } 191 192 if (PEAR::isError($result)) { 193 return $result; 194 } 195 else { 196 return $obj; 197 } 198 } 199 200 // }}} 201 202 // {{{ constructor 203 204 /** 205 * DB_syndic constructor. 206 * 207 * @access public 208 */ 209 210 function BD_syndic () { } 211 212 // }}} 213 214 // {{{ getSyndicId() 215 216 /** 217 * Returns the Syndication ID 218 * @return int 219 * @access public 220 */ 221 222 function getSyndicId () { 223 return $this->_syndicId; 224 } 225 226 // }}} 227 228 // {{{ setSyndicId() 229 230 /** 231 * Sets the Syndication ID 232 * @param int 233 * @access public 234 */ 235 236 function setSyndicid ($syndicId) { 237 $this->_syndicId = $syndicId; 238 } 239 240 // }}} 241 242 // {{{ getRubriqueID() 243 244 /** 245 * Returns the heading ID 246 * @return int 247 * @access public 248 */ 249 250 function getRubriqueID () { 251 return $this->_rubriqueId; 252 } 253 254 // }}} 255 256 // {{{ setRubriqueId() 257 258 /** 259 * Sets the heading ID 260 * @param int 261 * @access public 262 */ 263 264 function setRubriqueId ($rubriqueId) { 265 if (isset($this->_rubriqueId)and ($this->_rubriqueId != $rubriqueId)) { 266 // on sauvegarde cette rubrique 267 $this->_rubriqueIdsHisto[] = $this->_rubriqueId; 268 } 269 270 $this->_rubriqueId = $rubriqueId; 271 } 272 273 // }}} 274 275 // {{{ getRubriqueIdsHisto 276 277 function getRubriqueIdsHisto () { 278 return $this->_rubriqueIdsHisto; 279 } 280 281 // }}} 282 283 // {{{ getSecteurId() 284 285 /** 286 * Returns the sector ID 287 * @return int 288 * @access public 289 */ 290 291 function getSecteurID () { 292 return $this->_secteurId; 293 } 294 295 // }}} 296 297 // {{{ setSecteurId() 298 299 /** 300 * Sets the sector ID 301 * @param int 302 * @access public 303 */ 304 305 function setSecteurId ($secteurId) { 306 $this->_secteurId = $secteurId; 307 } 308 309 // }}} 310 311 // {{{ getNomSite() 312 313 /** 314 * Returns the Site Name 315 * @return String 316 * @access public 317 */ 318 319 function getNomSite () { 320 return $this->_nomSite; 321 } 322 323 // }}} 324 325 // {{{ setNomSite() 326 327 /** 328 * Sets the Site Name 329 * @param String 330 * @access public 331 */ 332 333 function setNomSite ($nomSite) { 334 $this->_nomSite = corriger_caracteres($nomSite); 335 } 336 337 // }}} 338 339 // {{{ getUrlSite() 340 341 /** 342 * Returns Site URL 343 * @return String 344 * @access public 345 */ 346 347 function getUrlSite () { 348 return $this->_urlSite; 349 } 350 351 // }}} 352 353 // {{{ setUrlSite() 354 355 /** 356 * Sets Site URL 357 * @param String 358 * @access public 359 */ 360 361 function setUrlSite ($urlSite) { 362 $this->_urlSite = corriger_caracteres($urlSite); 363 } 364 365 // }}} 366 367 // {{{ getUrlSyndic() 368 369 /** 370 * Returns Syndication URL 371 * @return String 372 * @access public 373 */ 374 375 function getUrlSyndic () { 376 return $this->_urlSyndic; 377 } 378 379 // }}} 380 381 // {{{ setUrlSyndic() 382 383 /** 384 * Sets Syndication URL 385 * @param String 386 * @access public 387 */ 388 389 function setUrlSyndic ($urlSyndic) { 390 $this->_urlSyndic = corriger_caracteres($urlSyndic); 391 } 392 393 // }}} 394 395 // {{{ getDescriptif() 396 397 /** 398 * Returns description 399 * @return String 400 * @access public 401 */ 402 403 function getDescriptif () { 404 return $this->_descriptif; 405 } 406 407 // }}} 408 409 // {{{ setDescriptif() 410 411 /** 412 * Sets description 413 * @param String 414 * @access public 415 */ 416 417 function setDescriptif ($descriptif) { 418 $this->_descriptif = corriger_caracteres($descriptif); 419 } 420 421 // }}} 422 423 // {{{ getMajDate() 424 425 /** 426 * Returns the syndication update date 427 * @return Date 428 * @access public 429 */ 430 431 function getMajDate () { 432 return $this->_majDate; 433 } 434 435 // }}} 436 437 // {{{ setMajDate() 438 439 /** 440 * Sets the syndication update date 441 * @param Date 442 * @access public 443 */ 444 445 function setMajDate ($majDate) { 446 $this->_majDate = $majDate; 447 } 448 449 // }}} 450 451 // {{{ getSyndication() 452 453 /** 454 * Returns syndication 455 * @return String 456 * @access public 457 */ 458 459 function getSyndication () { 460 return $this->_syndication; 461 } 462 463 // }}} 464 465 // {{{ setSyndication() 466 467 /** 468 * Sets syndication 469 * @param String 470 * @access public 471 */ 472 473 function setSyndication ($syndication) { 474 $this->_syndication = corriger_caracteres($syndication); 475 } 476 477 // }}} 478 479 // {{{ getStatut() 480 481 /** 482 * Returns statut 483 * @return String 484 * @access public 485 */ 486 487 function getStatut () { 488 return $this->_statut; 489 } 490 491 // }}} 492 493 // {{{ setStatut() 494 495 /** 496 * Sets statut 497 * @param String 498 * @access public 499 */ 500 function setStatut ($statut) { 501 if (isset($this->_statut)and ($statut != $this->_statut)) { 502 // on sauvegarde ce statut 503 $this->_statutsHisto[] = $this->_statut; 504 } 505 506 $this->_statut = corriger_caracteres($statut); 507 } 508 509 // }}} 510 511 // {{{ getDate() 512 513 /** 514 * Returns the date ???? 515 * @return Date 516 * @access public 517 */ 518 519 function getDate () { 520 return $this->_date; 521 } 522 523 // }}} 524 525 // {{{ setDate() 526 527 /** 528 * Sets the date ???? 529 * @param Date 530 * @access public 531 */ 532 533 function setDate ($date) { 534 $this->_date = $date; 535 } 536 537 // }}} 538 539 // {{{ getDateSyndic() 540 541 /** 542 * Returns Syndication date 543 * @return Date 544 * @access public 545 */ 546 547 function getDateSyndic () { 548 return $this->_dateSyndic; 549 } 550 551 // }}} 552 553 // {{{ setDateSyndic() 554 555 /** 556 * Sets Syndication date 557 * @param Date 558 * @access public 559 */ 560 561 function setDateSyndic ($dateSyndic) { 562 $this->_dateSyndic = $dateSyndic; 563 } 564 565 // }}} 566 567 // {{{ getDateIndex() 568 569 /** 570 * Returns Index date 571 * @return Date 572 * @access public 573 */ 574 575 function getDateIndex () { 576 return $this->_dateIndex; 577 } 578 579 // }}} 580 581 // {{{ setDateIndex() 582 583 /** 584 * Sets Index date 585 * @param Date 586 * @access public 587 */ 588 589 function setDateIndex ($dateIndex) { 590 $this->_dateIndex = $dateIndex; 591 } 592 593 // }}} 594 595 // {{{ getModeration() 596 597 /** 598 * Returns moderation 599 * @return String 600 * @access public 601 */ 602 603 function getModeration () { 604 return $this->_moderation; 605 } 606 607 // }}} 608 609 // {{{ setModeration() 610 611 /** 612 * Sets moderation 613 * @param String 614 * @access public 615 */ 616 617 function setModeration ($moderation) { 618 $this->_moderation = corriger_caracteres($moderation); 619 } 620 621 // }}} 622 623 // {{{ create() 624 625 /** 626 * This method is used to create a new syndication in the database 627 * @access public 628 */ 629 630 function create () { 631 $db = &$this->_getDB(); 632 633 if (DB::isError($db)) { 634 return PEAR::raiseError("[" . get_class($this). " DB_syndic : create()] " . $db->getMessage(). "", null, 635 null, null, 636 null, null, 637 false); 638 } 639 640 $string_prefix = $GLOBALS['table_prefix']. "_syndic"; 641 $syndicId = $db->nextId($string_prefix, true); 642 643 if (DB::isError($syndicId)) { 644 return PEAR::raiseError("[" . get_class($this). " DB_syndic : create()] " . $syndicId->getMessage(). "", 645 null, 646 null, 647 null, 648 null, 649 null, 650 false); 651 } 652 653 $this->_syndicId = $syndicId; 654 655 //if ($this->_date == "NOW()") $date = "NOW()"; else $date = "'".$db->quoteString($this->_date)."'"; 656 //if ($this->_dateSyndic == "NOW()") $dateSyndic = "NOW()"; else $dateSyndic = "'".$db->quoteString($this->_dateSyndic)."'"; 657 658 $maDate = new Date(); 659 $isoDate = $maDate->getDate(DATE_FORMAT_ISO); 660 $this->setDate($isoDate); 661 $this->setDateSyndic($isoDate); 662 663 // calcul du secteur ... 664 $rubriqueMetier = &recuperer_instance_rubrique(); 665 $rubriqueMetier->load($this->_rubriqueId); 666 $this->_secteurId = $rubriqueMetier->findSectorId(); 667 668 $query 669 = "INSERT INTO " . $GLOBALS['table_prefix']. "_syndic (" . SYNDIC_ALL_FIELDS . ") VALUES (" . "" . $this->_syndicId . ", " . "" . $this->_rubriqueId . ", " . "" . $this->_secteurId . ", " . "'" . $db->quoteString( 670 $this->_nomSite). "', " . "'" . $db->quoteString( 671 $this->_urlSite). "', " . "'" . $db->quoteString( 672 $this->_urlSyndic). "', " . "'" . $db->quoteString( 673 $this->_descriptif). "', " . "'" . $db->quoteString( 674 $this->_majDate). "', " . "'" . $db->quoteString( 675 $this->_syndication). "', " . "'" . $db->quoteString( 676 $this->_statut). "', " . "'" . $db->quoteString( 677 $this->_date). "', " . "'" . $db->quoteString( 678 $this->_dateSyndic). "', " . "'" . $db->quoteString( 679 $this->_dateIndex). "', " . "'" . $db->quoteString( 680 $this->_moderation). "')"; 681 682 //echo "<br>".$this->_nomSite."<br>"; 683 684 //echo $query."<br>"; 685 $result = $db->query($query); 686 687 if (DB::isError($result)) { 688 return PEAR::raiseError("[" . get_class($this). " DB_syndic : create()] " . $result->getMessage(). "", null, 689 null, null, 690 null, null, 691 false); 692 } 693 694 if ($this->getStatut() == 'publie') { // il faut mettre à jour la rubrique 695 $rubriqueMetier = &recuperer_instance_rubrique(); 696 $rubriqueMetier->load($this->getRubriqueID()); 697 $statut = $rubriqueMetier->getStatutFromRubrique($this->getRubriqueID()); 698 699 if ($statut != $rubriqueMetier->getStatut()) { 700 $rubriqueMetier->setStatut($statut); 701 $rubriqueMetier->update(); 702 } 703 704 // on remet aussi la date à jour 705 $dateCalcul = $rubriqueMetier->getDateFromRubrique($rubriqueMetier->getRubriqueID()); 706 $dateRubrique = new Date($rubriqueMetier->getDate()); 707 708 if (Date::compare($dateCalcul, $dateRubrique) != 0) { 709 $rubriqueMetier->setDate($dateCalcul->getDate()); 710 $rubriqueMetier->update(); // va enclencher la recursivite 711 $update_date = true; 712 } 713 unset($rubriqueMetier); 714 } 715 } 716 717 // }}} 718 719 // {{{ update() 720 721 /** 722 * This method is used to update a syndication in the database 723 * @access public 724 */ 725 function update () { 726 $db = &$this->_getDB(); 727 728 if (DB::isError($db)) { 729 return PEAR::raiseError("[" . get_class($this). " DB_syndic : update()] " . $db->getMessage(). "", null, 730 null, null, 731 null, null, 732 false); 733 } 734 735 $maDate = new Date(); 736 $this->setMajDate($maDate->getDate(DATE_FORMAT_ISO)); 737 738 // calcul du secteur ... à chaque fois 739 $rubriqueMetier = &recuperer_instance_rubrique(); 740 $rubriqueMetier->load($this->_rubriqueId); 741 $this->_secteurId = $rubriqueMetier->findSectorId(); 742 743 $query 744 = "UPDATE " . $GLOBALS['table_prefix']. "_syndic " . "SET id_syndic = " . $this->_syndicId . ", " . "id_rubrique = " . $this->_rubriqueId . ", id_secteur = " . $this->_secteurId . ", " . "nom_site = '" . $db->quoteString( 745 $this->_nomSite). "', url_site = '" . $db->quoteString( 746 $this->_urlSite). "', " . "url_syndic = '" . $db->quoteString( 747 $this->_urlSyndic). "', descriptif = '" . $db->quoteString( 748 $this->_descriptif). "', " . "maj = '" . $db->quoteString( 749 $this->_majDate). "', syndication = '" . $db->quoteString( 750 $this->_syndication). "', " . "statut = '" . $db->quoteString( 751 $this->_statut). "', date_heure = '" . $db->quoteString( 752 $this->_date). "', " . "date_syndic = '" . $db->quoteString( 753 $this->_dateSyndic). "', date_index = '" . $db->quoteString( 754 $this->_dateIndex). "', " . "moderation = '" . $db->quoteString( 755 $this->_moderation). "' " . "WHERE id_syndic = " . $this->_syndicId; 756 //echo $query."<br>"; 757 758 $result = $db->query($query); 759 760 if (DB::isError($result)) { 761 return PEAR::raiseError("[" . get_class($this). " DB_syndic : update()] " . $result->getMessage(). "", null, 762 null, null, 763 null, null, 764 false); 765 } 766 767 // Mise à jour des rubriques liées 768 $this->updateRelatedObjects(); 769 } 770 771 // }}} 772 773 // {{{ load() 774 775 /** 776 * This method is used to load a syndication from the database 777 * @access public 778 * @param int $syndicId ID of syndication to load 779 */ 780 781 function load ($idSyndic) { 782 $db = &$this->_getDB(); 783 784 if (DB::isError($db)) { 785 return PEAR::raiseError("[" . get_class($this). " DB_syndic : load()] " . $db->getMessage(). "", null, null, 786 null, null, null, 787 false); 788 } 789 790 $query 791 = "SELECT " . SYNDIC_ALL_FIELDS . " FROM " . $GLOBALS['table_prefix']. "_syndic WHERE id_syndic = $idSyndic"; 792 793 //echo "<br>" . $query . "<br>"; 794 795 $result = $db->query($query); 796 797 if (DB::isError($result)) { 798 return PEAR::raiseError("[" . get_class($this). " DB_syndic : load()] " . $result->getMessage(). "", null, 799 null, null, 800 null, null, 801 false); 802 } 803 else { 804 if ($row = $result->fetchRow()) { 805 $maDate = new Date($row['maj']); 806 $row['maj'] = $maDate->getDate(DATE_FORMAT_TIMESTAMP); 807 808 $this->_fetchData($row); 809 } 810 else { 811 return PEAR::raiseError( 812 "[" . get_class( 813 $this). " DB_syndic : load($idSyndic)] Aucune syndication ne correspond pas à cet ID!", 814 null, 815 null, 816 null, 817 null, 818 null, 819 false); 820 } 821 $result->free(); 822 } 823 } 824 825 // }}} 826 827 // {{{ delete() 828 829 /** 830 * This method is used to delete a syndication from the database 831 * @access public 832 * @param int $id_syndic ID of syndication to delete 833 */ 834 835 function delete ($idSyndic) { 836 $db = &$this->_getDB(); 837 838 if (DB::isError($db)) { 839 return PEAR::raiseError("[" . get_class($this). " DB_syndic : delete()] " . $db->getMessage(). "", null, 840 null, null, 841 null, null, 842 false); 843 } 844 845 $query = "DELETE FROM " . $GLOBALS['table_prefix']. "_syndic WHERE id_syndic = $idSyndic"; 846 847 $result = $db->query($query); 848 849 if (DB::isError($result)) { 850 return PEAR::raiseError("[" . get_class($this). " DB_syndic : delete()] " . $result->getMessage(). "", null, 851 null, null, 852 null, null, 853 false); 854 } 855 856 // mise a jour des statuts et des dates 857 $rubriqueMetier = &recuperer_instance_rubrique(); 858 $rubriqueMetier->load($this->getRubriqueID()); 859 $statut = $rubriqueMetier->getStatutFromRubrique($this->getRubriqueID()); 860 861 if ($statut != $rubriqueMetier->getStatut()) { 862 $rubriqueMetier->setStatut($statut); 863 $rubriqueMetier->update(); 864 } 865 866 $rubriqueMetier->load($this->getRubriqueID()); 867 $dateCalcul = $rubriqueMetier->getDateFromRubrique($rubriqueMetier->getRubriqueID()); 868 $dateRubrique = new Date($rubriqueMetier->getDate()); 869 870 if (Date::compare($dateCalcul, $dateRubrique) != 0) { 871 $rubriqueMetier->setDate($dateCalcul->getDate()); 872 $rubriqueMetier->update(); 873 } 874 875 unset($rubriqueMetier); 876 } 877 878 // }}} 879 880 // {{{ _fetchData() 881 882 /** 883 * This method is used to fetch result set fields into the object fields 884 * @access private 885 * @param int $row the row to fetch 886 */ 887 888 function _fetchData ($row) { 889 $this->setSyndicId($row['id_syndic']); 890 $this->setRubriqueId($row['id_rubrique']); 891 $this->setSecteurId($row['id_secteur']); 892 $this->setNomSite($row['nom_site']); 893 $this->setUrlSite($row['url_site']); 894 $this->setUrlSyndic($row['url_syndic']); 895 $this->setDescriptif($row['descriptif']); 896 $this->setMajDate($row['maj']); 897 $this->setSyndication($row['syndication']); 898 $this->setStatut($row['statut']); 899 $this->setDate($row['date_heure']); 900 $this->setDateSyndic($row['date_syndic']); 901 $this->setDateIndex($row['date_index']); 902 $this->setModeration($row['moderation']); 903 } 904 905 // }}} 906 907 // {{{ deleteMajDateAndStatut($myDate, $statut = null) 908 909 /** 910 * This method is used to delete the update date and the statut of syndication 911 * @access public 912 * @param Date $myDate 913 * @param String $statut 914 */ 915 916 function deleteMajDateAndStatut ($myDate, $statut = null) { 917 $db = &$this->_getDB(); 918 919 if (DB::isError($db)) { 920 return PEAR::raiseError( 921 "[" . get_class($this). " DB_syndic : deleteMajDateAndStatut()] " . $db->getMessage(). "", null, 922 null, null, 923 null, null, 924 false); 925 } 926 927 $dateTmp = new Date($mydate); 928 $mydate = $dateTmp->getDate(DATE_FORMAT_ISO); 929 930 $query = "DELETE FROM " . $GLOBALS['table_prefix']. "_syndic WHERE maj < '$myDate'"; 931 932 if ($statut != null) 933 $query .= " AND statut = '$statut'"; 934 935 //echo '<br><br>' . $query . '<br>'; 936 $result = $db->query($query); 937 938 if (DB::isError($result)) { 939 return PEAR::raiseError( 940 "[" . get_class($this). " DB_syndic : deleteMajDateAndStatut()] " . $result->getMessage(). "", 941 null, null, null, null, null, false); 942 } 943 } 944 945 // }}} 946 947 // {{{ getAllSyndicIds() 948 949 /** 950 * This method is used to get all syndication ID 951 * @access public 952 */ 953 954 function getAllSyndicIds () { 955 $syndicIds = array(); 956 $db = &$this->_getDB(); 957 958 if (DB::isError($db)) { 959 return PEAR::raiseError("[" . get_class($this). " DB_syndic : getAllSyndicIds()] " . $db->getMessage(). "", null, null, null, null, null, false); 960 } 961 962 $query = "SELECT id_syndic FROM " . $GLOBALS['table_prefix']. "_syndic"; 963 964 //echo '<br>' . $query . '<br>'; 965 $result = $db->query($query); 966 967 if (DB::isError($result)) { 968 return PEAR::raiseError("[" . get_class($this). " DB_syndic : getAllSyndicIds()] " . $result->getMessage(). "", null, null, null, null, null, false); 969 } 970 971 while ($row = $result->fetchRow()) { 972 $syndicIds[] = $row['id_syndic']; 973 } 974 975 $result->free(); 976 return $syndicIds; 977 } 978 979 // }}} 980 981 // {{{ getAllSyndicIdsForStatut($statut) 982 983 /** 984 * This method is used to get all syndication ID 985 * @access public 986 */ 987 988 function getAllSyndicIdsForStatut ($statut) { 989 $syndicIds = array(); 990 $db = &$this->_getDB(); 991 992 if (DB::isError($db)) { 993 return PEAR::raiseError("[" . get_class($this). " DB_syndic : getAllSyndicIdsForStatut()] " . $db->getMessage(). "", null, null, null, null, null, false); 994 } 995 996 $query = "SELECT id_syndic FROM " . $GLOBALS['table_prefix']. "_syndic WHERE statut='$statut'"; 997 998 //echo '<br>' . $query . '<br>'; 999 $result = $db->query($query); 1000 1001 if (DB::isError($result)) { 1002 return PEAR::raiseError("[" . get_class($this). " DB_syndic : getAllSyndicIdsForStatut()] " . $result->getMessage(). "", null, null, null, null, null, false); 1003 } 1004 1005 while ($row = $result->fetchRow()) { 1006 $syndicIds[] = $row['id_syndic']; 1007 } 1008 1009 $result->free(); 1010 return $syndicIds; 1011 } 1012 1013 // }}} 1014 1015 // {{{ getMaxDateHeure($id_rubrique,$statut) 1016 1017 function getMaxDateHeure ($id_rubrique, $statut) { 1018 $db = &$this->_getDB(); 1019 1020 if (DB::isError($db)) { 1021 return PEAR::raiseError("[" . get_class($this). " DB_syndic : getMaxDateHeure()] " . $db->getMessage(). "", null, null, null, null, null, false); 1022 } 1023 1024 $query = "SELECT MAX(date_heure) AS date_h FROM " . $GLOBALS['table_prefix']. "_syndic WHERE id_rubrique='$id_rubrique' AND statut='" . $statut . "'"; 1025 1026 $result = $db->query($query); 1027 1028 if (DB::isError($result)) { 1029 return PEAR::raiseError("[" . get_class($this). " DB_syndic : getMaxDateHeure()] " . $result->getMessage(). "", null, null, null, null, null, false); 1030 } 1031 1032 if ($row = $result->fetchRow()) { 1033 $result->free(); 1034 if ($row["date_h"] == null) { 1035 return new Date('1970-01-01 00:00:00'); 1036 } 1037 else { 1038 return new Date($row["date_h"]); 1039 } 1040 } 1041 1042 $result->free(); 1043 } 1044 1045 // }}} 1046 1047 // {{{ getRubriqueIDsByStatus($statut) 1048 1049 /** 1050 * This method is used to get heading ID in the table of syndication for a specific statut 1051 * @access public 1052 * @param String $statut 1053 */ 1054 1055 function getRubriqueIDsByStatus ($statut) { 1056 $rubriqueIds = array(); 1057 $db = &$this->_getDB(); 1058 1059 if (DB::isError($db)) { 1060 return PEAR::raiseError("[" . get_class($this). " DB_syndic : getRubriqueIDsByStatus()] " . $db->getMessage(). "", null, null, null, null, null, false); 1061 } 1062 1063 $query = "SELECT DISTINCT id_rubrique FROM " . $GLOBALS['table_prefix']. "_syndic WHERE statut = '$statut'"; 1064 1065 $result = $db->query($query); 1066 1067 if (DB::isError($result)) { 1068 return PEAR::raiseError("[" . get_class($this). " DB_syndic : getRubriqueIDsByStatus()] " . $result->getMessage(). "", null, null, null, null, null, false); 1069 } 1070 1071 while ($row = $result->fetchRow()) { 1072 $rubriqueIds[] = $row['id_rubrique']; 1073 } 1074 1075 $result->free(); 1076 return $rubriqueIds; 1077 } 1078 1079 // }}} 1080 1081 // {{{ howManySyndicIdForStatut($statut) 1082 1083 /** 1084 * This method is used to count syndication ID for a specific statut 1085 * @access public 1086 * @param String $statut 1087 */ 1088 1089 function howManySyndicIdForStatut ($statut) { 1090 $howManySyndicId = 0; 1091 $db = &$this->_getDB(); 1092 1093 if (DB::isError($db)) { 1094 return PEAR::raiseError("[" . get_class($this). " DB_syndic : howManySyndicIdForStatut()] " . $db->getMessage(). "", null, null, null, null, null, false); 1095 } 1096 1097 $query = "SELECT COUNT(id_syndic) as cnt FROM " . $GLOBALS['table_prefix']. "_syndic WHERE statut='$statut'"; 1098 1099 $result = $db->query($query); 1100 1101 if (DB::isError($result)) { 1102 return PEAR::raiseError("[" . get_class($this). " DB_syndic : howManySyndicIdForStatut()] " . $result->getMessage(). "", null, null, null, null, null, false); 1103 } 1104 1105 if ($row = $result->fetchRow()) { 1106 $howManySyndicId = intval($row["cnt"]); 1107 } 1108 1109 $result->free(); 1110 return $howManySyndicId; 1111 } 1112 1113 // }}} 1114 1115 // {{{ howManySyndicIdForSyndication($syndic) 1116 1117 /** 1118 * This method is used to count syndication ID for a specific syndication 1119 * @access public 1120 * @param String $syndication 1121 */ 1122 1123 function howManySyndicIdForSyndication ($syndic) { 1124 $howManySyndicId = 0; 1125 $db = &$this->_getDB(); 1126 1127 if (DB::isError($db)) { 1128 return PEAR::raiseError("[" . get_class($this). " DB_syndic : howManySyndicIdForSyndication()] " . $db->getMessage(). "", null, null, null, null, null, false); 1129 } 1130 1131 $query = "SELECT COUNT(id_syndic) as cnt FROM " . $GLOBALS['table_prefix']. "_syndic WHERE syndication='$syndic'"; 1132 1133 $result = $db->query($query); 1134 1135 if (DB::isError($result)) { 1136 return PEAR::raiseError("[" . get_class($this). " DB_syndic : howManySyndicIdForSyndication()] " . $result->getMessage(). "", null, null, null, null, null, false); 1137 } 1138 1139 if ($row = $result->fetchRow()) { 1140 $howManySyndicId = intval($row["cnt"]); 1141 } 1142 1143 $result->free(); 1144 return $howManySyndicId; 1145 } 1146 1147 // }}} 1148 1149 // {{{ updateSecteursForRubriques() 1150 1151 /** 1152 * This method is used to update sector ID for a specific heading ID 1153 * @access public 1154 * @param int $id_secteur 1155 * @param int $rubriques_totales 1156 */ 1157 1158 function updateSecteursForRubriques ($id_secteur, $rubriques_totales) { 1159 $db = &$this->_getDB(); 1160 1161 if (DB::isError($db)) { 1162 return PEAR::raiseError("[" . get_class($this). " DB_syndic : updateSecteursForRubriques()] " . $db->getMessage(). "", null, null, null, null, null, false); 1163 } 1164 1165 $query = "UPDATE " . $GLOBALS['table_prefix']. "_syndic SET id_secteur=$id_secteur WHERE id_rubrique IN ($rubriques_totales)"; 1166 1167 $result = $db->query($query); 1168 1169 if (DB::isError($result)) { 1170 return PEAR::raiseError("[" . get_class($this). " DB_syndic : updateSecteursForRubriques()] " . $result->getMessage(). "", null, null, null, null, null, false); 1171 } 1172 } 1173 1174 // }}} 1175 1176 // }}} 1177 1178 // {{{ getSyndicIdsForStatutAndDateIndex($statut) 1179 1180 /** 1181 * Returns an array of Syndic IDS. 1182 * 1183 * @return Array of SyndicsIds 1184 * @param $month 1185 * @param $year 1186 * @access public 1187 */ 1188 1189 function &getSyndicIdsForStatutAndDateIndex ($statut) { 1190 $result = array(); 1191 $db = &$this->_getDB(); 1192 1193 if (DB::isError($db)) { 1194 return PEAR::raiseError("[" . get_class($this). " DB_syndic : getSyndicIdsForStatutAndDateIndex()] " . $db->getMessage(). "", null, null, null, null, null, false); 1195 } 1196 1197 $maDate = new Date(); 1198 $maDate->subtractSeconds(intval(3600 * 24 * 7)); 1199 1200 $query = "SELECT id_syndic FROM " . $GLOBALS['table_prefix']. "_syndic WHERE statut='$statut' AND date_index < '" . $maDate->getDate(DATE_FORMAT_ISO). "' ORDER BY date_index"; 1201 1202 $queryResult = $db->limitQuery($query, 0, 1); 1203 1204 if (DB::isError($queryResult)) { 1205 return PEAR::raiseError("[" . get_class($this). " DB_syndic : getSyndicIdsForStatutAndDateIndex()] " . $queryResult->getMessage(). "", null, null, null, null, null, false); 1206 } 1207 1208 while ($row = $queryResult->fetchRow()) { 1209 $result[] = $row['id_syndic']; 1210 } 1211 1212 $queryResult->free(); 1213 return $result; 1214 } 1215 1216 // }}} 1217 1218 // {{{ getAllForSyndicationAndStatutAndIntervalHour($syndication, $statut, $hour) 1219 1220 /** 1221 * Returns an array of Syndication. 1222 * 1223 * 1224 * @return Array of Syndication 1225 * @param $syndication 1226 * @param $statut 1227 * @param $hour 1228 * @access public 1229 */ 1230 1231 function &getAllForSyndicationAndStatutAndIntervalHour ($syndication, $statut, $hour) { 1232 $result = array(); 1233 $db = &$this->_getDB(); 1234 1235 if (DB::isError($db)) { 1236 return PEAR::raiseError("[" . get_class($this). " DB_syndic : getAllForSyndicationAndStatutAndIntervalHour()] " . $db->getMessage(). "", null, null, null, null, null, false); 1237 } 1238 1239 $maDate = new Date(); 1240 $maDate->subtractSeconds(intval(3600 * $hour)); 1241 1242 $query = "SELECT * FROM " . $GLOBALS['table_prefix']. "_syndic WHERE syndication='$syndication' AND statut='$statut' AND date_syndic < '" . $maDate->getDate(DATE_FORMAT_ISO). "'"; 1243 //$query = "SELECT * FROM ".$GLOBALS['table_prefix']."_syndic WHERE syndication='$syndication' AND statut='$statut' AND date_syndic < DATE_SUB(NOW(), INTERVAL $hour HOUR) ORDER BY date_syndic LIMIT 0,1"; 1244 1245 //echo "<br>$query<br>"; 1246 1247 $queryResult = $db->limitQuery($query, 0, 1); 1248 1249 if (DB::isError($queryResult)) { 1250 return PEAR::raiseError("[" . get_class($this). " DB_syndic : getAllForSyndicationAndStatutAndIntervalHour()] " . $queryResult->getMessage(). "", null, null, null, null, null, false); 1251 } 1252 1253 while ($row = $queryResult->fetchRow()) { 1254 $resultSyndic = &BD_syndic::factory($this->getDbParameters(), $this->getDbOptions()); 1255 $resultSyndic->setSyndicId($row['id_syndic']); 1256 $resultSyndic->setRubriqueId($row['id_rubrique']); 1257 $resultSyndic->setSecteurId($row['id_secteur']); 1258 $resultSyndic->setNomSite($row['nom_site']); 1259 $resultSyndic->setUrlSite($row['url_site']); 1260 $resultSyndic->setUrlSyndic($row['url_syndic']); 1261 $resultSyndic->setDescriptif($row['descriptif']); 1262 $resultSyndic->setMajDate($row['maj']); 1263 $resultSyndic->setSyndication($row['syndication']); 1264 $resultSyndic->setStatut($row['statut']); 1265 $resultSyndic->setDate($row['date_heure']); 1266 $resultSyndic->setDateSyndic($row['date_syndic']); 1267 $resultSyndic->setDateIndex($row['date_index']); 1268 $resultSyndic->setModeration($row['moderation']); 1269 $result[] = &$resultSyndic; 1270 } 1271 1272 $queryResult->free(); 1273 return $result; 1274 } 1275 1276 // }}} 1277 1278 // {{{ getAllSyndicForSyndicIdAndsyndication($id_syndic) 1279 1280 /** 1281 * Returns an array of Syndication. 1282 * 1283 * 1284 * @return Array of Syndication 1285 * @param $id_syndic 1286 * @access public 1287 */ 1288 1289 function &getAllSyndicForSyndicIdAndsyndication ($id_syndic) { 1290 $result = array(); 1291 $db = &$this->_getDB(); 1292 1293 if (DB::isError($db)) { 1294 return PEAR::raiseError("[" . get_class($this). " DB_syndic : getAllSyndicForSyndicIdAndsyndication()] " . $db->getMessage(). "", null, null, null, null, null, false); 1295 } 1296 1297 $query = "SELECT * FROM " . $GLOBALS['table_prefix']. "_syndic WHERE id_syndic=$id_syndic AND syndication='oui' OR syndication='sus' OR syndication='off'"; 1298 1299 //echo "<br>$query<br>"; 1300 1301 $queryResult = $db->query($query); 1302 1303 if (DB::isError($queryResult)) { 1304 return PEAR::raiseError("[" . get_class($this). " DB_syndic : getAllSyndicForSyndicIdAndsyndication()] " . $queryResult->getMessage(). "", null, null, null, null, null, false); 1305 } 1306 1307 while ($row = $queryResult->fetchRow()) { 1308 $resultSyndic = &BD_syndic::factory($this->getDbParameters(), $this->getDbOptions()); 1309 $resultSyndic->setSyndicId($row['id_syndic']); 1310 $resultSyndic->setRubriqueId($row['id_rubrique']); 1311 $resultSyndic->setSecteurId($row['id_secteur']); 1312 $resultSyndic->setNomSite($row['nom_site']); 1313 $resultSyndic->setUrlSite($row['url_site']); 1314 $resultSyndic->setUrlSyndic($row['url_syndic']); 1315 $resultSyndic->setDescriptif($row['descriptif']); 1316 $resultSyndic->setMajDate($row['maj']); 1317 $resultSyndic->setSyndication($row['syndication']); 1318 $resultSyndic->setStatut($row['statut']); 1319 $resultSyndic->setDate($row['date_heure']); 1320 $resultSyndic->setDateSyndic($row['date_syndic']); 1321 $resultSyndic->setDateIndex($row['date_index']); 1322 $resultSyndic->setModeration($row['moderation']); 1323 $result[] = &$resultSyndic; 1324 } 1325 1326 $queryResult->free(); 1327 return $result; 1328 } 1329 1330 // }}} 1331 1332 // {{{ unlinkAllExceptsyndicIds($syndicId) 1333 1334 /** 1335 * This method is used to delete all the syndicated articles exceptfor a specific syndication ID 1336 * @access public 1337 * @param int $syndicId ID of syndication to delete 1338 */ 1339 1340 function unlinkAllExceptsyndicIds ($syndicId) { 1341 if ((is_null($syndicId))or ($syndicId <= 0)) 1342 return; 1343 1344 $db = &$this->_getDB(); 1345 1346 if (DB::isError($db)) { 1347 return PEAR::raiseError("[" . get_class($this). " DB_syndic : unlinkAllExceptsyndicIds()] " . $db->getMessage(). "", null, null, null, null, null, false); 1348 } 1349 1350 $query = "DELETE FROM " . $GLOBALS['table_prefix']. "_syndic_articles WHERE id_syndic NOT IN (0,$syndicId)"; 1351 1352 //echo '<br>' . $query . '<br>'; 1353 $result = $db->query($query); 1354 1355 if (DB::isError($result)) { 1356 return PEAR::raiseError("[" . get_class($this). " DB_syndic : unlinkAllExceptsyndicIds()] " . $result->getMessage(). "", null, null, null, null, null, false); 1357 } 1358 1359 $query = "DELETE FROM " . $GLOBALS['table_prefix']. "_mots_syndic WHERE id_syndic NOT IN ($syndicId)"; 1360 1361 //echo '<br>' . $query . '<br>'; 1362 $result = $db->query($query); 1363 1364 if (DB::isError($result)) { 1365 return PEAR::raiseError("[" . get_class($this). " DB_syndic : unlinkAllExceptsyndicIds()] " . $result->getMessage(). "", null, null, null, null, null, false); 1366 } 1367 1368 $query = "DELETE FROM " . $GLOBALS['table_prefix']. "_forum WHERE id_syndic NOT IN (0,$syndicId)"; 1369 1370 //echo '<br>' . $query . '<br>'; 1371 $result = $db->query($query); 1372 1373 if (DB::isError($result)) { 1374 return PEAR::raiseError("[" . get_class($this). " DB_syndic : unlinkAllExceptsyndicIds()] " . $result->getMessage(). "", null, null, null, null, null, false); 1375 } 1376 } 1377 1378 // }}} 1379 1380 // {{{ getAllForStatut($statut) 1381 1382 /** 1383 * Returns an array of Syndic. 1384 * 1385 * @return Array of Syndic 1386 * @param $statut 1387 * @access public 1388 */ 1389 1390 function &getAllForStatut ($statut) { 1391 $syndics = array(); 1392 $db = &$this->_getDB(); 1393 1394 if (DB::isError($db)) { 1395 return PEAR::raiseError("[" . get_class($this). " DB_syndic : getAllForStatut()] " . $db->getMessage(). "", null, null, null, null, null, false); 1396 } 1397 1398 $query = "SELECT * FROM " . $GLOBALS['table_prefix']. "_syndic WHERE statut='$statut'"; 1399 1400 //echo "<br><br>$query<br><br>"; 1401 $queryResult = $db->query($query); 1402 1403 if (DB::isError($queryResult)) { 1404 return PEAR::raiseError("[" . get_class($this). " DB_syndic : getAllForStatut()] " . $queryResult->getMessage(). "", null, null, null, null, null, false); 1405 } 1406 1407 while ($row = $queryResult->fetchRow()) { 1408 $resultSyndic = &BD_syndic::factory($this->getDbParameters(), $this->getDbOptions()); 1409 1410 $maDate = new Date($row['maj']); 1411 $row['maj'] = $maDate->getDate(DATE_FORMAT_TIMESTAMP); 1412 1413 $resultSyndic->_fetchData($row); 1414 $syndics[] = &$resultSyndic; 1415 } 1416 1417 $queryResult->free(); 1418 return $syndics; 1419 } 1420 1421 // }}} 1422 1423 // {{{ howManySiteForMot($conf_mot, $aff_articles, $statut) 1424 1425 function howManySiteForMot ($conf_mot, $aff_articles, $statut) { 1426 $howManySite = 0; 1427 $db = &$this->_getDB(); 1428 1429 if (DB::isError($db)) { 1430 return PEAR::raiseError("[" . get_class($this). " DB_site : howManySiteForMot()] " . $db->getMessage(). "", null, null, null, null, null, false); 1431 } 1432 1433 $query = "SELECT COUNT(*) as cnt FROM " . $GLOBALS['table_prefix']. "_mots_syndic lien, " . $GLOBALS['table_prefix']. "_syndic syndic WHERE lien.id_mot=$conf_mot AND syndic.id_syndic=lien.id_syndic AND syndic.statut LIKE '$aff_articles' AND syndic.statut!='$statut'"; 1434 1435 $result = $db->query($query); 1436 1437 if (DB::isError($result)) { 1438 return PEAR::raiseError("[" . get_class($this). " DB_site : howManySiteForMot()] " . $result->getMessage(). "", null, null, null, null, null, false); 1439 } 1440 1441 if ($row = $result->fetchRow()) { 1442 $$howManySite = intval($row["cnt"]); 1443 } 1444 1445 $result->free(); 1446 return $howManySite; 1447 } 1448 // }}} 1449 1450 // {{{ getAllSyndics() 1451 1452 function &getAllSyndics () { 1453 $result = array(); 1454 $db = &$this->_getDB(); 1455 1456 if (DB::isError($db)) { 1457 return PEAR::raiseError("[" . get_class($this). " DB_syndic : getAllSyndics()] " . $db->getMessage(). "", null, null, null, null, null, false); 1458 } 1459 1460 $query = "SELECT * FROM " . $GLOBALS['table_prefix']. "_syndic"; 1461 1462 //echo "<br>$query<br>"; 1463 1464 $queryResult = $db->query($query); 1465 1466 if (DB::isError($queryResult)) { 1467 return PEAR::raiseError("[" . get_class($this). " DB_syndic : getAllSyndics()] " . $queryResult->getMessage(). "", null, null, null, null, null, false); 1468 } 1469 1470 while ($row = $queryResult->fetchRow()) { 1471 $resultSyndic = &BD_syndic::factory($this->getDbParameters(), $this->getDbOptions()); 1472 $resultSyndic->setSyndicId($row['id_syndic']); 1473 $resultSyndic->setRubriqueId($row['id_rubrique']); 1474 $resultSyndic->setSecteurId($row['id_secteur']); 1475 $resultSyndic->setNomSite($row['nom_site']); 1476 $resultSyndic->setUrlSite($row['url_site']); 1477 $resultSyndic->setUrlSyndic($row['url_syndic']); 1478 $resultSyndic->setDescriptif($row['descriptif']); 1479 $resultSyndic->setMajDate($row['maj']); 1480 $resultSyndic->setSyndication($row['syndication']); 1481 $resultSyndic->setStatut($row['statut']); 1482 $resultSyndic->setDate($row['date_heure']); 1483 $resultSyndic->setDateSyndic($row['date_syndic']); 1484 $resultSyndic->setDateIndex($row['date_index']); 1485 $resultSyndic->setModeration($row['moderation']); 1486 $result[] = &$resultSyndic; 1487 } 1488 1489 $queryResult->free(); 1490 return $result; 1491 } 1492 1493 // }}} 1494 1495 // {{{ getSyndicsForRubriqueIdAndStatut($rubriqueId, $statut, $orderBy) 1496 1497 /** 1498 * Returns an array of Syndic. 1499 * 1500 * @return Array of Syndic 1501 * @param $rubriqueId 1502 * @param $statut 1503 * @param $orderBy 1504 * @access public 1505 */ 1506 1507 function &getSyndicsForRubriqueIdAndStatut ($rubriqueId, $statut, $orderBy) { 1508 $syndics = array(); 1509 $db = &$this->_getDB(); 1510 1511 if (DB::isError($db)) { 1512 return PEAR::raiseError("[" . get_class($this). " DB_syndic : getSyndicsForRubriqueIdAndStatut()] " . $db->getMessage(). "", null, null, null, null, null, false); 1513 } 1514 1515 $query = "SELECT " . SYNDIC_ALL_FIELDS . " FROM " . $GLOBALS['table_prefix']. "_syndic WHERE id_rubrique=$rubriqueId AND statut!='$statut'"; 1516 1517 if ($orderBy != null) 1518 $query .= " ORDER BY $orderBy"; 1519 1520 //echo "<br><br>$query<br><br>"; 1521 1522 $queryResult = $db->query($query); 1523 1524 if (DB::isError($queryResult)) { 1525 return PEAR::raiseError("[" . get_class($this). " DB_syndic : getSyndicsForRubriqueIdAndStatut()] " . $queryResult->getMessage(). "", null, null, null, null, null, false); 1526 } 1527 1528 while ($row = $queryResult->fetchRow()) { 1529 $resultSyndic = &BD_syndic::factory($this->getDbParameters(), $this->getDbOptions()); 1530 1531 $maDate = new Date($row['maj']); 1532 $row['maj'] = $maDate->getDate(DATE_FORMAT_TIMESTAMP); 1533 1534 $resultSyndic->_fetchData($row); 1535 $syndics[] = &$resultSyndic; 1536 } 1537 1538 $queryResult->free(); 1539 return $syndics; 1540 } 1541 1542 // }}} 1543 1544 } 1545 ?>
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 |