From 18bf5d14023d5f6ea4d490362b2825f7a71f951e Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 25 Feb 2012 00:30:14 -0800 Subject: [PATCH] theme info (like plugin info) --- include/plugin.php | 74 ++++++++++++++++++++++++++++++++--- mod/admin.php | 4 +- util/strings.php | 2 +- view/theme/darkzero/theme.php | 7 ++++ 4 files changed, 79 insertions(+), 8 deletions(-) diff --git a/include/plugin.php b/include/plugin.php index 85b51edff5..57f77cb570 100755 --- a/include/plugin.php +++ b/include/plugin.php @@ -166,11 +166,6 @@ 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; - - $f = file_get_contents("addon/$plugin/$plugin.php"); - $r = preg_match("|/\*.*\*/|msU", $f, $m); - $info=Array( 'name' => $plugin, 'description' => "", @@ -178,6 +173,11 @@ function get_plugin_info($plugin){ '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 ) { @@ -205,3 +205,67 @@ function get_plugin_info($plugin){ return $info; }} + +/* + * parse theme comment in search of theme infos. + * like + * + * * Name: My Theme + * * Description: My Cool Theme + * * Version: 1.2.3 + * * Author: John + * * Maintainer: Jane + * * + */ + +if (! function_exists('get_theme_info')){ +function get_theme_info($theme){ + $info=Array( + 'name' => $theme, + 'description' => "", + 'author' => array(), + 'maintainer' => array(), + 'version' => "" + ); + + 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]); + 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); + } + } + 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; + } + } + + } + } + + } + return $info; +}} + diff --git a/mod/admin.php b/mod/admin.php index d9864dc6af..9073d079f6 100755 --- a/mod/admin.php +++ b/mod/admin.php @@ -741,7 +741,7 @@ function admin_page_themes(&$a){ '$plugin' => $theme, '$status' => $status, '$action' => $action, - '$info' => array('name' => $theme,'version' => '','description' => ''), + '$info' => get_theme_info($theme), '$function' => 'themes', '$admin_form' => $admin_form, @@ -758,7 +758,7 @@ function admin_page_themes(&$a){ $xthemes = array(); if($themes) { foreach($themes as $th) { - $xthemes[] = array($th['name'],(($th['allowed']) ? "on" : "off"),array('name' => $th['name'],'version' => '','description' => '')); + $xthemes[] = array($th['name'],(($th['allowed']) ? "on" : "off"), get_theme_info($th['name'])); } } diff --git a/util/strings.php b/util/strings.php index 0af841ce38..e70766d863 100755 --- a/util/strings.php +++ b/util/strings.php @@ -207,7 +207,7 @@ $a->strings["Enter full path to php executable"] = ""; $a->strings["Command line PHP"] = ""; $a->strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = ""; $a->strings["This is required for message delivery to work."] = ""; -$a->strings["PHP \"register_argc_argv\"] = ""; +$a->strings["PHP \"register_argc_argv\""] = ""; $a->strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = ""; $a->strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = ""; $a->strings["Generate encryption keys"] = ""; diff --git a/view/theme/darkzero/theme.php b/view/theme/darkzero/theme.php index 5d63583f42..e03bcc7b8a 100755 --- a/view/theme/darkzero/theme.php +++ b/view/theme/darkzero/theme.php @@ -1,4 +1,11 @@ + */ + $a->theme_info = array( 'extends' => 'duepuntozero', );