edinstres.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <?php
  2. require '../../lib/glob.php';
  3. require '../../lib/muoribene.php';
  4. require '../../lib/sessionstart.php';
  5. require '../../lib/myconn.php';
  6. require '../../lib/getadmacc.php';
  7. require '../../lib/menu.php';
  8. $menu['menu']['selected']=true;
  9. $menu['menu']['submenu']['instances']['selected']=true;
  10. buildmenu($menu);
  11. $dbg='';
  12. $now=time();
  13. $mtnow=microtime(true);
  14. use function mysqli_real_escape_string as myesc;
  15. function hspech($str) {
  16. return(htmlspecialchars($str,ENT_QUOTES|ENT_HTML5,'UTF-8'));
  17. }
  18. $dbg.='<pre>'.print_r($_POST,1).'</pre>';
  19. if (!array_key_exists('id',$_POST) || !array_key_exists('OurDesc',$_POST) || !array_key_exists('OurDescEN',$_POST))
  20. muoribene(__LINE__.': Malformed input.',true);
  21. if (preg_match('/^[0-9]+$/',$_POST['id'])===1) {
  22. $instid=$_POST['id']+0;
  23. $res=mysqli_query($link,'SELECT *, ID AS IID FROM Instances WHERE ID='.$instid)
  24. or muoribene(__LINE__.': '.mysqli_error($link),true);
  25. if (mysqli_num_rows($res)!=1)
  26. muoribene(__LINE__.': There is no instance with ID='.$instid.'.');
  27. $inst=mysqli_fetch_assoc($res);
  28. } else {
  29. muoribene(__LINE__.': Malformed input.',true);
  30. }
  31. if ($account['Level']=='guest' && !in_array($_POST['id'],$account['Insts']))
  32. muoribene('You can modify only your instances.',true);
  33. $que='UPDATE Instances SET ';
  34. if ($account['Level']!='guest') {
  35. if (array_key_exists('NoxReason',$_POST) && array_key_exists('Noxious',$_POST) && $_POST['Noxious']=='on') {
  36. $sets[]='Noxious=1';
  37. $_POST['NoxReason']=trim($_POST['NoxReason']);
  38. ($_POST['NoxReason']!='') ? $sets[]='NoxReason=\''.myesc($link,$_POST['NoxReason']).'\'' : $sets[]='NoxReason=NULL';
  39. $sets[]='NoxLastModTS='.$now;
  40. } else {
  41. $sets[]='Noxious=0';
  42. // don't uncomment these two lines: let's remember when and why an instance has been marked as noxious even if we later unmark it
  43. //$sets[]='NoxReason=NULL';
  44. //$sets[]='NoxLastModTS=NULL';
  45. }
  46. (array_key_exists('Visible',$_POST) && $_POST['Visible']=='on') ? $sets[]='Visible=1' : $sets[]='Visible=0';
  47. $_POST['Priority']=trim($_POST['Priority']);
  48. (array_key_exists('Priority',$_POST) && preg_match('#^\d+#',$_POST['Priority'])===1) ? $sets[]='Priority='.$_POST['Priority'] : $sets[]='Priority=NULL';
  49. }
  50. (array_key_exists('OurLangsLock',$_POST) && $_POST['OurLangsLock']=='on') ? $sets[]='OurLangsLock=1' : $sets[]='OurLangsLock=0';
  51. $_POST['OurDesc']=trim($_POST['OurDesc']);
  52. ($_POST['OurDesc']!='') ? $sets[]='OurDesc=\''.myesc($link,$_POST['OurDesc']).'\'' : $sets[]='OurDesc=NULL';
  53. $_POST['OurDescEN']=trim($_POST['OurDescEN']);
  54. ($_POST['OurDescEN']!='') ? $sets[]='OurDescEN=\''.myesc($link,$_POST['OurDescEN']).'\'' : $sets[]='OurDescEN=NULL';
  55. if (array_key_exists('LocalityID',$_POST)) {
  56. if (preg_match('/^[0-9]+$/',$_POST['LocalityID'])===1)
  57. $sets[]='LocalityID='.($_POST['LocalityID']+0);
  58. else
  59. muoribene(__LINE__.': Malformed input.',true);
  60. } else {
  61. $sets[]='LocalityID=NULL';
  62. }
  63. ($account['Level']=='guest') ? $sets[]='LastGuestEdit='.$now : $sets[]='LastGuestEdit=NULL';
  64. $que.=implode(', ',$sets).' WHERE ID='.$instid;
  65. $dbg.='QUERONA: '.hspech($que).'<br>'.N;
  66. mysqli_query($link,$que) or muoribene(__LINE__.': '.mysqli_error($link),true);
  67. function multi(&$link,&$instid,&$dbg,$inpid,$table,$column,$line) {
  68. $queries=array();
  69. if (array_key_exists($inpid,$_POST)) {
  70. if (is_array($_POST[$inpid])) {
  71. $pos=0;
  72. foreach ($_POST[$inpid] as $val) {
  73. if (preg_match('/^[0-9]+$/',$val)===1) {
  74. $pos++;
  75. $val+=0;
  76. $queries[]='INSERT INTO '.$table.' (InstID, '.$column.', Pos) VALUES ('.$instid.', '.$val.', '.$pos.')';
  77. } else {
  78. muoribene($line.':'.__LINE__.': Malformed input.',true);
  79. }
  80. }
  81. } else {
  82. muoribene($line.':'.__LINE__.': Malformed input.',true);
  83. }
  84. } //qui niente "else {muoribene...}!
  85. $que='DELETE FROM '.$table.' WHERE InstID='.$instid;
  86. $dbg.='QUEROTTA: '.hspech($que).'<br>'.N;
  87. mysqli_query($link,$que) or muoribene($line.':'.__LINE__.': '.mysqli_error($link),true);
  88. foreach ($queries as $que) {
  89. $dbg.='QUERINA: '.hspech($que).'<br>'.N;
  90. mysqli_query($link,$que) or muoribene($line.':'.__LINE__.': '.mysqli_error($link),true);
  91. }
  92. }
  93. multi($link,$instid,$dbg,'ChosenLangs','InstOurLangs','OurLangID',__LINE__);
  94. multi($link,$instid,$dbg,'ChosenFinModes','InstFinancing','FinID',__LINE__);
  95. multi($link,$instid,$dbg,'ChosenPolicies','InstPolicies','PolID',__LINE__);
  96. multi($link,$instid,$dbg,'ChosenTags','InstTags','TagID',__LINE__);
  97. $res=mysqli_query($link,'SELECT *, ID AS IID FROM Instances WHERE ID='.$instid)
  98. or muoribene(__LINE__.': '.mysqli_error($link),true);
  99. $inst=mysqli_fetch_assoc($res);
  100. require '../../lib/columns.php';
  101. require '../../lib/dispinst.php';
  102. $out=dispinst($inst,$cols,$link,$dlang,$account,false,0,0,$graceline);
  103. if ($account['Level']=='guest')
  104. mysqli_query($link,'INSERT INTO Notifications (ID, Notification, Severity, Microtime, Seen) VALUES (NULL, \''.myesc($link,$account['Email'].' ha editato la sua istanza «<a href="viewinst.php?id='.$inst['IID'].'">'.$inst['URI'].'</a>».').'\', 3, \''.$mtnow.'\', 0)')
  105. or muoribene(__LINE__.': '.mysqli_error($link),true);
  106. mysqli_close($link);
  107. ?>
  108. <!DOCTYPE HTML>
  109. <html lang="en">
  110. <head>
  111. <title>Mustard - «<?php echo($inst['URI']); ?>» form saved</title>
  112. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  113. <meta name="description" content="Admin pages for Mastodon Help">
  114. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
  115. <link rel="icon" type="image/png" href="imgs/icona-32.png" sizes="32x32">
  116. <link rel="icon" type="image/png" href="imgs/icona-192.png" sizes="192x192">
  117. <link rel="icon" type="image/png" href="imgs/icona-512.png" sizes="512x512">
  118. <link rel="apple-touch-icon-precomposed" href="imgs/icona-180.png">
  119. <script language="JavaScript" src="js/menu.js?v=<?php echo($cjrand); ?>"></script>
  120. <link rel="stylesheet" type="text/css" href="css/theme.css?v=<?php echo($cjrand); ?>">
  121. <script language="JavaScript">
  122. <!--
  123. //-->
  124. </script>
  125. </head>
  126. <body>
  127. <nav>
  128. <div id="hmenu">
  129. <ul>
  130. <?php echo($menuout); ?>
  131. </ul>
  132. <div class="mtit">Editing results for «<?php echo($inst['URI']); ?>»</div>
  133. <div id="rightdiv">
  134. <img src="imgs/esci.svg" class="rlinks" title="Logout" onclick="document.location.href='logout.php';">
  135. </div>
  136. </div>
  137. </nav>
  138. <div id="popup">
  139. <div id="inpopup">
  140. <div id="popupcont">
  141. ...
  142. </div>
  143. </div>
  144. </div>
  145. <!-- <div id="footer">
  146. </div> -->
  147. <div id="fullscreen">
  148. <div id="middlerow">
  149. <?php echo($out); ?>
  150. </div>
  151. </div>
  152. <div id="debug">
  153. <?php echo($dbg); ?>
  154. </div>
  155. </body>
  156. </html>