[ Index ]
 

Code source de SPIP 1.9.2c

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/ecrire/action/ -> editer_message.php (source)

   1  <?php
   2  
   3  /***************************************************************************\
   4   *  SPIP, Systeme de publication pour l'internet                           *
   5   *                                                                         *
   6   *  Copyright (c) 2001-2007                                                *
   7   *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
   8   *                                                                         *
   9   *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
  10   *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
  11  \***************************************************************************/
  12  
  13  if (!defined("_ECRIRE_INC_VERSION")) return;
  14  
  15  include_spip('inc/filtres');
  16  include_spip('base/abstract_sql');
  17  
  18  // http://doc.spip.org/@action_editer_message_dist
  19  function action_editer_message_dist() {
  20  
  21      $securiser_action = charger_fonction('securiser_action', 'inc');
  22      $arg = $securiser_action();
  23  
  24      if (preg_match(',^(\d+)$,', $arg, $r))
  25          action_editer_message_post_vieux($arg); 
  26      elseif (preg_match(',^-(\d+)$,', $arg, $r))
  27          action_editer_message_post_supprimer($r[1]);
  28      elseif (preg_match(',^(\d+)\W$,', $arg, $r))
  29          action_editer_message_post_choisir($r[1]);      
  30      elseif (preg_match(',^(\d+)\W@(\d+)$,', $arg, $r))
  31          action_editer_message_post_ajouter($r[1], $r[2]);      
  32      elseif (preg_match(',^(\d+)\W:(\d+)$,', $arg, $r))
  33          action_editer_message_post_vu($r[1], $r[2]);      
  34      elseif (preg_match(',^(\d+)\W-(\d+)$,', $arg, $r))
  35          action_editer_message_post_retirer($r[1], $r[2]);      
  36      elseif (preg_match(',^(\d+)\W(\w+)$,', $arg, $r))
  37          action_editer_message_post_envoyer($r[1], $r[2]);      
  38      elseif (preg_match(',^(\w+)$,', $arg, $r))
  39          action_editer_message_post_nouveau($arg);
  40      elseif (preg_match(',^(\w+)\W(\d+)$,', $arg, $r))
  41          action_editer_message_post_nouveau($r[1], $r[2]);
  42      elseif (preg_match(',^(\w+)\W(\d+-\d+-\d+)$,', $arg, $r))
  43          action_editer_message_post_nouveau($r[1], '', $r[2]);
  44      else     spip_log("action_editer_message_dist $arg pas compris");
  45  }
  46  
  47  // http://doc.spip.org/@action_editer_message_post_supprimer
  48  function action_editer_message_post_supprimer($id_message) {
  49      spip_query("DELETE FROM spip_messages WHERE id_message="._q($id_message));
  50      spip_query("DELETE FROM spip_auteurs_messages WHERE id_message="._q($id_message));
  51      spip_query("DELETE FROM spip_forum WHERE id_message="._q($id_message));
  52  }
  53  
  54  // http://doc.spip.org/@action_editer_message_post_vu
  55  function action_editer_message_post_vu($id_message, $id_auteur) {
  56    spip_log("efface $id_message $id_auteur");
  57      spip_query("UPDATE spip_auteurs_messages SET vu='oui' WHERE id_message='$id_message' AND id_auteur='$id_auteur'");
  58  
  59  }
  60  
  61  // http://doc.spip.org/@action_editer_message_post_retirer
  62  function action_editer_message_post_retirer($id_message, $id_auteur) {
  63      spip_query("DELETE FROM spip_auteurs_messages WHERE id_message='$id_message' AND id_auteur='$id_auteur'");
  64  }
  65  
  66  // http://doc.spip.org/@action_editer_message_post_ajouter
  67  function action_editer_message_post_ajouter($id_message, $id_auteur) {
  68      spip_query("DELETE FROM spip_auteurs_messages WHERE id_auteur='$id_auteur' AND id_message='$id_message'");
  69      spip_abstract_insert('spip_auteurs_messages',
  70          "(id_auteur,id_message,vu)",
  71          "('$id_auteur','$id_message','non')");
  72  }
  73  
  74  // http://doc.spip.org/@action_editer_message_post_choisir
  75  function action_editer_message_post_choisir($id_message) {
  76  
  77      if ($id_auteur = _request('nouv_auteur'))
  78          action_editer_message_post_ajouter($id_message, $id_auteur);
  79      else {
  80          include_spip('inc/mots');
  81          include_spip('inc/charsets'); // pour tranlitteration
  82          $id_auteur = $GLOBALS['auteur_session']['id_auteur'];
  83          $cherche_auteur= _request('cherche_auteur');
  84          $query = spip_query("SELECT id_auteur, nom FROM spip_auteurs WHERE messagerie<>'non' AND id_auteur<>'$connect_id_auteur' AND pass<>'' AND login<>''");
  85          $table_auteurs = array();
  86          $table_ids = array();
  87          while ($row = spip_fetch_array($query)) {
  88              $table_auteurs[] = $row['nom'];
  89              $table_ids[] = $row['id_auteur'];
  90          }
  91          $res =  mots_ressemblants($cherche_auteur, $table_auteurs, $table_ids);
  92          $n = count($res);
  93  
  94          if ($n == 1)
  95              # Bingo
  96              action_editer_message_post_ajouter($id_message, $res[0]);
  97          # renvoyer la valeur ==> formulaire de choix si n !=1
  98          # notification que $res[0] a ete rajoute sinon
  99            redirige_par_entete(parametre_url(urldecode(_request('redirect')),
 100                          'cherche_auteur', _request('chercher_auteur'), '&'));
 101      }
 102  }
 103  
 104  
 105  // http://doc.spip.org/@action_editer_message_post_envoyer
 106  function action_editer_message_post_envoyer($id_message, $statut) {
 107  
 108      spip_query("UPDATE spip_messages SET statut=" . _q($statut) . " WHERE id_message='$id_message'");
 109      spip_query("UPDATE spip_messages SET date_heure=NOW() WHERE id_message='$id_message' AND rv<>'oui'");
 110  }
 111  
 112  // http://doc.spip.org/@action_editer_message_post_nouveau
 113  function action_editer_message_post_nouveau($type, $dest='', $rv='')
 114  {
 115  
 116      $id_auteur = $GLOBALS['auteur_session']['id_auteur'];
 117  
 118      $mydate = date("YmdHis", time() - 2 * 24 * 3600);
 119      spip_query("DELETE FROM spip_messages WHERE (statut = 'redac') AND (date_heure < $mydate)");
 120  
 121      if ($type == 'pb') $statut = 'publie';
 122      else $statut = 'redac';
 123  
 124      $titre = filtrer_entites(_T('texte_nouveau_message'));
 125  
 126      $id_message = spip_abstract_insert("spip_messages", "(titre, date_heure, statut, type, id_auteur)", "(" . _q($titre) . ", NOW(), '$statut', '$type', $id_auteur)");
 127      
 128      if ($rv) {
 129          spip_query("UPDATE spip_messages SET rv='oui', date_heure=" . _q($rv . ' 12:00:00') . ", date_fin= " . _q($rv . ' 13:00:00') . " WHERE id_message = $id_message");
 130      }
 131  
 132      if ($type != "affich"){
 133          spip_abstract_insert('spip_auteurs_messages',
 134              "(id_auteur,id_message,vu)",
 135              "('$id_auteur','$id_message','oui')");
 136          if ($dest) {
 137              spip_abstract_insert('spip_auteurs_messages',
 138                  "(id_auteur,id_message,vu)",
 139                  "('$dest','$id_message','non')");
 140          }
 141      }
 142      redirige_par_entete(generer_url_ecrire('message_edit', "id_message=$id_message&new=oui&dest=$dest",true));
 143  }
 144  
 145  // http://doc.spip.org/@action_editer_message_post_vieux
 146  function action_editer_message_post_vieux($id_message)
 147  {
 148      spip_query("UPDATE spip_messages SET titre=" . _q(_request('titre')) . ", texte=" . _q(_request('texte')) . " WHERE id_message='$id_message'");
 149  
 150      spip_query("UPDATE spip_messages SET rv=" . _q(_request('rv')) . " WHERE id_message='$id_message'");
 151  
 152      if (_request('jour'))
 153          change_date_message($id_message, _request('heures'),_request('minutes'),_request('mois'), _request('jour'), _request('annee'), _request('heures_fin'),_request('minutes_fin'),_request('mois_fin'), _request('jour_fin'), _request('annee_fin'));
 154  }
 155  
 156  
 157  // Convertir dates a calendrier correct
 158  // (exemple: 31 fevrier devient debut mars, 24h12 devient 00h12 du lendemain)
 159  
 160  // http://doc.spip.org/@change_date_message
 161  function change_date_message($id_message, $heures,$minutes,$mois, $jour, $annee, $heures_fin,$minutes_fin,$mois_fin, $jour_fin, $annee_fin)
 162  {
 163      $date = date("Y-m-d H:i:s", mktime($heures,$minutes,0,$mois, $jour, $annee));
 164      
 165      $jour = journum($date);
 166      $mois = mois($date);
 167      $annee = annee($date);
 168      $heures = heures($date);
 169      $minutes = minutes($date);
 170      
 171      // Verifier que la date de fin est bien posterieure au debut
 172      $unix_debut = date("U", mktime($heures,$minutes,0,$mois, $jour, $annee));
 173      $unix_fin = date("U", mktime($heures_fin,$minutes_fin,0,$mois_fin, $jour_fin, $annee_fin));
 174      if ($unix_fin <= $unix_debut) {
 175          $jour_fin = $jour;
 176          $mois_fin = $mois;
 177          $annee_fin = $annee;
 178          $heures_fin = $heures + 1;
 179          $minutes_fin = $minutes;
 180      }        
 181  
 182      $date_fin = date("Y-m-d H:i:s", mktime($heures_fin,$minutes_fin,0,$mois_fin, $jour_fin, $annee_fin));
 183      
 184      $jour_fin = journum($date_fin);
 185      $mois_fin = mois($date_fin);
 186      $annee_fin = annee($date_fin);
 187      $heures_fin = heures($date_fin);
 188      $minutes_fin = minutes($date_fin);
 189  
 190      spip_query("UPDATE spip_messages SET date_heure='$annee-$mois-$jour $heures:$minutes:00',  date_fin='$annee_fin-$mois_fin-$jour_fin $heures_fin:$minutes_fin:00' WHERE id_message='$id_message'");
 191  }
 192  
 193  ?>


Généré le : Wed Nov 21 10:20:27 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics