1
0
Forkuj 0
MastodonStartpage/web/mustard/include/dispinst.php
pezcurrel 294ef6ecec ...
2020-05-15 15:01:57 +02:00

313 wiersze
16 KiB
PHP
Czysty Wina Historia

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
use function mysqli_real_escape_string as myesc;
// serve per i vari strftime
(isset($english) && $english) ? setlocale(LC_ALL,'en_EN.utf8') : setlocale(LC_ALL,'it_IT.utf8');
function t($itstr,$enstr) {
global $english;
if (!$english)
return($itstr);
else
return($enstr);
}
function tc($key) {
global $english, $cols;
if (!$english)
return($cols[$key]['name']);
else
return($cols[$key]['nameEN']);
}
function nully($val,$fem,$filter,$ntext=null) {
if (!is_null($val)) {
if ($filter=='strip') {
return(strip_tags($val,'<a><br><ol><ul><li><p><i><b><strong><em><small>'));
} elseif ($filter=='htmlchars') {
return(hspech($val));
} elseif ($filter=='timestamp') {
return(strftime('%c',$val));
} elseif ($filter=='email') {
return('<a href="mailto:'.strip_tags($val).'">'.strip_tags($val).'</a>');
} elseif ($filter=='url') {
return('<a href="'.strip_tags($val).'" target="_blank">'.strip_tags($val).'</a>');
} elseif ($filter=='image') {
return('<img src="'.str_replace('"','\\"',strip_tags($val)).'">');
} elseif ($filter=='boolt') {
if ($val)
return('<span class="good">'.t('Si','Yes').'</span>');
else
return('<span class="bad">No</span>');
} elseif ($filter=='boolf') {
if ($val)
return('<span class="bad">'.t('Si','Yes').'</span>');
else
return('<span class="good">No</span>');
} else {
return($val);
}
} else {
if (is_null($ntext)) {
if ($fem)
return('<span class="nully">'.t('Non definita','Not defined').'</span>');
else
return('<span class="nully">'.t('Non definito','Not defined').'</span>');
}
else {
return('<span class="nully">'.$ntext.'</span>');
}
}
}
function booly($pre,$val,$nottoobad=false,$invcol=false) {
if ($val) {
if (!$invcol) {
$p='<p class="good">';
} else {
if (!$nottoobad) {
$p='<p class="bad">';
} else {
$p='<p class="neut">';
}
}
return($p.$pre.t('SI','YES').'</p>');
} else {
if (!$invcol) {
if (!$nottoobad) {
$p='<p class="bad">';
} else {
$p='<p class="neut">';
}
} else {
$p='<p class="good">';
}
return($p.$pre.'NO</p>');
}
}
function trimname($str) {
return(substr($str,1,strlen($str)-2));
}
// $row deve essere una riga ritornata da una query tipo "SELECT *, ID AS IID FROM Instances WHERE ..."
function dispinst(&$row,&$cols,&$link,&$dlang,&$account,$showcount,$finst,$cinsts) {
$out='';
$out.='<table class="bigtab">'.N;
// $out.='<thead><tr><th class="tdattr">Attributi</th><th>Info</th></thead>'.N;
$out.='<tbody>'.N;
$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="'.t('Edita','Edit').'" 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="Sollecita, stimola, incalza, incita admin già invitat*" class="btbut" onclick="document.location.href=\'invite.php?id='.$row['IID'].'\'"></td></tr>'.N;
} elseif (trim($row['Email'])=='') {
$out.='<tr><td colspan="2"><input type="button" value="Impossibile invitare admin: indirizzo e-mail non definito" class="btbut" disabled></td></tr>'.N;
} else {
$out.='<tr><td colspan="2"><input type="button" value="Invita admin" class="btbut" onclick="document.location.href=\'invite.php?id='.$row['IID'].'\'"></td></tr>'.N;
}
}
$attr=booly(trimname(tc('Instances.Blacklisted')).': ',$row['Blacklisted'],false,true).N;
$attr.=booly(trimname(tc('Instances.New')).': ',$row['New'],true).N;
$attr.=booly(trimname(tc('Instances.Good')).': ',$row['Good']).N;
$attr.=booly(trimname(tc('Instances.Chosen')).': ',$row['Chosen']).N;
$attr.=booly(trimname(tc('Instances.Visible')).': ',$row['Visible']).N;
/*$attr.=booly(tc('Instances.RegOpen')).': ',$row['RegOpen']).N;
$attr.=booly(tc('Instances.RegReqApproval').': ',$row['RegReqApproval'],true,true).N;*/
$sres=mysqli_query($link,'SELECT * FROM InstChecks WHERE InstID='.$row['IID'].' ORDER BY Time DESC')
or muoribene(mysqli_error($link),true);
$csres=mysqli_num_rows($sres);
if ($csres>0) {
$bene=0;
while ($srow=mysqli_fetch_assoc($sres)) {
if ($srow['Status']==1)
$bene++;
}
$width=str_replace(',','.',100/$csres*$bene);
$attr.='<div class="colsectheader">'.t('Percentuale di risposta ai nostri check','Percentage of response to our checks').' ('.$csres.'): '.round($width,1).'%</div>';
$attr.='<div class="percbg"><div class="percfg" style="width:'.$width.'%;"></div></div>'.N;
mysqli_data_seek($sres,0);
$srow=mysqli_fetch_assoc($sres);
$attr.='<div class="colsectcont">'.t('Ultimo check','Last check').'<br>('.strftime('%c',$srow['Time']).'): '.(($srow['Status']) ? '<span class="good">OK</span>' : '<span class="bad">KO</span>').'</div>';
} else {
$attr.='<div class="colsectheader">'.t('Percentuale di risposta ai nostri check','Percentage of response to our checks').'</div>'.N;
$attr.='<div class="colsectcont nully">'.t('Non disponibile','Unavailable').' (?!?!?!)</div>'.N;
}
$attr.='<div class="colsectheader">'.t('Attività delle ultime 12 settimane','Last 12 weeks activity').'</div>'.N;
$sres=mysqli_query($link,'SELECT SUM(Statuses) AS tstatuses, SUM(Logins) AS tlogins, SUM(Registrations) AS tregs FROM InstActivity WHERE InstID='.$row['IID'])
or muoribene(mysqli_error($link),true);
$tot=mysqli_fetch_assoc($sres);
$sres=mysqli_query($link,'SELECT * FROM InstActivity WHERE InstID='.$row['IID'].' ORDER BY Week DESC')
or muoribene(mysqli_error($link),true);
if (mysqli_num_rows($sres)>0) {
$attr.='<div class="colsectcont">'.t('Stati','Statuses').': '.$tot['tstatuses'].'<br>'.t('Accessi','Logins').': '.$tot['tlogins'].'<br>'.t('Registrazioni','Registrations').': '.$tot['tregs'].'</div>'.N;
while ($srow=mysqli_fetch_assoc($sres)) {
$attr.='<div class="colsectcontb">'.strftime(/*'%e %b %Y'*/'%x',$srow['Week']).'</div>'.N;
($tot['tstatuses']==0) ? $width=0 : $width=str_replace(',','.',100/$tot['tstatuses']*$srow['Statuses']);
$attr.='<div class="percstatuses" style="width:'.$width.'%;">'.$srow['Statuses'].'&nbsp;'.t('stati','statuses').'</div>'.N;
($tot['tlogins']==0) ? $width=0 : $width=str_replace(',','.',100/$tot['tlogins']*$srow['Logins']);
$attr.='<div class="perclogins" style="width:'.$width.'%;">'.$srow['Logins'].'&nbsp;'.t('accessi','logins').'</div>'.N;
($tot['tregs']==0) ? $width=0 : $width=str_replace(',','.',100/$tot['tregs']*$srow['Registrations']);
$attr.='<div class="percregs" style="width:'.$width.'%;">'.$srow['Registrations'].'&nbsp;'.t('registrazioni','registrations').'</div>'.N;
}
} else {
$attr.='<div class="colsectcont nully">'.t('Non disponibile','Unavailable').'</div>'.N;
}
$attr.='<div class="colsectheader">'.t('Hashtags più usati durante lultima settimana','Most used hashtags during last week').'</div>'.N;
$sres=mysqli_query($link,'SELECT * FROM InstTrends WHERE InstID='.$row['IID'].' ORDER BY Pos ASC')
or muoribene(mysqli_error($link),true);
if (mysqli_num_rows($sres)>0) {
$attr.='<div class="colsectcont"><ol>'.N;
while ($srow=mysqli_fetch_assoc($sres)) {
$attr.='<li><a href="'.$srow['URL'].'">'.hspech($srow['Name']).'</a></li>'.N;
}
$attr.='</ol></div>'.N;
} else {
$attr.='<div class="colsectcont nully">'.t('Non disponibili','Unavailable').'</div>'.N;
}
$out.='<tr><td class="tdattr">'.$attr.'</td><td>'.N;
if ($row['Blacklisted']>0) {
$sres=mysqli_query($link,'SELECT * FROM Blacklist WHERE Domain=\''.myesc($link,$row['URI']).'\'')
or muoribene(mysqli_error($link),true);
if (mysqli_num_rows($sres)>0) {
$srow=mysqli_fetch_assoc($sres);
if (!is_null($srow['PublicComment']) && preg_match('/^\s*$/',$srow['PublicComment'])!==1) {
$out.='<div class="baloo">'.t('Questa istanza è blacklistata per questo motivo','This instance is blacklisted for this reason').': '.hspech($srow['PublicComment']).'</div>'.N;
} else {
$out.='<div class="baloo">'.t('Questa istanza è blacklistata, ma nella blacklist non è specificato il motivo','This instance is blacklisted, but the blacklist entry doesnt specify a reason').'.</div>'.N;
}
} else {
$out.='<div class="baloo">'.t('Questa istanza risulta blacklistata nella tabella delle istanze, ma nella tabella “Blacklist” non è presente: probabilmente è stata rimossa dalla tabella “Blacklist” e il crawler non lha ancora aggiornata','This instance has the “Blacklisted” flag on, but it is not present in the “Blacklist” table: prabably it has been removed from there but the crawler has not yet updated its record').'.</div>'.N;
}
}
$out.='<div class="baloo"><span class="field">'.tc('Instances.URI').':</span> <a href="https://'.$row['URI'].'" target="_blank">'.$row['URI'].'</a></div>'.N;
$out.='<div class="baloo"><span class="field">'.tc('Instances.Title').':</span> '.nully($row['Title'],false,'strip').'</div>'.N;
$out.='<div class="baloo"><span class="field">'.tc('Instances.Thumb').':</span> '.nully($row['Thumb'],true,'image').'</div>'.N;
$out.='<div class="baloo"><span class="field">'.tc('Instances.ShortDesc').':</span> '.nully($row['ShortDesc'],true,'strip').'</div>'.N;
$out.='<div class="baloo"><span class="field">'.tc('Instances.LongDesc').':</span> '.nully($row['LongDesc'],true,'strip').'</div>'.N;
// 'strip' o 'htmlent' per la descrizione nostra?
$out.='<div class="baloo"><span class="ourfield">'.trimname(tc('Instances.OurDesc')).':</span> '.nully($row['OurDesc'],true,'strip').'</div>'.N;
$out.='<div class="baloo"><span class="ourfield">'.trimname(tc('Instances.OurDescEN')).':</span> '.nully($row['OurDescEN'],true,'strip').'</div>'.N;
$out.='<div class="baloo"><span class="ourfield">'.trimname(tc('Localities.Name')).':</span> ';
if (!is_null($row['LocalityID'])) {
$sres=mysqli_query($link,'SELECT * FROM Localities WHERE Localities.ID='.$row['LocalityID'])
or muoribene(mysqli_error($link),true);
$srow=mysqli_fetch_assoc($sres);
$out.=hspech($srow['NameOrig']).'</div>'.N;
} else {
$out.='<span class="nully">'.t('Non definita','Undefined').'</span></div>'.N;
}
$sres=mysqli_query($link,'SELECT * FROM InstLangs LEFT JOIN Languages ON Languages.ID=LangID WHERE InstID='.$row['IID'].' ORDER BY Pos ASC')
or muoribene(mysqli_error($link),true);
$out.='<div class="baloo"><span class="field">'.tc('InstLangs').':</span> ';
if (mysqli_num_rows($sres)>0) {
$i=0;
$buf=array();
while ($srow=mysqli_fetch_assoc($sres)) {
$i++;
$buf[]=$i.': '.hspech($srow['Name'.$dlang].' ['.$srow['Code'].']');
}
$out.=implode('; ',$buf);
} else {
$out.='<span class="nully">'.t('Non definite','Undefined').'</span>';
}
$out.='</div>'.N;
$sres=mysqli_query($link,'SELECT * FROM InstOurLangs LEFT JOIN Languages ON Languages.ID=OurLangID WHERE InstID='.$row['IID'].' ORDER BY Pos ASC')
or muoribene(mysqli_error($link),true);
$out.='<div class="baloo"><span class="ourfield">'.trimname(tc('InstOurLangs')).':</span> ';
if (mysqli_num_rows($sres)>0) {
$i=0;
$buf=array();
while ($srow=mysqli_fetch_assoc($sres)) {
$i++;
$buf[]=$i.': '.hspech($srow['Name'.$dlang].' ['.$srow['Code'].']');
}
$out.=implode('; ',$buf);
} else {
$out.='<span class="nully">'.t('Non definite','Undefined').'</span>';
}
($row['OurLangsLock']>0) ? $out.=' <strong>('.t('bloccate','locked').')</strong>' : $out.=' <strong>('.t('non bloccate','not locked').')</strong>';
$out.='</div>'.N;
$sres=mysqli_query($link,'SELECT * FROM InstFinancing LEFT JOIN Financing ON Financing.ID=FinID WHERE InstID='.$row['IID'].' ORDER BY Pos ASC')
or muoribene(mysqli_error($link),true);
$out.='<div class="baloo"><span class="ourfield">'.trimname(tc('InstFinancing')).':</span> ';
if (mysqli_num_rows($sres)>0) {
$i=0;
$buf=array();
while ($srow=mysqli_fetch_assoc($sres)) {
$i++;
$buf[]=$i.': '.hspech($srow['Type']);
}
$out.=implode('; ',$buf);
} else {
$out.='<span class="nully">'.t('Non definite','Undefined').'</span>';
}
$out.='</div>'.N;
$sres=mysqli_query($link,'SELECT * FROM InstPolicies LEFT JOIN Policies ON Policies.ID=PolID WHERE InstID='.$row['IID'].' ORDER BY Pos ASC')
or muoribene(mysqli_error($link),true);
$out.='<div class="baloo"><span class="ourfield">'.trimname(tc('InstPolicies')).':</span> ';
if (mysqli_num_rows($sres)>0) {
$i=0;
$buf=array();
while ($srow=mysqli_fetch_assoc($sres)) {
$i++;
$buf[]=$i.': '.hspech($srow['Name']);
}
$out.=implode('; ',$buf);
} else {
$out.='<span class="nully">'.t('Non definite','Undefined').'</span>';
}
$out.='</div>'.N;
$sres=mysqli_query($link,'SELECT * FROM InstTags LEFT JOIN Tags ON Tags.ID=TagID WHERE InstID='.$row['IID'].' ORDER BY Pos ASC')
or muoribene(mysqli_error($link),true);
$out.='<div class="baloo"><span class="ourfield">'.trimname(tc('InstTags')).':</span> ';
if (mysqli_num_rows($sres)>0) {
$i=0;
$buf=array();
while ($srow=mysqli_fetch_assoc($sres)) {
$i++;
$buf[]=$i.': '.hspech($srow['Name']);
}
$out.=implode('; ',$buf);
} else {
$out.='<span class="nully">'.t('Non definite','Undefined').'</span>';
}
$out.='</div>'.N;
if (!is_null($row['GuestID'])) {
$guestinf='<span class="good">'.t('SI','YES').'</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">'.t('Admin invitat*?','Admin has been invited?').'</span> '.$guestinf.'</div>'.N;
$out.='<div class="baloo"><span class="ourfield">'.trimname(tc('Instances.LastGuestEdit')).':</span> '.nully($row['LastGuestEdit'],true,'timestamp').'</div>'.N;
$out.='<div class="baloo"><span class="field">'.tc('Instances.Email').':</span> '.nully($row['Email'],true,'email').'</div>'.N;
$out.='<div class="baloo"><span class="field">'.tc('Instances.Software').':</span> '.nully($row['Software'],false,'strip').'</div>'.N;
$out.='<div class="baloo"><span class="field">'.tc('Instances.Version').':</span> '.nully($row['Version'],true,'strip').'</div>'.N;
$out.='<div class="baloo"><span class="field">'.tc('Instances.UserCount').':</span> '.nully($row['UserCount'],false,'strip').'</div>'.N;
$out.='<div class="baloo"><span class="field">'.tc('Instances.StatusCount').':</span> '.nully($row['StatusCount'],false,'strip').'</div>'.N;
$out.='<div class="baloo"><span class="field">'.tc('Instances.DomainCount').':</span> '.nully($row['DomainCount'],false,'strip').'</div>'.N;
$out.='<div class="baloo"><span class="field">'.tc('Instances.ActiveUsersMonth').':</span> '.nully($row['ActiveUsersMonth'],false,'strip').'</div>'.N;
$out.='<div class="baloo"><span class="field">'.tc('Instances.ActiveUsersHalfYear').':</span> '.nully($row['ActiveUsersHalfYear'],false,'strip').'</div>'.N;
$out.='<div class="baloo"><span class="field">'.tc('Instances.RegOpen').':</span> '.nully($row['RegOpen'],false,'boolt').'</div>'.N;
$out.='<div class="baloo"><span class="field">'.tc('Instances.RegReqApproval').':</span> '.nully($row['RegReqApproval'],false,'boolf').'</div>'.N;
$out.='<div class="baloo"><span class="field">'.tc('Instances.MaxTootChars').':</span> '.nully($row['MaxTootChars'],false,'strip','500').'</div>'.N;
$out.='<div class="baloo"><span class="field">'.tc('Instances.AdmAccount').':</span> '.nully($row['AdmAccount'],false,'strip').'</div>'.N;
$out.='<div class="baloo"><span class="field">'.tc('Instances.AdmDisplayName').':</span> '.nully($row['AdmDisplayName'],false,'strip').'</div>'.N;
$out.='<div class="baloo"><span class="field">'.tc('Instances.AdmCreatedAt').':</span> '.nully($row['AdmCreatedAt'],true,'timestamp').'</div>'.N;
$out.='<div class="baloo"><span class="field">'.tc('Instances.AdmURL').':</span> '.nully($row['AdmURL'],true,'url').'</div>'.N;
$out.='<div class="baloo"><span class="field">'.tc('Instances.AdmAvatar').':</span> '.nully($row['AdmAvatar'],false,'image').'</div>'.N;
$out.='<div><span class="field">'.tc('Instances.AdmNote').':</span> '.nully($row['AdmNote'],false,'strip').'</div>'.N;
$out.='</td></tr>'.N;
$out.='</tbody>'.N;
$out.='</table>'.N;
return($out);
}
?>