/do_action.php

https://github.com/HBL/klassenboek · PHP · 98 lines · 84 code · 9 blank · 5 comment · 17 complexity · f78214cedd14006c3f1fe1cb4d415921 MD5 · raw file

  1. <? include("include/init.php");
  2. check_login();
  3. check_isset_array($_GET, 'action_id', 'isgrp', 'notitie_id', 'lln');
  4. check_isnonempty_array($_GET, 'action_id', 'isgrp', 'notitie_id', 'lln');
  5. $notitie_id = mysql_escape_safe($_GET['notitie_id']);
  6. $action_id = mysql_escape_safe($_GET['action_id']);
  7. $lln_id = mysql_escape_safe($_GET['lln']);
  8. //print_r($_GET);
  9. // auth
  10. if ($_GET['isgrp'] == 1) {
  11. $isgrp = 1;
  12. $result = mysql_query_safe(<<<EOQ
  13. SELECT bla5.replaceby_tag_id, bla5.new_tag_id, notitie_id, GROUP_CONCAT(IF(action_id = '$action_id', 1, NULL) SEPARATOR '') action_id_ok, GROUP_CONCAT(dont) dont FROM (
  14. SELECT notities.notitie_id, actions.*, GROUP_CONCAT(CONCAT(bla.agenda_id, '-', tags2children.tag_id)) dont
  15. FROM notities
  16. JOIN agenda USING (notitie_id)
  17. JOIN grp2vak2agenda USING (agenda_id)
  18. JOIN grp2vak USING (grp2vak_id)
  19. JOIN doc2grp2vak USING (grp2vak_id)
  20. JOIN tags2notities USING (notitie_id)
  21. JOIN tags2actions USING (tag_id)
  22. JOIN actions USING (action_id)
  23. LEFT JOIN notities AS children ON notities.notitie_id = children.parent_id
  24. LEFT JOIN agenda AS c_agenda ON children.notitie_id = c_agenda.notitie_id
  25. LEFT JOIN tags2notities AS tags2children ON children.notitie_id = tags2children.notitie_id AND actions.new_tag_id = tags2children.tag_id
  26. LEFT JOIN ppl2agenda AS bla ON c_agenda.agenda_id = bla.agenda_id AND bla.ppl_id = '$lln_id'
  27. WHERE notities.notitie_id = '$notitie_id' AND doc2grp2vak.ppl_id = '{$_SESSION['ppl_id']}' AND action_id = '$action_id'
  28. GROUP BY action_id
  29. ) bla5
  30. #WHERE action_id = '$action_id'
  31. GROUP BY notitie_id
  32. EOQ
  33. );
  34. } else if ($_GET['isgrp'] == 0) {
  35. $isgrp = 0;
  36. $result = mysql_query_safe(<<<EOQ
  37. SELECT
  38. GROUP_CONCAT(IF(action_id = '$action_id', bla5.replaceby_tag_id, NULL)) replaceby_tag_id,
  39. GROUP_CONCAT(IF(action_id = '$action_id', bla5.new_tag_id, NULL)) new_tag_id,
  40. notitie_id, GROUP_CONCAT(IF(action_id = '$action_id', 1, NULL) SEPARATOR '') action_id_ok, GROUP_CONCAT(dont) dont FROM (
  41. SELECT notities.notitie_id, actions.*, GROUP_CONCAT(CONCAT(bla.agenda_id, '-', tags2children.tag_id)) dont
  42. FROM notities
  43. JOIN agenda USING (notitie_id)
  44. JOIN ppl2agenda USING (agenda_id)
  45. JOIN tags2notities USING (notitie_id)
  46. JOIN tags2actions USING (tag_id)
  47. JOIN actions USING (action_id)
  48. JOIN ppl2agenda AS auth USING (agenda_id)
  49. LEFT JOIN ppl2agenda AS targets ON agenda.agenda_id = targets.agenda_id AND targets.allow_edit = 0
  50. LEFT JOIN notities AS children ON notities.notitie_id = children.parent_id
  51. LEFT JOIN agenda AS c_agenda ON children.notitie_id = c_agenda.notitie_id
  52. LEFT JOIN tags2notities AS tags2children ON children.notitie_id = tags2children.notitie_id AND actions.new_tag_id = tags2children.tag_id
  53. LEFT JOIN ppl2agenda AS bla ON c_agenda.agenda_id = bla.agenda_id AND bla.ppl_id = targets.ppl_id
  54. WHERE notities.notitie_id = '$notitie_id' AND auth.ppl_id = '{$_SESSION['ppl_id']}' AND action_id = '$action_id'
  55. GROUP BY action_id
  56. ) bla5
  57. #WHERE action_id = '$action_id'
  58. GROUP BY notitie_id
  59. EOQ
  60. );
  61. } else throw new Exception('illegal value of isgrp', 2);
  62. //if ($_SESSION['ppl_id'] == 3490) echo sprint_table($result);
  63. if (mysql_num_rows($result) == 0 || mysql_result($result, 0, 'dont')) throw new Exception("actie door {$_SESSION['ppl_id']} niet mogelijk op notitie_id=$notitie_id", 2);
  64. if (mysql_result($result, 0, 'replaceby_tag_id')) {
  65. mysql_query_safe("DELETE FROM tags2notities USING tags2notities JOIN tags2actions USING (tag_id) WHERE action_id = '$action_id' AND notitie_id = '$notitie_id'");
  66. mysql_query_safe("INSERT INTO tags2notities (tag_id, notitie_id) VALUES ( '%s', '$notitie_id' )", mysql_result($result, 0, 'replaceby_tag_id'));
  67. }
  68. if (mysql_result($result, 0, 'new_tag_id')) {
  69. $result3 = mysql_query_safe("SELECT agenda.dag, agenda.lesuur, agenda.week, agenda.schooljaar FROM agenda WHERE notitie_id = '$notitie_id'");
  70. if (mysql_numrows($result3) != 1) throw new Exception('geen unieke notitie met id='.$notitie_id.' gevonden', 2);
  71. $row = mysql_fetch_array($result3);
  72. mysql_query_safe("INSERT INTO notities ( parent_id ) VALUES ( '$notitie_id' )");
  73. $new_notitie_id = mysql_insert_id();
  74. mysql_query_safe("INSERT INTO tags2notities ( tag_id, notitie_id ) VALUES ( '%s', '$new_notitie_id' )", mysql_result($result, 0, 'new_tag_id'));
  75. mysql_query_safe("INSERT INTO agenda ( schooljaar, week, dag, lesuur, notitie_id ) VALUES ( '{$row['schooljaar']}', '{$row['week']}', '{$row['dag']}', '{$row['lesuur']}', '$new_notitie_id' )");
  76. $agenda_id = mysql_insert_id();
  77. mysql_free_result($result3);
  78. if ($isgrp == 0) {
  79. $result3 = mysql_query_safe("SELECT ppl_id, allow_edit FROM ppl2agenda JOIN agenda USING (agenda_id) WHERE notitie_id = '$notitie_id'");
  80. while ($row = mysql_fetch_row($result3)) {
  81. mysql_query_safe("INSERT INTO ppl2agenda ( ppl_id, agenda_id, allow_edit ) VALUES ( '{$row[0]}', '$agenda_id', '{$row[1]}' )");
  82. }
  83. mysql_free_result($result3);
  84. } else {
  85. mysql_query_safe("INSERT INTO ppl2agenda ( ppl_id, agenda_id, allow_edit ) VALUES ( '{$_SESSION['ppl_id']}', '$agenda_id', '1' ), ( '$lln_id', '$agenda_id', '0' )");
  86. }
  87. }
  88. header("Location: $http_path/?week={$_GET['week']}&grp2vak_id={$_GET['grp2vak_id']}&doelgroep={$_GET['doelgroep']}&lln={$_GET['lln']}");
  89. ?>