diff options
| author | Savetheinternet <savetheinternet@tinyboard.org> | 2011-10-07 00:00:13 +1100 |
|---|---|---|
| committer | Savetheinternet <savetheinternet@tinyboard.org> | 2011-10-07 00:00:13 +1100 |
| commit | 09268e75c807b17b042f85977b2c3cac4ef884b2 (patch) | |
| tree | 255d26ad7f18d6ef147a0df3ad4e3ee2760c019e | |
| parent | 3b7f7afc9737153662feb4e64ee2ea9ebf736caa (diff) | |
theme error handling
| -rw-r--r-- | mod.php | 23 | ||||
| -rw-r--r-- | templates/themes/categories/info.php | 12 | ||||
| -rw-r--r-- | templates/themes/categories/theme.php | 34 |
3 files changed, 50 insertions, 19 deletions
@@ -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 .= '<div style="border:1px dashed maroon;padding:20px;margin:auto;max-width:800px">' . $ret . '</div>'; + } + } + + if($result) { + $body .= '<p style="text-align:center">Successfully installed and built theme.</p>'; + } else { + // install failed + $query = prepare("DELETE FROM `theme_settings` WHERE `theme` = :theme"); + $query->bindValue(':theme', $_theme); + $query->execute() or error(db_error($query)); } - $body .= '<p style="text-align:center">Successfully installed and built theme.</p>' . - '<p style="text-align:center"><a href="?/themes">Go back to themes</a>.</p>'; + + $body .= '<p style="text-align:center"><a href="?/themes">Go back to themes</a>.</p>'; // 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, '<h2>Prerequisites not met!</h2>' . + 'This theme requires $config[\'boards\'] and $config[\'categories\'] to be set.'); + } + } + } ?> diff --git a/templates/themes/categories/theme.php b/templates/themes/categories/theme.php index de1b4a5b..d48c150a 100644 --- a/templates/themes/categories/theme.php +++ b/templates/themes/categories/theme.php @@ -121,27 +121,31 @@ '<li><a class="system" href="javascript:parent.removeFrames()">[Remove Frames]</a></li>' . '</ul></fieldset>'; - for($cat = 0; $cat < count($config['categories']); $cat++) { - $body .= '<fieldset><legend>' . $config['categories'][$cat] . '</legend><ul>'; + if(isset($config['categories'])) { + for($cat = 0; $cat < count($config['categories']); $cat++) { + $body .= '<fieldset><legend>' . $config['categories'][$cat] . '</legend><ul>'; - foreach($config['boards'][$cat] as &$board) { - $body .= '<li><a href="' . - sprintf($config['board_path'], $board) . - '">' . boardTitle($board) . '</a></li>'; - } + foreach($config['boards'][$cat] as &$board) { + $body .= '<li><a href="' . + sprintf($config['board_path'], $board) . + '">' . boardTitle($board) . '</a></li>'; + } - $body .= '</ul></fieldset>'; + $body .= '</ul></fieldset>'; + } } - foreach($config['custom_categories'] as $name => &$group) { - $body .= '<fieldset><legend>' . $name . '</legend><ul>'; + if(isset($config['custom_categories'])) { + foreach($config['custom_categories'] as $name => &$group) { + $body .= '<fieldset><legend>' . $name . '</legend><ul>'; - foreach($group as $title => &$url) { - $body .= '<li><a href="' . $url . - '">' . $title . '</a></li>'; - } + foreach($group as $title => &$url) { + $body .= '<li><a href="' . $url . + '">' . $title . '</a></li>'; + } - $body .= '</ul></fieldset>'; + $body .= '</ul></fieldset>'; + } } // Finish page |
