Non puoi selezionare più di 25 argomenti
Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
216 righe
9.4 KiB
216 righe
9.4 KiB
<? |
|
class cpvManager { |
|
|
|
public static function printFormTree($cpv_code,$selezionate=array(),$inputName="",$idRoot="",$lingua="") { |
|
global $pdo; |
|
if (!empty($cpv_code)) { |
|
if (empty($lingua)) { $lingua = $_SESSION["language"]; } |
|
$bind = array(); |
|
$bind[":length"]=($cpv_code!=="%") ? strlen($cpv_code) + 1 : 2; |
|
$bind[":codice"]=($cpv_code!=="%") ? $cpv_code."%" : $cpv_code; |
|
|
|
$sql = "SELECT codice, codice_completo, " . $lingua . " AS descrizione FROM b_cpv WHERE LENGTH(codice) = :length AND codice LIKE :codice ORDER BY codice "; |
|
$ris_cpv = $pdo->go($sql,$bind); |
|
if ($ris_cpv->rowCount() > 0) { |
|
while($cpv_code = $ris_cpv->fetch(PDO::FETCH_ASSOC)) { |
|
$show = true; |
|
if (in_array($cpv_code["codice"], $selezionate)) { $show = false; } |
|
$data = ""; |
|
$data .= "cpv_code=" . $cpv_code["codice"]; |
|
$data .= "&inputName=" . base64_encode($inputName); |
|
$data .= "&idRoot=" . base64_encode($idRoot); |
|
$data .= "&lingua=" . base64_encode($lingua); |
|
|
|
$expand = false; |
|
|
|
$bind = array(); |
|
$bind[":length"]= strlen($cpv_code["codice"]) + 1; |
|
$bind[":codice"]= $cpv_code["codice"]."%"; |
|
|
|
$sql = "SELECT codice, codice_completo, " . $lingua . " AS descrizione FROM b_cpv WHERE LENGTH(codice) = :length AND codice LIKE :codice ORDER BY codice "; |
|
$ris_cpv_exp = $pdo->go($sql,$bind); |
|
if ($ris_cpv_exp->rowCount() > 0) { $expand = true; } |
|
|
|
?> |
|
<div class="cpv-list" id="<?= $idRoot ?>-cpv-<?= $cpv_code["codice"] ?>" <? if (!$show) { ?>style="display:none"<? } ?> > |
|
<div class="cpv-list-label"> |
|
<? if ($expand) { ?><a class="btn btn-sm btn-default" onClick="CPVloadTree('<?= $cpv_code["codice"] ?>','<?= $idRoot ?>','<?= $data ?>')"><span id="<?= $idRoot ?>-cpv-list-<?= $cpv_code["codice"] ?>-caret" class="fa fa-caret-right"></span><span class="sr-only"><?= __('Espandi') ?></a><? } ?> |
|
<strong><?= $cpv_code["codice"] ?></strong> |
|
- |
|
<?= $cpv_code["descrizione"] ?> |
|
<button style="margin-right:10px" onClick="addCPV('<?= $cpv_code["codice"] ?>','<?= $idRoot ?>','<?= $data ?>'); return false;" class='float-right btn btn-sm btn-success'><span class="fa fa-plus"></span><span class="sr-only"><?= __("aggiungi") ?></span></button> |
|
<div class="clearfix"></div> |
|
</div> |
|
<div id="<?= $idRoot ?>-cpv-list-<?= $cpv_code["codice"] ?>"></div> |
|
</div> |
|
<? |
|
} |
|
} |
|
} |
|
} |
|
|
|
public static function printList($codici,$inputName="",$idRoot="",$lingua="") { |
|
global $pdo; |
|
if (!empty($codici)) { |
|
if (!is_array($codici)) { $codici = [$codici]; } |
|
if (empty($lingua)) { $lingua = $_SESSION["language"]; } |
|
$sql = "SELECT *, ".$lingua." AS descrizione FROM b_cpv WHERE codice = :codice"; |
|
$ris = $pdo->prepare($sql); |
|
foreach($codici AS $codice) { |
|
$ris->bindValue(":codice",$codice); |
|
$ris->execute(); |
|
if ($ris->rowCount()===1) { |
|
$cpv_code = $ris->fetch(PDO::FETCH_ASSOC); |
|
?> |
|
<div class="cpv-list" id="<?= $idRoot ?>-cpv-in-<?= $cpv_code["codice"] ?>"> |
|
<div class="cpv-list-label"> |
|
<strong><?= $cpv_code["codice"] ?></strong> |
|
- |
|
<?= $cpv_code["descrizione"] ?> |
|
<? if (!empty($inputName)) { ?> |
|
<input name="<?= $inputName ?>[]" class="selected-cpv" value="<?= $cpv_code["codice"] ?>" type="hidden"> |
|
<button type="button" style="margin-right:10px" onClick="$('#<?= $idRoot ?>-cpv-<?= $cpv_code["codice"] ?>').slideDown();$('#<?= $idRoot ?>-cpv-in-<?= $cpv_code["codice"] ?>').slideUp('fast',function(){$(this).remove();});return false;" class='float-right btn btn-sm btn-danger'><span class="fa fa-times"></span><span class="sr-only"><?= __("elimina") ?></span></button> |
|
<? } ?> |
|
<div class="clearfix"></div> |
|
</div> |
|
</div> |
|
<? |
|
} |
|
} |
|
} |
|
} |
|
|
|
public static function getInfo(array $cpvs) { |
|
global $pdo; |
|
$return = []; |
|
$db = $pdo->prepare("SELECT * FROM b_cpv WHERE codice = :codice "); |
|
foreach($cpvs AS $cpv) { |
|
$db->bindValue(":codice",$cpv); |
|
$db->execute(); |
|
if ($db->rowCount() === 1) { |
|
$return[$cpv] = $db->fetch(PDO::FETCH_ASSOC); |
|
} |
|
} |
|
return $return; |
|
} |
|
|
|
public static function getChilds(array $cpvs) { |
|
global $pdo; |
|
$return = []; |
|
$db = $pdo->prepare("SELECT codice FROM b_cpv WHERE codice LIKE :codice AND LENGTH(codice) = :length"); |
|
foreach($cpvs AS $cpv) { |
|
$db->bindValue(":length",strlen($cpv)+1); |
|
$db->bindValue(":codice",$cpv."%"); |
|
$db->execute(); |
|
if ($db->rowCount() > 0) { |
|
$return[$cpv] = $db->fetchAll(PDO::FETCH_COLUMN); |
|
} |
|
} |
|
return $return; |
|
} |
|
|
|
public static function printForm($selezionate=array(),$idRoot="",$inputName="cpv",$lingua="",$inModal = false) { |
|
global $pdo; |
|
if (empty($lingua)) { $lingua = $_SESSION["language"]; } |
|
$hide_cpv = false; |
|
$selezionate_cpv = []; |
|
if (!empty($selezionate["cpv"])) { $selezionate_cpv = $selezionate["cpv"]; } |
|
$bind = array(); |
|
$bind[":length"]=2; |
|
$bind[":codice"]="%"; |
|
|
|
$sql = "SELECT codice, codice_completo, " . $lingua . " AS descrizione FROM b_cpv WHERE LENGTH(codice) = :length AND codice LIKE :codice ORDER BY codice "; |
|
$ris_cpv = $pdo->go($sql,$bind); |
|
if ($ris_cpv->rowCount() > 0 && !$inModal) { |
|
?> |
|
<script> |
|
// Rimuove eventuali duplicati |
|
setTimeout(() => { |
|
const alreadyExisting = [... document.querySelectorAll(`div[id='<?= $idRoot ?>-cpv-modal']`)]; |
|
while(alreadyExisting.length > 1) { |
|
alreadyExisting.pop().remove(); |
|
} |
|
}, 500); |
|
</script> |
|
<div id="<?= $idRoot ?>-cpv-modal" class="modal fade" style="z-index:1060"> |
|
<div class="modal-dialog modal-xl" role="document"> |
|
<div class="modal-content"> |
|
<div class="modal-header"> |
|
<h4 class="modal-title"><?= strtoupper(__("categorie merceologiche")) ?></h4> |
|
<button type="button" class="close" onClick="$('#<?= $idRoot ?>-cpv-modal').modal('hide');" aria-label="Close"><span aria-hidden="true">×</span></button> |
|
</div> |
|
<div class="modal-body" style="padding-left:0; padding-right:0"> |
|
<? |
|
cpvManager::printFormTree("%",$selezionate_cpv,$inputName,$idRoot,$lingua); |
|
?> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
<? |
|
} |
|
?> |
|
<div class="mt-2" id="<?= $idRoot ?>-cpv-div" <?= ($hide_cpv) ? 'style="display:none;"' : "" ?>> |
|
<? if (!$inModal) { ?> |
|
<div class="row mb-2"> |
|
<div class="col-12 col-sm-12 col-md-8"> |
|
<? } ?> |
|
<input type="text" id="<?= $idRoot ?>-cpv-filter" placeholder="<?= __("Cerca") ?> CPV" autocomplete="false" style="width:100%" class="form-control"> |
|
<script> |
|
$("#<?= $idRoot ?>-cpv-filter").typeahead({ |
|
hint: false, |
|
highlight: true, |
|
minLength: 2, |
|
limit: 9999 |
|
}, |
|
{ |
|
name: 'cpv', |
|
display: 'label', |
|
source: function(query, syncResults, asyncResults) { |
|
var selezionate = []; |
|
$(".selected-cpv","#<?= $idRoot ?>-cpv-list").each(function(){ selezionate.push($(this).val());}); |
|
$.ajax({ |
|
url: "/inc/cpv/autocomplete.php", |
|
dataType: "json", |
|
data: { |
|
query: query, |
|
selezionate: btoa(selezionate.join(",")) |
|
}, |
|
success: function(data) { |
|
asyncResults(data); |
|
} |
|
}); |
|
}, |
|
limit: 9999 |
|
}).bind('typeahead:select', function(ev, suggestion) { |
|
$('#<?= $idRoot ?>-cpv-filter').focus(); |
|
$('#<?= $idRoot ?>-cpv-filter').typeahead('val',""); |
|
data = ""; |
|
data += "cpv_code=" + suggestion.value; |
|
data += "&inputName=<?= base64_encode($inputName) ?>"; |
|
data += "&idRoot=<?= base64_encode($idRoot) ?>"; |
|
data += "&lingua=<?= base64_encode($lingua) ?>"; |
|
addCPV(suggestion.value,'<?= $idRoot ?>',data); |
|
$("#val"+suggestion.value).remove(); |
|
}); |
|
|
|
</script> |
|
<? if (!$inModal) { ?> |
|
</div> |
|
<div class="col-12 col-sm-12 col-md-4"> |
|
<a data-toggle="modal" data-target="#<?= $idRoot ?>-cpv-modal" class="btn btn-block btn-warning"><span class="fa fa-sitemap"></span> <?= __("scegli da lista") ?></a> |
|
</div> |
|
</div> |
|
<? } ?> |
|
<div id="<?= $idRoot ?>-cpv-list"> |
|
<? |
|
if (!empty($selezionate_cpv)) { |
|
cpvManager::printList($selezionate_cpv,$inputName,$idRoot,$lingua); |
|
} |
|
?> |
|
</div> |
|
</div> |
|
<? |
|
} |
|
} |
|
?>
|
|
|