array( 'timeout'=>5 ), 'socket'=>array( 'tcp_nodelay'=>true ) ); $context=stream_context_create($contextopts); $email='pezcurrel@tiscali.it'; $langs=array('xx'=>'Local language','en'=>'English','es'=>'Español','fr'=>'Français','it'=>'Italiano'); $exvalsjsarr='null;'.N; $morejs=''; $dbg.='
GET:'.N.print_r($_GET,1).'POST:'.N.print_r($_POST,1).'
'; function edaddrem(&$link,&$morejs,&$id,$table,$column,$dispselarr,$lntable,$lncolumn,$searchid,$dispselid,$recbid) { if ($_POST['m']=='add') { mysqli_query($link,'INSERT INTO '.$table.' (ID, '.$column.') VALUES (NULL, \''.myesc($link,$_POST['v']).'\')') or muoribene(__LINE__.': '.mysqli_error($link),true); $newid=mysqli_insert_id($link); $morejs.='parent.'.$dispselarr.'.push(["'.jsencode($_POST['v']).'",'.$newid.',true]);'.N; $morejs.='parent.'.$dispselarr.'=parent.sortByKey(parent.'.$dispselarr.',0);'.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); } 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; } elseif ($_POST['m']=='edit') { mysqli_query($link,'UPDATE '.$table.' SET '.$column.'=\''.myesc($link,$_POST['v']).'\' WHERE ID='.$id) or muoribene(__LINE__.': '.mysqli_error($link),true); $morejs.='parent.'.$dispselarr.'=parent.cheltxtbyval(parent.'.$dispselarr.','.$id.',"'.jsencode($_POST['v']).'");'.N; $morejs.='parent.'.$dispselarr.'=parent.sortByKey(parent.'.$dispselarr.',0);'.N; } $morejs.='parent.filtsel (parent.'.$dispselarr.', parent.document.getElementById("'.$searchid.'").value, "'.$dispselid.'", "'.$recbid.'", "'.$searchid.'", "white", "#ff8080");'.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': $fout=buildform($id,'Localities','NameOrig','Locality name','Instances','LocalityID'); $exvalsjsarr=setjsarr('Localities','NameOrig'); break; case 'DispLangs': $fout=buildform($id,'Languages','NameEN','Language','InstOurLangs','OurLangID'); $exvalsjsarr=setjsarr('Languages','NameEN'); break; case 'DispFinModes': $fout=buildform($id,'Financing','Type','Financing method','InstFinancing','FinID'); $exvalsjsarr=setjsarr('Financing','Type'); break; case 'DispPolicies': $fout=buildform($id,'Policies','Name','Policy','InstPolicies','PolID'); $exvalsjsarr=setjsarr('Policies','Name'); break; case 'DispTags': $fout=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','Financing','Policies','Tags')) && array_key_exists('i',$_POST) && preg_match('/^[0-9]+$/',$_POST['i'])===1) { if (array_key_exists('v',$_POST)) { $fout=''; $id=$_POST['i']+0; if ($_POST['t']=='Localities') { //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; $osmd=@file_get_contents($url,false,$context); if ($osmd!==false) { $fout.='
'.N; $addrkeys=array('suburb','city','county','state','country'); $osmd=json_decode($osmd,true); if (count($osmd)>0) { $some=false; $fout.='

Please choose the most detailed appropriate entry

'.N; foreach ($osmd as $loc) { if (array_key_exists('osm_id',$loc) && array_key_exists('osm_type',$loc) && $loc['osm_type']=='relation') { $fout.='
'.N; $fout.=''.N.'
'.N; } } if ($some) { $fout.=''.N; $fout.=''.N; $fout.=''.N; $fout.=''.N; $fout.=''.N; $fout.=''.N; $fout.=''.N; $fout.=''.N; $fout.='
'.N; } else { $fout='

Couldn’t find localized OpenStreetMap data for «'.hspech($_POST['v']).'».

'; } } else { $fout='

Couldn’t find OpenStreetMap data for «'.hspech($_POST['v']).'».

'; } } else { $fout='

Couldn’t fetch OpenStreetMap search data.

'.N; } } elseif ($_POST['t']=='Languagues') { edaddrem($link,$morejs,$id,'Languages','NameEN','langselarr','InstOurLangs','OurLangID','langsearch','DispLangs','langselre'); } elseif ($_POST['t']=='Financing') { edaddrem($link,$morejs,$id,'Financing','Type','finselarr','InstFinancing','FinID','finsearch','DispFinModes','finselre'); } elseif ($_POST['t']=='Policies') { edaddrem($link,$morejs,$id,'Policies','Name','polselarr','InstPolicies','PolID','polsearch','DispPolicies','polselre'); } elseif ($_POST['t']=='Tags') { edaddrem($link,$morejs,$id,'Tags','Name','tagselarr','InstTags','TagID','tagsearch','DispTags','tagselre'); } } elseif (array_key_exists('LocEn',$_POST) && array_key_exists('LocEs',$_POST) && array_key_exists('LocFr',$_POST) && array_key_exists('LocIt',$_POST)) { $fout='CIAO!'; } else { muoribene(__LINE__.': Malformed input.',true); } } else { muoribene(__LINE__.': Malformed input.',true); } function buildform($id,$table,$column,$title,$lntable,$lncolumn) { global $tables, $link; $fout=''; if ($_GET['m']=='edit' || $_GET['m']=='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 ($_GET['m']=='edit') { $fout.='
'.N; $fout.=''.N; $fout.=''.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) { $fout.='
«'.hspech($row[$column]).'» is referenced by '.$nlinking.' '.(($nlinking==1) ? 'instance' : 'instances').'!
'.N; $fout.='
What do you want to do with '.(($nlinking==1) ? 'this reference' : 'those '.$nlinking.' references').'?
If you choose “Delete” '.(($nlinking==1) ? 'it' : 'they').' will be removed; otherwise you can select a substitution record.
'.N; $fout.=''.N; } $fout.='
Are you sure you want to remove «'.$row[$column].'»?
'.N; $fout.=''.N; } $fout.=''.N; } else { $fout.='

There is no '.$title.' with ID='.$id.'

'.N; } } elseif ($_GET['m']=='add') { $fout.='
'.N; $fout.=''.N; $fout.=''.N; $fout.=''.N; } $fout.=''.N; $fout.=''.N; $fout.='
'.N; $fout.='
'.N; $fout='
'.N.$fout.'
'.N; return($fout); } function jsencode($str) { return(str_replace('"','\"',$str)); } 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); ?> Mastodon Startpage Admin - Little edit’s helper
...