edinstres.php 5.8 KB

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