Browse Source

allow themes to use plugin hooks

tags/3.2
Zach Prezkuta 7 years ago
parent
commit
439974a5d5
2 changed files with 46 additions and 2 deletions
  1. +40
    -0
      include/plugin.php
  2. +6
    -2
      mod/admin.php

+ 40
- 0
include/plugin.php View File

@@ -162,6 +162,10 @@ function call_hooks($name, &$data = null) {

if((is_array($a->hooks)) && (array_key_exists($name,$a->hooks))) {
foreach($a->hooks[$name] as $hook) {
// Don't run a theme's hook if the user isn't using the theme
if(strpos($hook[0], 'view/theme/') !== false && strpos($hook[0], 'view/theme/'.current_theme()) === false)
continue;

@include_once($hook[0]);
if(function_exists($hook[1])) {
$func = $hook[1];
@@ -318,6 +322,42 @@ function get_theme_screenshot($theme) {
return($a->get_baseurl() . '/images/blank.png');
}

// install and uninstall theme
if (! function_exists('uninstall_theme')){
function uninstall_theme($theme){
logger("Addons: uninstalling theme " . $theme);
@include_once("view/theme/$theme/theme.php");
if(function_exists("{$theme}_uninstall")) {
$func = "{$theme}_uninstall";
$func();
}
}}

if (! function_exists('install_theme')){
function install_theme($theme) {
// silently fail if theme was removed

if(! file_exists("view/theme/$theme/theme.php"))
return false;

logger("Addons: installing theme $theme");

@include_once("view/theme/$theme/theme.php");

if(function_exists("{$theme}_install")) {
$func = "{$theme}_install";
$func();
return true;
}
else {
logger("Addons: FAILED installing theme $theme");
return false;
}

}}



// check service_class restrictions. If there are no service_classes defined, everything is allowed.
// if $usage is supplied, we check against a maximum count and return true if the current usage is


+ 6
- 2
mod/admin.php View File

@@ -980,10 +980,14 @@ function admin_page_themes(&$a){

toggle_theme($themes,$theme,$result);
$s = rebuild_theme_table($themes);
if($result)
if($result) {
install_theme($theme);
info( sprintf('Theme %s enabled.',$theme));
else
}
else {
uninstall_theme($theme);
info( sprintf('Theme %s disabled.',$theme));
}

set_config('system','allowed_themes',$s);
goaway($a->get_baseurl(true) . '/admin/themes' );


Loading…
Cancel
Save