du squelette en question dans son paquet.xml * * @param array $themes * @return array */ function zengarden_filtrer_themes_compatibles($themes) { $search = "dist"; if (defined('_ZENGARDEN_FILTRE_THEMES')) { $search = _ZENGARDEN_FILTRE_THEMES; } elseif (defined('_DIR_PLUGIN_ZPIP')) { $search = "zpip"; } elseif (defined('_DIR_PLUGIN_Z')) { $search = "z"; } return zengarden_filtrer_themes_compatibles_avec($themes, $search); } /** * Retourne uniquement les thèmes compatibles avec un type de thème indiqué * @param array $themes * @param string $search Type de thème (ex: dist, spipr, zpip, ...) * @return array */ function zengarden_filtrer_themes_compatibles_avec($themes, $search = "") { if ($search) { foreach ($themes as $k => $theme){ $keep = false; foreach ($theme['utilise'] as $u){ if (strncasecmp($u['nom'], $search, max(strlen($u['nom']), strlen($search))) === 0) { $keep = true; continue; } } if (!$keep) { unset($themes[$k]); } } } return $themes; } function zengarden_T_si_besoin($chaine, $dir, $infos) { $prefixe = $infos['prefix']; if (strpos($chaine,"$prefixe:{$prefixe}_")===0) { $chaine = _T("$dir/lang/paquet-".$chaine); } return $chaine; } /** * Insertion dans le pipeline filter_liste_plugins (SPIP) * * Enlève les thèmes de la liste des plugins dans le privé * * @param array $flux * Le tableau de la liste des plugins * @return array $flux * Le tableau de la liste des plugins modifié */ function zengarden_filtrer_liste_plugins($flux){ foreach($flux['data'] as $d=>$info){ if (!empty($info['categorie']) and $info['categorie'] === 'theme'){ unset($flux['data'][$d]); } } return $flux; } /** * Filtrage des themes dans SVP : il y a un pipeline dedie appele paquet par paquet * (on a plus de categorie en SPIP 4, donc il est pas remonte dans les infos en base) * @param $flux * @return mixed */ function zengarden_svp_afficher_paquet($flux) { static $paquet_themes; if (is_null($paquet_themes)) { $paquet_themes = sql_allfetsel('id_paquet', 'spip_paquets', "prefixe LIKE ".sql_quote('THEME_%') . ' OR prefixe LIKE '.sql_quote('DIST_THEME_%')); $paquet_themes = array_column($paquet_themes, 'id_paquet'); } if (in_array($flux['args']['id_paquet'], $paquet_themes)) { $flux['data'] = false; } return $flux; } /** * Afficher les auteurs ou licences * * Vient de plugin.xml ou paquet.xml * * @param array $donnees * @return string **/ function zengarden_affiche_info($donnees) { if (is_array($donnees) AND count($donnees)) { $liste = array(); foreach ($donnees as $d) { if (!is_array($d)) { $liste[] = $d; } else { $liste[] = $d['nom']; } } return implode(',', $liste); } return ''; }