diff --git a/web/admin/instances.php b/web/admin/instances.php index 1529bda..cfe3b0a 100644 --- a/web/admin/instances.php +++ b/web/admin/instances.php @@ -88,64 +88,77 @@ function booly($pre,$val,$nottoobad=false,$invcol=false) { $dbg.='
'.print_r($_POST,1).''; +function aske($key,&$arr) { + $count=count($arr); + $found=false; + $i=0; + while (!$found && $i<$count) { + if (array_key_exists($key,$arr[$i])) + $found=true; + else + $i++; + } + return($found); +} + $cols=array( - 'New'=>array('name'=>'Nuova','type'=>'bool'), - 'Good'=>array('name'=>'Papabile','type'=>'bool'), - 'Chosen'=>array('name'=>'Scelta','type'=>'bool'), - 'Visible'=>array('name'=>'Visibile','type'=>'bool'), - 'Blacklisted'=>array('name'=>'Blacklistata','type'=>'bool'), - 'URI'=>array('name'=>'URI','type'=>'text'), - 'Title'=>array('name'=>'Titolo','type'=>'text'), - 'ShortDesc'=>array('name'=>'Descrizione breve','type'=>'text'), - 'LongDesc'=>array('name'=>'Descrizione lunga','type'=>'text'), - 'OurDesc'=>array('name'=>'Descrizione nostra','type'=>'text'), + 'Instances.New'=>array('field'=>'Instances.New','name'=>'Nuova','type'=>'bool'), + 'Instances.Good'=>array('field'=>'Instances.Good','name'=>'Papabile','type'=>'bool'), + 'Instances.Chosen'=>array('field'=>'Instances.Chosen','name'=>'Scelta','type'=>'bool'), + 'Instances.Visible'=>array('field'=>'Instances.Visible','name'=>'Visibile','type'=>'bool'), + 'Instances.Blacklisted'=>array('field'=>'Instances.Blacklisted','name'=>'Blacklistata','type'=>'bool'), + 'Instances.URI'=>array('field'=>'Instances.URI','name'=>'URI','type'=>'text'), + 'Instances.Title'=>array('field'=>'Instances.Title','name'=>'Titolo','type'=>'text'), + 'Instances.ShortDesc'=>array('field'=>'Instances.ShortDesc','name'=>'Descrizione breve','type'=>'text'), + 'Instances.LongDesc'=>array('field'=>'Instances.LongDesc','name'=>'Descrizione lunga','type'=>'text'), + 'Instances.OurDesc'=>array('field'=>'Instances.OurDesc','name'=>'Descrizione nostra','type'=>'text'), - 'PlaceID'=>array('name'=>'Località ⮞','type'=>'join','join'=>array(),'ord'=>false), - 'Places.Locality'=>array('name'=>'Località','type'=>'joini','join'=>array('Places ON Places.ID=Instances.PlaceID'),'subtype'=>'text'), + 'Instances.PlaceID'=>array('field'=>'Instances.PlaceID','name'=>'Località ⮞','type'=>'join','join'=>array(),'ord'=>false), + 'Places.Locality'=>array('field'=>'Places.Locality','name'=>'Località','type'=>'joini','join'=>array('Places ON Places.ID=Instances.PlaceID'),'subtype'=>'text'), - 'Email'=>array('name'=>'Email di contatto','type'=>'text'), - 'Software'=>array('name'=>'Software','type'=>'text'), - 'Version'=>array('name'=>'Versione','type'=>'text'), - 'UserCount'=>array('name'=>'Utenti','type'=>'int'), - 'StatusCount'=>array('name'=>'Stati','type'=>'int'), - 'DomainCount'=>array('name'=>'Istanze note','type'=>'int'), - 'ActiveUsersMonth'=>array('name'=>'Utenti attivi (mese)','type'=>'int'), - 'ActiveUsersHalfYear'=>array('name'=>'Utenti attivi (6 mesi)','type'=>'int'), - 'Thumb'=>array('name'=>'Logo','type'=>'text','search'=>false,'ord'=>false), - 'RegOpen'=>array('name'=>'Registrazioni aperte','type'=>'bool'), - 'RegReqApproval'=>array('name'=>'Approvazione registrazioni','type'=>'bool'), - 'MaxTootChars'=>array('name'=>'Limite caratteri','type'=>'int'), - 'AdmAccount'=>array('name'=>'Account admin','type'=>'text'), - 'AdmDisplayName'=>array('name'=>'Nome account admin','type'=>'text'), - 'AdmCreatedAt'=>array('name'=>'Data creazione account admin','type'=>'time'), - 'AdmURL'=>array('name'=>'Pagina dell’admin','type'=>'text','ord'=>false), - 'AdmAvatar'=>array('name'=>'Avatar admin','type'=>'text','search'=>false,'ord'=>false), - 'AdmNote'=>array('name'=>'Note dell’admin','type'=>'text'), + 'Instances.Email'=>array('field'=>'Instances.Email','name'=>'Email di contatto','type'=>'text'), + 'Instances.Software'=>array('field'=>'Instances.Software','name'=>'Software','type'=>'text'), + 'Instances.Version'=>array('field'=>'Instances.Version','name'=>'Versione','type'=>'text'), + 'Instances.UserCount'=>array('field'=>'Instances.UserCount','name'=>'Utenti','type'=>'int'), + 'Instances.StatusCount'=>array('field'=>'Instances.StatusCount','name'=>'Stati','type'=>'int'), + 'Instances.DomainCount'=>array('field'=>'Instances.DomainCount','name'=>'Istanze note','type'=>'int'), + 'Instances.ActiveUsersMonth'=>array('field'=>'Instances.ActiveUsersMonth','name'=>'Utenti attivi (mese)','type'=>'int'), + 'Instances.ActiveUsersHalfYear'=>array('field'=>'Instances.ActiveUsersHalfYear','name'=>'Utenti attivi (6 mesi)','type'=>'int'), + 'Instances.Thumb'=>array('field'=>'Instances.Thumb','name'=>'Logo','type'=>'text','search'=>false,'ord'=>false), + 'Instances.RegOpen'=>array('field'=>'Instances.RegOpen','name'=>'Registrazioni aperte','type'=>'bool'), + 'Instances.RegReqApproval'=>array('field'=>'Instances.RegReqApproval','name'=>'Approvazione registrazioni','type'=>'bool'), + 'Instances.MaxTootChars'=>array('field'=>'Instances.MaxTootChars','name'=>'Limite caratteri','type'=>'int'), + 'Instances.AdmAccount'=>array('field'=>'Instances.AdmAccount','name'=>'Account admin','type'=>'text'), + 'Instances.AdmDisplayName'=>array('field'=>'Instances.AdmDisplayName','name'=>'Nome account admin','type'=>'text'), + 'Instances.AdmCreatedAt'=>array('field'=>'Instances.AdmCreatedAt','name'=>'Data creazione account admin','type'=>'time'), + 'Instances.AdmURL'=>array('field'=>'Instances.AdmURL','name'=>'Pagina dell’admin','type'=>'text','search'=>false,'ord'=>false), + 'Instances.AdmAvatar'=>array('field'=>'Instances.AdmAvatar','name'=>'Avatar admin','type'=>'text','search'=>false,'ord'=>false), + 'Instances.AdmNote'=>array('field'=>'Instances.AdmNote','name'=>'Note dell’admin','type'=>'text'), - 'LangID'=>array('name'=>'Lingue dichiarate ⮞','type'=>'join','join'=>array('InstLangs ON InstLangs.InstID=Instances.ID'),'ord'=>false), - 'Languages.Code'=>array('name'=>'Lingue dichiarate','type'=>'joini','join'=>array('InstLangs ON InstLangs.InstID=Instances.ID','Languages ON Languages.ID=InstLangs.LangID'),'subtype'=>'text','ord'=>false), - 'InstLangs.LangID'=>array('name'=>'Lingua primaria dichiarata ⮞','type'=>'join','join'=>array('InstLangs ON InstLangs.InstID=Instances.ID'),'wheremore'=>'AND InstLangs.Pos=1','ord'=>false), - 'Languages.NameIT'=>array('name'=>'Lingua primaria dichiarata','type'=>'joini','join'=>array('InstLangs ON InstLangs.InstID=Instances.ID','Languages ON Languages.ID=InstLangs.LangID'),'subtype'=>'text','wheremore'=>'AND InstLangs.Pos=1'), + 'InstLangs.LangID'=>array('field'=>'InstLangs.LangID','name'=>'Lingue dichiarate ⮞','type'=>'join','join'=>array('InstLangs ON InstLangs.InstID=Instances.ID'),'ord'=>false), + 'Languages.NameIT'=>array('field'=>'Languages.NameIT','name'=>'Lingue dichiarate','type'=>'joini','join'=>array('InstLangs ON InstLangs.InstID=Instances.ID','Languages ON Languages.ID=InstLangs.LangID'),'subtype'=>'text','ord'=>false), + 'InstLangs.LangID.First'=>array('field'=>'InstLangs.LangID','name'=>'Lingua primaria dichiarata ⮞','type'=>'join','join'=>array('InstLangs ON InstLangs.InstID=Instances.ID'),'wheremore'=>'AND InstLangs.Pos=1','ord'=>false), + 'Languages.NameIT.First'=>array('field'=>'Languages.NameIT','name'=>'Lingua primaria dichiarata','type'=>'joini','join'=>array('InstLangs ON InstLangs.InstID=Instances.ID','Languages ON Languages.ID=InstLangs.LangID'),'subtype'=>'text','wheremore'=>'AND InstLangs.Pos=1'), - 'OurLangID'=>array('name'=>'Lingue impostate da noi ⮞','type'=>'join','join'=>array('InstOurLangs ON InstOurLangs.InstID=Instances.ID'),'ord'=>false), - 'OurLanguages.Code'=>array('name'=>'Lingue impostate da noi','type'=>'joini','join'=>array('InstOurLangs ON InstOurLangs.InstID=Instances.ID','Languages AS OurLanguages ON OurLanguages.ID=InstOurLangs.OurLangID'),'subtype'=>'text','ord'=>false), - 'InstOurLangs.OurLangID'=>array('name'=>'Lingua primaria impostata da noi ⮞','type'=>'join','join'=>array('InstOurLangs ON InstOurLangs.InstID=Instances.ID'),'wheremore'=>'AND InstOurLangs.Pos=1','ord'=>false), - 'OurLanguages.NameIT'=>array('name'=>'Lingua primaria impostata da noi','type'=>'joini','join'=>array('InstOurLangs ON InstOurLangs.InstID=Instances.ID','Languages AS OurLanguages ON OurLanguages.ID=InstOurLangs.OurLangID'),'subtype'=>'text','wheremore'=>'AND InstOurLangs.Pos=1'), + 'InstOurLangs.OurLangID'=>array('field'=>'InstOurLangs.OurLangID','name'=>'Lingue impostate da noi ⮞','type'=>'join','join'=>array('InstOurLangs ON InstOurLangs.InstID=Instances.ID'),'ord'=>false), + 'OurLanguages.NameIT'=>array('field'=>'OurLanguages.NameIT','name'=>'Lingue impostate da noi','type'=>'joini','join'=>array('InstOurLangs ON InstOurLangs.InstID=Instances.ID','Languages AS OurLanguages ON OurLanguages.ID=InstOurLangs.OurLangID'),'subtype'=>'text','ord'=>false), + 'InstOurLangs.OurLangID.First'=>array('field'=>'InstOurLangs.OurLangID','name'=>'Lingua primaria impostata da noi ⮞','type'=>'join','join'=>array('InstOurLangs ON InstOurLangs.InstID=Instances.ID'),'wheremore'=>'AND InstOurLangs.Pos=1','ord'=>false), + 'OurLanguages.NameIT.First'=>array('field'=>'OurLanguages.NameIT','name'=>'Lingua primaria impostata da noi','type'=>'joini','join'=>array('InstOurLangs ON InstOurLangs.InstID=Instances.ID','Languages AS OurLanguages ON OurLanguages.ID=InstOurLangs.OurLangID'),'subtype'=>'text','wheremore'=>'AND InstOurLangs.Pos=1'), - 'FinID'=>array('name'=>'Modalità di finanziamento ⮞','type'=>'join','join'=>array('InstFinancing ON InstFinancing.InstID=Instances.ID'),'ord'=>false), - 'Financing.Type'=>array('name'=>'Modalità di finanziamento','type'=>'joini','join'=>array('InstFinancing ON InstFinancing.InstID=Instances.ID','Financing ON Financing.ID=InstFinancing.FinID'),'subtype'=>'text'), - 'InstFinancing.FinID'=>array('name'=>'Modalità di finanziamento primaria ⮞','type'=>'join','join'=>array('InstFinancing ON InstFinancing.InstID=Instances.ID'),'wheremore'=>'AND InstFinancing.Pos=1','ord'=>false), - 'XFinancing.Type'=>array('name'=>'Modalità di finanziamento primaria','type'=>'joini','join'=>array('InstFinancing ON InstFinancing.InstID=Instances.ID','Financing AS XFinancing ON XFinancing.ID=InstFinancing.FinID'),'subtype'=>'text','wheremore'=>'AND InstFinancing.Pos=1'), + 'InstFinancing.FinID'=>array('field'=>'InstFinancing.FinID','name'=>'Modalità di finanziamento ⮞','type'=>'join','join'=>array('InstFinancing ON InstFinancing.InstID=Instances.ID'),'ord'=>false), + 'Financing.Type'=>array('field'=>'Financing.Type','name'=>'Modalità di finanziamento','type'=>'joini','join'=>array('InstFinancing ON InstFinancing.InstID=Instances.ID','Financing ON Financing.ID=InstFinancing.FinID'),'subtype'=>'text'), + 'InstFinancing.FinID.First'=>array('field'=>'InstFinancing.FinID','name'=>'Modalità di finanziamento primaria ⮞','type'=>'join','join'=>array('InstFinancing ON InstFinancing.InstID=Instances.ID'),'wheremore'=>'AND InstFinancing.Pos=1','ord'=>false), + 'Financing.Type.First'=>array('field'=>'Financing.Type','name'=>'Modalità di finanziamento primaria','type'=>'joini','join'=>array('InstFinancing ON InstFinancing.InstID=Instances.ID','Financing ON Financing.ID=InstFinancing.FinID'),'subtype'=>'text','wheremore'=>'AND InstFinancing.Pos=1'), - 'PolID'=>array('name'=>'Restrizioni sui contenuti ⮞','type'=>'join','join'=>array('InstPolicies ON InstPolicies.InstID=Instances.ID'),'ord'=>false), - 'Policies.Name'=>array('name'=>'Restrizioni sui contenuti','type'=>'joini','join'=>array('InstPolicies ON InstPolicies.InstID=Instances.ID','Policies ON Policies.ID=InstPolicies.PolID'),'subtype'=>'text'), - 'InstPolicies.PolID'=>array('name'=>'Restrizione sui contenuti primaria ⮞','type'=>'join','join'=>array('InstPolicies ON InstPolicies.InstID=Instances.ID'),'wheremore'=>'AND InstPolicies.Pos=1','ord'=>false), - 'XPolicies.Name'=>array('name'=>'Restrizione sui contenuti primaria','type'=>'joini','join'=>array('InstPolicies ON InstPolicies.InstID=Instances.ID','Policies AS XPolicies ON XPolicies.ID=InstPolicies.PolID'),'subtype'=>'text','wheremore'=>'AND InstPolicies.Pos=1'), + 'InstPolicies.PolID'=>array('field'=>'InstPolicies.PolID','name'=>'Restrizioni sui contenuti ⮞','type'=>'join','join'=>array('InstPolicies ON InstPolicies.InstID=Instances.ID'),'ord'=>false), + 'Policies.Name'=>array('field'=>'Policies.Name','name'=>'Restrizioni sui contenuti','type'=>'joini','join'=>array('InstPolicies ON InstPolicies.InstID=Instances.ID','Policies ON Policies.ID=InstPolicies.PolID'),'subtype'=>'text'), + 'InstPolicies.PolID.First'=>array('field'=>'InstPolicies.PolID','name'=>'Restrizione sui contenuti primaria ⮞','type'=>'join','join'=>array('InstPolicies ON InstPolicies.InstID=Instances.ID'),'wheremore'=>'AND InstPolicies.Pos=1','ord'=>false), + 'Policies.Name.First'=>array('field'=>'Policies.Name','name'=>'Restrizione sui contenuti primaria','type'=>'joini','join'=>array('InstPolicies ON InstPolicies.InstID=Instances.ID','Policies ON Policies.ID=InstPolicies.PolID'),'subtype'=>'text','wheremore'=>'AND InstPolicies.Pos=1'), - 'TagID'=>array('name'=>'Tags ⮞','type'=>'join','join'=>array('InstTags ON InstTags.InstID=Instances.ID'),'ord'=>false), - 'Tags.Name'=>array('name'=>'Tags','type'=>'joini','join'=>array('InstTags ON InstTags.InstID=Instances.ID','Tags ON Tags.ID=InstTags.TagID'),'subtype'=>'text'), - 'InstTags.TagID'=>array('name'=>'Tag primaria ⮞','type'=>'join','join'=>array('InstTags ON InstTags.InstID=Instances.ID'),'wheremore'=>'AND InstTags.Pos=1','ord'=>false), - 'XTags.Name'=>array('name'=>'Tag primaria','type'=>'joini','join'=>array('InstTags ON InstTags.InstID=Instances.ID','Tags AS XTags ON XTags.ID=InstTags.TagID'),'subtype'=>'text','wheremore'=>'AND InstTags.Pos=1'), + 'InstTags.TagID'=>array('field'=>'InstTags.TagID','name'=>'Tags ⮞','type'=>'join','join'=>array('InstTags ON InstTags.InstID=Instances.ID'),'ord'=>false), + 'Tags.Name'=>array('field'=>'Tags.Name','name'=>'Tags','type'=>'joini','join'=>array('InstTags ON InstTags.InstID=Instances.ID','Tags ON Tags.ID=InstTags.TagID'),'subtype'=>'text'), + 'InstTags.TagID.First'=>array('field'=>'InstTags.TagID','name'=>'Tag primaria ⮞','type'=>'join','join'=>array('InstTags ON InstTags.InstID=Instances.ID'),'wheremore'=>'AND InstTags.Pos=1','ord'=>false), + 'Tags.Name.First'=>array('field'=>'Tags.Name','name'=>'Tag primaria','type'=>'joini','join'=>array('InstTags ON InstTags.InstID=Instances.ID','Tags ON Tags.ID=InstTags.TagID'),'subtype'=>'text','wheremore'=>'AND InstTags.Pos=1'), /*'Statuses'=>array('name'=>'Stati ultima settimana','type'=>'joini','join'=>array('InstActivity ON InstActivity.InstID=Instances.ID'),'subtype'=>'int','selmore'=>'MAX(Week) AS maxweek'), 'Logins'=>array('name'=>'Logins ultima settimana','type'=>'joini','join'=>array('InstActivity ON InstActivity.InstID=Instances.ID'),'subtype'=>'int','selmore'=>'MAX(Week) AS maxweek'), @@ -156,76 +169,79 @@ $types=array('bool','int','time','text','join','joini'); $fieldselopts=''; $ordfieldselopts=''; -foreach ($cols as $key=>$val) { - if (!array_key_exists('search',$val)) { - if ($val['type']=='joini') { - $fieldselopts.=''; +foreach ($cols as $key=>$arr) { + if (!array_key_exists('search',$arr) || $arr['search']==true) { + if ($arr['type']=='joini') { + $fieldselopts.=''; } else { - $fieldselopts.=''; + $fieldselopts.=''; } } - if (!array_key_exists('ord',$val)) { - if ($val['type']=='joini') { - $ordfieldselopts.=''; + if (!array_key_exists('ord',$arr) || $arr['ord']==true) { + if ($arr['type']=='joini') { + $ordfieldselopts.=''; } else { - $ordfieldselopts.=''; + $ordfieldselopts.=''; } } } +$pblocks=0; +foreach ($_POST as $key=>$val) + if (preg_match('/^openpar-\d+$/',$key)===1) + $pblocks++; $i=0; $jsaddrows=''; $jssetrows=''; -$cp=count($_POST)/6; // /6 perché ogni "blocco" contiene 6 righe $sels=array(); $joins=array(); $where=''; foreach ($_POST as $key=>$val) { - if (preg_match('/^openpar-\d+/',$key)===1) { + if (preg_match('/^openpar-\d+$/',$key)===1) { $i++; if (preg_match('/^\(+$/',$val)===1) $where.=$val; $jsaddrows.='addrow('.$i.',false);'.N; $jssetrows.='setrow('.$i.','.json_encode($val); } - if (preg_match('/^fieldsel-\d+/',$key)===1 && preg_match('/^(.+):(.+):(.+)$/',$val,$buf)===1) { + if (preg_match('/^fieldsel-\d+$/',$key)===1 && preg_match('/^(.+):(.+):(.+)$/',$val,$buf)===1) { $col=$buf[1]; $type=$buf[2]; $subtype=$buf[3]; if (array_key_exists($col,$cols) && in_array($type,$types)) { if (array_key_exists('wheremore',$cols[$col])) $where.='('; - $where.=$col; + $where.=$cols[$col]['field']; if ($type=='join' || $type=='joini') { foreach ($cols[$col]['join'] as $join) { if (!in_array($join,$joins)) $joins[]=$join; } - if (array_key_exists('selmore',$cols[$col]) && !in_array($cols[$col]['selmore'],$sels)) - $sels[]=$cols[$col]['selmore']; +/* if (array_key_exists('selmore',$cols[$col]) && !in_array($cols[$col]['selmore'],$sels)) + $sels[]=$cols[$col]['selmore'];*/ } $jssetrows.=','.json_encode($val); } else { - muoribene($dbg.'