Revision 2098
Added by darkviper almost 11 years ago
uninstall.php | ||
---|---|---|
17 | 17 |
|
18 | 18 |
// Setup admin object |
19 | 19 |
require('../../config.php'); |
20 |
require_once(WB_PATH.'/framework/class.admin.php'); |
|
20 |
$oDb = WbDatabase::getInstance(); |
|
21 |
$oTrans = Translate::getInstance(); |
|
22 |
$oTrans->enableAddon('admin\\addons'); |
|
21 | 23 |
// suppress to print the header, so no new FTAN will be set |
22 | 24 |
$admin = new admin('Addons', 'templates_uninstall', false); |
23 | 25 |
if( !$admin->checkFTAN() ) |
24 | 26 |
{ |
25 | 27 |
$admin->print_header(); |
26 |
$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
|
|
28 |
$admin->print_error($oTrans->MESSAGE_GENERIC_SECURITY_ACCESS);
|
|
27 | 29 |
} |
28 | 30 |
// After check print the header |
29 | 31 |
$admin->print_header(); |
30 | 32 |
if(!isset($_POST['file']) OR $_POST['file'] == "") { |
31 |
$admin->print_error($MESSAGE['GENERIC_FORGOT_OPTIONS']);
|
|
33 |
$admin->print_error($oTrans->MESSAGE_GENERIC_FORGOT_OPTIONS);
|
|
32 | 34 |
} else { |
33 | 35 |
$file = preg_replace('/[^a-z0-9_-]/i', "", $_POST['file']); // fix secunia 2010-92-2 |
34 | 36 |
} |
35 | 37 |
|
36 | 38 |
// Check if the template exists |
37 | 39 |
if(!is_dir(WB_PATH.'/templates/'.$file)) { |
38 |
$admin->print_error($MESSAGE['GENERIC_NOT_INSTALLED']);
|
|
40 |
$admin->print_error($oTrans->MESSAGE_GENERIC_NOT_INSTALLED);
|
|
39 | 41 |
} |
40 | 42 |
|
41 | 43 |
// Check if the template exists |
42 | 44 |
if(!is_readable(WB_PATH.'/templates/'.$file)) { |
43 |
$admin->print_error($MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES']);
|
|
45 |
$admin->print_error($oTrans->MESSAGE_ADMIN_INSUFFICIENT_PRIVELLIGES);
|
|
44 | 46 |
} |
45 | 47 |
|
46 | 48 |
// Check if user selected template |
... | ... | |
62 | 64 |
// Include the WB functions file |
63 | 65 |
require_once(WB_PATH.'/framework/functions.php'); |
64 | 66 |
if (!function_exists("replace_all")) { |
65 |
function replace_all ($aStr = "", &$aArray ) { |
|
66 |
foreach($aArray as $k=>$v) $aStr = str_replace("{{".$k."}}", $v, $aStr); |
|
67 |
function replace_all($aStr = "", array $aArray = null ) { |
|
68 |
foreach ($aArray as $k=>$v) { |
|
69 |
$aStr = str_replace("{{".$k."}}", $v, $aStr); |
|
70 |
} |
|
67 | 71 |
return $aStr; |
68 | 72 |
} |
69 | 73 |
} |
... | ... | |
71 | 75 |
/** |
72 | 76 |
* Check if the template is the standard-template or still in use |
73 | 77 |
*/ |
74 |
if (!array_key_exists('CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE', $MESSAGE['GENERIC'] ) )
|
|
75 |
$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = "Can't uninstall this template <b>{{name}}</b> because it's the standardtemplate!";
|
|
76 |
|
|
78 |
$sMsgTpl = (isset($oTrans->MESSAGE_GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE)
|
|
79 |
? $oTrans->MESSAGE_GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE
|
|
80 |
: 'Can\'t uninstall this template <b>{{name}}</b> because it\'s the standardtemplate!'); |
|
77 | 81 |
// check whether the template is used as default wb theme |
78 | 82 |
if($file == DEFAULT_THEME) { |
79 | 83 |
$temp = array ('name' => $file ); |
80 |
$msg = replace_all( $MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'], $temp );
|
|
84 |
$msg = replace_all( $sMsgTpl, $temp );
|
|
81 | 85 |
$admin->print_error( $msg ); |
82 | 86 |
} |
83 | 87 |
|
84 | 88 |
if ($file == DEFAULT_TEMPLATE) { |
85 | 89 |
$temp = array ('name' => $file ); |
86 |
$msg = replace_all( $MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'], $temp );
|
|
90 |
$msg = replace_all( $sMsgTpl, $temp );
|
|
87 | 91 |
$admin->print_error( $msg ); |
88 | 92 |
|
89 | 93 |
} else { |
... | ... | |
91 | 95 |
/** |
92 | 96 |
* Check if the template is still in use by a page ... |
93 | 97 |
*/ |
94 |
$info = $database->query("SELECT page_id, page_title FROM ".TABLE_PREFIX."pages WHERE template='".$file."' order by page_title"); |
|
95 |
|
|
96 |
if ($info->numRows() > 0) { |
|
97 |
/** |
|
98 |
* Template is still in use, so we're collecting the page-titles |
|
99 |
*/ |
|
100 |
|
|
101 |
/** |
|
102 |
* The base-message template-string for the top of the message |
|
103 |
*/ |
|
104 |
if (!array_key_exists("CANNOT_UNINSTALL_IN_USE_TMPL", $MESSAGE['GENERIC'])) { |
|
105 |
$add = $info->numRows() == 1 ? "this page" : "these pages"; |
|
106 |
$msg_template_str = "<br /><br />{{type}} <b>{{type_name}}</b> could not be uninstalled because it is still in use by {{pages}}"; |
|
107 |
$msg_template_str .= ":<br /><i>click for editing.</i><br /><br />"; |
|
108 |
} else { |
|
109 |
$msg_template_str = $MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL']; |
|
110 |
$temp = explode(";",$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES']); |
|
111 |
$add = $info->numRows() == 1 ? $temp[0] : $temp[1]; |
|
112 |
} |
|
113 |
/** |
|
114 |
* The template-string for displaying the Page-Titles ... in this case as a link |
|
115 |
*/ |
|
116 |
$page_template_str = "- <b><a href='../pages/settings.php?page_id={{id}}'>{{title}}</a></b><br />"; |
|
117 |
|
|
118 |
$values = array ('type' => 'Template', 'type_name' => $file, 'pages' => $add); |
|
119 |
$msg = replace_all ( $msg_template_str, $values ); |
|
120 |
|
|
121 |
$page_names = ""; |
|
122 |
|
|
123 |
while ($data = $info->fetchRow() ) { |
|
124 |
|
|
125 |
$page_info = array( |
|
126 |
'id' => $data['page_id'], |
|
127 |
'title' => $data['page_title'] |
|
128 |
); |
|
129 |
|
|
130 |
$page_names .= replace_all ( $page_template_str, $page_info ); |
|
131 |
} |
|
132 |
|
|
133 |
/** |
|
134 |
* Printing out the error-message and die(). |
|
135 |
*/ |
|
136 |
$admin->print_error($MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'].$msg.$page_names); |
|
137 |
} |
|
98 |
$sql = 'SELECT `page_id` `id`, `page_title` `title` FROM `'.$oDb->TablePrefix.'pages` ' |
|
99 |
. 'WHERE `template`=\''.$file.'\' ' |
|
100 |
. 'ORDER BY `page_title`'; |
|
101 |
if (($info = $oDb->doQuery($sql))) { |
|
102 |
if (($iNumberOfRows = $info->numRows())) { |
|
103 |
/** |
|
104 |
* Template is still in use, so we're collecting the page-titles |
|
105 |
* The base-message template-string for the top of the message |
|
106 |
*/ |
|
107 |
if (!isset($oTrans->MESSAGE_GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL)) { |
|
108 |
$add = ($iNumberOfRows == 1 ? 'this page' : 'these pages'); |
|
109 |
$msg_template_str = '<br /><br />{{type}} <b>{{type_name}}</b> could not be uninstalled because it is still in use by {{pages}}'; |
|
110 |
$msg_template_str .= ':<br /><i>click for editing.</i><br /><br />'; |
|
111 |
} else { |
|
112 |
$msg_template_str = $oTrans->MESSAGE_GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL; |
|
113 |
$temp = explode(";",$oTrans->MESSAGE_GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES); |
|
114 |
$add = $iNumberOfRows == 1 ? $temp[0] : $temp[1]; |
|
115 |
} |
|
116 |
/** |
|
117 |
* The template-string for displaying the Page-Titles ... in this case as a link |
|
118 |
*/ |
|
119 |
$page_template_str = "- <b><a href='../pages/settings.php?page_id={{id}}'>{{title}}</a></b><br />"; |
|
120 |
$values = array ('type' => 'Template', 'type_name' => $file, 'pages' => $add); |
|
121 |
$msg = replace_all($msg_template_str, $values); |
|
122 |
$page_names = ""; |
|
123 |
while ($page_info = $info->fetchRow(MYSQL_ASSOC) ) { |
|
124 |
// $page_info = array( |
|
125 |
// 'id' => $data['page_id'], |
|
126 |
// 'title' => $data['page_title'] |
|
127 |
// ); |
|
128 |
$page_names .= replace_all($page_template_str, $page_info); |
|
129 |
} |
|
130 |
/** |
|
131 |
* Printing out the error-message and die(). |
|
132 |
*/ |
|
133 |
$admin->print_error($oTrans->MESSAGE_GENERIC_CANNOT_UNINSTALL_IN_USE.$msg.$page_names); |
|
134 |
} |
|
135 |
} |
|
138 | 136 |
} |
139 | 137 |
|
140 | 138 |
// Check if we have permissions on the directory |
141 | 139 |
if(!is_writable(WB_PATH.'/templates/'.$file)) { |
142 |
$admin->print_error($MESSAGE['GENERIC_CANNOT_UNINSTALL'].WB_PATH.'/templates/'.$file);
|
|
140 |
$admin->print_error($oTrans->MESSAGE_GENERIC_CANNOT_UNINSTALL.WB_PATH.'/templates/'.$file);
|
|
143 | 141 |
} |
144 | 142 |
|
145 | 143 |
// Try to delete the template dir |
146 | 144 |
if(!rm_full_dir(WB_PATH.'/templates/'.$file)) { |
147 |
$admin->print_error($MESSAGE['GENERIC_CANNOT_UNINSTALL']);
|
|
145 |
$admin->print_error($oTrans->MESSAGE_GENERIC_CANNOT_UNINSTALL);
|
|
148 | 146 |
} else { |
149 | 147 |
// Remove entry from DB |
150 |
$database->query("DELETE FROM ".TABLE_PREFIX."addons WHERE directory = '".$file."' AND type = 'template'"); |
|
148 |
$sql = 'DELETE FROM `'.$oDb->TablePrefix.'addons` ' |
|
149 |
. 'WHERE `directory`=\''.$file.'\' AND `type`=\'template\''; |
|
150 |
$oDb->doQuery($sql); |
|
151 | 151 |
} |
152 |
|
|
153 | 152 |
// Update pages that use this template with default template |
154 | 153 |
// $database = new database(); |
155 |
$database->query("UPDATE ".TABLE_PREFIX."pages SET template = '".DEFAULT_TEMPLATE."' WHERE template = '$file'"); |
|
154 |
$sql = 'UPDATE `'.$oDb->TablePrefix.'pages` ' |
|
155 |
. 'SET `template`=\''.DEFAULT_TEMPLATE.'\' ' |
|
156 |
. 'WHERE `template`=\''.$file.'\''; |
|
157 |
$oDb->doQuery($sql); |
|
156 | 158 |
|
157 | 159 |
// Print success message |
158 |
$admin->print_success($MESSAGE['GENERIC_UNINSTALLED']);
|
|
160 |
$admin->print_success($oTrans->MESSAGE_GENERIC_UNINSTALLED);
|
|
159 | 161 |
|
160 | 162 |
// Print admin footer |
161 | 163 |
$admin->print_footer(); |
Also available in: Unified diff
! activate class Translate for all addons in admin/ (except pages/)
! class.admin >> add translation of the current theme to Translate