<?php /** * * Classe Widgets * * @version : 0.2 * La classe viene inclusa per poter creare il codice dei widgets * Per poterla utilizzare รจ necessario che precedentemente sia stata inclusa la classe per la manipolazione del database * */ class Widgets { /** * Funzione createWidget * $id_widget: l'id numerico del widget da creare ed inserire nella pagina * Sa seconda del tipo di widget inserisce il codice HTML per la sua creazione nella pagina. * Ottiene i dati per la creazione * del widget da tabella, in maniera da crearli in maniera dinamica a seconda dei campi */ function createWidget($id_widget, $class, $totalNumber = 6) { global $dbo; global $rootdir; // se ho passato il parametro allora if (isset($id_widget)) { // ottengo i dati del widget passato come parametro da database $rs_w = $dbo->fetchArray("SELECT * FROM zz_widget_modules WHERE id=" . prepare($id_widget)); // a seconda del tipo inserisco il widget in maniera differente switch ($rs_w[0]['type']) { // widget di tipo statistiche case "print" : case "stats" : $query = $rs_w[0]['query']; $query = str_replace("|period_start|", $_SESSION['period_start'], $query); $query = str_replace("|period_end|", $_SESSION['period_end'], $query); $dato = ""; if($query != "") $dato = $dbo->fetchArray($query)[0]['dato']; // inserisco il widget echo ' <li class="col-xs-12 col-sm-6 col-md-4 col-lg-' . intval(12/$totalNumber) . ' li-widget" id="widget_' . $rs_w[0]['id'] . '"> <button type="button" class="close" onclick="if(confirm(\'Disabilitare questo widget?\')) { $.post( \'' . $rootdir . '/modules/aggiornamenti/actions.php?id_module=' . $rs_w[0]['id_module'] . '\', { op: \'disable_widget\', id: \'' . $rs_w[0]['id'] . '\' }, function(response){ location.href = \'' . $rootdir . '/controller.php?id_module=' . $rs_w[0]['id_module'] . '\'; }); };" ><span aria-hidden="true">×</span><span class="sr-only">' . _("Chiudi") . '</span></button> <a class="clickable" '; if ($rs_w[0]['more_link'] != '') { if ($rs_w[0]['more_link_type'] == 'link') { echo 'href="' . $rs_w[0]['more_link'] . '"'; } else if ($rs_w[0]['more_link_type'] == 'popup') { echo 'data-href="' . $rs_w[0]['more_link'] . '" data-toggle="modal" data-title="' . $rs_w[0]['text'] . '" data-target="#bs-popup"'; } else if ($rs_w[0]['more_link_type'] == 'javascript') { $link = $rs_w[0]['more_link']; $link = str_replace("|period_start|", $_SESSION['period_start'], $link); $link = str_replace("|period_end|", $_SESSION['period_end'], $link); echo 'onclick="' . $link . '"'; } } echo '> <div class="info-box"> <span class="info-box-icon" style="background-color:' . $rs_w[0]['bgcolor'] . '"> <i class="' . $rs_w[0]['icon'] . '"></i> </span> <div class="info-box-content"> <span class="info-box-text">' . $rs_w[0]['text'] . '</span> <span class="info-box-number">' . $dato . '</span> </div> </div> </a> </li>'; break; // widget di tipo chart: importa la pagina php specificata nel campo php_include della tabella, non ha l'icona case "chart" : echo ' <li class="' . $class . '" id="' . $rs_w[0]['id'] . '"> <!-- small box --> <div class="small-box bg-' . $rs_w[0]['bgcolor'] . '"> <div class="inner">'; include_once ($rs_w[0]['php_include']); echo ' </div> </div> </li>'; break; // widget custom con codice php e icona case "custom" : echo ' <li class="' . $class . '" id="' . $rs_w[0]['id'] . '"> <!-- small box --> <div class="small-box bg-' . $rs_w[0]['bgcolor'] . '"> <div class="inner">'; include_once ($rs_w[0]['php_include']); echo ' </div> <div class="icon"> <i class="' . $rs_w[0]['icon'] . '"></i> </div> </div> </li>'; break; } } } /** * Funzione addModuleWidgets * $id_modulo: modulo in cui ci si trova * $location: location all'interno del modulo, per esempio controller oppure inserimento/modifica * Prende da database tutti i widget associati al modulo passato come parametro e li aggiunge con createWidget * alla pagina */ function addModuleWidgets($id_module, $location) { global $dbo; if (isset($id_module)) { // ottengo da db gli id dei widget associati al modulo $rs_w = $dbo->fetchArray("SELECT id, location, class FROM zz_widget_modules WHERE id_module=\"" . $id_module . "\" AND location=\"" . $location . "\" AND enabled=1 ORDER BY `order` ASC"); $cont = count($rs_w); if($cont!=0){ if($cont > 6) $cont = 6; if($cont <= 2) $cont = 4; // aggiungo la riga per bootstrap echo ' <ul class="row widget" id="widget-' . $location . '" data-class="' . $rs_w[0]['class'] . '">'; // aggiungo ad uno ad uno tutti i widget for($i = 0; $i < sizeof($rs_w); $i ++) { $this->createWidget($rs_w[$i]['id'], $rs_w[$i]['class'], $cont); } echo ' </ul> <script> equalHeight("#widget-' . $location . ' .li-widget .box"); </script>'; } } } } ?>