platforms.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  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. if ($account['Level']=='guest')
  8. muoribene('Sorry, you are not authorized.',true);
  9. require '../../lib/n2es.php';
  10. require '../../lib/menu.php';
  11. $menu['menu']['selected']=true;
  12. $menu['menu']['submenu']['platforms']['href']=null;
  13. $menu['menu']['submenu']['platforms']['selected']=true;
  14. buildmenu($menu);
  15. $dbg='';
  16. $dbg.='$account: <pre>'.print_r($account,1).'</pre>'.N.'$POST: <pre>'.print_r($_POST,1).'</pre>'.N;
  17. use function mysqli_real_escape_string as myesc;
  18. // praticamente una macro
  19. function hspech($str) {
  20. return(htmlspecialchars($str,ENT_QUOTES|ENT_HTML5,'UTF-8'));
  21. }
  22. foreach ($_POST as $key=>$val) {
  23. if (preg_match('#^cons(\d+)$#',$key,$matches)===1) {
  24. if ($val==='0')
  25. $val='1';
  26. elseif ($val==='1')
  27. $val='0';
  28. elseif ($val==='2')
  29. $val='NULL';
  30. else
  31. $val=false;
  32. if ($val!==false) {
  33. $que="UPDATE Platforms SET Consider={$val} WHERE ID={$matches[1]}".N;
  34. $dbg.=$que.N;
  35. mysqli_query($link,$que)
  36. or muoribene(__LINE__.': '.$dbg.'<br>'.N.mysqli_error($link),true);
  37. }
  38. }
  39. }
  40. $mastplats=[];
  41. $res=mysqli_query($link,'SELECT * FROM Platforms WHERE Consider=1')
  42. or muoribene(__LINE__.': '.$dbg.'<br>'.N.mysqli_error($link),true);
  43. while ($row=mysqli_fetch_assoc($res))
  44. $mastplats[]=$row;
  45. $nonmastplats=[];
  46. $res=mysqli_query($link,'SELECT * FROM Platforms WHERE Consider!=1 OR Consider IS NULL')
  47. or muoribene(__LINE__.': '.$dbg.'<br>'.N.mysqli_error($link),true);
  48. while ($row=mysqli_fetch_assoc($res))
  49. $nonmastplats[]=$row;
  50. $dbg.='$mastplats: <pre>'.print_r($mastplats,1).'</pre>'.N;
  51. $dbg.='$nonmastplats: <pre>'.print_r($nonmastplats,1).'</pre>'.N;
  52. $mastplatscount=count($mastplats);
  53. $nonmastplatscount=count($nonmastplats);
  54. if ($mastplatscount>0 || $nonmastplatscount>0) {
  55. $out='<form method="post">'.N.'<table class="plattable">'.N;
  56. if ($mastplatscount>0)
  57. $out.=showrecs($mastplats,'Piattaforme Mastodon');
  58. if ($nonmastplatscount>0)
  59. $out.=showrecs($nonmastplats,'Piattaforme non-Mastodon');
  60. $out.='<tr><th colspan="4"><button>Salva le modifiche</button></th></tr>'.N.'</table>'.N.'</form>'.N;
  61. } else {
  62. $out='<p>La tabella delle piattaforme è vuota!</p>'.N;
  63. }
  64. mysqli_close($link);
  65. function showrecs($platarr,$title) {
  66. global $link;
  67. $selopts=['Si','No','Non so'];
  68. $out='<tr><th colspan="4" class="title">'.$title.'</th></tr>'.N.'<tr><th>Piattaforma</th><th>Istanze di esempio</th><th>È Mastodon?</th><th>Commento</th></tr>'.N;;
  69. foreach ($platarr as $plat) {
  70. $res=mysqli_query($link,'SELECT URI FROM Instances WHERE Software="'.myesc($link,$plat['Name']).'" ORDER BY ID DESC LIMIT 0,5')
  71. or muoribene(__LINE__.': '.$dbg.'<br>'.N.mysqli_error($link),true);
  72. $exinsts=[];
  73. while ($row=mysqli_fetch_assoc($res))
  74. $exinsts[]="<a href=\"https://{$row['URI']}\" target=\"blank\">{$row['URI']}</a>";
  75. if (is_null($plat['Consider']))
  76. $seli=2;
  77. elseif ($plat['Consider']==1)
  78. $seli=0;
  79. else
  80. $seli=1;
  81. $sel="<select name=\"cons{$plat['ID']}\">\n";
  82. for ($i=0; $i<3; $i++) {
  83. ($i==$seli) ? $selected=' selected' : $selected='';
  84. $sel.="<option value=\"{$i}\"{$selected}>{$selopts[$i]}</option>\n";
  85. }
  86. $sel.="</select>\n";
  87. $out.="<tr><td>{$plat['Name']}</td><td>".implode(' ',$exinsts)."</td><td>{$sel}</td><td>...</td></tr>\n";
  88. }
  89. return $out;
  90. }
  91. ?>
  92. <!DOCTYPE HTML>
  93. <html lang="it">
  94. <head>
  95. <title>Mustard - Piattaforme</title>
  96. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  97. <meta name="description" content="Admin pages for Mastodon Help">
  98. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
  99. <link rel="icon" type="image/png" href="imgs/icona-32.png" sizes="32x32">
  100. <link rel="icon" type="image/png" href="imgs/icona-192.png" sizes="192x192">
  101. <link rel="icon" type="image/png" href="imgs/icona-512.png" sizes="512x512">
  102. <link rel="apple-touch-icon-precomposed" href="imgs/icona-180.png">
  103. <link rel="stylesheet" type="text/css" href="css/theme.css?v=<?php echo($cjrand); ?>">
  104. <link rel="stylesheet" type="text/css" href="css/platforms.css?v=<?php echo($cjrand); ?>">
  105. <script language="JavaScript" src="js/menu.js?v=<?php echo($cjrand); ?>"></script>
  106. <script language="JavaScript" src="js/confirma.js?v=<?php echo($cjrand); ?>"></script>
  107. <script language="JavaScript" src="js/alerta.js?v=<?php echo($cjrand); ?>"></script>
  108. <script language="JavaScript">
  109. </script>
  110. </head>
  111. <body>
  112. <nav>
  113. <div id="hmenu">
  114. <ul>
  115. <?php echo($menuout); ?>
  116. </ul>
  117. <div class="mtit">Piattaforme</div>
  118. <div id="rightdiv">
  119. <img src="imgs/esci.svg" class="rlinks" title="Logout" onclick="document.location.href='logout.php';">
  120. </div>
  121. </div>
  122. </nav>
  123. <div id="popup">
  124. <div id="inpopup">
  125. <div id="popupcont">
  126. ...
  127. </div>
  128. </div>
  129. </div>
  130. <div id="debug">
  131. <?php echo($dbg); ?>
  132. </div>
  133. <div id="fullscreen">
  134. <div id="middlerow">
  135. <?php
  136. echo $out;
  137. ?>
  138. </div>
  139. </div>
  140. </body>
  141. </html>