diff --git a/mod.php b/mod.php index 62edac7c..792efbb0 100644 --- a/mod.php +++ b/mod.php @@ -374,21 +374,36 @@ $query->bindValue(':theme', $_theme); $query->execute() or error(db_error($query)); + $result = true; $body = ''; if(isset($theme['install_callback'])) { $ret = $theme['install_callback']($theme['config']); - if($ret && !empty($ret)) + if($ret && !empty($ret)) { + if(is_array($ret) && count($ret) == 2) { + $result = $ret[0]; + $ret = $ret[1]; + } $body .= '
Successfully installed and built theme.
' . - ''; + + if($result) { + $body .= 'Successfully installed and built theme.
'; + } else { + // install failed + $query = prepare("DELETE FROM `theme_settings` WHERE `theme` = :theme"); + $query->bindValue(':theme', $_theme); + $query->execute() or error(db_error($query)); + } + + $body .= ''; // Build themes rebuildThemes('all'); echo Element('page.html', Array( 'config'=>$config, - 'title'=>'Installed "' . utf8tohtml($theme['name']) . '"', + 'title'=>($result ? 'Installed "' . utf8tohtml($theme['name']) . '"' : 'Installation failed!'), 'body'=>$body, 'mod'=>true ) diff --git a/templates/themes/categories/info.php b/templates/themes/categories/info.php index 0090f39d..108cc254 100644 --- a/templates/themes/categories/info.php +++ b/templates/themes/categories/info.php @@ -27,4 +27,16 @@ Requires $config[\'boards\'] and $config[\'categories\'].'; // Unique function name for building everything $theme['build_function'] = 'categories_build'; + + $theme['install_callback'] = 'categories_install'; + if(!function_exists('categories_install')) { + function categories_install($settings) { + global $config; + + if(!isset($config['boards']) || !isset($config['categories'])) { + return Array(false, '