diff options
Diffstat (limited to 'include/plugin.php')
-rwxr-xr-x | include/plugin.php | 77 |
1 files changed, 74 insertions, 3 deletions
diff --git a/include/plugin.php b/include/plugin.php index 85b51edff..8280b1022 100755 --- a/include/plugin.php +++ b/include/plugin.php @@ -166,17 +166,80 @@ function call_hooks($name, &$data = null) { if (! function_exists('get_plugin_info')){ function get_plugin_info($plugin){ - if (!is_file("addon/$plugin/$plugin.php")) return false; + $info=Array( + 'name' => $plugin, + 'description' => "", + 'author' => array(), + 'version' => "" + ); + + if (!is_file("addon/$plugin/$plugin.php")) return $info; $f = file_get_contents("addon/$plugin/$plugin.php"); $r = preg_match("|/\*.*\*/|msU", $f, $m); + if ($r){ + $ll = explode("\n", $m[0]); + foreach( $ll as $l ) { + $l = trim($l,"\t\n\r */"); + if ($l!=""){ + list($k,$v) = array_map("trim", explode(":",$l,2)); + $k= strtolower($k); + if ($k=="author"){ + $r=preg_match("|([^<]+)<([^>]+)>|", $v, $m); + if ($r) { + $info['author'][] = array('name'=>$m[1], 'link'=>$m[2]); + } else { + $info['author'][] = array('name'=>$v); + } + } else { + if (array_key_exists($k,$info)){ + $info[$k]=$v; + } + } + + } + } + + } + return $info; +}} + + +/* + * parse theme comment in search of theme infos. + * like + * + * * Name: My Theme + * * Description: My Cool Theme + * * Version: 1.2.3 + * * Author: John <profile url> + * * Maintainer: Jane <profile url> + * * + */ + +if (! function_exists('get_theme_info')){ +function get_theme_info($theme){ $info=Array( - 'name' => $plugin, + 'name' => $theme, 'description' => "", 'author' => array(), - 'version' => "" + 'maintainer' => array(), + 'version' => "", + 'experimental' => false, + 'unsupported' => false ); + + if(file_exists("view/theme/$theme/experimental")) + $info['experimental'] = true; + if(file_exists("view/theme/$theme/unsupported")) + $info['unsupported'] = true; + + if (!is_file("view/theme/$theme/theme.php")) return $info; + + $f = file_get_contents("view/theme/$theme/theme.php"); + $r = preg_match("|/\*.*\*/|msU", $f, $m); + if ($r){ $ll = explode("\n", $m[0]); @@ -192,6 +255,14 @@ function get_plugin_info($plugin){ } else { $info['author'][] = array('name'=>$v); } + } + elseif ($k=="maintainer"){ + $r=preg_match("|([^<]+)<([^>]+)>|", $v, $m); + if ($r) { + $info['maintainer'][] = array('name'=>$m[1], 'link'=>$m[2]); + } else { + $info['maintainer'][] = array('name'=>$v); + } } else { if (array_key_exists($k,$info)){ $info[$k]=$v; |