array(_T('erreur_plugin_fichier_def_incorrect')." : $xml_dir/$xml_type.xml")); } else { // pour arriver ici on l'a vraiment cherche... //debug echo "error: erreur_plugin_fichier_def_absent $xml_dir/$xml_type.xml
"; $arbre = array('erreur' => array(_T('erreur_plugin_fichier_def_absent')." : $xml_dir/$xml_type.xml")); } sktheme_xml_verifie_conformite($xml_dir,$xml_type,$arbre); $ret['nom'] = applatit_arbre($arbre['nom']); $ret['version'] = trim(end($arbre['version'])); if (isset($arbre['auteur'])) $ret['auteur'] = applatit_arbre($arbre['auteur']); if (isset($arbre['description'])) $ret['description'] = applatit_arbre($arbre['description']); if (isset($arbre['lien'])) $ret['lien'] = join(' ',$arbre['lien']); if (isset($arbre['etat'])) $ret['etat'] = trim(end($arbre['etat'])); if (isset($arbre['options'])) $ret['options'] = $arbre['options']; if (isset($arbre['fonctions'])) $ret['fonctions'] = $arbre['fonctions']; $ret['prefix'] = $arbre['prefix']; if (isset($arbre['pipeline'])) $ret['pipeline'] = $arbre['pipeline']; if (isset($arbre['erreur'])) $ret['erreur'] = $arbre['erreur']; if (isset($arbre['squelettes'])) { $ret['squelettes'] = $arbre['squelettes']; } if (isset($arbre['type'])) { $ret['type'] = trim(applatit_arbre($arbre['type'])); } // Compute extra values $etat = 'dev'; if (isset($ret['etat'])) $etat = $ret['etat']; switch ($etat) { case 'experimental': $puce = 'puce-rouge.gif'; $titre_etat = _T('plugin_etat_experimental'); break; case 'test': $puce = 'puce-orange.gif'; $titre_etat = _T('plugin_etat_test'); break; case 'stable': $puce = 'puce-verte.gif'; $titre_etat = _T('plugin_etat_stable'); break; default: $puce = 'puce-poubelle.gif'; $titre_etat = _T('plugin_etat_developpement'); break; } $ret['extra_puce'] = $puce; $ret['extra_img_puce'] = "\"$titre_etat\" "; $ret['extra_titre_etat'] = $titre_etat; } return $ret; } function sktheme_xml_verifie_conformite($xml_dir,$xml_type="plugin",&$arbre){ $silence = false; if (isset($arbre[$xml_type])&&is_array($arbre[$xml_type])) $arbre = end($arbre[$xml_type]); // derniere def xml_type else{ $arbre = array('erreur' => array(_T('erreur_plugin_tag_plugin_absent')." : $xml_dir/plugin.xml")); $silence = true; } // verification de la conformite du plugin avec quelques // precautions elementaires if (!isset($arbre['nom'])){ if (!$silence) $arbre['erreur'][] = _T('erreur_plugin_nom_manquant'); $arbre['nom'] = array(""); } if (!isset($arbre['version'])){ if (!$silence) $arbre['erreur'][] = _T('erreur_plugin_version_manquant'); $arbre['version'] = array(""); } if (!isset($arbre['prefix'])){ if (!$silence) $arbre['erreur'][] = _T('erreur_plugin_prefix_manquant'); $arbre['prefix'] = array(""); } else{ $prefix = ""; $prefix = trim(end($arbre['prefix'])); if (isset($arbre['etat'])){ $etat = trim(end($arbre['etat'])); if (!preg_match(',^(dev|experimental|test|stable)$,',$etat)) $arbre['erreur'][] = _T('erreur_plugin_etat_inconnu')." : $etat"; } if (isset($arbre['options'])){ foreach($arbre['options'] as $optfile){ $optfile = trim($optfile); if (!@is_readable(_DIR_PLUGINS."$xml_dir/$optfile")) if (!$silence) $arbre['erreur'][] = _T('erreur_plugin_fichier_absent')." : $optfile"; } } if (isset($arbre['fonctions'])){ foreach($arbre['fonctions'] as $optfile){ $optfile = trim($optfile); if (!@is_readable(_DIR_PLUGINS."$xml_dir/$optfile")) if (!$silence) $arbre['erreur'][] = _T('erreur_plugin_fichier_absent')." : $optfile"; } } $fonctions = array(); if (isset($arbre['fonctions'])) $fonctions = $arbres['fonctions']; $liste_methodes_reservees = array('__construct','__destruct','plugin','install','uninstall',strtolower($prefix)); if (is_array($arbre['pipeline'])){ foreach($arbre['pipeline'] as $pipe){ $nom = trim(end($pipe['nom'])); if (isset($pipe['action'])) $action = trim(end($pipe['action'])); else $action = $nom; // verif que la methode a un nom autorise if (in_array(strtolower($action),$liste_methodes_reservees)){ if (!$silence) $arbre['erreur'][] = _T("erreur_plugin_nom_fonction_interdit")." : $action"; } else{ // verif que le fichier de def est bien present if (isset($pipe['inclure'])){ $inclure = _DIR_PLUGINS."$xml_dir/".end($pipe['inclure']); if (!@is_readable($inclure)) if (!$silence) $arbre['erreur'][] = _T('erreur_plugin_fichier_absent')." : $inclure"; } } } } } } ?>