diff --git a/application/modules/admin/views/scripts/index/adminvar.phtml b/application/modules/admin/views/scripts/index/adminvar.phtml index f902a7f982c565f3a5a6e301279931c013727594..64a2ab2d0eb11a6c7dab0441948572bff5251a61 100644 --- a/application/modules/admin/views/scripts/index/adminvar.phtml +++ b/application/modules/admin/views/scripts/index/adminvar.phtml @@ -5,54 +5,45 @@ Class_ScriptLoader::getInstance() 'iDisplayLength': -1, 'bPaginate': false, 'columnDefs' : [ - {'orderable': false, 'targets': 2} + {'orderable': false, 'targets': 2} ] })") -->loadJQueryUI() -->addJQueryReady('$(document).tooltip({ -items: "[data-tooltip]", -content: function() { - var element = $(this); - var html = element.find("span").html(); - return (html.trim() != "") ? html : "Description non disponible"; -}, -position: { my: "left top+30", at: "left top"}, -hide: {duration: 1000} -})'); +->loadJQueryUI(); ?> <table id="adminvars"> - <thead> + <thead> <tr class="soustitre"> <th><?php echo $this->_('Clef'); ?></th> <th><?php echo $this->_('Valeur'); ?></th> <th><?php echo $this->_('action'); ?></th> </tr> - </thead> - <tbody> - <?php - $ligne = 0; - foreach($this->vars as $var) { - $ligne ++ ; - ?> - <tr class="<?php echo ($ligne & 1) ? "first" : "second";?>" data-tooltip=""> - <td style="vertical-align:top;" ><?php echo $var->getClef();?> - <span style="display:none;"> - <?php echo $var->getDescription();?> - </span> - </td> - <td> - <?php - echo ($renderer = $var->getRenderer()) ? - $renderer($var->getValeur(), $this) : $this->adminVar($var); - ?> - </td> - <td style="width:2%;text-align:center"> - <a data-popup="true" href="<?php echo $this->url(['controller' => 'index', - 'action' => 'adminvaredit', - 'cle' => $var->getClef()])?>"><?php echo $this->boutonIco("type=edit");?></a> - </td> - </tr> - <?php } ?> + </thead> + <tbody> + <?php + $ligne = 0; + foreach($this->vars as $var) { + $ligne ++ ; + $edit_url = $this->url(['controller' => 'index', + 'action' => 'adminvaredit', + 'cle' => $var->getClef()]); + ?> + <tr class="<?php echo ($ligne & 1) ? "first" : "second";?>"> + <td style="vertical-align:top;" > + <?php echo $var->getDescription();?> + <br><sub><a data-popup="true" href="<?php echo $edit_url; ?>"> + <?php echo $var->getClef();?></a></sub> + </td> + <td> + <?php + echo ($renderer = $var->getRenderer()) ? + $renderer($var->getValeur(), $this) : $this->adminVar($var); + ?> + </td> + <td style="width:2%;text-align:center"> + <a data-popup="true" href="<?php echo $edit_url; ?>"><?php echo $this->boutonIco("type=edit");?></a> + </td> + </tr> + <?php } ?> </tbody> </table> diff --git a/cosmogramme/php/_init.php b/cosmogramme/php/_init.php index e6e704e0feeb9b3733e6f45e1cccc1857873db26..dcd5895a549aae6ff38388ecfabbb1f53252dc5b 100644 --- a/cosmogramme/php/_init.php +++ b/cosmogramme/php/_init.php @@ -1,7 +1,7 @@ <?php error_reporting(E_ERROR | E_PARSE); -define("PATCH_LEVEL","261"); +define("PATCH_LEVEL","264"); define("APPLI","cosmogramme"); define("COSMOPATH", "/var/www/html/vhosts/opac2/www/htdocs"); diff --git a/cosmogramme/sql/patch/patch_261.php b/cosmogramme/sql/patch/patch_264.php similarity index 100% rename from cosmogramme/sql/patch/patch_261.php rename to cosmogramme/sql/patch/patch_264.php diff --git a/library/Class/AdminVar.php b/library/Class/AdminVar.php index b4a9c0b16c9a86069bb373d00f16a2b1f48dbaf0..4adaa2fbd7ebcd1c77d8b97435ce546ec27e1c33 100644 --- a/library/Class/AdminVar.php +++ b/library/Class/AdminVar.php @@ -21,696 +21,763 @@ class Class_AdminVarLoader extends Storm_Model_Loader { - use Trait_Translator; - - /** @var array */ - protected $_knownVars; - - - /** - * @param string $name - * @return mixed - */ - public function get($name) { - $var = Class_AdminVar::find($name); - if ($var == null) - return null; - return $var->getValeur(); - } - - - public function getValueOrDefault($name) { - return (($var = Class_AdminVar::find($name)) && $var->getValeur()) ? - $var->getValeur() : Class_AdminVar::getStaticMeta($name)->getValue(); - } - - - /** - * @param string $name - * @param mixed $value - */ - public function set($name, $value) { - if (null === ($instance = Class_AdminVar::find($name))) { - $instance = Class_AdminVar::newInstance()->setClef($name); - } - - $instance - ->setValeur($value) - ->save(); - - return $instance->cache(); - } - - - public function getDefaultLanguage() { - return 'fr'; - } - - - public function findAllByController($controller) { - $mapping = ['newsletter' => ['NEWSLETTER_ID_PROFIL', - 'NEWSLETTER_UNSUBSCRIBE_TEXT', - 'NEWSLETTER_UNSUBSCRIBE_HTML']]; - - return array_key_exists($controller, $mapping) - ? array_map( - function($clef) { - return ($var = Class_AdminVar::find($clef)) ? - $var : Class_AdminVar::set($clef, ''); - }, - $mapping[$controller]) - : []; - } - - - /** - * @return array - */ - public function getKnownVars() { - if (null === $this->_knownVars) - $this->_knownVars = - ['AVIS_MAX_SAISIE' => Class_AdminVar_Meta::newDefault($this->_('Nombre de caractères maximum autorisé à saisir dans les avis.')), - 'AVIS_MIN_SAISIE' => Class_AdminVar_Meta::newDefault($this->_('Nombre de caractères minimum autorisé à saisir dans les avis.')), - 'BLOG_MAX_NB_CARAC' => Class_AdminVar_Meta::newDefault($this->_('Nombre de caractères maximum à afficher dans le bloc critiques.')), - 'NB_AFFICH_AVIS_PAR_AUTEUR' => Class_AdminVar_Meta::newDefault($this->_('Nombre d\'avis maximum à afficher par utilisateur.')), - 'CLEF_GOOGLE_MAP' => Class_AdminVar_Meta::newDefault($this->_('Clef d\'activation pour le plan d\'accès google map. <a target="_blank" href="http://code.google.com/apis/maps/signup.html">Obtenir la clé google map</a>')), - 'MODO_AVIS' => Class_AdminVar_Meta::newOnOff($this->_('Modération des avis des lecteurs.<br /> Désactivé : affichage sans attente de validation<br /> Activé : affichage seulement après validation.')), - 'MODO_AVIS_BIBLIO' => Class_AdminVar_Meta::newOnOff($this->_('Modération des avis des bibliothèquaires.<br /> Désactivé: affichage sans attente de validation<br /> Activé: affichage seulement après validation')), - 'AVIS_BIB_SEULEMENT' => Class_AdminVar_Meta::newOnOff($this->_('Désactivé: les lecteurs peuvent donner leur avis. <br /> Activé: seuls les bibliothèquaires peuvent donner leur avis')), - 'MODO_BLOG' => Class_AdminVar_Meta::newOnOff($this->_('Désactivé: ne requiert pas d\'identification pour saisir des commentaires. <br /> Activé: requiert l\'identification pour saisir des commentaires.')), - 'REGISTER_OK' => Class_AdminVar_Meta::newEncodedData($this->_('Texte visible par l\'internaute après son inscription.')), - 'RESA_CONDITION' => Class_AdminVar_Meta::newEncodedData($this->_('Texte visible après l\'envoi d\'e-mail de demande de réservation.')), - 'SITE_OK' => Class_AdminVar_Meta::newOnOff($this->_('Désactiver pour passer le site en maintenance')), - 'ID_BIBLIOSURF' => Class_AdminVar_Meta::newDefault($this->_('Nom de la bibliothèque chez bibliosurf (en minuscules)')), - 'JS_STAT' => Class_AdminVar_Meta::newRawText($this->_('Javascript code for statistics')), - 'ID_READ_SPEAKER' => Class_AdminVar_Meta::newDefault($this->_('Numéro de client Read Speaker <a target="_blank" href="http://webreader.readspeaker.com">http://webreader.readspeaker.com</a>')), - 'BLUGA_API_KEY' => Class_AdminVar_Meta::newDefault($this->_('Clé API Bluga Webthumb <a target="_blank" href="http://webthumb.bluga.net/home">http://webthumb.bluga.net/home</a>')), - 'AIDE_FICHE_ABONNE' => Class_AdminVar_Meta::newDefault($this->_('Texte d\'aide affiché dans la fiche abonné')), - 'INTERDIRE_ENREG_UTIL' => Class_AdminVar_Meta::newDefault($this->_('Supprime l\'affichage du lien d\'enregistrement dans les différents formulaires de connexion et interdit l\'enregistrement d\'utilisateurs')), - 'LANGUES' => Class_AdminVar_Meta::newMultiInput($this->_('Liste des codes langue utilisées en plus du français séparées par des ;. Exemple: en;ro;es')), - 'CACHE_ACTIF' => Class_AdminVar_Meta::newOnOff(implode('<br/>', - ['Activer le cache des boîtes (meilleure performance mais mise à jour toutes les ' . CACHE_LIFETIME / 60 . 'mn)', - '<a href="' . Class_Url::baseUrl() . '/admin/index/clearcache" >Vider le cache</a>'])), - 'WORKFLOW' => Class_AdminVar_Meta::newDefault(implode('<br/>', - ['Activer ou désactiver la gestion des validations des articles', - 'Vide ou 0 = Désactivé, 1 = Activé avec les statuts par défaut, JSON = Activé avec des statuts de validation supplémentaire', - 'Exemple JSON :', - '[{"id":10, "label":"À valider niveau 2"}, {"id":11, "label":"À valider niveau 3"}]', - 'Les identifiants 1 à 5 sont réservés']), - ['validate' => 'ZendAfi_Validate_WorkflowVar', - 'after_save' => 'setWorkflowPermissions']), - 'WORKFLOW_TEXT_MAIL_ARTICLE_PENDING' => Class_AdminVar_Meta::newDefault($this->_('Contenu de l\'email de notification d\'article en attente de validation')), - 'WORKFLOW_TEXT_MAIL_ARTICLE_REFUSED' => Class_AdminVar_Meta::newDefault($this->_('Contenu de l\'email de notification de refus d\'un article à valider')), - 'WORKFLOW_TEXT_MAIL_ARTICLE_VALIDATED' => Class_AdminVar_Meta::newDefault($this->_('Contenu de l\'email de notification de validation d\'un article')), - 'BIBNUM' => Class_AdminVar_Meta::newOnOff($this->_('Activer ou désactiver la bibliothèque numérique')), - 'FORMATIONS' => Class_AdminVar_Meta::newOnOff($this->_('Activer ou désactiver le module formation')), - 'VODECLIC_KEY' => Class_AdminVar_Meta::newDefault($this->_('Clé de sécurité Vodeclic')), - 'VODECLIC_ID' => Class_AdminVar_Meta::newDefault($this->_('Identifiant partenaire Vodeclic')), - 'VODECLIC_BIB_ID' => Class_AdminVar_Meta::newDefault($this->_('Identifiant code bibliothèque Vodeclic')), - 'CVS_BMKEY' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage CVS')), - 'CVS_BMID' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage CVS')), - 'CVS_SOURCENAME' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage CVS')), - 'CVS_SOURCEID' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage CVS')), - 'CVS_SOURCEKEY' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage CVS')), - 'CVS_SOURCEPASSWORD' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage CVS')), - 'CVS_LOGINTEST' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage CVS')), - 'NUMILOG_URL' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Numilog">Numilog</a>')), - 'NUMILOG_OAI_URL' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Numilog">Numilog</a>')), - 'NUMILOG_OAI_IDBIB' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Numilog">Numilog</a>')), - 'CYBERLIBRIS_URL' => Class_AdminVar_Meta::newDefault($this->_('Adresse du serveur OAI Cyberlibris')), - 'CYBERLIBRIS_ID' => Class_AdminVar_Meta::newDefault($this->_('Identifiant SSO Cyberlibris')), - 'OAI_SERVER' => Class_AdminVar_Meta::newOnOff($this->_('Activation du serveur OAI')), - 'PACK_MOBILE' => Class_AdminVar_Meta::newOnOff($this->_('Activation des fonctions avancées du téléphone')), - 'ARTE_VOD_LOGIN' => Class_AdminVar_Meta::newDefault($this->_('Login ARTE VOD')), - 'ARTE_VOD_KEY' => Class_AdminVar_Meta::newDefault($this->_('Clé ARTE VOD')), - 'ARTE_VOD_SSO_KEY' => Class_AdminVar_Meta::newDefault($this->_('Clé ARTE VOD Single Sign-On')), - 'BABELTHEQUE_JS' => Class_AdminVar_Meta::newDefault($this->_('URL du javascript Babelthèque à insérer dans l\'OPAC')), - 'MULTIMEDIA_KEY' => Class_AdminVar_Meta::newDefault($this->_('Clé publique pour le cryptage des données AFI-Multimédia')), - 'WEBKIOSK_KEY' => Class_AdminVar_Meta::newDefault($this->_('Clé publique pour le cryptage des données Aesis Webkiosk')), - 'WEBKIOSK_RESERVATION_URL' => Class_AdminVar_Meta::newDefault($this->_('URL d\'accès à l\'interface de réservation des postes Aesis Webkiosk')), - 'CSS_EDITOR' => Class_AdminVar_Meta::newDefault(''), - 'CMS_FORMULAIRES' => Class_AdminVar_Meta::newOnOff($this->_('Activation des formulaires')), - 'MENU_BOITE' => Class_AdminVar_Meta::newOnOff($this->_('Activation des boîtes dans les menus')), - 'INTERDIRE_MODIF_FICHE_ABONNE' => Class_AdminVar_Meta::newOnOff($this->_('Interdire la modification de la fiche abonne')), - 'ROOT_URL_ECOUTE' => Class_AdminVar_Meta::newDefault(''), - 'URL_TYPO3' => Class_AdminVar_Meta::newDefault($this->_('Url d\'import d\'un agenda TYPO3')), - 'CHAMPS_FICHE_UTILISATEUR' => Class_AdminVar_Meta::newMultiInput($this->_('Liste des champs que l\'utilisateur peux modifier. <br/>Ex: nom;prenom;pseudo;adresse;<br/>code_postal;ville;mail;is_contact_mail;<br/>telephone;is_contact_telephone;')), - 'FACETTE_PCDM4_LIBELLE' => Class_AdminVar_Meta::newDefault($this->_('Libellé pour la PCDM4')), - 'FACETTE_DEWEY_LIBELLE' => Class_AdminVar_Meta::newDefault($this->_('Libellé pour la Dewey')), - 'FACETTE_TYPE_DOC_LIBELLE' => Class_AdminVar_Meta::newDefault(''), - 'FACETTE_LANGUE_LIBELLE' => Class_AdminVar_Meta::newDefault(''), - 'FACETTE_GENRE_LIBELLE' => Class_AdminVar_Meta::newDefault(''), - 'FACETTE_SITE_LIBELLE' => Class_AdminVar_Meta::newDefault(''), - 'FACETTE_SECTION_LIBELLE' => Class_AdminVar_Meta::newDefault(''), - 'FACETTE_BIBLIOTHEQUE_LIBELLE' => Class_AdminVar_Meta::newDefault(''), - 'FACETTE_AUTEUR_LIBELLE' => Class_AdminVar_Meta::newDefault(''), - 'FACETTE_INTERET_LIBELLE' => Class_AdminVar_Meta::newDefault(''), - 'FACETTE_MATIERE_LIBELLE' => Class_AdminVar_Meta::newDefault(''), - 'FACETTE_TAG_LIBELLE' => Class_AdminVar_Meta::newDefault(''), - 'AFFICHER_DISPONIBILITE_SUR_RECHERCHE' => Class_AdminVar_Meta::newOnOff($this->_('Activation de la disponibilite dans le resultat de recherche.')), - 'NOM_DOMAINE' => Class_AdminVar_Meta::newDefault($this->_('Nom de domaine principal de l\'OPAC, ex: monopac.macommune.fr')), - 'TOUTAPPRENDRE_BIB_ID' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Tout-Apprendre">ToutApprendre</a>')), - 'TOUTAPPRENDRE_KEY' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Tout-Apprendre">ToutApprendre</a>')), - 'NUMERIQUE_PREMIUM_URL' => Class_AdminVar_Meta::newDefault(''), - 'MUSICME_URL' => Class_AdminVar_Meta::newDefault(''), - 'MUSICME_BIB_ID' => Class_AdminVar_Meta::newDefault(''), - 'DATE_LAST_FULL_INTEGRATION_USERS' => Class_AdminVar_Meta::newDefault($this->_('Date du dernier import total des abonnés (modifié par cosmogramme)')), - 'BOITE_PANIER_AUTO' => Class_AdminVar_Meta::newOnOff($this->_('Ajouter automatiquement une boîte panier dans la division flottante')), - 'EXTRA_SKIN_PATH' => Class_AdminVar_Meta::newDefault($this->_('Chemin vers les skins personnalisées, relatif à %s', Class_Profil_Skin::EXTRA_PATH)), - 'ENABLE_COLLABORATIVE_BROWSING' => Class_AdminVar_Meta::newOnOff($this->_('Activation de la navigation collaborative')), - 'KOHA_MULTI_SITES' => Class_AdminVar_Meta::newOnOff($this->_('WS KOHA : Reservation d\'exemplaires pour les multi sites')), - 'LECTURA_DOMAIN' => Class_AdminVar_Meta::newDefault($this->_('Domaine utilisée par le serveur lectura pour authentification')), - 'LEKIOSK_ID' => Class_AdminVar_Meta::newDefault($this->_('Identifiant fournit par lekiosk.com')), - 'TEXT_REPLACEMENTS' => Class_AdminVar_Meta::newRawText($this->_('Remplacement de textes à la volée. <br/>Ex:<br/>Panier;Sélection<br/>Vous avez %%d paniers;Vous avez %%d sélections')), - 'ARTICLES_LIST_MODE' => Class_AdminVar_Meta::newOnOff($this->_('Le gestionnaire de contenu affiche les articles sous forme de liste paginée au lieu de d\'une arborescence. Cet affichage est adapté lorsque le nombre d\'article devient trop important')), - 'ALBUMS_LIST_MODE' => Class_AdminVar_Meta::newOnOff($this->_('Le gestionnaire de contenu affiche les albums sous forme de liste paginée au lieu de d\'une arborescence. Cet affichage est adapté lorsque le nombre d\'albums devient trop important')), - 'DILICOM_PNB' => Class_AdminVar_Meta::newOnOff($this->_('Activation du PNB Dilicom')), - 'DILICOM_PNB_GLN_COLLECTIVITE' => Class_AdminVar_Meta::newDefault($this->_('Gln de la collectivité, il est fourni par Dilicom.')), - 'DILICOM_PNB_PWD_COLLECTIVITE' => Class_AdminVar_Meta::newDefault($this->_('Mot de passe de la collectivité, il est fourni par Dilicom.')), - 'DILICOM_PNB_GLN_CONTRACTOR' => Class_AdminVar_Meta::newDefault($this->_('Contracteur du PNB Dilicom')), - 'DILICOM_PNB_SERVER_URL' => Class_AdminVar_Meta::newDefault($this->_('Url du serveur PNB Dilicom')), - 'DILICOM_PNB_IP_ADRESSES' => Class_AdminVar_Meta::newMultiInput($this->_('Liste des adresses IP publiques autorisées pour la consultation des documents'), - ['validate' => 'ZendAfi_Validate_Dilicom_IpAdresses']), - 'MYCOW_EID' => Class_AdminVar_Meta::newDefault($this->_('Clé d\'identification MyCOW.EU pour le portail. Cette clé doit être fournie par MyCOW.EU. Elle active la ressource numérique dans le portail.')), - 'ONEDTOUCH_URL' => Class_AdminVar_Meta::newDefault($this->_('Adresse du serveur OAI 1D touch')), - 'ORPHEA_URL' => Class_AdminVar_Meta::newDefault($this->_('Adresse du serveur Orphea')), - 'ORPHEA_USERNAME' => Class_AdminVar_Meta::newDefault($this->_('Nom de l\'utilisateur Orphea')), - 'ORPHEA_PWD' => Class_AdminVar_Meta::newDefault($this->_('Mot de passe de l\'utilisateur Orphea')), - 'ORPHEA_LANGUAGE' => Class_AdminVar_Meta::newDefault($this->_('Paramètre permettant de choisir la langue des des ressources. La liste des codes disponibles se trouve à cette adresse http://help.orphea.com/43/gateway/#language_identifiers')), - 'PLANETNEMO' => Class_AdminVar_Meta::newOnOff($this->_('Activation de la ressource numérique PlanetNemo')), - 'KIDILANGUES_KEY' => Class_AdminVar_Meta::newDefault($this->_('Clé d\'encodage Kidilangues pour le portail. Cette clé doit être fournie par Kidilangues.')), - 'KIDILANGUES_ID' => Class_AdminVar_Meta::newDefault($this->_('Clé d\'identification Kidilangues pour le portail. Cette clé doit être fournie par Kidilangues.')), - 'KIDILANGUES_LOGIN' => Class_AdminVar_Meta::newDefault($this->_('Login du portail fourni par Kidilangues.')), - 'KIDILANGUES_PWD' => Class_AdminVar_Meta::newDefault($this->_('Password du portail fourni par Kidilangues.')), - 'JAMENDO_CLIENT_ID' => Class_AdminVar_Meta::newDefault($this->_('ID client Jamendo')), - 'NEWSLETTER_ID_PROFIL' => Class_AdminVar_Meta::newCombo($this->_('Profil de la page de désinscription<br/>Par défaut : page d\'accueil du portail'), - ['options' => ['selectOptions' => $this->_getProfilsOptions()], - 'renderer' => $this->_getProfilRenderer()]), - 'NEWSLETTER_UNSUBSCRIBE_TEXT' => Class_AdminVar_Meta::newDefault($this->_('Texte de désinscription version texte<br/>Le lien est inséré à la place de {{URL}}<br/>Par défaut : Lien pour se désinscrire de cette lettre d\'information : {{URL}}'), - ['value' => $this->_('Lien pour se désinscrire de cette lettre d\'information : {{URL}}')]), - 'NEWSLETTER_UNSUBSCRIBE_HTML' => Class_AdminVar_Meta::newDefault($this->_('Texte de désinscription version HTML<br/>Le lien de désinscription est appliqué sur tout ce texte<br/>Par défaut : Je ne veux plus recevoir cette lettre d\'information'), - ['value' => $this->_('Je ne veux plus recevoir cette lettre d\'information')]), - 'PREMIERCHAPITRE_BIB_ID' => Class_Adminvar_Meta::newDefault($this->_('Premier Chapitre : identifiant de la bibliothèque')), - 'PREMIERCHAPITRE_BMID' => Class_Adminvar_Meta::newDefault($this->_('Premier Chapitre : identifiant de connexion')), - 'PREMIERCHAPITRE_BMKEY' => Class_Adminvar_Meta::newDefault($this->_('Premier Chapitre : mot de passe')) - ]; - - return $this->_knownVars; - } - - - protected function _getProfilsOptions() { - $multioptions = ['' => '']; - $ids = []; - foreach(Class_Profil::getProfilsByBib('ALL', 'ALL') as $opt_group => $profils) { - $options = []; - foreach($profils as $profil) { - $options[$profil->getId()] = $profil->getLibelle(); - $ids[] = $profil->getId(); - } - $multioptions[$opt_group] = $options; - } - - return ['label' => 'Profil', - 'multioptions' => $multioptions, - 'registerInArrayValidator' => false, - 'validators' => [['InArray', true, [$ids]]]]; - } - - - protected function _getProfilRenderer() { - return function($value, $view) { - if (!$profil = Class_Profil::find($value)) - return ''; - - $library = ($profil->isInPortail()) ? - $view->_('Portail') : - $profil->getBibLibelle(); - - return $view->escape(implode(' > ', array_merge([$library], $profil->getPathParts()))); - }; - } - - - /** @category testing */ - public function resetKnownVars() { - $this->_knownVars = null; - } - - - public function getLangues() { - if (!$langues_value = $this->get('LANGUES')) - return []; - - $langues = array(Class_AdminVar::getDefaultLanguage()); - - foreach(explode(';', strtolower($langues_value)) as $langue) - $langues []= trim($langue); - return array_unique(array_filter($langues)); - } - - - public function getLanguesWithoutDefault() { - return array_diff(Class_AdminVar::getLangues(), array(Class_AdminVar::getDefaultLanguage())); - } - - - /** - * @return bool - */ - public function isTranslationEnabled() { - return count(Class_AdminVar::getLangues()) > 1; - } - - - /** - * @return bool - */ - public function isModuleEnabled($name) { - if (!$value = Class_AdminVar::get($name)) { - return false; - } - - return (1 == (int)$value); - } + use Trait_Translator; + + /** @var array */ + protected $all_vars; + + + /** + * @param string $name + * @return mixed + */ + public function get($name) { + $var = Class_AdminVar::find($name); + if ($var == null) + return null; + return $var->getValeur(); + } + + + public function getValueOrDefault($name) { + return (($var = Class_AdminVar::find($name)) && ('' !== $var->getValeur())) ? + $var->getValeur() : Class_AdminVar::getStaticMeta($name)->getValue(); + } + + + /** + * @param string $name + * @param mixed $value + */ + public function set($name, $value) { + if (null === ($instance = Class_AdminVar::find($name))) { + $instance = Class_AdminVar::newInstance()->setClef($name); + } + + $instance + ->setValeur($value) + ->save(); + + return $instance->cache(); + } + + + public function getDefaultLanguage() { + return 'fr'; + } + + + public function filterByUserRole($variables = []) { + $user_level = 0; + + if (Class_Users::hasIdentity()) + $user_level = Class_Users::getIdentity()->getRoleLevel(); + + return array_filter($variables, function($var) use($user_level) { + return $var->matchRoleLevel($user_level); + }); + } + + + public function findAllByController($controller) { + + + return isset($this->knownVars()[$controller]) + ? self::filterByUserRole(array_map( + function($clef) { + return ($var = Class_AdminVar::find($clef)) ? + $var : Class_AdminVar::set($clef, ''); + }, + array_keys($this->knownVars()[$controller]))) + : []; + } + + + public function knownVars() { + if (null !== $this->all_vars) + return $this->all_vars; + + return $this->all_vars= + [ + 'avis' => [ + 'AVIS_MAX_SAISIE' => Class_AdminVar_Meta::newDefault($this->_('Nombre de caractères maximum autorisé à saisir dans les avis.')), + 'AVIS_MIN_SAISIE' => Class_AdminVar_Meta::newDefault($this->_('Nombre de caractères minimum autorisé à saisir dans les avis.')), + 'BLOG_MAX_NB_CARAC' => Class_AdminVar_Meta::newDefault($this->_('Nombre de caractères maximum à afficher dans le bloc critiques.'))], + 'modo' => [ + 'MODO_AVIS' => Class_AdminVar_Meta::newOnOff($this->_('Modération des avis des lecteurs.<br /> Désactivé : affichage sans attente de validation<br /> Activé : affichage seulement après validation.')), + 'MODO_AVIS_BIBLIO' => Class_AdminVar_Meta::newOnOff($this->_('Modération des avis des bibliothèquaires.<br /> Désactivé: affichage sans attente de validation<br /> Activé: affichage seulement après validation')), + 'AVIS_BIB_SEULEMENT' => Class_AdminVar_Meta::newOnOff($this->_('Désactivé: les lecteurs peuvent donner leur avis. <br /> Activé: seuls les bibliothèquaires peuvent donner leur avis')), + 'MODO_BLOG' => Class_AdminVar_Meta::newOnOff($this->_('Désactivé: ne requiert pas d\'identification pour saisir des commentaires. <br /> Activé: requiert l\'identification pour saisir des commentaires.')), + 'MAX_DAY_INVALID_MEMBRE' => Class_AdminVar_Meta::newDefault($this->_('Nombre de jours de validité des nouvelles inscriptions sur le site')), + ], + 'global' => [ + 'NB_AFFICH_AVIS_PAR_AUTEUR' => Class_AdminVar_Meta::newDefault($this->_('Nombre d\'avis maximum à afficher par utilisateur.')), + 'CLEF_GOOGLE_MAP' => Class_AdminVar_Meta::newDefault($this->_('Clef d\'activation pour le plan d\'accès google map. <a target="_blank" href="http://code.google.com/apis/maps/signup.html">Obtenir la clé google map</a>')), + 'REGISTER_OK' => Class_AdminVar_Meta::newEncodedData($this->_('Texte visible par l\'internaute après son inscription.')), + 'RESA_CONDITION' => Class_AdminVar_Meta::newEncodedData($this->_('Texte visible après l\'envoi d\'e-mail de demande de réservation.')), + 'SITE_OK' => Class_AdminVar_Meta::newOnOff($this->_('Désactiver pour passer le site en maintenance')), + 'ID_BIBLIOSURF' => Class_AdminVar_Meta::newDefault($this->_('Nom de la bibliothèque chez bibliosurf (en minuscules)'))->bePrivate(), + 'JS_STAT' => Class_AdminVar_Meta::newRawText($this->_('Javascript code for statistics')), + 'ID_READ_SPEAKER' => Class_AdminVar_Meta::newDefault($this->_('Numéro de client Read Speaker <a target="_blank" href="http://webreader.readspeaker.com">http://webreader.readspeaker.com</a>')), + 'BLUGA_API_KEY' => Class_AdminVar_Meta::newDefault($this->_('Clé API Bluga Webthumb <a target="_blank" href="http://webthumb.bluga.net/home">http://webthumb.bluga.net/home</a>')), + 'AIDE_FICHE_ABONNE' => Class_AdminVar_Meta::newDefault($this->_('Texte d\'aide affiché dans la fiche abonné')), + 'INTERDIRE_ENREG_UTIL' => Class_AdminVar_Meta::newDefault($this->_('Supprime l\'affichage du lien d\'enregistrement dans les différents formulaires de connexion et interdit l\'enregistrement d\'utilisateurs')), + 'LANGUES' => Class_AdminVar_Meta::newMultiInput($this->_('Liste des codes langue utilisées en plus du français séparées par des ;. Exemple: en;ro;es')), + 'CACHE_ACTIF' => Class_AdminVar_Meta::newOnOff(implode('<br/>', + ['Activer le cache des boîtes (meilleure performance mais mise à jour toutes les ' . CACHE_LIFETIME / 60 . 'mn)', + '<a href="' . Class_Url::baseUrl() . '/admin/index/clearcache" >Vider le cache</a>']))->bePrivate(), + + 'FORMATIONS' => Class_AdminVar_Meta::newOnOff($this->_('Activer ou désactiver le module formation'))->bePrivate(), + + 'BABELTHEQUE_JS' => Class_AdminVar_Meta::newDefault($this->_('URL du javascript Babelthèque à insérer dans l\'OPAC'))->bePrivate(), + 'MULTIMEDIA_KEY' => Class_AdminVar_Meta::newDefault($this->_('Clé publique pour le cryptage des données AFI-Multimédia')), + + 'WEBKIOSK_KEY' => Class_AdminVar_Meta::newDefault($this->_('Clé publique pour le cryptage des données Aesis Webkiosk'))->bePrivate(), + 'WEBKIOSK_RESERVATION_URL' => Class_AdminVar_Meta::newDefault($this->_('URL d\'accès à l\'interface de réservation des postes Aesis Webkiosk'))->bePrivate(), + + 'MENU_BOITE' => Class_AdminVar_Meta::newOnOff($this->_('Activation des boîtes dans les menus')), + 'INTERDIRE_MODIF_FICHE_ABONNE' => Class_AdminVar_Meta::newOnOff($this->_('Interdire la modification de la fiche abonne')), + 'ROOT_URL_ECOUTE' => Class_AdminVar_Meta::newDefault('URL de base à rajouter aux données unimarc pour la lecture des morceaux'), + 'URL_TYPO3' => Class_AdminVar_Meta::newDefault($this->_('Url d\'import d\'un agenda TYPO3'))->bePrivate(), + 'CHAMPS_FICHE_UTILISATEUR' => Class_AdminVar_Meta::newMultiInput($this->_('Liste des champs que l\'utilisateur peux modifier. <br/>Ex: nom;prenom;pseudo;adresse;<br/>code_postal;ville;mail;is_contact_mail;<br/>telephone;is_contact_telephone;')), + 'FACETTE_PCDM4_LIBELLE' => Class_AdminVar_Meta::newDefault($this->_('Libellé pour la PCDM4')), + 'FACETTE_DEWEY_LIBELLE' => Class_AdminVar_Meta::newDefault($this->_('Libellé pour la Dewey')), + 'FACETTE_TYPE_DOC_LIBELLE' => Class_AdminVar_Meta::newDefault('Libellé de la facette type de document'), + 'FACETTE_LANGUE_LIBELLE' => Class_AdminVar_Meta::newDefault('Libellé de la facette langue'), + 'FACETTE_GENRE_LIBELLE' => Class_AdminVar_Meta::newDefault('Libelle de la facette genre'), + 'FACETTE_SITE_LIBELLE' => Class_AdminVar_Meta::newDefault('Libellé de la facette site'), + 'FACETTE_SECTION_LIBELLE' => Class_AdminVar_Meta::newDefault('Libellé de la facette section'), + 'FACETTE_BIBLIOTHEQUE_LIBELLE' => Class_AdminVar_Meta::newDefault('Libellé de la facette bibliothèque'), + 'FACETTE_AUTEUR_LIBELLE' => Class_AdminVar_Meta::newDefault('Libellé de la facette auteur'), + 'FACETTE_INTERET_LIBELLE' => Class_AdminVar_Meta::newDefault('Libellé de la facette centres d\'intérêt'), + 'FACETTE_MATIERE_LIBELLE' => Class_AdminVar_Meta::newDefault('Libellé de la facette matière'), + 'FACETTE_TAG_LIBELLE' => Class_AdminVar_Meta::newDefault('Libellé de la facette tag'), + 'UNLEASHED_FACETS' => Class_AdminVar_Meta::newMultiInput($this->_('Liste des codes des facettes qui ne sont pas limitées à l\'affichage dans le résultat de recherche<br/>Exemple : T => Type de doc, Y => Annexe, B => Bibliothèque, ... (Voir <a href="http://git.afi-sa.fr/afi/opacce/blob/master/library/Class/Codification.php#L24">la liste complète</a>)')), + 'AFFICHER_DISPONIBILITE_SUR_RECHERCHE' => Class_AdminVar_Meta::newOnOff($this->_('Activation de la disponibilite dans le resultat de recherche.')), + 'NOM_DOMAINE' => Class_AdminVar_Meta::newDefault($this->_('Nom de domaine principal de l\'OPAC, ex: monopac.macommune.fr')), + 'DATE_LAST_FULL_INTEGRATION_USERS' => Class_AdminVar_Meta::newDefault($this->_('Date du dernier import total des abonnés (modifié par cosmogramme)')), + 'BOITE_PANIER_AUTO' => Class_AdminVar_Meta::newOnOff($this->_('Ajouter automatiquement une boîte panier dans la division flottante')), + 'EXTRA_SKIN_PATH' => Class_AdminVar_Meta::newDefault($this->_('Chemin vers les skins personnalisées, relatif à %s', Class_Profil_Skin::EXTRA_PATH)), + 'ENABLE_COLLABORATIVE_BROWSING' => Class_AdminVar_Meta::newOnOff($this->_('Activation de la navigation collaborative')), + 'KOHA_MULTI_SITES' => Class_AdminVar_Meta::newOnOff($this->_('WS KOHA : Reservation d\'exemplaires pour les multi sites')), + + 'TEXT_REPLACEMENTS' => Class_AdminVar_Meta::newRawText($this->_('Remplacement de textes à la volée. <br/>Ex:<br/>Panier;Sélection<br/>Vous avez %%d paniers;Vous avez %%d sélections')), + 'URL_COSMOGRAMME' => Class_AdminVar_Meta::newDefault('')->bePrivate(), + 'PACK_MOBILE' => Class_AdminVar_Meta::newOnOff($this->_('Activation des fonctions avancées du téléphone'))->bePrivate()], + 'catalogue' => [ + 'OAI_SERVER' => Class_AdminVar_Meta::newOnOff($this->_('Activation du serveur OAI: permet le moissonnage des domaines par d\'autres logiciels via OAI'))], + 'newsletter' => [ + 'NEWSLETTER_ID_PROFIL' => Class_AdminVar_Meta::newCombo($this->_('Profil de la page de désinscription<br/>Par défaut : page d\'accueil du portail'), + ['options' => ['selectOptions' => $this->_getProfilsOptions()], + 'renderer' => $this->_getProfilRenderer()]), + 'NEWSLETTER_UNSUBSCRIBE_TEXT' => Class_AdminVar_Meta::newDefault($this->_('Texte de désinscription version texte<br/>Le lien est inséré à la place de {{URL}}<br/>Par défaut : Lien pour se désinscrire de cette lettre d\'information : {{URL}}'), + ['value' => $this->_('Lien pour se désinscrire de cette lettre d\'information : {{URL}}')]), + 'NEWSLETTER_UNSUBSCRIBE_HTML' => Class_AdminVar_Meta::newDefault($this->_('Texte de désinscription version HTML<br/>Le lien de désinscription est appliqué sur tout ce texte<br/>Par défaut : Je ne veux plus recevoir cette lettre d\'information'), + ['value' => $this->_('Je ne veux plus recevoir cette lettre d\'information')])], + 'cms' => ['ARTICLES_LIST_MODE' => Class_AdminVar_Meta::newOnOff($this->_('Le gestionnaire de contenu affiche les articles sous forme de liste paginée au lieu de d\'une arborescence. Cet affichage est adapté lorsque le nombre d\'article devient trop important')), + + 'CMS_FORMULAIRES' => Class_AdminVar_Meta::newOnOff($this->_('Activation des formulaires')), + + 'WORKFLOW' => Class_AdminVar_Meta::newDefault(implode('<br/>', + ['Activer ou désactiver la gestion des validations des articles', + 'Vide ou 0 = Désactivé, 1 = Activé avec les statuts par défaut, JSON = Activé avec des statuts de validation supplémentaire', + 'Exemple JSON :', + '[{"id":10, "label":"À valider niveau 2"}, {"id":11, "label":"À valider niveau 3"}]', + 'Les identifiants 1 à 5 sont réservés']), + ['validate' => 'ZendAfi_Validate_WorkflowVar', + 'after_save' => 'setWorkflowPermissions']), + 'WORKFLOW_TEXT_MAIL_ARTICLE_PENDING' => Class_AdminVar_Meta::newDefault($this->_('Contenu de l\'email de notification d\'article en attente de validation')), + 'WORKFLOW_TEXT_MAIL_ARTICLE_REFUSED' => Class_AdminVar_Meta::newDefault($this->_('Contenu de l\'email de notification de refus d\'un article à valider')), + 'WORKFLOW_TEXT_MAIL_ARTICLE_VALIDATED' => Class_AdminVar_Meta::newDefault($this->_('Contenu de l\'email de notification de validation d\'un article')), + + ], + 'album' => ['ALBUMS_LIST_MODE' => Class_AdminVar_Meta::newOnOff($this->_('Le gestionnaire de contenu affiche les albums sous forme de liste paginée au lieu de d\'une arborescence. Cet affichage est adapté lorsque le nombre d\'albums devient trop important')), + + 'ALBUM_MEDIA_NO_AUTOINDEX_TITLE' => Class_AdminVar_Meta::newOnOff($this->_('Ne pas créer de zone 464 pour les médias dont le titre n\'est pas saisi'))->bePrivate(), + + 'BIBNUM' => Class_AdminVar_Meta::newOnOff($this->_('Activer ou désactiver la bibliothèque numérique'))->bePrivate(), + + 'CVS_BMKEY' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage CVS'))->bePrivate(), + 'CVS_BMID' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage CVS'))->bePrivate(), + 'CVS_SOURCENAME' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage CVS'))->bePrivate(), + 'CVS_SOURCEID' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage CVS'))->bePrivate(), + 'CVS_SOURCEKEY' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage CVS'))->bePrivate(), + 'CVS_SOURCEPASSWORD' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage CVS'))->bePrivate(), + 'CVS_LOGINTEST' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage CVS'))->bePrivate(), + + 'NUMILOG_URL' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Numilog">Numilog</a>'))->bePrivate(), + 'NUMILOG_OAI_URL' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Numilog">Numilog</a>'))->bePrivate(), + 'NUMILOG_OAI_IDBIB' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Numilog">Numilog</a>'))->bePrivate(), + + 'CYBERLIBRIS_URL' => Class_AdminVar_Meta::newDefault($this->_('Adresse du serveur OAI Cyberlibris'))->bePrivate(), + 'CYBERLIBRIS_ID' => Class_AdminVar_Meta::newDefault($this->_('Identifiant SSO Cyberlibris'))->bePrivate(), + + 'ARTE_VOD_LOGIN' => Class_AdminVar_Meta::newDefault($this->_('Login ARTE VOD'))->bePrivate(), + 'ARTE_VOD_KEY' => Class_AdminVar_Meta::newDefault($this->_('Clé ARTE VOD'))->bePrivate(), + 'ARTE_VOD_SSO_KEY' => Class_AdminVar_Meta::newDefault($this->_('Clé ARTE VOD Single Sign-On'))->bePrivate(), + + 'TOUTAPPRENDRE_BIB_ID' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Tout-Apprendre">ToutApprendre</a>'))->bePrivate(), + 'TOUTAPPRENDRE_KEY' => Class_AdminVar_Meta::newDefault($this->_('Paramétrage <a href="http://forge.afi-sa.fr/projects/opac3/wiki/Ressources_externes_enrichissements#Tout-Apprendre">ToutApprendre</a>'))->bePrivate(), + + 'NUMERIQUE_PREMIUM_URL' => Class_AdminVar_Meta::newDefault('')->bePrivate(), + + 'MUSICME_URL' => Class_AdminVar_Meta::newDefault('')->bePrivate(), + 'MUSICME_BIB_ID' => Class_AdminVar_Meta::newDefault('')->bePrivate(), + + 'JAMENDO_CLIENT_ID' => Class_AdminVar_Meta::newDefault($this->_('ID client Jamendo')), + + 'VODECLIC_KEY' => Class_AdminVar_Meta::newDefault($this->_('Clé de sécurité Vodeclic'))->bePrivate(), + 'VODECLIC_ID' => Class_AdminVar_Meta::newDefault($this->_('Identifiant partenaire Vodeclic'))->bePrivate(), + 'VODECLIC_BIB_ID' => Class_AdminVar_Meta::newDefault($this->_('Identifiant code bibliothèque Vodeclic'))->bePrivate(), + + 'DILICOM_PNB' => Class_AdminVar_Meta::newOnOff($this->_('Activation du PNB Dilicom'))->bePrivate(), + 'DILICOM_PNB_GLN_COLLECTIVITE' => Class_AdminVar_Meta::newDefault($this->_('Gln de la collectivité, il est fourni par Dilicom.'))->bePrivate(), + 'DILICOM_PNB_PWD_COLLECTIVITE' => Class_AdminVar_Meta::newDefault($this->_('Mot de passe de la collectivité, il est fourni par Dilicom.'))->bePrivate(), + 'DILICOM_PNB_GLN_CONTRACTOR' => Class_AdminVar_Meta::newDefault($this->_('Contracteur du PNB Dilicom'))->bePrivate(), + 'DILICOM_PNB_SERVER_URL' => Class_AdminVar_Meta::newDefault($this->_('Url du serveur PNB Dilicom'))->bePrivate(), + 'DILICOM_PNB_IP_ADRESSES' => Class_AdminVar_Meta::newMultiInput($this->_('Liste des adresses IP publiques autorisées pour la consultation des documents'), + ['validate' => 'ZendAfi_Validate_Dilicom_IpAdresses'])->bePrivate(), + 'MYCOW_EID' => Class_AdminVar_Meta::newDefault($this->_('Clé d\'identification MyCOW.EU pour le portail. Cette clé doit être fournie par MyCOW.EU. Elle active la ressource numérique dans le portail.'))->bePrivate(), + + 'ONEDTOUCH_URL' => Class_AdminVar_Meta::newDefault($this->_('Adresse du serveur OAI 1D touch'))->bePrivate(), + + 'ORPHEA_URL' => Class_AdminVar_Meta::newDefault($this->_('Adresse du serveur Orphea'))->bePrivate(), + 'ORPHEA_USERNAME' => Class_AdminVar_Meta::newDefault($this->_('Nom de l\'utilisateur Orphea'))->bePrivate(), + 'ORPHEA_PWD' => Class_AdminVar_Meta::newDefault($this->_('Mot de passe de l\'utilisateur Orphea'))->bePrivate(), + 'ORPHEA_LANGUAGE' => Class_AdminVar_Meta::newDefault($this->_('Paramètre permettant de choisir la langue des des ressources. La liste des codes disponibles se trouve à cette adresse http://help.orphea.com/43/gateway/#language_identifiers'))->bePrivate(), + + 'PLANETNEMO' => Class_AdminVar_Meta::newOnOff($this->_('Activation de la ressource numérique PlanetNemo'))->bePrivate(), + + 'LECTURA_DOMAIN' => Class_AdminVar_Meta::newDefault($this->_('Domaine utilisée par le serveur lectura pour authentification')), + 'LEKIOSK_ID' => Class_AdminVar_Meta::newDefault($this->_('Identifiant fournit par lekiosk.com'))->bePrivate(), + + 'KIDILANGUES_KEY' => Class_AdminVar_Meta::newDefault($this->_('Clé d\'encodage Kidilangues pour le portail. Cette clé doit être fournie par Kidilangues.'))->bePrivate(), + 'KIDILANGUES_ID' => Class_AdminVar_Meta::newDefault($this->_('Clé d\'identification Kidilangues pour le portail. Cette clé doit être fournie par Kidilangues.'))->bePrivate(), + 'KIDILANGUES_LOGIN' => Class_AdminVar_Meta::newDefault($this->_('Login du portail fourni par Kidilangues.'))->bePrivate(), + 'KIDILANGUES_PWD' => Class_AdminVar_Meta::newDefault($this->_('Password du portail fourni par Kidilangues.'))->bePrivate(), + + 'PREMIERCHAPITRE_BIB_ID' => Class_Adminvar_Meta::newDefault($this->_('Clé d\'identification Premier-Chapitre de la bibliothèque. Cette clé doit être fournie par Premier-Chapitre.'))->bePrivate(), + 'PREMIERCHAPITRE_BMID' => Class_Adminvar_Meta::newDefault($this->_('Login du portail fourni par Premier-Chapitre.'))->bePrivate(), + 'PREMIERCHAPITRE_BMKEY' => Class_Adminvar_Meta::newDefault($this->_('Password du portail fourni par Premier-Chapitre'))->bePrivate(), + ], + 'users' => ['NDAYS_EXPIRY_NOTICE' => Class_AdminVar_Meta::newDefault($this->_('Prévenir l\'utilisateur xx jour(s) avant l\'expiration de son abonnement (par défaut 30 jours).'), ['value' => 30]), + ] + + ]; + } + + + public function allVarsValues() { + $values=[]; + foreach ($this->knownVars() as $key => $value) { + $values=array_merge($values,$value); + } + return $values; + } - /** - * @return bool - */ - public function isWorkflowEnabled() { - return !in_array(Class_AdminVar::get('WORKFLOW'), ['', '0']); - } + protected function _getProfilsOptions() { + $multioptions = ['' => '']; + $ids = []; + foreach(Class_Profil::getProfilsByBib('ALL', 'ALL') as $opt_group => $profils) { + $options = []; + foreach($profils as $profil) { + $options[$profil->getId()] = $profil->getLibelle(); + $ids[] = $profil->getId(); + } + $multioptions[$opt_group] = $options; + } + return ['label' => 'Profil', + 'multioptions' => $multioptions, + 'registerInArrayValidator' => false, + 'validators' => [['InArray', true, [$ids]]]]; + } - /** - * @return bool - */ - public function isBibNumEnabled() { - return Class_AdminVar::isModuleEnabled('BIBNUM'); - } + protected function _getProfilRenderer() { + return function($value, $view) { + if (!$profil = Class_Profil::find($value)) + return ''; - /** - * @return bool - */ - public function isDilicomPNBEnabled() { - return ('' != Class_AdminVar::get('DILICOM_PNB_GLN_CONTRACTOR')) && ('' != Class_AdminVar::get('DILICOM_PNB_SERVER_URL')); - } + $library = ($profil->isInPortail()) ? + $view->_('Portail') : + $profil->getBibLibelle(); + return $view->escape(implode(' > ', array_merge([$library], $profil->getPathParts()))); + }; + } - /** - * @return bool - */ - public function isJamendoEnabled() { - return ('' != trim(Class_AdminVar::get('JAMENDO_CLIENT_ID'))); - } + /** @category testing */ + public function resetAllVars() { + $this->all_vars = null; + } - /** - * @return bool - */ - public function isFormationEnabled() { - return Class_AdminVar::isModuleEnabled('FORMATIONS'); - } + public function getLangues() { + if (!$langues_value = $this->get('LANGUES')) + return []; - public function isLecturaEnabled() { - return '' != Class_AdminVar::get('LECTURA_DOMAIN'); - } + $langues = array(Class_AdminVar::getDefaultLanguage()); + foreach(explode(';', strtolower($langues_value)) as $langue) + $langues []= trim($langue); + return array_unique(array_filter($langues)); + } - /** - * @return bool - */ - public function isVodeclicEnabled() { - return (('' != Class_AdminVar::get('VODECLIC_KEY')) && ('' != Class_AdminVar::get('VODECLIC_ID')) && ('' != Class_AdminVar::get('VODECLIC_BIB_ID'))); - } + public function getLanguesWithoutDefault() { + return array_diff(Class_AdminVar::getLangues(), array(Class_AdminVar::getDefaultLanguage())); + } - public function isToutApprendreEnabled() { - return (('' != Class_AdminVar::get('TOUTAPPRENDRE_BIB_ID')) && ('' != Class_AdminVar::get('TOUTAPPRENDRE_KEY'))); - } + /** + * @return bool + */ + public function isTranslationEnabled() { + return count(Class_AdminVar::getLangues()) > 1; + } - public function isMyCowEnabled() { - return ('' != Class_AdminVar::get('MYCOW_EID')); - } + /** + * @return bool + */ + public function isModuleEnabled($name) { + if (!$value = Class_AdminVar::get($name)) { + return false; + } - public function isPlanetNemoEnabled() { - return ('' != Class_AdminVar::get('PLANETNEMO')); - } + return (1 == (int)$value); + } - public function isNumeriquePremiumEnabled() { - return '' != Class_AdminVar::get('NUMERIQUE_PREMIUM_URL'); - } + /** + * @return bool + */ + public function isWorkflowEnabled() { + return !in_array(Class_AdminVar::get('WORKFLOW'), ['', '0']); + } - /** - * @return bool - */ - public function isCVSEnabled() { - return (('' != Class_AdminVar::get('CVS_BMKEY')) && ('' != Class_AdminVar::get('CVS_BMID')) && - ('' != Class_AdminVar::get('CVS_SOURCEPASSWORD')) && ('' != Class_AdminVar::get('CVS_SOURCEKEY')) && - ('' != Class_AdminVar::get('CVS_SOURCEID')) && ('' != Class_AdminVar::get('CVS_SOURCENAME')) - ); - } + /** + * @return bool + */ + public function isBibNumEnabled() { + return Class_AdminVar::isModuleEnabled('BIBNUM'); + } - /** - * @return bool - */ - public function isNumilogEnabled() { - return ('' != Class_AdminVar::get('NUMILOG_URL') ); - } + /** + * @return bool + */ + public function isDilicomPNBEnabled() { + return ('' != Class_AdminVar::get('DILICOM_PNB_GLN_CONTRACTOR')) && ('' != Class_AdminVar::get('DILICOM_PNB_SERVER_URL')); + } - /** - * @return bool - */ - public function isCyberlibrisEnabled() { - return ('' != Class_AdminVar::get('CYBERLIBRIS_URL') ); - } + /** + * @return bool + */ + public function isJamendoEnabled() { + return ('' != trim(Class_AdminVar::get('JAMENDO_CLIENT_ID'))); + } - /** - * @return bool - */ - public function isOneDTouchEnabled() { - return ('' != Class_AdminVar::get('ONEDTOUCH_URL') ); - } + /** + * @return bool + */ + public function isFormationEnabled() { + return Class_AdminVar::isModuleEnabled('FORMATIONS'); + } - public function isKidilanguesEnabled() { - return ('' != Class_AdminVar::get('KIDILANGUES_ID')) - && ('' != Class_AdminVar::get('KIDILANGUES_KEY')) - && ('' != Class_AdminVar::get('KIDILANGUES_LOGIN')) - && ('' != Class_AdminVar::get('KIDILANGUES_PWD')); - } + public function isLecturaEnabled() { + return '' != Class_AdminVar::get('LECTURA_DOMAIN'); + } - /** - * @return bool - */ - public function isTypo3Enabled() { - return ('' != Class_AdminVar::get('URL_TYPO3')); - } + /** + * @return bool + */ + public function isVodeclicEnabled() { + return (('' != Class_AdminVar::get('VODECLIC_KEY')) && ('' != Class_AdminVar::get('VODECLIC_ID')) && ('' != Class_AdminVar::get('VODECLIC_BIB_ID'))); + } - /** - * @return bool - */ - public function isOAIServerEnabled() { - return Class_AdminVar::isModuleEnabled('OAI_SERVER'); - } + public function isToutApprendreEnabled() { + return (('' != Class_AdminVar::get('TOUTAPPRENDRE_BIB_ID')) && ('' != Class_AdminVar::get('TOUTAPPRENDRE_KEY'))); + } - /** - * @return bool - */ - public function isPackMobileEnabled() { - return Class_AdminVar::isModuleEnabled('PACK_MOBILE'); - } + public function isMyCowEnabled() { + return ('' != Class_AdminVar::get('MYCOW_EID')); + } - /** - * @return bool - */ - public function isPlanningOuverturesEnabled() { - return Class_AdminVar::isMultimediaEnabled(); - } + public function isPlanetNemoEnabled() { + return ('' != Class_AdminVar::get('PLANETNEMO')); + } - /** - * @return bool - */ - public function isArteVodEnabled() { - return (('' != Class_AdminVar::get('ARTE_VOD_LOGIN')) - && ('' != Class_AdminVar::get('ARTE_VOD_KEY')) - && ('' != Class_AdminVar::get('ARTE_VOD_SSO_KEY'))); - } + public function isNumeriquePremiumEnabled() { + return '' != Class_AdminVar::get('NUMERIQUE_PREMIUM_URL'); + } - /** - * @return bool - */ - public function isMusicMeEnabled() { - return ('' != Class_AdminVar::get('MUSICME_URL')); - } + /** + * @return bool + */ + public function isCVSEnabled() { + return (('' != Class_AdminVar::get('CVS_BMKEY')) && ('' != Class_AdminVar::get('CVS_BMID')) && + ('' != Class_AdminVar::get('CVS_SOURCEPASSWORD')) && ('' != Class_AdminVar::get('CVS_SOURCEKEY')) && + ('' != Class_AdminVar::get('CVS_SOURCEID')) && ('' != Class_AdminVar::get('CVS_SOURCENAME')) + ); + } - /** - * @return bool - */ - public function isMultimediaEnabled() { - return ('' != Class_AdminVar::get('MULTIMEDIA_KEY')); - } + /** + * @return bool + */ + public function isNumilogEnabled() { + return ('' != Class_AdminVar::get('NUMILOG_URL') ); + } - /** - * @return bool - */ - public function isWebkioskEnabled() { - return ('' != Class_AdminVar::get('WEBKIOSK_KEY')); - } + /** + * @return bool + */ + public function isCyberlibrisEnabled() { + return ('' != Class_AdminVar::get('CYBERLIBRIS_URL') ); + } - public function isLeKioskEnabled() { - return '' != Class_AdminVar::get('LEKIOSK_ID'); - } + /** + * @return bool + */ + public function isOneDTouchEnabled() { + return ('' != Class_AdminVar::get('ONEDTOUCH_URL') ); + } - public function isOrpheaEnabled() { - return (('' != Class_AdminVar::get('ORPHEA_URL')) - && ('' != Class_AdminVar::get('ORPHEA_USERNAME')) - && ('' != Class_AdminVar::get('ORPHEA_PWD')) - && ('' != Class_AdminVar::get('ORPHEA_LANGUAGE'))); - } + public function isKidilanguesEnabled() { + return ('' != Class_AdminVar::get('KIDILANGUES_ID')) + && ('' != Class_AdminVar::get('KIDILANGUES_KEY')) + && ('' != Class_AdminVar::get('KIDILANGUES_LOGIN')) + && ('' != Class_AdminVar::get('KIDILANGUES_PWD')); + } - /** - * @return bool - */ - public function isBeforeDateLastFullIntegrationUsers($date) { - if ('' == Class_AdminVar::get('DATE_LAST_FULL_INTEGRATION_USERS')) return true; - return $date >= Class_AdminVar::get('DATE_LAST_FULL_INTEGRATION_USERS'); - } + /** + * @return bool + */ + public function isTypo3Enabled() { + return ('' != Class_AdminVar::get('URL_TYPO3')); + } - public function isBoitePanierAutoEnabled() { - return Class_AdminVar::isModuleEnabled('BOITE_PANIER_AUTO'); - } + /** + * @return bool + */ + public function isOAIServerEnabled() { + return Class_AdminVar::isModuleEnabled('OAI_SERVER'); + } - public function getKnownVarsKeys() { - return array_keys(Class_AdminVar::getKnownVars()); - } + /** + * @return bool + */ + public function isPackMobileEnabled() { + return Class_AdminVar::isModuleEnabled('PACK_MOBILE'); + } - /** @return bool */ - public function isCacheEnabled() { - return Class_AdminVar::isModuleEnabled('CACHE_ACTIF'); - } + /** + * @return bool + */ + public function isPlanningOuverturesEnabled() { + return Class_AdminVar::isMultimediaEnabled(); + } - /** @return bool */ - public function isCmsFormulairesEnabled() { - return Class_AdminVar::isModuleEnabled('CMS_FORMULAIRES'); - } + /** + * @return bool + */ + public function isArteVodEnabled() { + return (('' != Class_AdminVar::get('ARTE_VOD_LOGIN')) + && ('' != Class_AdminVar::get('ARTE_VOD_KEY')) + && ('' != Class_AdminVar::get('ARTE_VOD_SSO_KEY'))); + } - /** @return bool */ - public function getGoogleAnalyticsId() { - $script = Class_AdminVar::get('JS_STAT'); - preg_match_all("/setAccount[\', \n\t]+\'([^\']+)\'/i", $script, $matches); - return isset($matches[1][0]) ? $matches[1][0] : ''; - } + /** + * @return bool + */ + public function isMusicMeEnabled() { + return ('' != Class_AdminVar::get('MUSICME_URL')); + } - /** @return string */ - public function getNomDomaine() { - $domaine = trim(Class_AdminVar::get('NOM_DOMAINE')); - return $domaine ? $domaine : $_SERVER['SERVER_NAME']; - } + /** + * @return bool + */ + public function isMultimediaEnabled() { + return ('' != Class_AdminVar::get('MULTIMEDIA_KEY')); + } - /** - * @return bool - */ - public function isEnregUtilAllowed() { - return !Class_AdminVar::isModuleEnabled('INTERDIRE_ENREG_UTIL'); - } + /** + * @return bool + */ + public function isWebkioskEnabled() { + return ('' != Class_AdminVar::get('WEBKIOSK_KEY')); + } - /** - * @return bool - */ - public function isMenuBoiteEnabled() { - return Class_AdminVar::isModuleEnabled('MENU_BOITE'); - } + public function isLeKioskEnabled() { + return '' != Class_AdminVar::get('LEKIOSK_ID'); + } - public function isBlugaEnabled() { - return '' != Class_AdminVar::get('BLUGA_API_KEY'); - } + public function isOrpheaEnabled() { + return (('' != Class_AdminVar::get('ORPHEA_URL')) + && ('' != Class_AdminVar::get('ORPHEA_USERNAME')) + && ('' != Class_AdminVar::get('ORPHEA_PWD')) + && ('' != Class_AdminVar::get('ORPHEA_LANGUAGE'))); + } - public function isAfficherDispoSurRechercheEnabled() { - return Class_AdminVar::isModuleEnabled('AFFICHER_DISPONIBILITE_SUR_RECHERCHE'); - } + /** + * @return bool + */ + public function isBeforeDateLastFullIntegrationUsers($date) { + if ('' == Class_AdminVar::get('DATE_LAST_FULL_INTEGRATION_USERS')) return true; + return $date >= Class_AdminVar::get('DATE_LAST_FULL_INTEGRATION_USERS'); + } - public function getBabelthequeId() { - $mathes = []; - if (preg_match('/bw_([^\.]+)\.js/', (string)Class_AdminVar::get('BABELTHEQUE_JS'), $matches)) - return (int)$matches[1]; - } + public function isBoitePanierAutoEnabled() { + return Class_AdminVar::isModuleEnabled('BOITE_PANIER_AUTO'); + } - public function getChampsFicheUtilisateur() { - return array_filter(explode(';', trim(Class_AdminVar::get('CHAMPS_FICHE_UTILISATEUR')))); - } + public function getKnownVarsKeys() { + return array_keys(Class_AdminVar::allVarsValues()); + } - public function getWorkflowTextMailArticlePending() { - if(!Class_AdminVar::get('WORKFLOW_TEXT_MAIL_ARTICLE_PENDING')) - Class_AdminVar::set('WORKFLOW_TEXT_MAIL_ARTICLE_PENDING', - 'Un nouvel article est à valider. TITRE_ARTICLE URL_ARTICLE' ); + /** @return bool */ + public function isCacheEnabled() { + return Class_AdminVar::isModuleEnabled('CACHE_ACTIF'); + } - return Class_AdminVar::get('WORKFLOW_TEXT_MAIL_ARTICLE_PENDING'); - } + /** @return bool */ + public function isCmsFormulairesEnabled() { + return Class_AdminVar::isModuleEnabled('CMS_FORMULAIRES'); + } - public function getWorkflowTextMailArticleRefused() { - if(!Class_AdminVar::get('WORKFLOW_TEXT_MAIL_ARTICLE_REFUSED')) - Class_AdminVar::set('WORKFLOW_TEXT_MAIL_ARTICLE_REFUSED', - 'L\'article a été refusé.'); - return Class_AdminVar::get('WORKFLOW_TEXT_MAIL_ARTICLE_REFUSED'); - } + /** @return bool */ + public function getGoogleAnalyticsId() { + $script = Class_AdminVar::get('JS_STAT'); + preg_match_all("/setAccount[\', \n\t]+\'([^\']+)\'/i", $script, $matches); + return isset($matches[1][0]) ? $matches[1][0] : ''; + } - public function getWorkflowTextMailArticleValidated() { - if(!Class_AdminVar::get('WORKFLOW_TEXT_MAIL_ARTICLE_VALIDATED')) - Class_AdminVar::set('WORKFLOW_TEXT_MAIL_ARTICLE_VALIDATED', 'L\'article TITRE_ARTICLE a été validé. URL_ARTICLE'); + /** @return string */ + public function getNomDomaine() { + $domaine = trim(Class_AdminVar::get('NOM_DOMAINE')); + return $domaine ? $domaine : $_SERVER['SERVER_NAME']; + } - return Class_AdminVar::get('WORKFLOW_TEXT_MAIL_ARTICLE_VALIDATED'); - } + /** + * @return bool + */ + public function isEnregUtilAllowed() { + return !Class_AdminVar::isModuleEnabled('INTERDIRE_ENREG_UTIL'); + } - public function isArticlesListMode() { - return Class_AdminVar::isModuleEnabled('ARTICLES_LIST_MODE'); - } + /** + * @return bool + */ + public function isMenuBoiteEnabled() { + return Class_AdminVar::isModuleEnabled('MENU_BOITE'); + } - public function getStaticMeta($name) { - $known_vars = Class_AdminVar::getKnownVars(); - return array_key_exists($name, $known_vars) ? - $known_vars[$name] : Class_AdminVar_Meta::newDefault(''); - } + + public function isBlugaEnabled() { + return '' != Class_AdminVar::get('BLUGA_API_KEY'); + } + + + public function isAfficherDispoSurRechercheEnabled() { + return Class_AdminVar::isModuleEnabled('AFFICHER_DISPONIBILITE_SUR_RECHERCHE'); + } + + + public function isAlbumMediaNoAutoindexTitleEnabled() { + return Class_AdminVar::isModuleEnabled('ALBUM_MEDIA_NO_AUTOINDEX_TITLE'); + } + + + public function getBabelthequeId() { + $mathes = []; + if (preg_match('/bw_([^\.]+)\.js/', (string)Class_AdminVar::get('BABELTHEQUE_JS'), $matches)) + return (int)$matches[1]; + } + + + public function getChampsFicheUtilisateur() { + return array_filter(explode(';', trim(Class_AdminVar::get('CHAMPS_FICHE_UTILISATEUR')))); + } + + + public function getWorkflowTextMailArticlePending() { + if(!Class_AdminVar::get('WORKFLOW_TEXT_MAIL_ARTICLE_PENDING')) + Class_AdminVar::set('WORKFLOW_TEXT_MAIL_ARTICLE_PENDING', + 'Un nouvel article est à valider. TITRE_ARTICLE URL_ARTICLE' ); + + return Class_AdminVar::get('WORKFLOW_TEXT_MAIL_ARTICLE_PENDING'); + } + + + public function getWorkflowTextMailArticleRefused() { + if(!Class_AdminVar::get('WORKFLOW_TEXT_MAIL_ARTICLE_REFUSED')) + Class_AdminVar::set('WORKFLOW_TEXT_MAIL_ARTICLE_REFUSED', + 'L\'article a été refusé.'); + + return Class_AdminVar::get('WORKFLOW_TEXT_MAIL_ARTICLE_REFUSED'); + } + + + public function getWorkflowTextMailArticleValidated() { + if(!Class_AdminVar::get('WORKFLOW_TEXT_MAIL_ARTICLE_VALIDATED')) + Class_AdminVar::set('WORKFLOW_TEXT_MAIL_ARTICLE_VALIDATED', 'L\'article TITRE_ARTICLE a été validé. URL_ARTICLE'); + + return Class_AdminVar::get('WORKFLOW_TEXT_MAIL_ARTICLE_VALIDATED'); + } + + + public function isArticlesListMode() { + return Class_AdminVar::isModuleEnabled('ARTICLES_LIST_MODE'); + } + + + public function getStaticMeta($name) { + $known_vars = Class_AdminVar::allVarsValues(); + return array_key_exists($name, $known_vars) ? + $known_vars[$name] : Class_AdminVar_Meta::newDefault(''); + } } class Class_AdminVar extends Storm_Model_Abstract { - protected $_table_name = 'bib_admin_var'; - protected $_table_primary = 'CLEF'; - protected $_loader_class = 'Class_AdminVarLoader'; + protected $_table_name = 'bib_admin_var'; + protected $_table_primary = 'CLEF'; + protected $_loader_class = 'Class_AdminVarLoader'; + + protected $_fixed_id = true; + - protected $_fixed_id = true; + public function getValeur() { + return stripslashes($this->_get('valeur')); + } - public function getValeur() { - return stripslashes($this->_get('valeur')); - } + public function getMeta() { + return $this->getLoader()->getStaticMeta($this->getClef()); + } - public function getMeta() { - return $this->getLoader()->getStaticMeta($this->getClef()); - } + public function getType() { + return $this->getMeta()->getType(); + } - public function getType() { - return $this->getMeta()->getType(); - } + public function getDescription() { + return $this->getMeta()->getDescription(); + } - public function getDescription() { - return $this->getMeta()->getDescription(); - } + public function isOnOff() { + return $this->getMeta()->isOnOff(); + } - public function isOnOff() { - return $this->getMeta()->isOnOff(); - } + public function isMultiInput() { + return $this->getMeta()->isMultiInput(); + } - public function isMultiInput() { - return $this->getMeta()->isMultiInput(); - } + public function isRawText() { + return $this->getMeta()->isRawText(); + } - public function isRawText() { - return $this->getMeta()->isRawText(); - } + public function isCombo() { + return $this->getMeta()->isCombo(); + } - public function isCombo() { - return $this->getMeta()->isCombo(); - } + public function validate() { + $this->getMeta()->validate($this); + } - public function validate() { - $this->getMeta()->validate($this); - } + public function afterSave() { + $this->getMeta()->afterSave($this); + } - public function afterSave() { - $this->getMeta()->afterSave($this); - } + public function getForm() { + return $this->getMeta()->getForm($this); + } - public function getForm() { - return $this->getMeta()->getForm($this); - } + public function getRenderer() { + return $this->getMeta()->getRenderer(); + } - public function getRenderer() { - return $this->getMeta()->getRenderer(); - } + public function setWorkflowPermissions() { + $statuses = json_decode($this->getValeur()); + if (!is_array($statuses)) { + Class_Permission::cleanDynamicWorkflow(); + return; + } + $ids = []; + $sorting = 2; + foreach ($statuses as $status) { + if (!$permission = Class_Permission::findDynamicWorkflow($status->id)) + $permission = Class_Permission::newDynamicWorkflow($status->id); - public function setWorkflowPermissions() { - $statuses = json_decode($this->getValeur()); - if (!is_array($statuses)) { - Class_Permission::cleanDynamicWorkflow(); - return; - } + $permission + ->setDescription($status->label) + ->setSorting($sorting) + ->save(); + $ids[] = $permission->getId(); + ++$sorting; + } - $ids = []; - $sorting = 2; - foreach ($statuses as $status) { - if (!$permission = Class_Permission::findDynamicWorkflow($status->id)) - $permission = Class_Permission::newDynamicWorkflow($status->id); + Class_Permission::cleanDynamicWorkflow($ids); + } - $permission - ->setDescription($status->label) - ->setSorting($sorting) - ->save(); - $ids[] = $permission->getId(); - ++$sorting; - } - Class_Permission::cleanDynamicWorkflow($ids); - } + public function getPreviousValue() { + return isset($this->_attributes_in_db['valeur']) ? + $this->_attributes_in_db['valeur'] : ''; + } - public function getPreviousValue() { - return isset($this->_attributes_in_db['valeur']) ? - $this->_attributes_in_db['valeur'] : ''; - } + public function matchRoleLevel($role_level) { + return ($role_level >= $this->getMeta()->getAttribute('role_level', ZendAfi_Acl_AdminControllerRoles::SUPER_ADMIN)); + } } ?> \ No newline at end of file