Author Name * 'description' => Scheme description * 'version' => Scheme version * 'overwrites' => Variables which overwriting custom settings */ use Friendica\Core\PConfig; function get_scheme_info($scheme) { $theme = \get_app()->getCurrentTheme(); $themepath = 'view/theme/' . $theme . '/'; if (empty($scheme)) { $scheme = PConfig::get(local_user(), 'frio', 'scheme', PConfig::get(local_user(), 'frio', 'schema')); } $info = [ 'name' => $scheme, 'description' => '', 'author' => [], 'version' => '', 'overwrites' => [] ]; if (!is_file($themepath . 'scheme/' . $scheme . '.php')) return $info; $f = file_get_contents($themepath . 'scheme/' . $scheme . '.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 != '') { $values = array_map('trim', explode(':', $l, 2)); if (count($values) < 2) { continue; } list($k, $v) = $values; $k = strtolower($k); if ($k == 'author') { $r = preg_match('|([^<]+)<([^>]+)>|', $v, $m); if ($r) { $info['author'][] = ['name' => $m[1], 'link' => $m[2]]; } else { $info['author'][] = ['name' => $v]; } } elseif ($k == 'overwrites') { $theme_settings = explode(',', str_replace(' ', '', $v)); foreach ($theme_settings as $key => $value) { $info['overwrites'][$value] = true; } } else { if (array_key_exists($k, $info)) { $info[$k] = $v; } } } } } return $info; }