// lognormale("query: ".$sql);
if ($database->sqlNumRighe($result) != 0) {
$listaOggetti=$database->sqlArrayAss($result);
} else {
$listaOggetti = array();
}
// lognascosto("lista oggetti: ".$listaOggetti,$listaOggetti);
$arrayReturn = array();
if ($associazioni) {
foreach ((array)$listaOggetti as $id) {
$arrayReturn[] = $this->caricaDocumento($id['id'], '',1);
}
$listaOggetti = $arrayReturn;
} else {
// verifico presenza crittografia solo se non sono passato per caricadocumento singolo, come nel caso delle associazioni
if ($this->cryptobj) {
//lognormale('pre',$listaOggetti);
// devo ciclare il dato crittografato su utti i campi che lo prevedono
$numC = 0;
foreach((array)$listaOggetti as $istanzaOggetto) {
foreach($this->cryptCampi as $campoCrypt) {
$listaOggetti[$numC][$campoCrypt] = decryptIt($listaOggetti[$numC][$campoCrypt]);
}
$numC++;
}
//lognormale('post',$listaOggetti);
}
}
// lognascosto("lista oggetti: ".$listaOggetti,$listaOggetti);
//var_dump($listaOggetti);
return $listaOggetti;
}
function listaCategorie($campoCondizione, $valoreCondizione = '', $condizioneAgg = '') {
global $dati_db,$database;
$limiteStr = '';
$datiDaCaricare = "*";
// elaboro condizione normale (di solito per ente in navigazione)
$condizione= "";
if ($campoCondizione != '' AND $valoreCondizione != '' ) {
$condizione= " WHERE hide_read != 1 AND id != 0 AND (id_oggetto=".$this->id." OR id_oggetto=0) AND (".$campoCondizione."=".$valoreCondizione." OR ".$campoCondizione."=0) ";
}
// verifico presenza condizione aggiuntiva
if ($condizioneAgg != '') {
if ($condizione != '') {
$condizione .= ' AND '.$condizioneAgg;
} else {
$condizione= " WHERE (hide_read != 1) AND (id_oggetto=".$this->id." OR id_oggetto=0) AND ".$condizioneAgg;
}
}
$sql = "SELECT ".$datiDaCaricare." FROM ".$dati_db['prefisso']."oggetti_categorie ".$condizione.$limiteStr." ORDER BY priorita";
if( !($result = $database->connessioneConReturn($sql)) ) {
//echo "Problemi temporanei nella lista documenti. Si prega di provare in seguito($sql).";
}
//echo "query: ".$sql;
if ($database->sqlNumRighe($result) != 0) {
$listaCategorie=$database->sqlArrayAss($result);
} else {
$listaCategorie = array();
}
//lognormale('cat',$listaCategorie);
return $listaCategorie;
}
function datiPaginazione($campoCondizione='', $valoreCondizione = '', $condizioneAgg = '') {
global $dati_db,$database,$pagina;
//echo("pagc: ".$pagina);
// elaboro condizione normale (di solito per ente in navigazione)
$queryWF = '';
if ($this->idOggetto > 0) {
$queryWF = ' AND stato=1 ';
}
$condizione= "";
if ($campoCondizione != '' AND $valoreCondizione != '' ) {
$condizione= " WHERE (hide_read != 1 ".$queryWF.") AND (".$campoCondizione."=".$valoreCondizione." OR ".$campoCondizione."=0) ";
}
// verifico presenza condizione aggiuntiva
if ($condizioneAgg != '') {
if ($condizione != '') {
$condizione .= ' AND ('.$condizioneAgg.")";
} else {
$condizione= " WHERE (hide_read != 1 ".$queryWF.") AND (".$condizioneAgg.")";
}
}
$sql = "SELECT count(id) as totale FROM ".$dati_db['prefisso'].$this->datiOggetto['tabella']." ".$condizione;
if( !($result = $database->connessioneConReturn($sql)) ) {
die("non riesco a prendere le informazioni elementi in db");
}
//lognascosto($sql);
//lognormale($sql);
$conto=$database->sqlArray($result);
// ora verifico il tipo di paginazione standard per gli elenchi
$numPagine = ceil($conto['totale']/$this->datiOggetto['num_elenco']);
// elaboro inizio in rapporto la pagina
$inizio = ($this->datiOggetto['num_elenco']*$pagina)-$this->datiOggetto['num_elenco'];
if (isset($_POST['strcerca'])) {
$inizio = 0;
$pagina = 1;
}
$res = array(
'numRecord' => $this->datiOggetto['num_elenco'],
'inizio' => $inizio,
'numPagine' => $numPagine,
'pagina' => $pagina,
'totale' => $conto['totale']
);
//lognormale('res', $res);
return $res;
}
function stringaRicerca() {
if (isset($_POST['strcerca'])) {
$stringa = strip_tags($_POST['strcerca']);
$stringa = htmlentities_54($stringa);
} else if (isset($_GET['strcerca'])) {
$stringa = strip_tags($_GET['strcerca']);
$stringa = htmlentities_54($stringa);
}
// inzializzo il tipo di ricerca
if (isset($_POST['esattamente'])) {
$esattamente = forzaNumero($_POST['esattamente']);
} else {
if (isset($_GET['esattamente'])) {
$esattamente = forzaNumero($_GET['esattamente']);
} else {
$esattamente = 0;
}
}
// a seconda del tipo di ricerca, creo l'array dei termini da ricercare
$arrayCerca = array();
if (!$esattamente) {
$arrayCerca = explode (" ", $stringa);
// pulisco l'array di ricerca dalle stringhe troppo piccole
$nuovoCerca = array();
foreach($arrayCerca as $parola) {
if (strlen($parola)>2) {
$nuovoCerca[] = html_entity_decode($parola);
$nuovoCerca[] = $parola;
}
}
$arrayCerca = $nuovoCerca;
} else {
$arrayCerca[] = html_entity_decode($stringa);
$arrayCerca[] = $stringa;
}
// $arrayCerca2 = $arrayCerca;
// array_walk_recursive($arrayCerca2, function (&$value, $key) {
// if (is_string($value)) {
// $value = html_entity_decode(iconv('windows-1252', 'utf-8', $value));
// }
// });
// $arrayCerca = array_merge(array_values($arrayCerca), array_values($arrayCerca2));
//lognormale('',$arrayCerca);
// elimino tutti i risultati per stringa vuota
if (isset($stringa) and $stringa != '' and strlen($stringa) > 2 and count($arrayCerca) > 0 AND $stringa) {
$condizione = '';
foreach((array)$this->struttura as $c) {
if($c['search']) {
if ($condizione != '') {
$condizione .= ' OR ';
}
//$condizione .= " ( ";
//ricerca su ogni parola inserita
$k=0;
foreach((array)$arrayCerca as $qr) {
$condizione .= "
(".$c['nomedb']." = '".$qr."' OR ".
$c['nomedb']." LIKE '".$qr."%' OR ".
//$c['nomedb']." LIKE '% ".$qr."%' OR ". //lorenzo 17/11/2020
$c['nomedb']." LIKE '%".$qr."%' OR ". //lorenzo 17/11/2020
$c['nomedb']." LIKE '%\'".$qr."%' OR ".
$c['nomedb']." LIKE '%>".$qr."%') ";
if (($k+1) != count($arrayCerca)) {
// devo continuare il ciclo quindi inserisco la condizione
// MODIFICA 15/01/24: Sostituito AND con OR per il corretto funzionamento della condizione mysql
// $condizione .= " AND ";
$condizione .= " OR ";
}
$k++;
}
//$condizione .= " ) ";
}
}
if(trim($condizione)=='') {
//nessun campo sul quale cercare
$condizione = ' 1=0 ';
} else if($condizione != '') {
//$condizione = ' ('.$condizione.') ';
}
//$condizione = ' stato=1 AND ('.$condizione.') ';
return $condizione;
}
return false;
}
////////////////////// FUNZIONE DI RITORNO UNICO VALORE DAL DATABASE////////////////////////////////////////
function caricaDocumento($id, $condizioneAggiuntiva = '',$associazioni=0) {
global $dati_db,$database,$idModelloEditoriale,$entePubblicato;
if (isset($id) and $id and is_numeric($id) AND $id != '') {
if($condizioneAggiuntiva != '') {
$condizioneAggiuntiva = ' AND ('.$condizioneAggiuntiva.') ';
}
$sql = "SELECT * FROM ".$dati_db['prefisso'].$this->datiOggetto['tabella']." WHERE id=".$id.$condizioneAggiuntiva;
if( !($result = $database->connessioneConReturn($sql)) ) {
die("Errore critico in caricamento elemento (documento)");
}
$elemento = $database->sqlArray($result);
$elemento['utilizzo'] = array();
if ($this->utilizzo) {
// ciclo i possibili utilizzi
foreach ($this->utilizzi as $utilizzo) {
/*
echo "
Carico le relazioni";
print_r($utilizzo);
echo "
";
*/
// carico le relazioni nella tabella utilizzo per la chiave scelta
$sql = "SELECT * FROM ".$dati_db['prefisso'].$utilizzo['utilizzoTabella']." WHERE ".$utilizzo['utilizzoChiave']."=".$id." ORDER by id";
if( !($result = $database->connessioneConReturn($sql)) ) {
die("Errore critico in caricamento tabella utilizzo (documento)");
}
$elemento['utilizzo_'.$utilizzo['utilizzoValore']] = $database->sqlArrayAss($result);
}
}
// ora carico le normali correlazioni
if ($this->id >0 AND $associazioni) {
// CAMPI ASSOCIAZIONI PROPRIETARI
foreach ($this->struttura as $campoTemp) {
if ($campoTemp['tipo']=='area_tematica' AND $elemento[$campoTemp['nomedb']] != '') {
//lognascosto('',$campoTemp);
// EFFETTUO QUERY STATICA SU TAGS
$sql = "SELECT t.* FROM ".$dati_db['prefisso']."areetematiche_tags t WHERE t.id IN (".$elemento[$campoTemp['nomedb']].") AND (t.id_ente = ".$elemento['id_ente']." OR t.id_ente=0) ORDER by nome";
if( !($result = $database->connessioneConReturn($sql)) ) {
//die("errore in caricamento tabella tags".$sql);
}
$elemento[$campoTemp['nomedb']."_array"] = $database->sqlArrayAss($result);
} else if ($campoTemp['tipo']=='oggetto') {
$oggObj = new documento($campoTemp['selezione_oggetto']);
$valoriObj = explode(',',$elemento[$campoTemp['nomedb']]);
$elemento[$campoTemp['nomedb']."_array"] = array();
foreach ($valoriObj as $idObj) {
if ($idObj) {
// lettura completa area tematica
$istanzaObj = $oggObj->caricaDocumento($idObj,'',0);
if ($istanzaObj['hide_read'] != 1 AND ($entePubblicato['id']==$istanzaObj['id_ente'] OR !$istanzaObj['id_ente'])) {
$elemento[$campoTemp['nomedb']."_array"][] = $istanzaObj;
} else {
unset($istanzaObj);
}
}
}
unset($oggObj);
}
}
// CAMPI ASSOCIAZIONI INVERSE
foreach ((array)$this->strutturaInversa as $campoTemp) {
if ($campoTemp['tipo']=='oggetto') {
$oggObj = new documento($campoTemp['id_oggetto']);
$condObj = "hide_read != 1 AND (".$campoTemp['nomedb']."='".$id."' OR ".$campoTemp['nomedb']." LIKE '%,".$id.",%' OR ".$campoTemp['nomedb']." LIKE '".$id.",%' OR ".$campoTemp['nomedb']." LIKE '%,".$id."')";
//gestione ordinamento slot eagenda -- lorenzo 20/07/2022
$campoOrdine = ($campoTemp['id_oggetto'] == 81) ? 'orario_inizio' : 'nessuno';
// -------------------------------------------------------
$listaObj = $oggObj->listaDocumenti(0, 'tutti', $campoOrdine, '', 'id_ente' ,$entePubblicato['id'], $condObj );
$elemento[$oggObj->datiOggetto['nomedb']."_".$campoTemp['nomedb']] = $listaObj;
unset($oggObj);
}
}
}
// ora carico le correlazioni solop per tags
if ($this->id ==-28 AND $associazioni) {
// EFFETTUO QUERY STATICA SU CAMPI TAGS IN OGGETTO ISWEB
$sql = "SELECT * FROM ".$dati_db['prefisso']."oggetti_struttura WHERE tipo = 'area_tematica'";
if( !($result = $database->connessioneConReturn($sql)) ) {
die("errore in caricamento tabella struttura oggetto");
}
$campiTags = $database->sqlArrayAss($result);
foreach ((array)$campiTags as $campoTemp) {
$oggObj = new documento($campoTemp['id_oggetto']);
$condObj = $campoTemp['nomedb']."='".$id."' OR ".$campoTemp['nomedb']." LIKE '%,".$id.",%' OR ".$campoTemp['nomedb']." LIKE '".$id.",%' OR ".$campoTemp['nomedb']." LIKE '%,".$id."'";
$listaObj = $oggObj->listaDocumenti(0, 'tutti', 'nessuno', '', 'id_ente' ,$entePubblicato['id'], $condObj );
$elemento[$oggObj->datiOggetto['nomedb']."_".$campoTemp['nomedb']] = $listaObj;
unset($oggObj);
}
}
// verifico presenza crittografia
if ($this->cryptobj) {
// devo ciclare il dato crittografato su utti i campi che lo prevedono
foreach($this->cryptCampi as $campoCrypt) {
$elemento[$campoCrypt] = decryptIt($elemento[$campoCrypt]);
}
}
return $elemento;
}
return false;
}
function caricaCorrelazioni($stringaTag, $limite, $idOggetto=0,$condizione='',$associazioni=0) {
global $dati_db,$database,$entePubblicato;
$elemento = array();
if (isset($stringaTag) AND $stringaTag != '') {
// EFFETTUO QUERY STATICA SU CAMPI TAGS IN OGGETTO ISWEB
$sql = "SELECT * FROM ".$dati_db['prefisso']."oggetti_struttura WHERE tipo = 'area_tematica'";
//echo($sql);
if( !($result = $database->connessioneConReturn($sql)) ) {
die("errore in caricamento tabella struttura oggetto");
}
$campiTags = $database->sqlArrayAss($result);
$arrayTag = explode(',',$stringaTag);
foreach ((array)$campiTags as $campoTemp) {
if ( ($this->id != $campoTemp['id_oggetto'] AND !$idOggetto) OR $idOggetto==$campoTemp['id_oggetto'] ) {
$oggObj = new documento($campoTemp['id_oggetto']);
$elemento[$oggObj->datiOggetto['nomedb']] = array();
$chiaveArray = $oggObj->datiOggetto['nomedb'];
// elaboro condizione per valori dei tag
$condObj='(';
foreach ($arrayTag as $tag) {
if ($condObj !='(') {
$condObj .= " OR ";
}
$condObj .= "(".$campoTemp['nomedb']."='".$tag."' OR ".$campoTemp['nomedb']." LIKE '%,".$tag.",%' OR ".$campoTemp['nomedb']." LIKE '".$tag.",%' OR ".$campoTemp['nomedb']." LIKE '%,".$tag."')";
}
$condObj.=')';
if ($condizione!='') {
$condObj.=' AND ('.$condizione.')';
}
$listaObj = $oggObj->listaDocumenti(0, $limite, $oggObj->datiOggetto['ordine_campo'], $oggObj->datiOggetto['ordine_senso'], 'id_ente' ,$entePubblicato['id'], $condObj, $associazioni );
$elemento[$oggObj->datiOggetto['nomedb']] = $listaObj;
unset($oggObj);
}
}
if ($idOggetto) {
return $elemento[$chiaveArray];
} else {
return $elemento;
}
}
return false;
}
}
?>