gestione gare pubbliche
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

<?
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">&times;</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>
<?
}
}
?>