[ 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 Petition business persistence abstraction. 20 // 21 22 if (defined("_BD_PETITION")) 23 return; 24 25 define("_BD_PETITION", "1"); 26 27 require_once("PEAR.php"); 28 require_once("DB.php"); 29 require_once dirname(__FILE__). "/metier.php"; 30 31 define("PETITION_ALL_FIELDS", " id_article, email_unique, site_obli, site_unique, message, texte, maj "); 32 33 /** 34 * BD_petition is a base class for petition business persistence abstraction implementations, and must be 35 * inherited by all such. 36 * @package BD 37 * @author Antoine Angénieux <aangenieux@clever-age.com> 38 * @author Erwan Le Bescond <elebescond@clever-age.com> 39 * @access public 40 */ 41 class BD_petition extends BD_metier { 42 43 // {{{ properties 44 45 /** 46 * Article ID. 47 * @var int 48 * @access private 49 */ 50 var $_articleId; 51 52 /** 53 * email. 54 * @var String 55 * @access private 56 */ 57 var $_emailUnique; 58 59 /** 60 * obligatory site . 61 * @var String 62 * @access private 63 */ 64 var $_siteObli; 65 66 /** 67 * Unique Site. 68 * @var String 69 * @access private 70 */ 71 var $_siteUnique; 72 73 /** 74 * message. 75 * @var String 76 * @access private 77 */ 78 var $_message; 79 80 /** 81 * texte. 82 * @var String 83 * @access private 84 */ 85 var $_texte; 86 87 /** 88 * Update Date. 89 * @var Date 90 * @access private 91 */ 92 var $_majDate; 93 94 // }}} 95 96 // {{{ factory() 97 98 /** 99 * This method is a factory static method. It should be used to get any 100 * specific implementation instace of Petition business data type. 101 * @param BD_parameters DB connection parameters 102 * @access public 103 */ 104 function &factory ($dbParameters, $dbOptions = null) { 105 if (file_exists( 106 dirname(__FILE__). "/" . $dbParameters->_dbEngine . "/petition_" . $dbParameters->_dbEngine . ".php") 107 == false) { 108 include_once (dirname(__FILE__). "/common/petition_common.php"); 109 $classname = "BD_petition_common"; 110 } 111 else { 112 include_once 113 (dirname(__FILE__). "/" . $dbParameters->_dbEngine . "/petition_" . $dbParameters->_dbEngine . ".php"); 114 $classname = "BD_petition_" . $dbParameters->_dbEngine; 115 } 116 117 if (!class_exists($classname)) { 118 return PEAR::raiseError("Cannot instanciate class $classname", null, null, null, null, null, false); 119 } 120 121 $obj = &new $classname; 122 $result = $obj->setDbParameters($dbParameters); 123 124 if ($dbOptions != null) { 125 $obj->setDbOptions($dbOptions); 126 } 127 128 if (PEAR::isError($result)) { 129 return $result; 130 } 131 else { 132 return $obj; 133 } 134 } 135 136 // }}} 137 138 // {{{ constructor 139 140 /** 141 * DB_petition constructor. 142 * 143 * @access public 144 */ 145 146 function BD_petition () { } 147 148 // }}} 149 150 // {{{ getArticleId() 151 152 /** 153 * Returns the Article ID 154 * @return int 155 * @access public 156 */ 157 158 function getArticleId () { 159 return $this->_articleId; 160 } 161 162 // }}} 163 164 // {{{ setArticleId() 165 166 /** 167 * Sets the Article ID 168 * @param int 169 * @access public 170 */ 171 172 function setArticleid ($articleId) { 173 $this->_articleId = $articleId; 174 } 175 176 // }}} 177 178 // {{{ getEmailUnique() 179 180 /** 181 * Returns the unique Email 182 * @return String 183 * @access public 184 */ 185 186 function getEmailUnique () { 187 return $this->_emailUnique; 188 } 189 190 // }}} 191 192 // {{{ setEmailUnique() 193 194 /** 195 * Sets the Unqiue Email 196 * @param String 197 * @access public 198 */ 199 200 function setEmailUnique ($emailUnique) { 201 $this->_emailUnique = corriger_caracteres($emailUnique); 202 } 203 204 // }}} 205 206 // {{{ getSiteObli() 207 208 /** 209 * Returns the Obligatory Site 210 * @return String 211 * @access public 212 */ 213 214 function getSiteObli () { 215 return $this->_siteObli; 216 } 217 218 // }}} 219 220 // {{{ setSiteObli() 221 222 /** 223 * Sets the Obligatory Site 224 * @param String 225 * @access public 226 */ 227 228 function setSiteObli ($siteObli) { 229 $this->_siteObli = corriger_caracteres($siteObli); 230 } 231 232 // }}} 233 234 // {{{ getsiteUnique() 235 236 /** 237 * Returns the unique Site 238 * @return String 239 * @access public 240 */ 241 242 function getSiteUnique () { 243 return $this->_siteUnique; 244 } 245 246 // }}} 247 248 // {{{ setSiteUnique() 249 250 /** 251 * Sets the unique Site 252 * @param String 253 * @access public 254 */ 255 256 function setSiteUnique ($siteUnique) { 257 $this->_siteUnique = corriger_caracteres($siteUnique); 258 } 259 260 // }}} 261 262 // {{{ getMessage() 263 264 /** 265 * Returns the Message 266 * @return String 267 * @access public 268 */ 269 270 function getMessage () { 271 return $this->_message; 272 } 273 274 // }}} 275 276 // {{{ setMessage() 277 278 /** 279 * Sets the Message 280 * @param String 281 * @access public 282 */ 283 284 function setMessage ($message) { 285 $this->_message = corriger_caracteres($message); 286 } 287 288 // }}} 289 290 // {{{ getTexte() 291 292 /** 293 * Returns the Text 294 * @return String 295 * @access public 296 */ 297 298 function getTexte () { 299 return $this->_texte; 300 } 301 302 // }}} 303 304 // {{{ setTexte() 305 306 /** 307 * Sets the Text 308 * @param String 309 * @access public 310 */ 311 312 function setTexte ($texte) { 313 $this->_texte = corriger_caracteres($texte); 314 } 315 316 // }}} 317 318 // {{{ getMajDate() 319 320 /** 321 * Returns the petition update date 322 * @return Date 323 * @access public 324 */ 325 326 function getMajDate () { 327 return $this->_majDate; 328 } 329 330 // }}} 331 332 // {{{ setMajDate() 333 334 /** 335 * Sets the petition update date 336 * @param Date 337 * @access public 338 */ 339 340 function setMajDate ($majDate) { 341 $this->_majDate = $majDate; 342 } 343 344 // }}} 345 346 // {{{ create() 347 348 function create () { 349 $db = &$this->_getDB(); 350 351 if (DB::isError($db)) { 352 return PEAR::raiseError("[" . get_class($this). " DB_petition : create()] " . $db->getMessage(). "", null, 353 null, null, 354 null, null, 355 false); 356 } 357 358 $string_prefix = $GLOBALS['table_prefix']. "_petitions"; 359 $signatureId = $db->nextId($string_prefix, true); 360 361 if (DB::isError($petitionId)) { 362 return PEAR::raiseError("[" . get_class($this). " DB_petition : create()] " . $petitionId->getMessage(). "", 363 null, 364 null, 365 null, 366 null, 367 null, 368 false); 369 } 370 371 $this->_petitionId = $petitionId; 372 373 $query 374 = "INSERT INTO " . $GLOBALS['table_prefix']. "_petitions (" . PETITION_ALL_FIELDS . ") VALUES " . "" . $this->_articleId . ", " . "'" . $db->quoteString( 375 $this->_emailUnique). "', " . "'" . $db->quoteString( 376 $this->_siteObli). "', " . "'" . $db->quoteString( 377 $this->_siteUnique). "', " . "'" . $db->quoteString( 378 $this->_message). "', " . "'" . $db->quoteString( 379 $this->_texte). "', " . "'" . $db->quoteString( 380 $this->_majDate). "')"; 381 382 $result = $db->query($query); 383 384 if (DB::isError($result)) { 385 return PEAR::raiseError("[" . get_class($this). " DB_petition : create()] " . $result->getMessage(). "", 386 null, 387 null, 388 null, 389 null, 390 null, 391 false); 392 } 393 } 394 395 // }}} 396 397 // {{{ update() 398 399 function update () { 400 $db = &$this->_getDB(); 401 402 if (DB::isError($db)) { 403 return PEAR::raiseError("[" . get_class($this). " DB_petition : update()] " . $db->getMessage(). "", null, 404 null, null, 405 null, null, 406 false); 407 } 408 409 $maDate = new Date(); 410 $this->setMajDate($this->getDate(DATE_FORMAT_ISO)); 411 412 $query 413 = "UPDATE " . $GLOBALS['table_prefix']. "_petitions " . "SET id_article = " . $this->_articleId . ", " . "email_unique = '" . $db->quoteString( 414 $this->_emailUnique). "', site_obli = '" . $db->quoteString( 415 $this->_siteObli). "', " . "site_unique = '" . $db->quoteString( 416 $this->_siteUnique). "', message = '" . $db->quoteString( 417 $this->_message). "', " . "maj = '" . $db->quoteString( 418 $this->_majDate). "' " . "WHERE id_signature = " . $this->_signatureId; 419 420 $result = $db->query($query); 421 422 if (DB::isError($result)) { 423 return PEAR::raiseError("[" . get_class($this). " DB_petition : update()] " . $result->getMessage(). "", 424 null, 425 null, 426 null, 427 null, 428 null, 429 false); 430 } 431 } 432 433 // }}} 434 435 // {{{ load() 436 437 function load ($idArticle) { 438 $db = &$this->_getDB(); 439 440 if (DB::isError($db)) { 441 return PEAR::raiseError("[" . get_class($this). " DB_petition : load()] " . $db->getMessage(). "", null, 442 null, null, 443 null, null, 444 false); 445 } 446 447 $query 448 = "SELECT " . PETITION_ALL_FIELDS . " FROM " . $GLOBALS['table_prefix']. "_petitions WHERE id_article = $idArticle"; 449 450 //echo $query."<br>"; 451 $result = $db->query($query); 452 453 if (DB::isError($result)) { 454 return PEAR::raiseError("[" . get_class($this). " DB_petition : load()] " . $result->getMessage(). "", null, 455 null, null, 456 null, null, 457 false); 458 } 459 else { 460 if ($row = $result->fetchRow()) { 461 $maDate = new Date($row['maj']); 462 $row['maj'] = $maDate->getDate(DATE_FORMAT_TIMESTAMP); 463 464 $this->_fetchData($row); 465 } 466 else { 467 return PEAR::raiseError( 468 "[" . get_class( 469 $this). " DB_petition : load($idPetition)] Aucune petition ne correspond pas à cet ID!", 470 99, 471 null, 472 null, 473 null, 474 null, 475 false); 476 } 477 $result->free(); 478 } 479 } 480 481 // }}} 482 483 // {{{ replace($id_article, $email_unique, $site_obli, $site_unique, $message, $texte_petition) 484 485 function replace ($id_article, $email_unique, $site_obli, $site_unique, $message, $texte_petition) { 486 $db = &$this->_getDB(); 487 488 if (DB::isError($db)) { 489 return PEAR::raiseError("[" . get_class($this). " DB_petition : replace()] " . $db->getMessage(). "", null, 490 null, null, 491 null, null, 492 false); 493 } 494 495 $query = "SELECT id_article FROM " . $GLOBALS['table_prefix']. "_petitions WHERE id_article=$id_article"; 496 497 $result = $db->query($query); 498 499 if (DB::isError($result)) { 500 return PEAR::raiseError("[" . get_class($this). " DB_petition : writeMeta()] " . $result->getMessage(). "", 501 null, 502 null, 503 null, 504 null, 505 null, 506 false); 507 } 508 509 if ($result->numRows() > 0) { 510 $query 511 = "UPDATE " . $GLOBALS['table_prefix']. "_petitions SET email_unique='$email_unique', site_obli='$site_obli', site_unique='$site_unique', message='$message', texte='$texte_petition' WHERE id_article=$id_article"; 512 /* 513 $query = "REPLACE ".$GLOBALS['table_prefix']."_petitions (id_article, email_unique, site_obli, site_unique, message, texte) ". 514 "VALUES ($id_article, '$email_unique', '$site_obli', '$site_unique', '$message', '$texte_petition')"; 515 */ 516 517 $result = $db->query($query); 518 if (DB::isError($result)) { 519 return PEAR::raiseError( 520 "[" . get_class($this). " DB_petition : replace()] " . $result->getMessage(). "", null, null, 521 null, null, null, 522 false); 523 } 524 } 525 else { 526 $query 527 = "INSERT INTO " . $GLOBALS['table_prefix']. "_petitions(id_article, email_unique, site_obli, site_unique, message, texte) VALUES ($id_article, '$email_unique', '$site_obli', '$site_unique', '$message', '$texte_petition')"; 528 529 $result = $db->query($query); 530 if (DB::isError($result)) { 531 return PEAR::raiseError( 532 "[" . get_class($this). " DB_petition : replace()] " . $result->getMessage(). "", null, null, 533 null, null, null, 534 false); 535 } 536 } 537 } 538 539 // }}} 540 541 // {{{ delete() 542 543 function delete ($idArticle) { 544 $db = &$this->_getDB(); 545 546 if (DB::isError($db)) { 547 return PEAR::raiseError("[" . get_class($this). " DB_petition : delete()] " . $db->getMessage(). "", null, 548 null, null, 549 null, null, 550 false); 551 } 552 553 $query = "DELETE FROM " . $GLOBALS['table_prefix']. "_petitions WHERE id_article = $idArticle"; 554 555 $result = $db->query($query); 556 557 if (DB::isError($result)) { 558 return PEAR::raiseError("[" . get_class($this). " DB_petition : delete()] " . $result->getMessage(). "", 559 null, 560 null, 561 null, 562 null, 563 null, 564 false); 565 } 566 } 567 568 // }}} 569 570 // {{{ _fetchData() 571 572 function _fetchData ($row) { 573 $this->setArticleId($row['id_article']); 574 $this->setEmailUnique($row['email_unique']); 575 $this->setSiteObli($row['site_obli']); 576 $this->setSiteUnique($row['site_unique']); 577 $this->setMessage($row['message']); 578 $this->setTexte($row['texte']); 579 $this->setMajDate($row['maj']); 580 } 581 582 // }}} 583 584 // {{{ deleteMajDate($myDate) 585 586 /** 587 * This method is used to delete all petitions former to mydate 588 * @access public 589 */ 590 591 function deleteMajDate ($myDate) { 592 $db = &$this->_getDB(); 593 594 if (DB::isError($db)) { 595 return PEAR::raiseError("[" . get_class($this). " DB_petition : deleteMajDate()] " . $db->getMessage(). "", null, null, null, null, null, false); 596 } 597 598 $dateTmp = new Date($mydate); 599 $mydate = $dateTmp->getDate(DATE_FORMAT_ISO); 600 601 $query = "DELETE FROM " . $GLOBALS['table_prefix']. "_petitions WHERE maj < '$mydate'"; 602 603 $result = $db->query($query); 604 605 if (DB::isError($result)) { 606 return PEAR::raiseError("[" . get_class($this). " DB_petition : deleteMajDate()] " . $result->getMessage(). "", null, null, null, null, null, false); 607 } 608 } 609 610 // }}} 611 612 // {{{ getAllForArticleId($id_article) 613 614 /** 615 * This method returns an array of petition 616 * @return int 617 * @access public 618 */ 619 function &getAllForArticleId ($id_article) { 620 $result = array(); 621 $db = &$this->_getDB(); 622 623 if (DB::isError($db)) { 624 return PEAR::raiseError("[" . get_class($this). " DB_petition : getAllForArticleId()] " . $db->getMessage(). "", null, null, null, null, null, false); 625 } 626 627 $query = "SELECT " . PETITION_ALL_FIELDS . " FROM " . $GLOBALS['table_prefix']. "_petitions WHERE id_article=$id_article"; 628 629 $queryResult = $db->query($query); 630 631 if (DB::isError($result)) { 632 return PEAR::raiseError("[" . get_class($this). " DB_petition : getAllForArticleId()] " . $queryResult->getMessage(). "", null, null, null, null, null, false); 633 } 634 635 while ($row = $queryResult->fetchRow()) { 636 $resultPetition = &BD_petition::factory($this->getDbParameters(), $this->getDbOptions()); 637 638 $maDate = new Date($row['maj']); 639 $row['maj'] = $maDate->getDate(DATE_FORMAT_TIMESTAMP); 640 641 $resultPetition->_fetchData($row); 642 643 $result[] = &$resultPetition; 644 } 645 646 $queryResult->free(); 647 648 return $result; 649 } 650 651 // }}} 652 653 } 654 ?>
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 |