MastodonStartpage/web/mustard/edinsth.php
pezcurrel 85876775c4 ...
2020-05-07 07:24:56 +02:00

515 lines
26 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
require('include/glob.php');
require('include/muoribene.php');
require('include/sessionstart.php');
require('include/myconn.php');
require('include/getadmacc.php');
require('include/tables.php');
$tables=tables($link);
require('include/mb_ucfirst.php');
require('include/jsencode.php');
$dbg='';
use function mysqli_real_escape_string as myesc;
// praticamente una macro
function hspech($str) {
return(htmlspecialchars($str,ENT_QUOTES|ENT_HTML5,'UTF-8'));
}
$contextopts=array(
'http'=>array(
'timeout'=>5
),
'socket'=>array(
'tcp_nodelay'=>true
)
);
$context=stream_context_create($contextopts);
$langs=array('xx'=>'Local language','ca'=>'Català','en'=>'English','es'=>'Español','fr'=>'Français','it'=>'Italiano');
$exvalsjsarr='null;'.N;
$morejs='';
$dbg.='<pre>GET:'.N.print_r($_GET,1).'POST:'.N.print_r($_POST,1).'</pre>';
function check(&$link,&$account,$mode,$table,$lntable,$lncolumn,$id) {
if ($mode=='edit' || $mode=='remove') {
$res=mysqli_query($link,'SELECT * FROM '.$table.' WHERE ID='.$id)
or muoribene(__LINE__.': '.mysqli_error($link),true);
if (mysqli_num_rows($res)==1) {
$row=mysqli_fetch_assoc($res);
if ($account['Level']=='guest') {
if ($row['AddedBy']!=$account['ID'])
muoribene('You cant modify an entry you didnt add.',true);
if ($table!='Localities') {
$que='SELECT * FROM '.$lntable.' LEFT JOIN Instances ON Instances.ID='.$lntable.'.InstID WHERE '.$lntable.'.'.$lncolumn.'='.$id.' AND Instances.ID NOT IN (SELECT ID FROM Instances WHERE GuestID='.$account['ID'].')';
} else {
$que='SELECT * FROM Instances WHERE LocalityID='.$id.' AND Instances.ID NOT IN (SELECT ID FROM Instances WHERE GuestID='.$account['ID'].')';
}
$rres=mysqli_query($link,$que)
or muoribene(__LINE__.': '.mysqli_error($link).'<br>Query: '.hspech($que),true);
if (mysqli_num_rows($rres)>0)
muoribene('You cant modify an entry that<br>has already been linked by others.',true);
}
} else {
muoribene('There is no «'.$table.'» entry with ID='.$id.N,true);
}
} elseif ($mode=='add') {
if ($account['Level']=='guest') {
$res=mysqli_query($link,'SELECT * FROM '.$table.' WHERE AddedBy='.$account['ID'])
or muoribene(__LINE__.': '.mysqli_error($link),true);
if (mysqli_num_rows($res)>=$account['Max'.$table])
muoribene('You cant add more «'.$table.'»<br>entries ('.$account['Max'.$table].' max).',true);
}
}
}
function edaddrem($id,$table,$column,$dispselarr,$lntable,$lncolumn,$searchid,$dispselid,$recbid) {
global $link, $morejs, $account, $dlang;
check($link,$account,$_POST['m'],$table,$lntable,$lncolumn,$id);
if ($_POST['m']=='edit' || $_POST['m']=='add') {
$res=mysqli_query($link,'SELECT * FROM '.$table.' WHERE '.$column.'=\''.myesc($link,$_POST['v']).'\'')
or muoribene(__LINE__.': '.mysqli_error($link),true);
if (mysqli_num_rows($res)>0)
muoribene('«'.hspech($_POST['v']).'» already exists!',true);
}
if ($_POST['m']=='edit') {
if ($table!='Languages') {
mysqli_query($link,'UPDATE '.$table.' SET '.$column.'=\''.myesc($link,$_POST['v']).'\' WHERE ID='.$id)
or muoribene(__LINE__.': '.mysqli_error($link),true);
} else {
$langs=array('NameOrig'=>mb_ucfirst(locale_get_display_name($_POST['v'],$_POST['v'])),
'NameCA'=>mb_ucfirst(locale_get_display_name($_POST['v'],'ca')),
'NameEN'=>mb_ucfirst(locale_get_display_name($_POST['v'],'en')),
'NameES'=>mb_ucfirst(locale_get_display_name($_POST['v'],'es')),
'NameFR'=>mb_ucfirst(locale_get_display_name($_POST['v'],'fr')),
'NameIT'=>mb_ucfirst(locale_get_display_name($_POST['v'],'it')));
if ($_POST['v']==$langs['NameOrig']) {
muoribene('«'.$_POST['v'].'»: unknown language identifier.',true);
} else {
mysqli_query($link,'UPDATE '.$table.' SET Code=\''.myesc($link,$_POST['v']).'\', NameOrig=\''.myesc($link,$langs['NameOrig']).'\', NameCA=\''.myesc($link,$langs['NameCA']).'\', NameEN=\''.myesc($link,$langs['NameEN']).'\', NameES=\''.myesc($link,$langs['NameES']).'\', NameFR=\''.myesc($link,$langs['NameFR']).'\', NameIT=\''.myesc($link,$langs['NameIT']).'\' WHERE ID='.$id)
or muoribene(__LINE__.': '.mysqli_error($link),true);
$_POST['v']=$langs['Name'.$dlang].' ['.$_POST['v'].']';
}
}
$morejs.='parent.'.$dispselarr.'=parent.cheltxtbyval(parent.'.$dispselarr.','.$id.',"'.jsencode($_POST['v']).'");'.N;
$morejs.='parent.'.$dispselarr.'=parent.sortByKey(parent.'.$dispselarr.',0);'.N;
$morejs.='parent.'.$dispselarr.'=parent.selonebyval(parent.'.$dispselarr.','.$id.');'.N;
} elseif ($_POST['m']=='add') {
if ($table!='Languages') {
mysqli_query($link,'INSERT INTO '.$table.' (ID, '.$column.', AddedBy) VALUES (NULL, \''.myesc($link,$_POST['v']).'\', \''.$account['ID'].'\')')
or muoribene(__LINE__.': '.mysqli_error($link),true);
$newid=mysqli_insert_id($link);
} else {
$langs=array('NameOrig'=>mb_ucfirst(locale_get_display_name($_POST['v'],$_POST['v'])),
'NameCA'=>mb_ucfirst(locale_get_display_name($_POST['v'],'ca')),
'NameEN'=>mb_ucfirst(locale_get_display_name($_POST['v'],'en')),
'NameES'=>mb_ucfirst(locale_get_display_name($_POST['v'],'es')),
'NameFR'=>mb_ucfirst(locale_get_display_name($_POST['v'],'fr')),
'NameIT'=>mb_ucfirst(locale_get_display_name($_POST['v'],'it')));
if (strtolower($_POST['v'])==strtolower($langs['NameOrig'])) {
muoribene('«'.$_POST['v'].'»: unknown language identifier.',true);
} else {
mysqli_query($link,'INSERT INTO '.$table.' (ID, Code, NameOrig, NameCA, NameEN, NameES, NameFR, NameIT, AddedBy) VALUES (NULL, \''.myesc($link,$_POST['v']).'\', \''.myesc($link,$langs['NameOrig']).'\', \''.myesc($link,$langs['NameCA']).'\', \''.myesc($link,$langs['NameEN']).'\', \''.myesc($link,$langs['NameES']).'\', \''.myesc($link,$langs['NameFR']).'\', \''.myesc($link,$langs['NameIT']).'\', '.$account['ID'].')')
or muoribene(__LINE__.': '.mysqli_error($link),true);
$newid=mysqli_insert_id($link);
$_POST['v']=$langs['Name'.$dlang].' ['.$_POST['v'].']';
}
}
$morejs.='parent.'.$dispselarr.'.push(["'.jsencode($_POST['v']).'",'.$newid.',true]);'.N;
$morejs.='parent.'.$dispselarr.'=parent.sortByKey(parent.'.$dispselarr.',0);'.N;
$morejs.='parent.'.$dispselarr.'=parent.selonebyval(parent.'.$dispselarr.','.$newid.');'.N;
} elseif ($_POST['m']=='remove') {
if (!array_key_exists('subst',$_POST) || preg_match('/^[0-9]+$/',$_POST['subst'])!==1)
muoribene(__LINE__.': Malformed input.',true);
$newid=$_POST['subst']+0;
mysqli_query($link,'DELETE FROM '.$table.' WHERE ID='.$id)
or muoribene(__LINE__.': '.mysqli_error($link),true);
if ($newid==0) {
$res=mysqli_query($link,'SELECT * FROM '.$lntable.' WHERE '.$lncolumn.'='.$id)
or muoribene(__LINE__.': '.mysqli_error($link),true);
mysqli_query($link,'DELETE FROM '.$lntable.' WHERE '.$lncolumn.'='.$id)
or muoribene(__LINE__.': '.mysqli_error($link),true);
while ($row=mysqli_fetch_assoc($res)) {
$rres=mysqli_query($link,'SELECT * FROM '.$lntable.' WHERE InstID='.$row['InstID'].' ORDER BY Pos ASC') or muoribene(__LINE__.': '.mysqli_error($link),true);
$pos=0;
while ($rrow=mysqli_fetch_assoc($rres)) {
$pos++;
mysqli_query($link,'UPDATE '.$lntable.' SET Pos='.$pos.' WHERE InstID='.$rrow['InstID'].' AND '.$lncolumn.'='.$rrow[$lncolumn].' AND Pos='.$rrow['Pos'])
or muoribene(__LINE__.': '.mysqli_error($link),true);
}
}
} else {
$res=mysqli_query($link,'SELECT * FROM '.$lntable.' WHERE '.$lncolumn.'='.$id)
or muoribene(__LINE__.': '.mysqli_error($link),true);
while ($row=mysqli_fetch_assoc($res)) {
$rres=mysqli_query($link,'SELECT * FROM '.$lntable.' WHERE InstID='.$row['InstID'].' AND '.$lncolumn.'='.$newid) or muoribene(__LINE__.': '.mysqli_error($link),true);
if (mysqli_num_rows($rres)==0) {
mysqli_query($link,'UPDATE '.$lntable.' SET '.$lncolumn.'='.$newid.' WHERE InstID='.$row['InstID'].' AND '.$lncolumn.'='.$id.' AND Pos='.$row['Pos']) or muoribene(__LINE__.': '.mysqli_error($link),true);
//+++ potrebbe aver senso mettere js qui che sposti la voce agli associati se non è già lì, magari con un alerta
} else {
mysqli_query($link,'DELETE FROM '.$lntable.' WHERE InstID='.$row['InstID'].' AND '.$lncolumn.'='.$id.' AND Pos='.$row['Pos']) or muoribene(__LINE__.': '.mysqli_error($link),true);
$rres=mysqli_query($link,'SELECT * FROM '.$lntable.' WHERE InstID='.$row['InstID'].' ORDER BY Pos ASC') or muoribene(__LINE__.': '.mysqli_error($link),true);
$pos=0;
while ($rrow=mysqli_fetch_assoc($rres)) {
$pos++;
mysqli_query($link,'UPDATE '.$lntable.' SET Pos='.$pos.' WHERE InstID='.$rrow['InstID'].' AND '.$lncolumn.'='.$rrow[$lncolumn].' AND Pos='.$rrow['Pos'])
or muoribene(__LINE__.': '.mysqli_error($link),true);
}
}
}
}
$morejs.='parent.'.$dispselarr.'=parent.rmelbyval(parent.'.$dispselarr.','.$id.');'.N;
}
$morejs.='parent.filtsel (parent.'.$dispselarr.', parent.document.getElementById("'.$searchid.'").value, "'.$dispselid.'", "'.$recbid.'", "'.$searchid.'", "white", "#ff8080");'.N;
$morejs.='parent.closeinpup();'.N;
}
if (array_key_exists('w',$_GET) && array_key_exists('i',$_GET) && preg_match('/^[0-9]+$/',$_GET['i'])===1 && array_key_exists('m',$_GET) && in_array($_GET['m'],array('edit','add','remove'))) {
$id=$_GET['i']+0;
switch ($_GET['w']) {
case 'LocalityID':
$out=buildform($id,'Localities','Name'.$dlang,'Location name','Instances','LocalityID');
$exvalsjsarr=setjsarr('Localities','Name'.$dlang);
break;
case 'DispLangs':
$out=buildform($id,'Languages','Code','Language code','InstOurLangs','OurLangID');
$exvalsjsarr=setjsarr('Languages','Code');
break;
case 'DispFinModes':
$out=buildform($id,'Financing','Type','Financing modality','InstFinancing','FinID');
$exvalsjsarr=setjsarr('Financing','Type');
break;
case 'DispPolicies':
$out=buildform($id,'Policies','Name','Policy','InstPolicies','PolID');
$exvalsjsarr=setjsarr('Policies','Name');
break;
case 'DispTags':
$out=buildform($id,'Tags','Name','Tag','InstTags','TagID');
$exvalsjsarr=setjsarr('Tags','Name');
break;
default:
muoribene(__LINE__.': Malformed input.',true);
break;
}
} elseif (array_key_exists('m',$_POST) && in_array($_POST['m'],array('edit','add','remove')) && array_key_exists('t',$_POST) && in_array($_POST['t'],array('Localities','Languages','Financing','Policies','Tags')) && array_key_exists('i',$_POST) && preg_match('/^[0-9]+$/',$_POST['i'])===1) {
$id=$_POST['i']+0;
if (array_key_exists('v',$_POST)) {
$out='';
if ($_POST['t']=='Localities') {
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='.$iniarr['ref_email'];
$osmd=@file_get_contents($url,false,$context);
if ($osmd!==false) {
$osmd=json_decode($osmd,true);
if (count($osmd)>0) {
$addrkeys=array('neighbourhood','borough','suburb','city','municipality','county','district','province','region','state','country');
$onegood=false;
$divs='';
foreach ($osmd as $loc) {
$good=false;
$div='';
//$loc=array(); // simula errore
if (array_key_exists('osm_id',$loc) && array_key_exists('osm_type',$loc) && $loc['osm_type']=='relation') {
$div.='<input type="hidden" id="OSMID-'.$loc['osm_id'].'" value="'.$loc['osm_id'].'">'.N;
$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='.$iniarr['ref_email'];
$osmdil=@file_get_contents($url,false,$context);
if ($osmdil!==false) {
$osmdil=json_decode($osmdil,true);
if (array_key_exists(0,$osmdil) && array_key_exists('address',$osmdil[0])) {
//$osmdil[0]['address']=array(); // simula errore
$dispname=array();
foreach ($addrkeys as $addrkey)
if (array_key_exists($addrkey,$osmdil[0]['address']))
$dispname[]=$osmdil[0]['address'][$addrkey];
if (count($dispname)>0) {
$dispname=array_unique($dispname);
$dispname=implode(', ',$dispname);
$div.='<li><strong>'.$lang.':</strong> '.hspech($dispname).'</li>'.N;
$hidval=jsencode($dispname);
if ($code=='xx') {
$res=mysqli_query($link,'SELECT NameOrig FROM Localities WHERE NameOrig=\''.myesc($link,$dispname).'\'')
or muoribene(__LINE__.': '.mysqli_error($link),true);
if (mysqli_num_rows($res)==0)
$good=true;
}
} else {
$div.='<li><strong>'.$lang.':</strong> <span class="hiferr">No useful «address» data found in OpenStreetMap lookup data.</span></li>'.N;
}
} else {
$div.='<li><strong>'.$lang.':</strong> <span class="hiferr">No «address» found in OpenStreetMap lookup data.</span></li>'.N;
}
} else {
$div.='<li><strong>'.$lang.':</strong> <span class="hiferr">Couldnt fetch OpenStreetMap lookup data.</span></li>'.N;
}
$div.='<input type="hidden" id="Loc'.strtoupper($code).'-'.$loc['osm_id'].'" value="'.$hidval.'">'.N;
}
if ($good) {
$onegood=true;
$divs.='<div class="hifloc" onclick="subosmd(\''.$loc['osm_id'].'\');">'.N.$div;
} else {
$divs.='<div class="hiflocno">'.N.$div;
}
$divs.='</ul>'.N.'</div>'.N;
}
}
if ($onegood) {
$out.='<form action="edinsth.php" method="post" id="f">'.N;
$out.='<p><strong>Please choose the most appropriate entry<br>among those with green background</strong></p>'.N;
$out.=$divs;
$out.='<input type="hidden" id="i" name="i" value="'.$_POST['i'].'">'.N;
$out.='<input type="hidden" id="t" name="t" value="'.$_POST['t'].'">'.N;
$out.='<input type="hidden" id="m" name="m" value="'.$_POST['m'].'">'.N;
$out.='<input type="hidden" id="OSMID" name="OSMID" value="">'.N;
$out.='<input type="hidden" id="LocXX" name="LocXX" value="">'.N;
$out.='<input type="hidden" id="LocCA" name="LocCA" value="">'.N;
$out.='<input type="hidden" id="LocEN" name="LocEN" value="">'.N;
$out.='<input type="hidden" id="LocES" name="LocES" value="">'.N;
$out.='<input type="hidden" id="LocFR" name="LocFR" value="">'.N;
$out.='<input type="hidden" id="LocIT" name="LocIT" value="">'.N;
$out.='</form>'.N;
} else {
$out.='<p><strong>Sorry, no good OpenStreetMap entry was found<br>(they are either incomplete or already in our database)</strong></p>'.N;
$out.=$divs;
}
} else {
$out='<p class="hiferr">Couldnt find OpenStreetMap data for «'.hspech($_POST['v']).'».</p>';
}
} else {
$out='<p class="hiferr">Couldnt fetch OpenStreetMap search data.</p>'.N;
}
} else {
// locality remove
check($link,$account,$_POST['m'],'Localities','Instances','LocalityID',$id);
$out='CANCELLO!';
if (!array_key_exists('subst',$_POST) || preg_match('/^[0-9]+$/',$_POST['subst'])!==1)
muoribene(__LINE__.': Malformed input.',true);
$_POST['subst']+=0;
if ($_POST['subst']==0) {
mysqli_query($link,'UPDATE Instances SET LocalityID=NULL WHERE LocalityID='.$id)
or muoribene(__LINE__.': '.mysqli_error($link),true);
} else {
mysqli_query($link,'UPDATE Instances SET LocalityID='.$_POST['subst'].' WHERE LocalityID='.$id)
or muoribene(__LINE__.': '.mysqli_error($link),true);
}
mysqli_query($link,'DELETE FROM Localities WHERE ID='.$id)
or muoribene(__LINE__.': '.mysqli_error($link),true);
$morejs.='parent.locselarr=parent.rmelbyval(parent.locselarr,'.$id.');'.N;
$morejs.='parent.filtsel (parent.locselarr, parent.document.getElementById("locsearch").value, "LocalityID", "locselre", "locsearch", "white", "#ff8080");'.N;
$morejs.='parent.closeinpup();'.N;
}
} elseif ($_POST['t']=='Languages') {
edaddrem($id,'Languages','Name'.$dlang,'langselarr','InstOurLangs','OurLangID','langsearch','DispLangs','langselre');
} elseif ($_POST['t']=='Financing') {
edaddrem($id,'Financing','Type','finselarr','InstFinancing','FinID','finsearch','DispFinModes','finselre');
} elseif ($_POST['t']=='Policies') {
edaddrem($id,'Policies','Name','polselarr','InstPolicies','PolID','polsearch','DispPolicies','polselre');
} elseif ($_POST['t']=='Tags') {
edaddrem($id,'Tags','Name','tagselarr','InstTags','TagID','tagsearch','DispTags','tagselre');
} else {
// questo è ridondante ma fa niente
muoribene(__LINE__.': Malformed input.',true);
}
} elseif (array_key_exists('OSMID',$_POST) && preg_match('/^[0-9]+$/',$_POST['OSMID'])===1 && array_key_exists('LocXX',$_POST) && array_key_exists('LocCA',$_POST) && array_key_exists('LocEN',$_POST) && array_key_exists('LocES',$_POST) && array_key_exists('LocFR',$_POST) && array_key_exists('LocIT',$_POST)) {
// locality edit/add
check($link,$account,$_POST['m'],'Localities','Instances','LocalityID',$id);
$res=mysqli_query($link,'SELECT * FROM Localities WHERE Name'.$dlang.'=\''.myesc($link,$_POST['Loc'.$dlang]).'\'')
or muoribene(__LINE__.': '.mysqli_error($link),true);
if (mysqli_num_rows($res)>0)
muoribene('«'.hspech($_POST['Loc'.$dlang]).'» already exists!',true);
$out='EDITO/AGGIUNGO!';
if ($_POST['m']=='add') {
mysqli_query($link,'INSERT INTO Localities (ID, OSMID, NameOrig, NameCA, NameEN, NameES, NameFR, NameIT, AddedBy) VALUES (NULL, \''.myesc($link,$_POST['OSMID']).'\', \''.myesc($link,$_POST['LocXX']).'\', \''.myesc($link,$_POST['LocCA']).'\', \''.myesc($link,$_POST['LocEN']).'\', \''.myesc($link,$_POST['LocES']).'\', \''.myesc($link,$_POST['LocFR']).'\', \''.myesc($link,$_POST['LocIT']).'\', \''.$account['ID'].'\')')
or muoribene(__LINE__.': '.mysqli_error($link),true);
$id=mysqli_insert_id($link);
$morejs.='parent.locselarr.push(["'.jsencode($_POST['Loc'.$dlang]).'",'.$id.',true]);'.N;
} elseif ($_POST['m']=='edit') {
mysqli_query($link,'UPDATE Localities SET OSMID=\''.myesc($link,$_POST['OSMID']).'\', NameOrig=\''.myesc($link,$_POST['LocXX']).'\', NameCA=\''.myesc($link,$_POST['LocCA']).'\', NameEN=\''.myesc($link,$_POST['LocEN']).'\', NameES=\''.myesc($link,$_POST['LocES']).'\', NameFR=\''.myesc($link,$_POST['LocFR']).'\', NameIT=\''.myesc($link,$_POST['LocIT']).'\' WHERE ID='.$id)
or muoribene(__LINE__.': '.mysqli_error($link),true);
$morejs.='parent.locselarr=parent.cheltxtbyval(parent.locselarr,'.$id.',"'.jsencode($_POST['Loc'.$dlang]).'");'.N;
}
$morejs.='parent.locselarr=parent.sortByKey(parent.locselarr,0);'.N;
$morejs.='parent.locselarr=parent.selonebyval(parent.locselarr,'.$id.');'.N;
$morejs.='parent.filtsel (parent.locselarr, parent.document.getElementById("locsearch").value, "LocalityID", "locselre", "locsearch", "white", "#ff8080");'.N;
$morejs.='parent.closeinpup();'.N;
} else {
muoribene(__LINE__.': Malformed input.',true);
}
} else {
muoribene(__LINE__.': Malformed input.',true);
}
function buildform($id,$table,$column,$title,$lntable,$lncolumn) {
global $account, $tables, $link;
check($link,$account,$_GET['m'],$table,$lntable,$lncolumn,$id);
$out='';
if ($_GET['m']=='edit' || $_GET['m']=='remove') {
$res=mysqli_query($link,'SELECT * FROM '.$table.' WHERE ID='.$id)
or muoribene(__LINE__.': '.mysqli_error($link),true);
$row=mysqli_fetch_assoc($res);
if ($_GET['m']=='edit') {
$out.='<div class="hiflab"><label for="v">'.$title.'</label></div>'.N;
$out.='<input type="text" class="hifinp" name="v" id="v" maxlength="'.$tables[$table][$column].'" value="'.hspech($row[$column]).'">'.N;
$out.='<script language="JavaScript">'.N;
$out.='<!--'.N;
$out.='document.getElementById(\'v\').focus();'.N;
$out.='document.getElementById(\'v\').select();'.N;
$out.='//-->'.N;
$out.='</script>'.N;
} elseif ($_GET['m']=='remove') {
$lnres=mysqli_query($link,'SELECT * FROM '.$lntable.' WHERE '.$lncolumn.'='.$id)
or muoribene(__LINE__.': '.mysqli_error($link),true);
$nlinking=mysqli_num_rows($lnres);
if ($nlinking>0) {
$out.='<div class="hiflab">«'.hspech($row[$column]).'» is referenced by '.$nlinking.' '.(($nlinking==1) ? 'instance' : 'instances').'!</div>'.N;
$out.='<div class="hifdiv">What do you want to do with '.(($nlinking==1) ? 'this reference' : 'those '.$nlinking.' references').'?<br>If you choose “Delete” '.(($nlinking==1) ? 'it' : 'they').' will be removed; otherwise you can select a substitution record.</div>'.N;
$out.='<select id="subst" name="subst" class="hifinp">'.N;
$out.='<option value="0">Delete</option>'.N;
$lnres=mysqli_query($link,'SELECT * FROM '.$table.' WHERE ID!='.$id.' ORDER BY '.$column.' ASC')
or muoribene(__LINE__.': '.mysqli_error($link),true);
while ($lnrow=mysqli_fetch_assoc($lnres)) {
$out.='<option value="'.$lnrow['ID'].'">Subst. with «'.hspech($lnrow[$column]).'»</option>'.N;
}
$out.='</select>'.N;
} else {
$out.='<input type="hidden" name="subst" value="0">'.N;
}
$out.='<div class="hiflab">Are you sure you want to remove «'.$row[$column].'»?</div>'.N;
$out.='<input type="hidden" name="v" value="IGNORAMI">'.N;
}
$out.='<input type="hidden" name="i" value="'.$id.'">'.N;
} elseif ($_GET['m']=='add') {
$out.='<div class="hiflab"><label for="v">'.$title.'</label></div>'.N;
$out.='<input type="text" class="hifinp" name="v" id="v" maxlength="'.$tables[$table][$column].'" value="">'.N;
$out.='<script language="JavaScript">'.N;
$out.='<!--'.N;
$out.='document.getElementById(\'v\').focus();'.N;
$out.='document.getElementById(\'v\').select();'.N;
$out.='//-->'.N;
$out.='</script>'.N;
$out.='<input type="hidden" name="i" value="0">'.N;
}
$out.='<input type="hidden" name="m" value="'.$_GET['m'].'">'.N;
$out.='<input type="hidden" name="t" value="'.$table.'">'.N;
$out.='<div id="errmsg"></div>'.N;
$out.='<table class="hiftab"><tr><td style="width:50%"><input type="button" value="Cancel" class="hifbut" onclick="parent.closeinpup()"></td><td style="width:50%"><input type="button" value="Ok" class="hifbut" onclick="ckf(\''.$_GET['m'].'\',\''.$table.'\')"></td></tr></table>'.N;
$out='<form action="edinsth.php" method="post" id="f" onsubmit="return ckf(\''.$_GET['m'].'\',\''.$table.'\');">'.N.$out.'</form>'.N;
return($out);
}
function setjsarr($table,$column) {
global $link;
$jsarr=array();
$res=mysqli_query($link,'SELECT '.$column.' FROM '.$table)
or muoribene(__LINE__.': '.mysqli_error($link),true);
while ($row=mysqli_fetch_assoc($res)) {
$jsarr[]=jsencode(strtolower($row[$column]));
}
$jsarr='["'.implode('","',$jsarr).'"];'.N;
return($jsarr);
}
mysqli_close($link);
?>
<!DOCTYPE HTML>
<html lang="en">
<head>
<title>Mustard - Little edits helper</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">
<script language="JavaScript" src="js/confirma.js?v=<?php echo($cjrand); ?>"></script>
<script language="JavaScript" src="js/alerta.js?v=<?php echo($cjrand); ?>"></script>
<link rel="stylesheet" type="text/css" href="theme.css?v=<?php echo($cjrand); ?>">
<script language="JavaScript">
<!--
exvalsarr=<?php echo($exvalsjsarr); ?>
function ckf(mode,table) {
var ok=false;
if (mode=='remove') {
ok=true;
} else if (mode=='add' || mode=='edit') {
var val=document.getElementById('v').value.trim(), vallow=val.toLowerCase(), len=exvalsarr.length, i=0, found=false;
document.getElementById('v').value=val;
if (val!='') {
for (i=0; i<len; i++) {
if (exvalsarr[i]==vallow) {
found=true;
break;
}
}
if (found) {
document.getElementById('errmsg').innerHTML='«'+val+'» already exists!';
} else {
ok=true;
}
} else {
document.getElementById('errmsg').innerHTML='You cant submit an empty value!';
}
}
if (ok) {
var wdiv=document.getElementById('wait');
if (table=='Localities' && mode!='remove')
wdiv.innerHTML='Fetching data from OpenStreetMap.org (can take some time) ...';
else
wdiv.innerHTML='Sending data ...';
wdiv.style.display='block';
document.getElementById('f').submit();
} else {
return false;
}
}
function subosmd(osmid) {
if (document.getElementById('OSMID-'+osmid).value=='' || document.getElementById('LocXX-'+osmid).value=='' || document.getElementById('LocCA-'+osmid).value=='' || document.getElementById('LocEN-'+osmid).value=='' || document.getElementById('LocES-'+osmid).value=='' || document.getElementById('LocFR-'+osmid).value=='' || document.getElementById('LocIT-'+osmid).value=='') {
alerta('Error','<p>Couldnt save this entry: missing data for one or more languages.</p>');
} else {
document.getElementById('OSMID').value=document.getElementById('OSMID-'+osmid).value;
document.getElementById('LocXX').value=document.getElementById('LocXX-'+osmid).value;
document.getElementById('LocCA').value=document.getElementById('LocCA-'+osmid).value;
document.getElementById('LocEN').value=document.getElementById('LocEN-'+osmid).value;
document.getElementById('LocES').value=document.getElementById('LocES-'+osmid).value;
document.getElementById('LocFR').value=document.getElementById('LocFR-'+osmid).value;
document.getElementById('LocIT').value=document.getElementById('LocIT-'+osmid).value;
document.getElementById('f').submit();
}
}
<?php echo($morejs); ?>
//-->
</script>
</head>
<body class="hifbody">
<div id="fullscreen">
<div id="middlerow">
<?php echo($out); ?>
</div>
</div>
<!--
<div id="debugh">
<?php echo($dbg); ?>
</div>
-->
<div id="wait">
...
</div>
<div id="popup">
<div id="inpopup">
<div id="popupcont">
...
</div>
</div>
</div>
</body>
</html>