...
This commit is contained in:
parent
2fe0595a19
commit
94f6b543fb
8 changed files with 56 additions and 25 deletions
|
@ -256,7 +256,7 @@ if (!$riprendi) {
|
|||
$peers=json_decode($buf,true);
|
||||
foreach ($peers as $pdom) {
|
||||
if (willtrunc($pdom,'Instances','URI'))
|
||||
notify('L’istanza «'.$pdom.'» non sarà considerata perché il suo dominio è troppo lungo per il campo «URI» della tabella «Instances» nel DB',1);
|
||||
notify('L’istanza «'.$pdom.'» non sarà considerata perché il suo dominio è troppo lungo per il campo «URI» della tabella «Instances» nel DB',2);
|
||||
if (!in_array($pdom,$insts) && !willtrunc($pdom,'Instances','URI'))
|
||||
$insts[]=$pdom;
|
||||
}
|
||||
|
@ -339,7 +339,7 @@ function b2i($bool,$pre) {
|
|||
else
|
||||
return(0);
|
||||
} else {
|
||||
notify($pre.'il valore «'.$bool.'» non è booleano, lo assumo come falso e ritorno «0».',2);
|
||||
notify($pre.'il valore «'.$bool.'» non è booleano, lo assumo come falso e ritorno «0».',3);
|
||||
return(0);
|
||||
}
|
||||
}
|
||||
|
@ -800,9 +800,9 @@ while ($i<$cinsts) {
|
|||
$instrow['Chosen']=$oldinstrow['Chosen'];
|
||||
$instrow['Visible']=$oldinstrow['Visible'];
|
||||
if ($instrow['ShortDesc']!=$oldinstrow['ShortDesc'])
|
||||
notify('<p>La «Descrizione breve» dell’istanza «<a href="viewinst.php?id='.$instrow['ID'].'">'.$instrow['URI'].'</a>» è cambiata.',1);
|
||||
notify('La «Descrizione breve» dell’istanza «<a href="viewinst.php?id='.$instrow['ID'].'">'.$instrow['URI'].'</a>» è cambiata.',2);
|
||||
if ($instrow['LongDesc']!=$oldinstrow['LongDesc'])
|
||||
notify('<p>La «Descrizione lunga» dell’istanza «<a href="viewinst.php?id='.$instrow['ID'].'">'.$instrow['URI'].'</a>» è cambiata.',1);
|
||||
notify('La «Descrizione lunga» dell’istanza «<a href="viewinst.php?id='.$instrow['ID'].'">'.$instrow['URI'].'</a>» è cambiata.',2);
|
||||
$instrow['OurDesc']=$oldinstrow['OurDesc'];
|
||||
$instrow['OurDescEN']=$oldinstrow['OurDescEN'];
|
||||
$instrow['LocalityID']=$oldinstrow['LocalityID'];
|
||||
|
@ -828,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="viewinst.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).'».',2);
|
||||
mysqli_query($link,'DELETE FROM InstLangs WHERE InstID='.$instrow['ID'])
|
||||
or mexit(__LINE__.': '.mysqli_error($link).N,3);
|
||||
foreach ($instlangs as $row) {
|
||||
|
@ -868,7 +868,7 @@ while ($i<$cinsts) {
|
|||
mysqli_query($link,$query)
|
||||
or mexit(__LINE__.': '.mysqli_error($link).N,3);
|
||||
$instid=mysqli_insert_id($link);
|
||||
notify('Ho trovato una nuova istanza: «<a href="viewinst.php?id='.$instid.'">'.$instrow['URI'].'</a>».',2);
|
||||
notify('Ho trovato una nuova istanza: «<a href="viewinst.php?id='.$instid.'">'.$instrow['URI'].'</a>».',1);
|
||||
|
||||
$instlangs=langs($instid, $instrow['URI'], false);
|
||||
foreach ($instlangs as $row) {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
- dafa
|
||||
? dafa?
|
||||
! no!
|
||||
* fatto
|
||||
# in corso
|
||||
|
||||
|
@ -8,6 +9,7 @@
|
|||
- pagina gestione proprio account
|
||||
- pagina gestione blacklist
|
||||
- pagina reset password
|
||||
- una pagina che rilevi eventuali inconsistenze nel db, tra le quali: mail account admin diversa da mail admin d'istanza
|
||||
# implementare la faccenda dell'invio di mail preformattate agli admin con invito a editare i propri dati (quindi implementare "livelli di admin" e relative restrizioni: admin invitat* può vedere solo la pagina relativa alla propria istanza, solo aggiungere valori - non in tutti i casi, editare ed eliminare solo valori che ha aggiunto e solo se non sono già stati linkati da altr*)
|
||||
? edinstres.php deve mostrare messaggio di successo
|
||||
* edinst.php: un'icona per deselezionare Locality
|
||||
|
@ -19,9 +21,9 @@
|
|||
* 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
|
||||
! 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 --- alla fine lasciam perdere, si organizzano gli admin se vogliono.
|
||||
* instances.php: possibilità di filtraggio per GuestID, LastGuestEdit, OurLangsLock
|
||||
- include/dispinst.php: deve essere disponibile anche in inglese, per i guest
|
||||
- instances.php: possibilità di *scegliere* la lingua da usare tra quelle supportate per il filtraggio su Localities e Languages
|
||||
? instances.php: bottoni per pagina precedente-successiva
|
||||
- instances.php: alerta su cambio pagina quando è stato modificato filtro/ordinamento
|
||||
|
|
|
@ -29,7 +29,6 @@ $contextopts=array(
|
|||
);
|
||||
$context=stream_context_create($contextopts);
|
||||
|
||||
$email='pezcurrel@tiscali.it';
|
||||
$langs=array('xx'=>'Local language','ca'=>'Català','en'=>'English','es'=>'Español','fr'=>'Français','it'=>'Italiano');
|
||||
$exvalsjsarr='null;'.N;
|
||||
$morejs='';
|
||||
|
@ -204,7 +203,7 @@ if (array_key_exists('w',$_GET) && array_key_exists('i',$_GET) && preg_match('/^
|
|||
if ($_POST['m']!='remove') {
|
||||
//https://nominatim.openstreetmap.org/search?q=bresso,+milano&format=json&accept-language=fr&email=pezcurrel@tiscali.it
|
||||
//https://nominatim.openstreetmap.org/lookup?osm_ids=R45266&format=json&accept-language=fr&addressdetails=1&email=pezcurrel@tiscali.it
|
||||
$url='https://nominatim.openstreetmap.org/search?q='.urlencode($_POST['v']).'&format=json&email='.$email;
|
||||
$url='https://nominatim.openstreetmap.org/search?q='.urlencode($_POST['v']).'&format=json&email='.$iniarr['ref_email'];
|
||||
$osmd=@file_get_contents($url,false,$context);
|
||||
if ($osmd!==false) {
|
||||
$osmd=json_decode($osmd,true);
|
||||
|
@ -221,7 +220,7 @@ if (array_key_exists('w',$_GET) && array_key_exists('i',$_GET) && preg_match('/^
|
|||
$div.='<ul class="hiful">'.N;
|
||||
foreach ($langs as $code=>$lang) {
|
||||
$hidval='';
|
||||
$url='https://nominatim.openstreetmap.org/lookup?osm_ids=R'.$loc['osm_id'].'&format=json&accept-language='.$code.'&addressdetails=1&email='.$email;
|
||||
$url='https://nominatim.openstreetmap.org/lookup?osm_ids=R'.$loc['osm_id'].'&format=json&accept-language='.$code.'&addressdetails=1&email='.$iniarr['ref_email'];
|
||||
$osmdil=@file_get_contents($url,false,$context);
|
||||
if ($osmdil!==false) {
|
||||
$osmdil=json_decode($osmdil,true);
|
||||
|
|
|
@ -16,6 +16,13 @@ $cols=array(
|
|||
'Instances.OurDesc'=>array('field'=>'Instances.OurDesc','name'=>'[Descrizione nostra (in lingua originale)]','type'=>'text'),
|
||||
'Instances.OurDescEN'=>array('field'=>'Instances.OurDescEN','name'=>'[Descrizione nostra (in inglese)]','type'=>'text'),
|
||||
|
||||
//--------------------------------
|
||||
|
||||
'Instances.GuestID'=>array('field'=>'Instances.GuestID','name'=>'[Email admin invitat@] ►','type'=>'join','join'=>array(),'ord'=>false),
|
||||
'Admins.Email'=>array('field'=>'Admins.Email','name'=>'[Email admin invitat@]','type'=>'joini','join'=>array('Admins ON Admins.ID=Instances.GuestID'),'subtype'=>'text'),
|
||||
|
||||
'Instances.LastGuestEdit'=>array('field'=>'Instances.LastGuestEdit','name'=>'[Ultima modifica fatta dall’admin invitat@]','type'=>'time'),
|
||||
|
||||
//--------------------------------
|
||||
|
||||
'Instances.LocalityID'=>array('field'=>'Instances.LocalityID','name'=>'[Località] ►','type'=>'join','join'=>array(),'ord'=>false),
|
||||
|
@ -66,6 +73,8 @@ $cols=array(
|
|||
|
||||
'OurLanguages.NameXX.First'=>array('field'=>'OurLanguages.Name'.$dlang,'name'=>'[Lingua primaria impostata da noi]','type'=>'joini','join'=>array('InstOurLangs AS InstOurLangs ON InstOurLangs.InstID=Instances.ID AND InstOurLangs.Pos=1','Languages AS OurLanguages ON OurLanguages.ID=InstOurLangs.OurLangID'),'subtype'=>'text','ord'=>false),
|
||||
|
||||
'Instances.OurLangsLock'=>array('field'=>'Instances.OurLangsLock','name'=>'[Blocco lingue impostate da noi]','type'=>'bool'),
|
||||
|
||||
//--------------------------------
|
||||
|
||||
'InstFinancing'=>array('name'=>'[Modalità di finanziamento]','search'=>false,'ord'=>false),
|
||||
|
|
|
@ -2,6 +2,9 @@
|
|||
|
||||
use function mysqli_real_escape_string as myesc;
|
||||
|
||||
// serve per i vari strftime - quando ci sarà versione inglese andrebbe impostata a en_EN.utf8, alla bisogna
|
||||
setlocale(LC_ALL,'it_IT.utf8');
|
||||
|
||||
function nully($val,$fem,$filter,$ntext=null) {
|
||||
if (!is_null($val)) {
|
||||
if ($filter=='strip') {
|
||||
|
@ -9,7 +12,7 @@ function nully($val,$fem,$filter,$ntext=null) {
|
|||
} elseif ($filter=='htmlchars') {
|
||||
return(hspech($val));
|
||||
} elseif ($filter=='timestamp') {
|
||||
return(strftime('%a %d %b %Y, %T',$val));
|
||||
return(strftime('%c',$val));
|
||||
} elseif ($filter=='email') {
|
||||
return('<a href="mailto:'.strip_tags($val).'">'.strip_tags($val).'</a>');
|
||||
} elseif ($filter=='url') {
|
||||
|
@ -81,14 +84,14 @@ function dispinst(&$row,&$cols,&$link,&$dlang,&$account,$showcount,$finst,$cinst
|
|||
$out.='<tr><td colspan="2" class="insthead">'.$row['URI'];
|
||||
if ($showcount) $out.=' ('.$finst.'/'.$cinsts.')';
|
||||
$out.='</td></tr>'.N;
|
||||
$out.='<tr><td colspan="2"><input type="button" value="Edit" class="btbut" onclick="document.location.href=\'edinst.php?id='.$row['IID'].'\'"></td></tr>'.N;
|
||||
$out.='<tr><td colspan="2"><input type="button" value="Edita" class="btbut" onclick="document.location.href=\'edinst.php?id='.$row['IID'].'\'"></td></tr>'.N;
|
||||
if ($account['Level']!='guest') {
|
||||
if (!is_null($row['GuestID'])) {
|
||||
$out.='<tr><td colspan="2"><input type="button" value="Already invited" class="btbut" disabled></td></tr>'.N;
|
||||
$out.='<tr><td colspan="2"><input type="button" value="Admin già invitate" class="btbut" disabled></td></tr>'.N;
|
||||
} elseif (trim($row['Email'])=='') {
|
||||
$out.='<tr><td colspan="2"><input type="button" value="Can’t invite: email address is not defined" class="btbut" disabled></td></tr>'.N;
|
||||
$out.='<tr><td colspan="2"><input type="button" value="Impossibile invitare: l’indirizzo e-mail non è definito" class="btbut" disabled></td></tr>'.N;
|
||||
} else {
|
||||
$out.='<tr><td colspan="2"><input type="button" value="Invite" class="btbut" onclick="document.location.href=\'invite.php?id='.$row['IID'].'\'"></td></tr>'.N;
|
||||
$out.='<tr><td colspan="2"><input type="button" value="Invita le admin" class="btbut" onclick="document.location.href=\'invite.php?id='.$row['IID'].'\'"></td></tr>'.N;
|
||||
}
|
||||
}
|
||||
$attr=booly(trimname($cols['Instances.Blacklisted']['name']).': ',$row['Blacklisted'],false,true).N;
|
||||
|
@ -248,6 +251,17 @@ function dispinst(&$row,&$cols,&$link,&$dlang,&$account,$showcount,$finst,$cinst
|
|||
} else {
|
||||
$out.='<div class="baloo"><span class="ourfield">'.trimname($cols['InstTags']['name']).':</span> <span class="nully">Non definite</span></div>'.N;
|
||||
}
|
||||
if (!is_null($row['GuestID'])) {
|
||||
$guestinf='<span class="good">SI</span>';
|
||||
$sres=mysqli_query($link,'SELECT Email FROM Admins WHERE ID='.$row['GuestID'])
|
||||
or muoribene(__LINE__.': '.mysqli_error($link),true);
|
||||
$srow=mysqli_fetch_assoc($sres);
|
||||
$guestinf.=' (<a href="mailto:'.$srow['Email'].'">'.$srow['Email'].'</a>)';
|
||||
} else {
|
||||
$guestinf='<span class="bad">NO</span>';
|
||||
}
|
||||
$out.='<div class="baloo"><span class="ourfield">Admin invitat*?</span> '.$guestinf.'</div>'.N;
|
||||
$out.='<div class="baloo"><span class="ourfield">'.trimname($cols['Instances.LastGuestEdit']['name']).':</span> '.nully($row['LastGuestEdit'],true,'timestamp').'</div>'.N;
|
||||
$out.='<div class="baloo"><span class="field">'.$cols['Instances.Email']['name'].':</span> '.nully($row['Email'],true,'email').'</div>'.N;
|
||||
$out.='<div class="baloo"><span class="field">'.$cols['Instances.Software']['name'].':</span> '.nully($row['Software'],false,'strip').'</div>'.N;
|
||||
$out.='<div class="baloo"><span class="field">'.$cols['Instances.Version']['name'].':</span> '.nully($row['Version'],true,'strip').'</div>'.N;
|
||||
|
|
12
web/admin/include/randstr.php
Normal file
12
web/admin/include/randstr.php
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?php
|
||||
|
||||
function randstr($len) {
|
||||
$chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_:;\'"%&/?^';
|
||||
$charslen=strlen($chars);
|
||||
$str='';
|
||||
for ($i=0; $i<$len; $i++)
|
||||
$str.=$chars[rand(0,$charslen-1)];
|
||||
return($str);
|
||||
}
|
||||
|
||||
?>
|
|
@ -12,6 +12,8 @@ if ($account['Level']=='guest')
|
|||
|
||||
$cols=array(
|
||||
|
||||
'Instances.GuestID'=>array('select'=>'SELECT Admins.ID AS Gid, CONCAT(Admins.Email,\' (\',COUNT(Admins.ID),\')\') AS Txt FROM Instances LEFT JOIN Admins ON Admins.ID=Instances.GuestID WHERE Instances.GuestID IS NOT NULL GROUP BY Gid ORDER BY Admins.Email ASC','optcol'=>'Gid','txtcol'=>'Txt'),
|
||||
|
||||
'Instances.LocalityID'=>array('select'=>'SELECT Localities.ID AS Lid, CONCAT(Name'.$dlang.',\' (\',COUNT(Localities.ID),\')\') AS Txt FROM Instances LEFT JOIN Localities ON Localities.ID=Instances.LocalityID WHERE Instances.LocalityID IS NOT NULL GROUP BY Lid ORDER BY Localities.NameOrig ASC','optcol'=>'Lid','txtcol'=>'Txt'),
|
||||
|
||||
'InstLangs.LangID'=>array('select'=>'SELECT Languages.ID AS Lid, CONCAT(Name'.$dlang.', \' [\', Code, \'] (\', COUNT(Languages.ID), \')\') AS Txt FROM InstLangs LEFT JOIN Languages ON Languages.ID=LangID GROUP BY Languages.ID ORDER BY Name'.$dlang.' ASC','optcol'=>'Lid','txtcol'=>'Txt'),
|
||||
|
|
|
@ -22,14 +22,7 @@ function hspech($str) {
|
|||
return(htmlspecialchars($str,ENT_QUOTES|ENT_HTML5,'UTF-8'));
|
||||
}
|
||||
|
||||
function randstr($len) {
|
||||
$chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_:;\'"%&/?^';
|
||||
$charslen=strlen($chars);
|
||||
$str='';
|
||||
for ($i=0; $i<$len; $i++)
|
||||
$str.=$chars[rand(0,$charslen-1)];
|
||||
return($str);
|
||||
}
|
||||
require('include/randstr.php');
|
||||
|
||||
if (array_key_exists('id',$_GET) && preg_match('/^[0-9]+$/',$_GET['id'])===1) {
|
||||
$_GET['id']+=0;
|
||||
|
|
Loading…
Reference in a new issue