*"; /** * Load XSD Form * * @param String $form * @param String $directory * @return void */ function __construct(String $form, Int $codice = 0) { $path = dirname(__DIR__); // Preveniamo eccezioni con numeri negativi if($codice < 0 ) { $basepath = explode('?', $_SERVER['REQUEST_URI'], 2)[0]; die(""); } $this->form = $form; $this->codice = $codice; $this->version = self::getVersion($codice); if($this->version == "eSender") { $this->settings = ! empty($this->settings) ? $this->settings : jsonToArray("{$path}/config/settings.json"); $this->engine = new eSenderManager($form, $codice, $this->settings); } if($this->version == "eForms") { $this->settings = ! empty($this->settings) ? $this->settings : jsonToArray("{$path}/config/eforms/settings.json"); $this->engine = new eFormsManager($form, $codice); } if(empty($this->engine)) { throw new Exception("Unable to start TedEsenderEngine.", 1); } $this->loadErrors(); } /** * Ritorna le pubblicazioni collegate ad una gara o altro modulo * * @param string $modulo * @param integer $elemento * @return array */ public static function moduliCollegati() { if(self::getVersion() == "eSender") { return eSenderManager::moduliCollegati(); } return eFormsManager::moduliCollegati(); } /** * Ritorna le pubblicazioni collegate ad una gara o altro modulo * * @param string $modulo * @param integer $elemento * @return array */ public static function getPubblicazioniFromModulo(string $modulo, int $elemento) { if(self::getVersion() == "eSender") { return eSenderManager::getPubblicazioniFromModulo($modulo, $elemento); } return eFormsManager::getPubblicazioniFromModulo($modulo, $elemento); } /** * Check inaccessible methods * * @param String $method * @param Array $parameters * @return void */ public function __call($method, $parameters) { if(method_exists($this->engine, $method)) { return $this->engine->{$method}(...$parameters); } if(method_exists($this, $method)) { return $this->{$method}(...$parameters); } $class = get_class($this->engine); trigger_error("Call to undefined method {$class}::{$method}()", E_USER_ERROR); } /** * Obtain engine varibles * * @return mixed */ function &__get(String $name) { if(property_exists($this, $name)) { $reflect = new ReflectionProperty($this, $name); if(! empty($reflect) && $reflect->isPublic()) { return $this->{$name}; } $class = get_class($this); trigger_error("Uncaught Error: Cannot access private property {$class}::{$name}", E_USER_ERROR); } if(property_exists($this->engine, $name)) { $reflect = new ReflectionProperty($this->engine, $name); if(! empty($reflect) && $reflect->isPublic()) { return $this->engine->{$name}; } $class = get_class($this->engine); trigger_error("Uncaught Error: Cannot access private property {$class}::{$name}", E_USER_ERROR); } $class = get_class($this); trigger_error("Uncaught Error: Cannot access property {$class}::{$name}", E_USER_ERROR); } /** * Set variable value * * @param mixed $name * @param mixed $value * @return void */ function __set($name, $value) { $this->engine->{$name} = $value; $this->{$name} = $value; } /** * List available notices * * @return Array */ static public function listAvailableNoticeForms(String $version = null) : ?Array { if(empty($version)) { $version = self::getVersion(); } if($version == "eForms") { return eFormsManager::listAvailableNoticeForms(); } if($version == "eSender") { return eSenderManager::listAvailableNoticeForms(); } } /** * Get Settings information * * @return Array */ static public function getSettings(String $version = null) : ?Array { $path = dirname(__DIR__); if(empty($version)) { $version = self::getVersion(); } if($version == "eSender") { return jsonToArray("{$path}/config/settings.json"); } if($version == "eForms") { return jsonToArray("{$path}/config/eforms/settings.json"); } return null; } /** * Get eNotice version: eSender|eForms * * @return void */ static public function getVersion(Int $codice = 0) : String { if(! empty($codice)) { global $pdo; return $pdo->go("SELECT `version` FROM b_guue WHERE codice = :codice", [":codice" => $codice])->fetch(PDO::FETCH_COLUMN, 0); } if(DEVELOP_ENV || strtotime('now') >= strtotime('2023-10-15 00:00:00')) { return "eForms"; } return "eSender"; } /** * Manage errors * * @param Array $errors * @return void */ public function manageErrors(Array $errors) : void { global $pdo; $this->errors = $errors; if (!empty($this->codice)) { $pdo->go("UPDATE `b_guue` SET errori = :errori WHERE codice = :codice", [":errori" => json_encode($this->errors), ":codice" => $this->codice]); } } /** * Load errors * * @return void */ public function loadErrors() : void { global $pdo; if (!empty($this->codice)) { $errors = $pdo->go("SELECT errori FROM `b_guue` WHERE codice = :codice", [":codice" => $this->info["codice"]])->fetch(PDO::FETCH_COLUMN,0); $this->errors = json_decode($errors, true); } } /** * Get available states * * @return void */ public static function getStati() : Array { return [ [ 'title' => 'BOZZA', 'color' => '#6c757d', 'status' => 0, ], [ 'title' => 'DA TRASMETTERE', 'color' => '#007bff', 'status' => 10 ], [ 'title' => 'TRASMESSO', 'color' => '#17a2b8', 'status' => 20 ], [ 'title' => 'IN PUBBLICAZIONE', 'color' => '#28a745', 'status' => 97 ], [ 'title' => 'NON PUBBLICATO', 'color' => '#fd7e14', 'status' => 98 ], [ 'title' => 'RIFIUTATO', 'color' => '#dc3545', 'status' => 99 ], [ 'title' => 'PUBBLICATO', 'color' => '#28a745', 'status' => 100 ] ]; } public const CURRENCIES = [ "EUR" => "Euro", "AED" => "Dirham degli EAU", "AFN" => "Afghani", "ALL" => "Lek", "AMD" => "Dram", "ANG" => "Fiorino delle Antille olandesi", "AOA" => "Kwanza", "ARS" => "Peso argentino", "AUD" => "Dollaro australiano", "AWG" => "Fiorino di Aruba", "AZN" => "Manat azero", "BAM" => "Marco convertibile", "BBD" => "Dollaro di Barbados", "BDT" => "Taka", "BGN" => "Lev", "BHD" => "Dinaro del Bahrein", "BIF" => "Franco del Burundi", "BMD" => "Dollaro delle Bermuda", "BND" => "Dollaro del Brunei", "BOB" => "Boliviano", "BRL" => "Real", "BSD" => "Dollaro delle Bahamas", "BTN" => "Ngultrum", "BWP" => "Pula", "BYN" => "Rublo bielorusso", "BZD" => "Dollaro del Belize", "CAD" => "Dollaro canadese", "CDF" => "Franco congolese", "CHF" => "Franco svizzero", "CLP" => "Peso cileno", "CNY" => "Renminbi-yuan", "COP" => "Peso colombiano", "CRC" => "Col\u00f3n costaricano", "CUC" => "Peso convertibile", "CUP" => "Peso cubano", "CVE" => "Escudo capoverdiano", "CZK" => "Corona ceca", "DJF" => "Franco di Gibuti", "DKK" => "Corona danese", "DOP" => "Peso dominicano", "DZD" => "Dinar algerino", "EGP" => "Lira egiziana", "ERN" => "Nakfa", "ETB" => "Birr", "FJD" => "Dollaro delle Figi", "FKP" => "Sterlina delle Falkland", "GBP" => "Lira sterlina", "GEL" => "Lari", "GHS" => "Cedi ghanese", "GIP" => "Sterlina di Gibilterra", "GMD" => "Dalasi", "GNF" => "Franco della Guinea", "GTQ" => "Quetzal", "GYD" => "Dollaro della Guyana", "HKD" => "Dollaro di Hong Kong", "HNL" => "Lempira", "HTG" => "Gourde", "HUF" => "Fiorino ungherese", "IDR" => "Rupia", "ILS" => "Shekel", "INR" => "Rupia indiana", "IQD" => "Dinaro iracheno", "IRR" => "Rial iraniano", "ISK" => "Corona islandese", "JMD" => "Dollaro giamaicano", "JOD" => "Dinaro giordano", "JPY" => "Yen", "KES" => "Scellino del Kenya", "KGS" => "Som", "KHR" => "Riel", "KMF" => "Franco comoriano", "KPW" => "Won nordcoreano", "KRW" => "Won sudcoreano", "KWD" => "Dinaro kuwaitiano", "KYD" => "Dollaro delle isole Cayman", "KZT" => "Tenge", "LAK" => "Kip", "LBP" => "Lira libanese", "LKR" => "Rupia di Sri Lanka", "LRD" => "Dollaro liberiano", "LSL" => "Loti", "LYD" => "Dinaro libico", "MAD" => "Dirham marocchino", "MDL" => "Leu moldovo", "MGA" => "Ariary", "MKD" => "Denar", "MMK" => "Kyat", "MNT" => "Tughrik", "MOP" => "Pataca", "MRU" => "Ouguiya", "MUR" => "Rupia mauriziana", "MVR" => "Rupia maldiviana", "MWK" => "Kwacha del Malawi", "MXN" => "Peso messicano", "MYR" => "Ringgit", "MZN" => "Metical", "NAD" => "Dollaro namibiano", "NGN" => "Naira", "NIO" => "C\u00f3rdoba oro", "NOK" => "Corona norvegese", "NPR" => "Rupia nepalese", "NZD" => "Dollaro neozelandese", "OMR" => "Rial omanita", "OP_DATPRO" => "Dati provvisori", "PAB" => "Balboa", "PEN" => "Sol", "PGK" => "Kina", "PHP" => "Peso filippino", "PKR" => "Rupia pakistana", "PLN" => "Zloty", "PYG" => "Guarani", "QAR" => "Rial qatariano", "RON" => "Leu rumeno", "RSD" => "Dinaro serbo", "RUB" => "Rublo russo", "RWF" => "Franco ruandese", "SAR" => "Riyal saudita", "SBD" => "Dollaro delle Isole Salomone", "SCR" => "Rupia delle Seychelles", "SDG" => "Sterlina sudanese", "SEK" => "Corona svedese", "SGD" => "Dollaro di Singapore", "SHP" => "Sterlina di Sant\u2019Elena", "SLE" => "Leone", "SLL" => "Leone", "SOS" => "Scellino somalo", "SQS" => "Scellino del Somaliland", "SRD" => "Dollaro del Suriname", "SSP" => "Sterlina sud-sudanese", "STN" => "Dobra", "SVC" => "Col\u00f3n salvadoregno", "SYP" => "Lira sterlina siriana", "SZL" => "Lilangeni", "THB" => "Baht", "TJS" => "Somoni", "TMT" => "Manat turkmeno", "TND" => "Dinaro tunisino", "TOP" => "Paanga", "TRY" => "Lira turca", "TTD" => "Dollaro di Trinidad e Tobago", "TVD" => "Dollaro di Tuvalu", "TWD" => "Nuovo dollaro di Taiwan", "TZS" => "Scellino della Tanzania", "UAH" => "Hrivna", "UGX" => "Scellino ugandese", "USD" => "Dollaro USA", "USN" => "Dollaro USA", "UYU" => "Peso uruguaiano", "UZS" => "Sum", "VES" => "Bolivar sovrano", "VND" => "Dong", "VUV" => "Vatu", "WST" => "Tala", "XAF" => "Franco CFA (BEAC)", "XCD" => "Dollaro dei Caraibi orientali", "XOF" => "Franco CFA (BCEAO)", "XPF" => "Franco CFP", "YER" => "Rial yemenita", "ZAR" => "Rand", "ZMW" => "Kwacha zambiano" ]; }