PageRenderTime 52ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/src/2.071.0/_courrier.class.php

https://github.com/crepeausucre/soothERP
PHP | 827 lines | 580 code | 136 blank | 111 comment | 47 complexity | c18bb23b79fcb08574be0047dee93a30 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, LGPL-3.0
  1. <?php
  2. // *************************************************************************************************************
  3. // CLASSES REGISSANT LES INFORMATIONS SUR UN COURRIER
  4. // *************************************************************************************************************
  5. //
  6. //
  7. //
  8. /*
  9. * 3 classes :
  10. * courrier <: CourrierPDFvierge
  11. * courrier <: CourrierEtendu
  12. *
  13. * Pour un utilisation normale du courrier, nous utiliserons a classe CourrierEtendu.
  14. * */
  15. // *************************************************************************************************************
  16. // CLASSE Courrier
  17. // *************************************************************************************************************
  18. abstract class Courrier{
  19. //@TODO COURRIER : PDF : doc_tmp est-il le bon rיpertoire pour stocker temporairement un courrier temporaire?
  20. //exemple : envoi d'un courrier par mail
  21. public static final function GET_TMP_FOLDER() {return "doc_tmp/";}
  22. //voir dans la BD la TABLE : COURRIERS
  23. private $id_type_courrier;
  24. private $date_courrier;
  25. private $objet;
  26. private $contenu;
  27. //voir dans la BD la TABLE : COURRIERS_TYPES
  28. private $lib_type_courrier;
  29. private $code_courrier;
  30. private $actif;
  31. //voir dans la BD la TABLE : COURRIERS_ETATS
  32. private $id_etat_courrier;
  33. private $lib_etat_courrier;
  34. //Valeur des diffיrents יtats
  35. public static final function ETAT_EN_REDAC(){return 1;}
  36. public static final function ETAT_REDIGE() {return 2;}
  37. public static final function ETAT_ANNULE() {return 3;}
  38. private $id_pdf_modele;
  39. private $lib_pdf_modele;
  40. private $desc_pdf_modele;
  41. private $id_pdf_type;
  42. private $lib_pdf_type;
  43. //@TODO COURRIER : MODELE PDF : comment utiliser $code_file
  44. private $code_file; //code md5 du nom du fichier pdf gיnיrי lors de l'envois du document
  45. private $code_pdf_modele; // Code du modטle utilisי pour l'impression
  46. public function __construct($id_type_courrier, $id_pdf_modele, $id_etat_courrier, $date_courrier, $objet, $contenu){
  47. global $bdd;
  48. if (!is_numeric($id_type_courrier) || !is_numeric($id_pdf_modele) || !is_numeric($id_etat_courrier))
  49. return false;
  50. $query = "SELECT ct.id_type_courrier, ct.lib_type_courrier, ct.code_courrier, ct.actif,
  51. pm.id_pdf_modele, pm.lib_modele, pm.desc_modele, pm.code_pdf_modele,
  52. pt.id_pdf_type, pt.lib_pdf_type
  53. FROM courriers_modeles_pdf cmp
  54. LEFT JOIN courriers_types ct ON cmp.id_type_courrier = ct.id_type_courrier
  55. LEFT JOIN pdf_modeles pm ON cmp.id_pdf_modele = pm.id_pdf_modele
  56. LEFT JOIN pdf_types pt ON pm.id_pdf_type = pt.id_pdf_type
  57. WHERE cmp.id_type_courrier = '".$id_type_courrier."' AND
  58. cmp.id_pdf_modele = '".$id_pdf_modele."' ";
  59. $resultat = $bdd->query ($query);
  60. if (!$r = $resultat->fetchObject())
  61. return false;
  62. $this->id_pdf_modele = $r->id_pdf_modele;
  63. $this->lib_pdf_modele = $r->lib_modele;
  64. $this->desc_pdf_modele = $r->desc_modele;
  65. $this->code_pdf_modele = $r->code_pdf_modele;
  66. $this->id_pdf_type = $r->id_pdf_type;
  67. $this->lib_pdf_type = $r->lib_pdf_type;
  68. $this->date_courrier = $date_courrier;
  69. $this->objet = $objet;
  70. $this->contenu = $contenu;
  71. $this->id_type_courrier = $r->id_type_courrier;
  72. $this->lib_type_courrier = $r->lib_type_courrier;
  73. $this->code_courrier = $r->code_courrier;
  74. $this->actif = $r->actif;
  75. $this->code_file = md5(uniqid(rand(), true));
  76. if (!$this->setId_etat_courrier($id_etat_courrier))
  77. return false;
  78. }
  79. // *************************************************************************************************************
  80. // Getters & Setters pour le courrier
  81. // *************************************************************************************************************
  82. public function getDate_courrier(){
  83. return $this->date_courrier;
  84. }
  85. protected function setDate_courrier($date_courrier){
  86. return $this->date_courrier = $date_courrier;
  87. }
  88. public function getObjet(){
  89. return $this->objet;
  90. }
  91. public function setObjet($objet){
  92. $this->objet = $objet;
  93. }
  94. public function getContenu(){
  95. return $this->contenu;
  96. }
  97. public function setContenu($contenu){
  98. $search = array(
  99. "<BR/>",
  100. "&eacute;",
  101. "&egrave;",
  102. "&apos;",
  103. "&agrave;",
  104. "&ugrave;",
  105. "&euro;"
  106. );
  107. $replace = array(
  108. "<br>",
  109. "י",
  110. "ט",
  111. "'",
  112. "א",
  113. "ש",
  114. "EUR"
  115. );
  116. $this->contenu = str_replace($search, $replace, $contenu);
  117. }
  118. public function getCode_file(){
  119. return $this->code_file;
  120. }
  121. // *************************************************************************************************************
  122. // Getters & Setters pour l'etat du courrier
  123. // *************************************************************************************************************
  124. public function setId_etat_courrier($id_etat_courrier){
  125. global $bdd;
  126. if(!is_numeric($id_etat_courrier))
  127. return false;
  128. $query = "SELECT id_etat_courrier, lib_etat_courrier
  129. FROM courriers_etats
  130. WHERE id_etat_courrier = '".$id_etat_courrier."' ";
  131. $r = $bdd->query ($query);
  132. if (!$r = $r->fetchObject())
  133. return false;
  134. $this->id_etat_courrier = $r->id_etat_courrier;
  135. $this->lib_etat_courrier = $r->lib_etat_courrier;
  136. return true;
  137. }
  138. public function getId_etat_courrier(){
  139. return $this->id_etat_courrier;
  140. }
  141. public function getLib_etat_courrier(){
  142. return $this->lib_etat_courrier;
  143. }
  144. // *************************************************************************************************************
  145. // Getters & Setters pour le type du courrier
  146. // *************************************************************************************************************
  147. public function setId_type_courrier($id_type_courrier){
  148. global $bdd;
  149. if(!is_numeric($id_type_courrier))
  150. return false;
  151. $query = "SELECT id_type_courrier, lib_type_courrier, code_courrier, actif
  152. FROM courriers_types
  153. WHERE id_type_courrier = '".$id_type_courrier."' ";
  154. $r = $bdd->query ($query);
  155. if (!$r = $r->fetchObject())
  156. return false;
  157. $this->id_type_courrier = $r->id_type_courrier;
  158. $this->lib_type_courrier = $r->lib_type_courrier;
  159. $this->code_courrier = $r->code_courrier;
  160. $this->actif = $r->actif;
  161. return true;
  162. }
  163. public function getId_type_courrier(){
  164. return $this->id_type_courrier;
  165. }
  166. public function getLib_type_courrier(){
  167. return $this->lib_type_courrier;
  168. }
  169. public function getCode_courrier(){
  170. return $this->code_courrier;
  171. }
  172. public function getActif(){
  173. return $this->actif;
  174. }
  175. public abstract function getExpediteur();
  176. // *************************************************************************************************************
  177. // Getters & Setters pour le modele PDF
  178. // *************************************************************************************************************
  179. public function setId_pdf_modele($id_pdf_modele){
  180. global $bdd;
  181. if(!is_numeric($id_pdf_modele))
  182. return false;
  183. $query = "SELECT pm.id_pdf_modele, pm.id_pdf_type, pm.lib_modele, pm.desc_modele, pm.code_pdf_modele, pt.lib_pdf_type
  184. FROM pdf_modeles pm LEFT JOIN pdf_types pt ON pm.id_pdf_type = pt.id_pdf_type
  185. WHERE pm.id_pdf_modele = '".$id_pdf_modele."' ";
  186. $r = $bdd->query ($query);
  187. if (!$r = $r->fetchObject())
  188. return false;
  189. $this->id_pdf_modele = $r->id_pdf_modele;
  190. $this->id_pdf_type = $r->id_pdf_type;
  191. $this->lib_pdf_modele = $r->lib_modele;
  192. $this->desc_pdf_modele = $r->desc_modele;
  193. $this->code_pdf_modele = $r->code_pdf_modele;
  194. $this->lib_pdf_type = $r->lib_pdf_type;
  195. return true;
  196. }
  197. public function getId_pdf_modele(){
  198. return $this->id_pdf_modele;
  199. }
  200. public function getId_pdf_type(){
  201. return $this->id_pdf_type;
  202. }
  203. public function getLib_pdf_modele(){
  204. return $this->lib_pdf_modele;
  205. }
  206. public function getDesc_pdf_modele(){
  207. return $this->desc_pdf_modele;
  208. }
  209. public function getCode_pdf_modele () {
  210. return $this->code_pdf_modele;
  211. }
  212. public function getLib_pdf_type(){
  213. return $this->lib_pdf_type;
  214. }
  215. /*
  216. //@TODO COURRIER : MODELE PDF : doit-on utiliser $code_file, et si oui, comment
  217. public function getCode_file(){
  218. return $this->code_file; //code md5 du nom du fichier pdf gיnיrי lors de l'envois du document
  219. }
  220. protected function setCode_file($code_file){
  221. $this->code_file = $code_file; //code md5 du nom du fichier pdf gיnיrי lors de l'envois du document
  222. }
  223. */
  224. // *************************************************************************************************************
  225. // FONCTIONS DE GENERATION D'UN PDF
  226. // *************************************************************************************************************
  227. public function create_pdf ($print = 0) {
  228. // Prיfיrences et options
  229. $GLOBALS['PDF_OPTIONS']['HideToolbar'] = 0;
  230. $GLOBALS['PDF_OPTIONS']['AutoPrint'] = $print;
  231. // Crיation du fichier
  232. $pdf = new PDF_etendu ();
  233. // Sortie
  234. return $pdf;
  235. }
  236. // Affiche le PDF du document
  237. public function view_pdf ($print = 0) {
  238. $pdf = $this->create_pdf ($print);
  239. // Sortie
  240. $pdf->Output();
  241. }
  242. // Affiche le PDF du document
  243. public function print_pdf () {
  244. $this->view_pdf(1);
  245. }
  246. //changement du code_pdf_modele
  247. public function change_code_pdf_modele ($code_pdf_modele) {
  248. $this->code_pdf_modele = $code_pdf_modele;
  249. }
  250. }
  251. // *************************************************************************************************************
  252. // CLASSE CourrierPDFvierge
  253. // *************************************************************************************************************
  254. class CourrierPDFvierge extends Courrier{
  255. public function __construct($id_type_courrier, $id_pdf_modele, $id_etat_courrier, $date_courrier, $objet, $contenu){
  256. return parent::__construct($id_type_courrier, $id_pdf_modele, $id_etat_courrier, $date_courrier, $objet, $contenu);
  257. }
  258. // *************************************************************************************************************
  259. // Getters & Setters
  260. // *************************************************************************************************************
  261. public function getExpediteur(){
  262. return new utilisateur($_SESSION['user']->getRef_user());
  263. }
  264. // *************************************************************************************************************
  265. // FONCTIONS DE GENERATION D'UN PDF
  266. // *************************************************************************************************************
  267. // Crיי et affiche le PDF d'un document
  268. public function create_pdf($print = 0) {
  269. $pdf = parent::create_pdf($print);
  270. // Ajout du document au PDF
  271. $pdf->add_courrier("", $this);
  272. // Sortie
  273. return $pdf;
  274. }
  275. }
  276. // *************************************************************************************************************
  277. // CLASSE CourrierEtendu
  278. // *************************************************************************************************************
  279. class CourrierEtendu extends Courrier{
  280. private $id_courrier;
  281. private $destinataires;
  282. private $events;
  283. public function __construct($id_courrier = "") {
  284. global $bdd;
  285. global $PDF_MODELES_DIR;
  286. if (!is_numeric($id_courrier))
  287. return false;
  288. $this->id_courrier = $id_courrier;
  289. $query = "SELECT c.id_courrier, c.id_type_courrier, c.id_pdf_modele, c.id_etat_courrier, c.date_courrier, c.objet, c.contenu
  290. FROM courriers c
  291. WHERE id_courrier = '".$id_courrier."' ";
  292. $resultat = $bdd->query ($query);
  293. if (!$courrier = $resultat->fetchObject()) {
  294. return false;
  295. }
  296. $this->events = array();
  297. $query = "SELECT ce.id_courrier_event
  298. FROM courriers_events ce
  299. WHERE ce.id_courrier = '".$courrier->id_courrier."' ";
  300. $resultat = $bdd->query ($query);
  301. while ($r = $resultat->fetchObject()) {
  302. $this->events[] = new courrierEvent($r->id_courrier_event);
  303. }
  304. $this->destinataires = array();
  305. $query = "SELECT cd.ref_destinataire
  306. FROM courriers_destinataires cd
  307. WHERE cd.id_courrier = '".$courrier->id_courrier."' ";
  308. $resultat = $bdd->query ($query);
  309. while ($r = $resultat->fetchObject()) {
  310. $this->destinataires[] = new contact($r->ref_destinataire);
  311. }
  312. return (parent::__construct($courrier->id_type_courrier, $courrier->id_pdf_modele, $courrier->id_etat_courrier, $courrier->date_courrier, $courrier->objet, $courrier->contenu)&& true);
  313. }
  314. public final static function newCourrierEtendu($id_type_courrier, $id_pdf_modele, $id_etat_courrier, $date_courrier, $objet, $contenu, $ref_destinataire, $utilisateur){
  315. if (!is_numeric($id_type_courrier) || !is_numeric($id_pdf_modele) || !is_numeric($id_etat_courrier) || $ref_destinataire=="")
  316. return false;
  317. if(is_null($utilisateur))
  318. $utilisateur = $_SESSION['user'];
  319. $search = array(
  320. "<BR/>",
  321. "&eacute;",
  322. "&egrave;",
  323. "&apos;",
  324. "&agrave;",
  325. "&ugrave;",
  326. "&euro;"
  327. );
  328. $replace = array(
  329. "<br>",
  330. "י",
  331. "ט",
  332. "'",
  333. "א",
  334. "ש",
  335. "EUR"
  336. );
  337. $contenu = str_replace($search, $replace, $contenu);
  338. global $bdd;
  339. $bdd->beginTransaction();{
  340. $query = "INSERT INTO courriers
  341. (id_courrier, id_type_courrier, id_pdf_modele, id_etat_courrier, date_courrier, objet, contenu)
  342. VALUES (NULL, '".$id_type_courrier."', '".$id_pdf_modele."', '".$id_etat_courrier."', '".$date_courrier."', '".addslashes($objet)."', '".addslashes($contenu)."')";
  343. $bdd->exec ($query);
  344. $tmp_id_courrier = $bdd->lastInsertId();
  345. $query = "INSERT INTO courriers_destinataires
  346. (id_courrier, ref_destinataire) VALUES
  347. ('".$tmp_id_courrier."', '".$ref_destinataire."')";
  348. $date_event = new DateTime();
  349. $event = $date_event->format("d-m-Y H:i:s")." - Crיation du courrier n°".$tmp_id_courrier."<br/>";
  350. $event.= "Destinataire : ".$ref_destinataire."<br/>";
  351. $event.= "Expיditeur : ".$utilisateur->getRef_user()."<br/>";
  352. CourrierEvent::newCourrierEvent($tmp_id_courrier, $date_event->format("Y-m-d H:i:s"), 1, $event, $utilisateur->getRef_user());
  353. $bdd->exec ($query);
  354. }$bdd->commit();
  355. return new CourrierEtendu($tmp_id_courrier);
  356. }
  357. // *************************************************************************************************************
  358. // Getters & Setters pour les destinataire du courrier
  359. // *************************************************************************************************************
  360. public function getDestinataires(){
  361. return $this->destinataires;
  362. }
  363. protected function setDestinataires($destinataires){
  364. return $this->destinataires = $destinataires;
  365. }
  366. // *************************************************************************************************************
  367. // Getters & Setters du courrier
  368. // *************************************************************************************************************
  369. public function getId_courrier(){
  370. return $this->id_courrier;
  371. }
  372. public function getEvents(){
  373. return $this->events;
  374. }
  375. public function addEvent($date_event = "", $id_courrier_event_type, $event, $ref_user = ""){
  376. if($date_event == ""){
  377. $d = new DateTime();
  378. $date_event = $d->format("Y-m-d H:i:s");
  379. }
  380. if($ref_user == "")
  381. $ref_user = $_SESSION['user']->getRef_user ();
  382. $this->events[] = CourrierEvent::newCourrierEvent($this->getId_courrier(), $date_event, $id_courrier_event_type, $event, $ref_user);
  383. }
  384. public function setObjet($objet){
  385. global $bdd;
  386. $query = "UPDATE courriers SET objet = '".addslashes($objet)."'
  387. WHERE id_courrier = '".$this->getId_courrier()."' ";
  388. $bdd->exec($query);
  389. parent::setObjet($objet);
  390. }
  391. public function setContenu($contenu){
  392. global $bdd;
  393. $query = "UPDATE courriers SET contenu = '".addslashes($contenu)."'
  394. WHERE id_courrier = '".$this->getId_courrier()."' ";
  395. $bdd->exec($query);
  396. parent::setContenu($contenu);
  397. }
  398. // ATTENTION, POUR l'instant, on considטre que l'expיditeur est le crיateur du mail
  399. public function getExpediteur(){
  400. $e = $this->getEvents();
  401. return $e[0]->getUtilisateur();
  402. }
  403. // *************************************************************************************************************
  404. // Getters & Setters de l'יtat du courrier
  405. // *************************************************************************************************************
  406. public function setId_etat_courrier($id_etat_courrier){
  407. if (!parent::setId_etat_courrier($id_etat_courrier)) return false;
  408. global $bdd;
  409. $query = "UPDATE courriers SET id_etat_courrier = '".$id_etat_courrier."'
  410. WHERE id_courrier = '".$this->id_courrier."' ";
  411. $bdd->exec($query);
  412. return true;
  413. }
  414. // *************************************************************************************************************
  415. // Getters & Setters sur le type du courrier
  416. // *************************************************************************************************************
  417. public function setId_type_courrier($id_type_courrier){
  418. global $bdd;
  419. $query = "UPDATE courriers SET id_type_courrier = '".$id_type_courrier."'
  420. WHERE id_courrier = '".$this->getId_courrier()."' ";
  421. $bdd->exec($query);
  422. return (parent::setId_etat_courrier($id_type_courrier));
  423. }
  424. // *************************************************************************************************************
  425. // Getters & Setters pour le modele PDF
  426. // *************************************************************************************************************
  427. public function setId_pdf_modele($id_pdf_modele){
  428. global $bdd;
  429. $query = "UPDATE courriers SET id_pdf_modele = '".$id_pdf_modele."'
  430. WHERE id_courrier = '".$this->getId_courrier()."' ";
  431. $bdd->exec($query);
  432. return (parent::setId_pdf_modele($id_pdf_modele));
  433. }
  434. // *************************************************************************************************************
  435. // Fonction liיes au PDF
  436. // *************************************************************************************************************
  437. // Affiche le PDF du document
  438. public function print_pdf () {
  439. $this->courrier_edition_add(1);
  440. parent::print_pdf();
  441. }
  442. // Crיי et affiche le PDF d'un document
  443. public function create_pdf($print = 0) {
  444. $pdf = parent::create_pdf($print);
  445. // Ajout du document au PDF
  446. $pdf->add_courrier("", $this);
  447. // Sortie
  448. return $pdf;
  449. }
  450. // sauvegarde le PDF du document
  451. public function save_pdf () {
  452. global $FICHIERS_DIR;
  453. $pdf = $this->create_pdf ();
  454. // Sortie
  455. $pdf->Output($FICHIERS_DIR.Courrier::GET_TMP_FOLDER().$this->id_courrier."_".$this->getCode_file().".pdf" , "F");
  456. return true;
  457. }
  458. // *************************************************************************************************************
  459. // Fonction liיes א la table courriers_editions
  460. // *************************************************************************************************************
  461. //voir dans la BD la TABLE : COURRIERS_EDITIONS
  462. // Enregistre l'edition du document
  463. public function courrier_edition_add ($id_edition_mode, $ref_user = "") {
  464. global $bdd;
  465. if (!$id_edition_mode) { return false; }
  466. if ($ref_user == "") {
  467. $ref_user = $_SESSION['user']->getRef_user();
  468. }
  469. $query = "INSERT INTO courriers_editions
  470. (id_courrier_envoi, id_courrier, id_edition_mode, date_edition, ref_user) VALUES
  471. (NULL, '".$this->getId_courrier()."', '".$id_edition_mode."', NOW(), '".$ref_user."' ) ";
  472. $bdd->exec ($query);
  473. return true;
  474. }
  475. //retourne le nombre de fois que ce courrier a יtי envoyי
  476. public function getNb_envois($id_edition_mode = "", $ref_user = "", $date_edition_deb = "" /*format Y-m-d H:i:s*/,$date_edition_fin = "" /*format Y-m-d H:i:s*/){
  477. global $bdd;
  478. $query_where = "";
  479. if($id_edition_mode != ""){
  480. $query_where.=" AND id_edition_mode = '".$id_edition_mode."'";
  481. }
  482. if($ref_user != ""){
  483. $query_where.=" AND ref_user = '".$ref_user."'";
  484. }
  485. if($date_edition_deb != ""){
  486. $query_where.=" AND date_edition >= '".$date_edition_deb."'";
  487. }
  488. if($date_edition_fin != ""){
  489. $query_where.=" AND date_edition <= '".$date_edition_fin."'";
  490. }
  491. $query = "SELECT count(id_courrier_envoi) as nb_envois
  492. FROM courriers_editions ce
  493. WHERE id_courrier = '".$id_type_courrier."'".$query_where;
  494. $resultat = $bdd->query ($query);
  495. if (!$r = $resultat->fetchObject())
  496. return false;
  497. return $r->nb_envois;
  498. }
  499. // *************************************************************************************************************
  500. // Fonction liיes א l'envoi d'un courrier
  501. // *************************************************************************************************************
  502. // Envoi du document par email
  503. //fonction recopiיe depuis la classe document
  504. //@TODO COURRIER : Gestion du mail : A tester
  505. public function mail_courrier ($to , $sujet , $message) {
  506. global $bdd;
  507. global $FICHIERS_DIR;
  508. global $REF_CONTACT_ENTREPRISE;
  509. $this->save_pdf();
  510. $filename = array();
  511. $filename[] = $FICHIERS_DIR.Courrier::GET_TMP_FOLDER().$this->id_courrier."_".$this->getCode_file().".pdf";
  512. $typemime = "application/pdf";
  513. $nom = array();
  514. $nom[] = $this->id_courrier."_".$this->getCode_file().".pdf";
  515. //on gיnere un nom de fichier en remplacement
  516. $contact_entreprise = new contact($REF_CONTACT_ENTREPRISE);
  517. $nom_entreprise = str_replace (CHR(13), " " ,str_replace (CHR(10), " " , $contact_entreprise->getNom()));
  518. $nom_aff = array();
  519. $nom_aff[] = $this->id_courrier."_".$nom_entreprise.".pdf";
  520. //on rיcupטre l'email de l'utilisateur en cours pour envoyer le mail
  521. $reply = $_SESSION['user']->getEmail();
  522. $from = $_SESSION['user']->getEmail();
  523. // Envoi de l'email
  524. $mail = new email();
  525. $mail->prepare_envoi(0, 1);
  526. if ($mail->mail_attachement ($to , $sujet , $message , $filename , $typemime , $nom , $reply , $from, $nom_aff)) {
  527. $this->courrier_edition_add(2);
  528. return true;
  529. }
  530. else {
  531. return false;
  532. }
  533. }
  534. //@TODO COURRIER : Gestion du FAX : Traitement du FAX dans la classe courrier
  535. //fonction recopiיe depuis la classe document
  536. public function faxer_courrier ($to , $sujet , $message) {
  537. global $bdd;
  538. global $FICHIERS_DIR;
  539. global $REF_CONTACT_ENTREPRISE;
  540. $this->save_pdf();
  541. $filename = array();
  542. $filename[] = $FICHIERS_DIR.Courrier::$TMP_FOLDER.$this->id_courrier."_".$this->code_file.".pdf";
  543. $typemime = "application/pdf";
  544. $nom = array();
  545. $nom[] = $this->id_courrier."_".$this->code_file.".pdf";
  546. //on gיnere un nom de fichier en remplacement
  547. $contact_entreprise = new contact($REF_CONTACT_ENTREPRISE);
  548. $nom_entreprise = str_replace (CHR(13), " " ,str_replace (CHR(10), " " , $contact_entreprise->getNom()));
  549. $nom_aff = array();
  550. $nom_aff[] = $this->id_courrier."_".$nom_entreprise.".pdf";
  551. //on rיcupטre l'email de l'utilisateur en cours pour envoyer le mail
  552. $reply = $_SESSION['user']->getEmail();
  553. $from = $_SESSION['user']->getEmail();
  554. if (mail_attachement ($to , $sujet , $message , $filename , $typemime , $nom , $reply , $from, $nom_aff)) {
  555. $this->courrier_edition_add(3);
  556. return true;
  557. }
  558. else {
  559. return false;
  560. }
  561. }
  562. }
  563. // *************************************************************************************************************
  564. // CLASSE CourrierEvent
  565. // *************************************************************************************************************
  566. // Classe rיgissant les information d'une יvטnement VOIR la TABLE : COURRIERS_EVENTS_TYPES
  567. class CourrierEvent{
  568. //voir dans la BD la TABLE : COURRIERS_EVENTS et la TABLE : COURRIERS_EVENTS_TYPES
  569. private $id_courrier_event;
  570. private $date_event;
  571. private $id_courrier_event_type;
  572. private $lib_courrier_event_type;
  573. private $event;
  574. private $utilisateur;
  575. public function __construct($id_courrier_event = "") {
  576. global $bdd;
  577. if (!is_numeric($id_courrier_event)) return false;
  578. $this->id_courrier_event = $id_courrier_event;
  579. $query = "SELECT ce.id_courrier_event, ce.id_courrier, ce.date_event, ce.id_courrier_event_type, ce.event, ce.ref_user, cet.lib_courrier_event_type
  580. FROM courriers_events ce
  581. LEFT JOIN courriers_events_types cet ON ce.id_courrier_event_type = cet.id_courrier_event_type
  582. WHERE ce.id_courrier_event = '".$id_courrier_event."' ";
  583. $resultat = $bdd->query ($query);
  584. if (!$courrier_event = $resultat->fetchObject()) return false;
  585. $this->id_courrier_event = $courrier_event->id_courrier_event;
  586. $this->date_event = $courrier_event->date_event;
  587. $this->id_courrier_event_type = $courrier_event->id_courrier_event_type;
  588. $this->event = $courrier_event->event;
  589. $this->utilisateur = new utilisateur($courrier_event->ref_user);
  590. $this->lib_courrier_event_type = $courrier_event->lib_courrier_event_type;
  591. }
  592. public final static function newCourrierEvent($id_courrier, $date_event, $id_courrier_event_type, $event, $ref_user){
  593. if (!is_numeric($id_courrier) || !is_numeric($id_courrier_event_type)) return false;
  594. if($ref_user == ""){
  595. $utilisateur = $_SESSION['user'];
  596. $ref_user = $utilisateur->getRef_user();
  597. }
  598. if($date_event == "")
  599. $d = "NOW()";
  600. else
  601. $d = "'".$date_event."'";
  602. global $bdd;
  603. $query = "INSERT INTO courriers_events
  604. (id_courrier_event, id_courrier, date_event, id_courrier_event_type, event, ref_user)
  605. VALUES (NULL, '".$id_courrier."', ".$d.", '".$id_courrier_event_type."', '".addslashes($event)."', '".$ref_user."')";
  606. $bdd->exec ($query);
  607. $tmp_id_courrier_event = $bdd->lastInsertId();
  608. return new CourrierEvent($tmp_id_courrier_event);
  609. }
  610. // *************************************************************************************************************
  611. // Getters & Setters
  612. // *************************************************************************************************************
  613. public function getId_courrier_event(){
  614. return $this->id_courrier_event;
  615. }
  616. public function getDate_event(){
  617. return $this->date_event;
  618. }
  619. public function setDate_event($date_event){
  620. global $bdd;
  621. $query = "UPDATE courriers_events SET date_event = '".$date_event."'
  622. WHERE id_courrier_event = '".$this->getId_courrier_event()."' ";
  623. $bdd->exec($query);
  624. $this->date_event = $date_event;
  625. }
  626. public function getId_courrier_event_type(){
  627. return $this->id_courrier_event_type;
  628. }
  629. public function setId_courrier_event_type($id_courrier_event_type){
  630. if(!is_numeric($id_courrier_event_type))return false;
  631. global $bdd;
  632. $query = "SELECT cet.id_courrier_event_type, cet.lib_courrier_events_type
  633. FROM courriers_event_types cet
  634. WHERE cet.id_courrier_event_type = '".$id_courrier_event_type."' ";
  635. $resultat = $bdd->query ($query);
  636. if (!$courriers_event_type = $resultat->fetchObject()) {return false;}
  637. $query = "UPDATE courriers_events SET id_courrier_event_type = '".$id_courrier_event_type."'
  638. WHERE id_courrier_event = '".$this->getId_courrier_event()."' ";
  639. $bdd->exec($query);
  640. $this->id_courrier_event_type = $courriers_event_type->id_courrier_event_type;
  641. $this->lib_courrier_event_type = $courriers_event_type->lib_courrier_event_type;
  642. }
  643. public function getLib_courrier_event_type(){
  644. return $this->lib_courrier_event_type;
  645. }
  646. public function getEvent(){
  647. return $this->event;
  648. }
  649. public function setEvent($event){
  650. global $bdd;
  651. $query = "UPDATE courriers_events SET event = '".addslashes($event)."'
  652. WHERE id_courrier_event = '".$this->getId_courrier_event()."' ";
  653. $bdd->exec($query);
  654. $this->event = $event;
  655. }
  656. public function getUtilisateur(){
  657. return $this->utilisateur;
  658. }
  659. public function setUser($ref_user){
  660. global $bdd;
  661. $query = "UPDATE courriers_events SET ref_user = '".$ref_user."'
  662. WHERE id_courrier_event = '".$this->getId_courrier_event()."' ";
  663. $bdd->exec($query);
  664. $this->utilisateur = new utilisateur($ref_user);
  665. }
  666. }
  667. ?>