This commit is contained in:
pezcurrel 2020-05-03 19:55:24 +02:00
parent 2fe0595a19
commit 94f6b543fb
8 changed files with 56 additions and 25 deletions

View file

@ -256,7 +256,7 @@ if (!$riprendi) {
$peers=json_decode($buf,true);
foreach ($peers as $pdom) {
if (willtrunc($pdom,'Instances','URI'))
notify('Listanza «'.$pdom.'» non sarà considerata perché il suo dominio è troppo lungo per il campo «URI» della tabella «Instances» nel DB',1);
notify('Listanza «'.$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» dellistanza «<a href="viewinst.php?id='.$instrow['ID'].'">'.$instrow['URI'].'</a>» è cambiata.',1);
notify('La «Descrizione breve» dellistanza «<a href="viewinst.php?id='.$instrow['ID'].'">'.$instrow['URI'].'</a>» è cambiata.',2);
if ($instrow['LongDesc']!=$oldinstrow['LongDesc'])
notify('<p>La «Descrizione lunga» dellistanza «<a href="viewinst.php?id='.$instrow['ID'].'">'.$instrow['URI'].'</a>» è cambiata.',1);
notify('La «Descrizione lunga» dellistanza «<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 dallistanza «<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 dallistanza «<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) {

View file

@ -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

View file

@ -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);

View file

@ -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 dalladmin 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),

View file

@ -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="Cant invite: email address is not defined" class="btbut" disabled></td></tr>'.N;
$out.='<tr><td colspan="2"><input type="button" value="Impossibile invitare: lindirizzo 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;

View 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);
}
?>

View file

@ -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'),

View file

@ -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;