...
This commit is contained in:
parent
463d2eaf72
commit
0921d2a041
4 changed files with 122 additions and 49 deletions
|
@ -164,30 +164,6 @@ if ($riprendi) {
|
|||
$riprendi=true;
|
||||
}
|
||||
|
||||
$tronconi=array();
|
||||
|
||||
function flushtronc($id) {
|
||||
global $tronconi;
|
||||
foreach ($tronconi as $row) {
|
||||
if (!is_null($id)) {
|
||||
if ($row['tab']=='Blacklist')
|
||||
$eurl='edblinsts.php';
|
||||
elseif ($row['tab']=='Instances')
|
||||
$eurl='edinst.php';
|
||||
elseif ($row['tab']=='Languages')
|
||||
$eurl='editlang.php';
|
||||
// questo qui sotto non è errore: la tabella InstTrends non ha ID perciò non è editabile, il massimo che si può fare è andare a vedere la tabella Instances e i trends collegati (l'id che viene passato è infatti quello della tabella Instances)
|
||||
elseif ($row['tab']=='InstTrends')
|
||||
$eurl='edinst.php';
|
||||
}
|
||||
$msg=$row['ctx'].': ho dovuto troncare a '.$row['size'].' caratteri il valore da inserire nella colonna «'.$row['col'].'» della tabella «'.$row['tab'].'» perché troppo lungo ('.$row['len'].' caratteri).';
|
||||
if (!is_null($id))
|
||||
$msg.=' Puoi <a href="'.$eurl.'?id='.$id.'">editarlo qui</a>.';
|
||||
notify($msg,2);
|
||||
}
|
||||
$tronconi=array();
|
||||
}
|
||||
|
||||
function truncs($str,$tab,$col,$ctx) {
|
||||
global $tables, $tronconi, $iswin;
|
||||
if ($iswin)
|
||||
|
@ -195,7 +171,7 @@ function truncs($str,$tab,$col,$ctx) {
|
|||
$size=$tables[$tab][$col];
|
||||
$len=mb_strlen($str,'UTF-8');
|
||||
if ($len>$size) {
|
||||
$tronconi[]=array('id'=>null,'tab'=>$tab,'col'=>$col,'ctx'=>$ctx,'len'=>$len,'size'=>$size);
|
||||
notify($ctx.': ho dovuto troncare a '.$size.' caratteri il valore da inserire nella colonna «'.$col.'» della tabella «'.$tab.'» perché troppo lungo ('.$len.' caratteri).',2);
|
||||
$str=mb_substr($str,0,$size-1,'UTF-8').'…';
|
||||
}
|
||||
return($str);
|
||||
|
@ -310,9 +286,8 @@ if (!$riprendi) {
|
|||
if (!willtrunc($row['Domain'],'Blacklist','Domain')) {
|
||||
mysqli_query($link,'INSERT INTO Blacklist (ID, Domain, CreatedAt, ModifiedAt, Severity, RejectMedia, RejectReports, PrivateComment, PublicComment) VALUES (NULL, \''.myesc($link,$row['Domain']).'\', \''.myesc($link,$row['CreatedAt']).'\', \''.myesc($link,$row['ModifiedAt']).'\', \''.myesc($link,$row['Severity']).'\', \''.myesc($link,$row['RejectMedia']).'\', \''.myesc($link,$row['RejectReports']).'\', NULL, \''.myesc($link,$row['Domain']).'\')')
|
||||
or mexit(__LINE__.': '.mysqli_error($link).N,3);
|
||||
flushtronc(mysqli_insert_id($link));
|
||||
} else {
|
||||
notify('Non ho potuto inserire «'.$row['Domain'].'» nella tabella delle istanze blacklistate perché il dominio è troppo lungo per il campo corrispondente nel DB.',2);
|
||||
lecho('Non ho potuto inserire «'.$row['Domain'].'» nella tabella delle istanze blacklistate perché il dominio è troppo lungo per il campo corrispondente nel DB.',2);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -578,7 +553,6 @@ function langs($instid, $uri, $auto) {
|
|||
mysqli_query($link, $q)
|
||||
or mexit(__LINE__.': '.mysqli_error($link).N,3);
|
||||
$langid=mysqli_insert_id($link);
|
||||
flushtronc($langid);
|
||||
} else {
|
||||
$row=mysqli_fetch_assoc($res);
|
||||
$langid=$row['ID'];
|
||||
|
@ -667,8 +641,7 @@ while ($i<$cinsts) {
|
|||
if (mysqli_num_rows($res)<1) {
|
||||
$res=mysqli_query($link,'INSERT INTO Platforms (Name) VALUES (\''.myesc($link,truncs($info['x-nodeinfo']['software']['name'],'Platforms','Name','«'.$info['uri'].'»')).'\')')
|
||||
or mexit(__LINE__.': '.mysqli_error($link).N,3);
|
||||
notify('«'.$info['uri'].'» utilizza come software «'.$info['x-nodeinfo']['software']['name'].'»; lo aggiungo alla tabella delle piattaforme incontrate. Se non si tratta di mastodon o corgidon, che già vengono accettati, sarebbe buona cosa verificare se è una variante di mastodon e quanto è compatibile, per valutare se accettare le istanze che lo utilizzano.',1);
|
||||
flushtronc(null);
|
||||
notify('«'.$info['uri'].'» utilizza come software «'.$info['x-nodeinfo']['software']['name'].'»; l’ho aggiunto alla tabella delle piattaforme incontrate. Se non si tratta di mastodon o corgidon, che già vengono accettati, sarebbe buona cosa verificare se è una variante di mastodon e quanto è compatibile, per valutare se accettare le istanze che lo utilizzano.',1);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -815,22 +788,21 @@ while ($i<$cinsts) {
|
|||
if (mysqli_num_rows($res)>0) {
|
||||
lecho('«'.$instrow['URI'].'» è già presente nel DB, la aggiorno...'.N);
|
||||
$oldinstrow=mysqli_fetch_assoc($res);
|
||||
flushtronc($oldinstrow['ID']);
|
||||
$instid=$oldinstrow['ID'];
|
||||
$instrow['ID']=$oldinstrow['ID'];
|
||||
$instrow['FirstSeen']=$oldinstrow['FirstSeen'];
|
||||
$instrow['New']=$oldinstrow['New'];
|
||||
if ($instrow['Good']==1 && $oldinstrow['Good']==0) {
|
||||
notify('L’istanza «<a href="edinst.php?id='.$instrow['ID'].'">'.$instrow['URI'].'</a>» non era papabile, ma lo è diventata!',1);
|
||||
notify('L’istanza «<a href="viewinst.php?id='.$instrow['ID'].'">'.$instrow['URI'].'</a>» non era papabile, ma lo è diventata!',1);
|
||||
} elseif ($instrow['Good']==0 && $oldinstrow['Good']==1) {
|
||||
notify('L’istanza «<a href="edinst.php?id='.$instrow['ID'].'">'.$instrow['URI'].'</a>» era papabile, ma non lo è più per i seguenti motivi: '.implode('; ',$whynot),3);
|
||||
notify('L’istanza «<a href="viewinst.php?id='.$instrow['ID'].'">'.$instrow['URI'].'</a>» era papabile, ma non lo è più per i seguenti motivi: '.implode('; ',$whynot),3);
|
||||
}
|
||||
$instrow['Chosen']=$oldinstrow['Chosen'];
|
||||
$instrow['Visible']=$oldinstrow['Visible'];
|
||||
if ($instrow['ShortDesc']!=$oldinstrow['ShortDesc'])
|
||||
notify('<p>La «Descrizione breve» dell’istanza «<a href="edinst.php?id='.$instrow['ID'].'">'.$instrow['URI'].'</a>» è cambiata. La vecchia era...</p><div class="valdesc">'.$oldinstrow['ShortDesc'].'</div><p>La nuova è...</p><div class="valdesc">'.$instrow['ShortDesc'].'</div>',1);
|
||||
notify('<p>La «Descrizione breve» dell’istanza «<a href="viewinst.php?id='.$instrow['ID'].'">'.$instrow['URI'].'</a>» è cambiata.',1);
|
||||
if ($instrow['LongDesc']!=$oldinstrow['LongDesc'])
|
||||
notify('<p>La «Descrizione lunga» dell’istanza «<a href="edinst.php?id='.$instrow['ID'].'">'.$instrow['URI'].'</a>» è cambiata. La vecchia era...</p><div class="valdesc">'.$oldinstrow['LongDesc'].'</div><p>La nuove è...</p><div class="valdesc">'.$instrow['LongDesc'].'</div>',1);
|
||||
notify('<p>La «Descrizione lunga» dell’istanza «<a href="viewinst.php?id='.$instrow['ID'].'">'.$instrow['URI'].'</a>» è cambiata.',1);
|
||||
$instrow['OurDesc']=$oldinstrow['OurDesc'];
|
||||
$instrow['OurDescEN']=$oldinstrow['OurDescEN'];
|
||||
$instrow['LocalityID']=$oldinstrow['LocalityID'];
|
||||
|
@ -856,7 +828,7 @@ while ($i<$cinsts) {
|
|||
$oldinstlangs[]=$row;
|
||||
$instlangs=langs($instrow['ID'], $instrow['URI'], false);
|
||||
if ($instlangs!=$oldinstlangs) {
|
||||
notify('La lista delle lingue utilizzate dichiarate dall’istanza «<a href="edinst.php?id='.$instrow['ID'].'">'.$instrow['URI'].'</a>» è cambiata da «'.subarimp(', ','Code',$oldinstlangs).'» a «'.subarimp(', ','Code',$instlangs).'».',1);
|
||||
notify('La lista delle lingue utilizzate dichiarate dall’istanza «<a href="viewinst.php?id='.$instrow['ID'].'">'.$instrow['URI'].'</a>» è cambiata da «'.subarimp(', ','Code',$oldinstlangs).'» a «'.subarimp(', ','Code',$instlangs).'».',1);
|
||||
mysqli_query($link,'DELETE FROM InstLangs WHERE InstID='.$instrow['ID'])
|
||||
or mexit(__LINE__.': '.mysqli_error($link).N,3);
|
||||
foreach ($instlangs as $row) {
|
||||
|
@ -896,8 +868,7 @@ while ($i<$cinsts) {
|
|||
mysqli_query($link,$query)
|
||||
or mexit(__LINE__.': '.mysqli_error($link).N,3);
|
||||
$instid=mysqli_insert_id($link);
|
||||
|
||||
flushtronc($instid);
|
||||
notify('Ho trovato una nuova istanza: «<a href="viewinst.php?id='.$instid.'">'.$instrow['URI'].'</a>».',2);
|
||||
|
||||
$instlangs=langs($instid, $instrow['URI'], false);
|
||||
foreach ($instlangs as $row) {
|
||||
|
@ -912,7 +883,7 @@ while ($i<$cinsts) {
|
|||
}
|
||||
|
||||
if ($instrow['Good']==1)
|
||||
notify('La nuova istanza «<a href="edinst.php?id='.$instid.'">'.$instrow['URI'].'</a>» è papabile!',1);
|
||||
notify('La nuova istanza «<a href="viewinst.php?id='.$instid.'">'.$instrow['URI'].'</a>» è papabile!',1);
|
||||
|
||||
}
|
||||
|
||||
|
@ -957,15 +928,10 @@ while ($i<$cinsts) {
|
|||
$query='INSERT INTO InstTrends (InstID, LastDay, Name, URL, Pos) VALUES ('.$trend['InstID'].', \''.$trend['LastDay'].'\', \''.myesc($link,truncs($trend['Name'],'InstTrends','Name','«'.$instrow['URI'].'»')).'\', \''.myesc($link,truncs($trend['URL'],'InstTrends','URL','«'.$instrow['URI'].'»')).'\', '.$pos.')';
|
||||
mysqli_query($link,$query)
|
||||
or mexit(__LINE__.': '.mysqli_error($link).N,3);
|
||||
// questo qui sotto non è errore, vedi il commento relativo nella funzione
|
||||
flushtronc($instid);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
mysqli_query($link,'INSERT INTO InstChecks (InstID, Time, Status) VALUES ('.$instid.', '.time().', 1)')
|
||||
or mexit(__LINE__.': '.mysqli_error($link).N,3);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* fatto
|
||||
# in corso
|
||||
|
||||
* viewinst.php
|
||||
- pagina gestione accounts
|
||||
- pagina gestione proprio account
|
||||
- pagina gestione blacklist
|
||||
|
@ -11,13 +12,13 @@
|
|||
? edinstres.php deve mostrare messaggio di successo
|
||||
* edinst.php: un'icona per deselezionare Locality
|
||||
* nei vari helper, sarebbe meglio morisse in json, alla bisogna
|
||||
- aggiungere notifiche quando "guest" edita istanza, località, lingua, modalità di finanziamento, ecc.
|
||||
* aggiungere notifica quando "guest" edita istanza
|
||||
? index.php: lunghezza automatica di username
|
||||
- serve un "notifs.php" (è già linkato dalla lista notifiche accessibile dalla campanella) per la gestione accurata delle notifiche (possibilità di marcarle tutte o "precedenti a" come lette, possibilità di cancellarle tutte o "precedenti a")
|
||||
- rinominare tutto da "Mastodon Startpage Admin" a "MastoStartAdm"
|
||||
- crawler.php: ricorsivizzarlo?
|
||||
- crawler.php: le notifiche, invece di edinst.php, devono linkare un viewinst.php che mostri l'istanza
|
||||
- crawler.php: sarebbe tanto bello fare a meno di tutta la faccenda "tronconi" ecc.
|
||||
* rinominare tutto da "Mastodon Startpage Admin" a "Mustard"
|
||||
* crawler.php: ricorsivizzarlo? - fatto, in questo modo: peerscrawl.php crea una lista di "tutte le istanze note" a partire da una certa instanza, crawler.php usa questa lista per importare nel db i dati delle istanze che rispondono
|
||||
* crawler.php: le notifiche, invece di edinst.php, devono linkare un viewinst.php che mostri l'istanza
|
||||
* crawler.php: sarebbe tanto bello fare a meno di tutta la faccenda "tronconi" ecc.
|
||||
- crawler.php: deve controllare se nella tabella Instances GuestID è definito; se è definito e la mail del corrispettivo account "guest" è cambiata, deve aggiornare l'account "guest" corrispettivo in Admins con la mail e il nome utente attuali e creare nuova password; se i dati dell'istanza sono già stati editati, mandare mail di "aggiornamento"; se non lo sono, mandare invito
|
||||
- instances.php: possibilità di filtraggio per GuestID, LastGuestEdit, OurLangsLock
|
||||
- instances.php: tradurre tutto in inglese
|
||||
|
|
|
@ -107,6 +107,10 @@ require('include/columns.php');
|
|||
require('include/dispinst.php');
|
||||
$out=dispinst($inst,$cols,$link,$dlang,$account,false,0,0);
|
||||
|
||||
if ($account['Level']=='guest')
|
||||
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)')
|
||||
or muoribene(__LINE__.': '.mysqli_error($link),true);
|
||||
|
||||
mysqli_close($link);
|
||||
|
||||
?>
|
||||
|
|
102
web/admin/viewinst.php
Normal file
102
web/admin/viewinst.php
Normal file
|
@ -0,0 +1,102 @@
|
|||
<?php
|
||||
|
||||
require('include/glob.php');
|
||||
require('include/muoribene.php');
|
||||
require('include/sessionstart.php');
|
||||
require('include/myconn.php');
|
||||
require('include/getadmacc.php');
|
||||
if ($account['Level']=='guest')
|
||||
muoribene('Sorry, you are not authorized.',true);
|
||||
require('include/menu.php');
|
||||
$menu['menu']['selected']=true;
|
||||
$menu['menu']['submenu']['instances']['selected']=true;
|
||||
buildmenu($menu);
|
||||
require('include/notifs.php');
|
||||
$notifs=notifs($link);
|
||||
|
||||
$dbg='';
|
||||
|
||||
use function mysqli_real_escape_string as myesc;
|
||||
|
||||
// praticamente una macro
|
||||
function hspech($str) {
|
||||
return(htmlspecialchars($str,ENT_QUOTES|ENT_HTML5,'UTF-8'));
|
||||
}
|
||||
|
||||
if (array_key_exists('id',$_GET) && preg_match('/^[0-9]+$/',$_GET['id'])) {
|
||||
$_GET['id']+=0;
|
||||
$res=mysqli_query($link,'SELECT *, ID AS IID FROM Instances WHERE ID='.$_GET['id'])
|
||||
or muoribene(__LINE__.': '.mysqli_error($link),true);
|
||||
if (mysqli_num_rows($res)>0) {
|
||||
require('include/columns.php');
|
||||
require('include/dispinst.php');
|
||||
$inst=mysqli_fetch_assoc($res);
|
||||
$out=dispinst($inst,$cols,$link,$dlang,$account,false,0,0);
|
||||
} else {
|
||||
$out='<p>Non esiste alcuna istanza con ID='.$_GET['id'].'.</p>'.N;
|
||||
}
|
||||
} else {
|
||||
$out='<p>Nessuna istanza da mostrare.</p>';
|
||||
}
|
||||
|
||||
mysqli_close($link);
|
||||
|
||||
?>
|
||||
<!DOCTYPE HTML>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Mustard - Visualizzatore istanze</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="description" content="Admin pages for Mastodon Startpage">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||
<link rel="icon" type="image/png" href="imgs/icona-32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="imgs/icona-192.png" sizes="192x192">
|
||||
<link rel="icon" type="image/png" href="imgs/icona-512.png" sizes="512x512">
|
||||
<link rel="apple-touch-icon-precomposed" href="imgs/icona-180.png">
|
||||
<link rel="stylesheet" type="text/css" href="theme.css?v=<?php echo($cjrand); ?>">
|
||||
<script language="JavaScript" src="js/menu.js?v=<?php echo($cjrand); ?>"></script>
|
||||
<script language="JavaScript">
|
||||
<!--
|
||||
//-->
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<nav>
|
||||
<div id="hmenu">
|
||||
<ul>
|
||||
<?php echo($menuout); ?>
|
||||
</ul>
|
||||
<div class="mtit">Visualizzatore istanze</div>
|
||||
<div id="rightdiv">
|
||||
<?php echo('<img src="'.$notifs['imgoff'].'" id="bell" class="rlinks" title="Show notifications" onclick="shidenotifs();">'.N); ?>
|
||||
<img src="imgs/esci.svg" class="rlinks" title="Logout" onclick="document.location.href='logout.php';">
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<?php echo($notifs['div']); ?>
|
||||
|
||||
<div id="popup">
|
||||
<div id="inpopup">
|
||||
<div id="popupcont">
|
||||
...
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <div id="footer">
|
||||
</div> -->
|
||||
|
||||
<div id="fullscreen">
|
||||
<div id="middlerow">
|
||||
<?php echo($out); ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="debug">
|
||||
<?php echo($dbg); ?>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in a new issue