/ecrire/action/editer_mots.php

https://github.com/genova/ugb · PHP · 96 lines · 66 code · 11 blank · 19 comment · 14 complexity · b8ad73fff277224395e39d4e81c868b9 MD5 · raw file

  1. <?php
  2. /***************************************************************************\
  3. * SPIP, Systeme de publication pour l'internet *
  4. * *
  5. * Copyright (c) 2001-2011 *
  6. * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
  7. * *
  8. * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
  9. * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
  10. \***************************************************************************/
  11. if (!defined('_ECRIRE_INC_VERSION')) return;
  12. // http://doc.spip.org/@action_editer_mots_dist
  13. function action_editer_mots_dist() {
  14. $securiser_action = charger_fonction('securiser_action', 'inc');
  15. $arg = $securiser_action();
  16. // arg = l'eventuel mot a supprimer pour d'eventuelles Row SQL
  17. if (!preg_match(',^(\d*)\D(-?\d*)\W(\w*)\W(\w*)\W(\w*)\W?(\d*)$,', $arg, $r))
  18. spip_log("action editer_mots: $arg pas compris");
  19. else action_editer_mots_post($r);
  20. }
  21. // http://doc.spip.org/@action_editer_mots_post
  22. function action_editer_mots_post($r)
  23. {
  24. $redirect = _request('redirect');
  25. $cherche_mot = _request('cherche_mot');
  26. $select_groupe = _request('select_groupe');
  27. list($x, $id_objet, $id_mot, $table, $table_id, $objet, $nouv_mot) = $r;
  28. if ($id_mot) {
  29. if ($objet)
  30. // desassocier un/des mot d'un objet precis
  31. sql_delete("spip_mots_$table", "$table_id=$id_objet" . (($id_mot <= 0) ? "" : " AND id_mot=$id_mot"));
  32. else {
  33. // disparition complete d'un mot
  34. sql_delete("spip_mots", "id_mot=$id_mot");
  35. sql_delete("spip_mots_articles", "id_mot=$id_mot");
  36. sql_delete("spip_mots_rubriques", "id_mot=$id_mot");
  37. sql_delete("spip_mots_syndic", "id_mot=$id_mot");
  38. sql_delete("spip_mots_forum", "id_mot=$id_mot");
  39. pipeline('trig_supprimer_objets_lies',
  40. array(
  41. array('type'=>'mot','id'=>$id_mot)
  42. )
  43. );
  44. }
  45. }
  46. if ($nouv_mot ? $nouv_mot : ($nouv_mot = _request('nouv_mot'))) {
  47. // recopie de:
  48. // inserer_mot("spip_mots_$table", $table_id, $id_objet, $nouv_mot);
  49. $result = sql_countsel("spip_mots_$table", "id_mot=".intval($nouv_mot)." AND $table_id=$id_objet");
  50. if (!$result)
  51. sql_insertq("spip_mots_$table", array('id_mot' => $nouv_mot, $table_id =>$id_objet));
  52. }
  53. // Notifications, gestion des revisions, reindexation...
  54. if ($table)
  55. pipeline('post_edition',
  56. array(
  57. 'args' => array(
  58. 'operation' => 'editer_mots',
  59. 'table' => 'spip_'.$table,
  60. 'id_objet' => $id_objet
  61. ),
  62. 'data' => null
  63. )
  64. );
  65. $redirect = rawurldecode($redirect);
  66. // hack du retour croise editer/grouper
  67. if (preg_match('/^(.*exec=)editer_mots(&.*)script=(grouper_mots)(.*)$/', $redirect, $r))
  68. $redirect = $r[1] . $r[3] . $r[2] . $r[4];
  69. if (preg_match(',exec=grouper_mots,',$redirect)){
  70. // mettre a jour le total de mots dans la liste pour eviter les pb de cache navigateur avec ajax
  71. $id_groupe = parametre_url($redirect,'id_groupe'); // recuperer l'id_groupe dans l'url
  72. $groupe = sql_countsel("spip_mots", "id_groupe=".sql_quote($id_groupe));
  73. $redirect = parametre_url($redirect,'total',$groupe,'&');
  74. }
  75. if ($cherche_mot) {
  76. if ($p = strpos($redirect, '#')) {
  77. $a = substr($redirect,$p);
  78. $redirect = substr($redirect,0,$p);
  79. } else $a='';
  80. $redirect .= "&cherche_mot=".urlencode($cherche_mot)
  81. ."&select_groupe=$select_groupe$a";
  82. }
  83. redirige_par_entete($redirect);
  84. }
  85. ?>