Commit 3f416054fe85cc22db86ef2873e7402038bda73a
1 parent
0c0833f3
Working version of Database Upgrade/Backup/Restore tool in new wizArd format
Story ID:1244695. 3.7 Database Upgrade Script Committed by: Paul Barrett Reviewed by: Jarrett Jordaan
Showing
12 changed files
with
535 additions
and
879 deletions
setup/upgrade/index.php
setup/upgrade/step.php
| 1 | <?php | 1 | <?php |
| 2 | /** | 2 | /** |
| 3 | -* Step . | 3 | +* Step Controller. |
| 4 | * | 4 | * |
| 5 | * KnowledgeTree Community Edition | 5 | * KnowledgeTree Community Edition |
| 6 | * Document Management Made Simple | 6 | * Document Management Made Simple |
| @@ -119,10 +119,10 @@ class Step | @@ -119,10 +119,10 @@ class Step | ||
| 119 | { | 119 | { |
| 120 | // if not authenticated, return to step 1 | 120 | // if not authenticated, return to step 1 |
| 121 | if (!isset($_SESSION['setup_user'])) { | 121 | if (!isset($_SESSION['setup_user'])) { |
| 122 | - header('index.php?step=welcome'); | 122 | + header('Location: index.php?step=welcome'); |
| 123 | exit; | 123 | exit; |
| 124 | } | 124 | } |
| 125 | - | 125 | + |
| 126 | return ''; | 126 | return ''; |
| 127 | } | 127 | } |
| 128 | 128 | ||
| @@ -254,38 +254,31 @@ class Step | @@ -254,38 +254,31 @@ class Step | ||
| 254 | 254 | ||
| 255 | return false; | 255 | return false; |
| 256 | } | 256 | } |
| 257 | - | ||
| 258 | - /** | ||
| 259 | - * Checks if Confirm button has been clicked | ||
| 260 | - * | ||
| 261 | - * @author KnowledgeTree Team | ||
| 262 | - * @param none | ||
| 263 | - * @access public | ||
| 264 | - * @return boolean | ||
| 265 | - */ | 257 | + |
| 258 | + /** | ||
| 259 | + * Checks if Upgrade button has been clicked | ||
| 260 | + * | ||
| 261 | + * @author KnowledgeTree Team | ||
| 262 | + * @param none | ||
| 263 | + * @access public | ||
| 264 | + * @return boolean | ||
| 265 | + */ | ||
| 266 | function upgrade() { | 266 | function upgrade() { |
| 267 | - if(isset($_POST['Upgrade'])) { | ||
| 268 | - return true; | ||
| 269 | - } | ||
| 270 | - | ||
| 271 | - return false; | 267 | + return isset($_POST['Upgrade']); |
| 272 | } | 268 | } |
| 273 | - | ||
| 274 | - /** | ||
| 275 | - * Checks if Confirm button has been clicked | ||
| 276 | - * | ||
| 277 | - * @author KnowledgeTree Team | ||
| 278 | - * @param none | ||
| 279 | - * @access public | ||
| 280 | - * @return boolean | ||
| 281 | - */ | ||
| 282 | - function installer() { | ||
| 283 | - if(isset($_POST['Install'])) { | ||
| 284 | - return true; | ||
| 285 | - } | ||
| 286 | - | ||
| 287 | - return false; | 269 | + |
| 270 | + /** | ||
| 271 | + * Checks if Upgrade button has been clicked | ||
| 272 | + * | ||
| 273 | + * @author KnowledgeTree Team | ||
| 274 | + * @param none | ||
| 275 | + * @access public | ||
| 276 | + * @return boolean | ||
| 277 | + */ | ||
| 278 | + function restore() { | ||
| 279 | + return isset($_POST['Restore']); | ||
| 288 | } | 280 | } |
| 281 | + | ||
| 289 | /** | 282 | /** |
| 290 | * Checks if we are currently in this class step | 283 | * Checks if we are currently in this class step |
| 291 | * | 284 | * |
setup/upgrade/steps/upgradeBackup.php
| 1 | <?php | 1 | <?php |
| 2 | /** | 2 | /** |
| 3 | -* Complete Step Controller. | 3 | +* Backup Step Controller. |
| 4 | * | 4 | * |
| 5 | * KnowledgeTree Community Edition | 5 | * KnowledgeTree Community Edition |
| 6 | * Document Management Made Simple | 6 | * Document Management Made Simple |
| @@ -52,12 +52,9 @@ class upgradeBackup extends Step { | @@ -52,12 +52,9 @@ class upgradeBackup extends Step { | ||
| 52 | * @var object | 52 | * @var object |
| 53 | */ | 53 | */ |
| 54 | private $_dbhandler = null; | 54 | private $_dbhandler = null; |
| 55 | - | ||
| 56 | - private $privileges_check = 'tick'; | ||
| 57 | - private $database_check = 'tick'; | ||
| 58 | - protected $silent = true; | ||
| 59 | - | ||
| 60 | protected $util = null; | 55 | protected $util = null; |
| 56 | + protected $silent = false; | ||
| 57 | + protected $temp_variables = array(); | ||
| 61 | 58 | ||
| 62 | public function __construct() { | 59 | public function __construct() { |
| 63 | $this->temp_variables = array("step_name"=>"backup", "silent"=>$this->silent); | 60 | $this->temp_variables = array("step_name"=>"backup", "silent"=>$this->silent); |
| @@ -65,7 +62,7 @@ class upgradeBackup extends Step { | @@ -65,7 +62,7 @@ class upgradeBackup extends Step { | ||
| 65 | $this->util = new UpgradeUtil(); | 62 | $this->util = new UpgradeUtil(); |
| 66 | } | 63 | } |
| 67 | 64 | ||
| 68 | - function doStep() { | 65 | + public function doStep() { |
| 69 | parent::doStep(); | 66 | parent::doStep(); |
| 70 | if(!$this->inStep("backup")) { | 67 | if(!$this->inStep("backup")) { |
| 71 | $this->doRun(); | 68 | $this->doRun(); |
| @@ -92,17 +89,21 @@ class upgradeBackup extends Step { | @@ -92,17 +89,21 @@ class upgradeBackup extends Step { | ||
| 92 | else if($this->previous()) { | 89 | else if($this->previous()) { |
| 93 | return 'previous'; | 90 | return 'previous'; |
| 94 | } | 91 | } |
| 92 | + else if ($this->upgrade()) { | ||
| 93 | + header('Location: index.php?step_name=database'); | ||
| 94 | + exit; | ||
| 95 | + } | ||
| 95 | 96 | ||
| 96 | $this->doRun(); | 97 | $this->doRun(); |
| 97 | return 'landing'; | 98 | return 'landing'; |
| 98 | } | 99 | } |
| 99 | 100 | ||
| 100 | - function backupNow() | 101 | + private function backupNow() |
| 101 | { | 102 | { |
| 102 | return isset($_POST['BackupNow']); | 103 | return isset($_POST['BackupNow']); |
| 103 | } | 104 | } |
| 104 | 105 | ||
| 105 | - function doRun($action = null) { | 106 | + private function doRun($action = null) { |
| 106 | $this->temp_variables['action'] = $action; | 107 | $this->temp_variables['action'] = $action; |
| 107 | 108 | ||
| 108 | if (is_null($action) || ($action == 'confirm')) { | 109 | if (is_null($action) || ($action == 'confirm')) { |
| @@ -127,29 +128,7 @@ class upgradeBackup extends Step { | @@ -127,29 +128,7 @@ class upgradeBackup extends Step { | ||
| 127 | private function storeSilent() { | 128 | private function storeSilent() { |
| 128 | } | 129 | } |
| 129 | 130 | ||
| 130 | - /* | ||
| 131 | - // these belong in a shared lib | ||
| 132 | - function set_state($value) | ||
| 133 | -{ | ||
| 134 | - $_SESSION['state'] = $value; | ||
| 135 | -} | ||
| 136 | -function check_state($value, $state='Home') | ||
| 137 | -{ | ||
| 138 | - if ($_SESSION['state'] != $value) | ||
| 139 | - { | ||
| 140 | - ?> | ||
| 141 | - <script type="text/javascript"> | ||
| 142 | - document.location="?go=<?php echo $state;?>"; | ||
| 143 | - </script> | ||
| 144 | - <?php | ||
| 145 | - exit; | ||
| 146 | - } | ||
| 147 | -} | ||
| 148 | -*/ | ||
| 149 | - | ||
| 150 | private function backup() { | 131 | private function backup() { |
| 151 | -// $this->check_state(1); | ||
| 152 | -// $this->set_state(2); | ||
| 153 | $targetfile = $_SESSION['backupFile']; | 132 | $targetfile = $_SESSION['backupFile']; |
| 154 | $stmt = $this->create_backup_stmt($targetfile); | 133 | $stmt = $this->create_backup_stmt($targetfile); |
| 155 | $dir = $stmt['dir']; | 134 | $dir = $stmt['dir']; |
| @@ -163,7 +142,7 @@ function check_state($value, $state='Home') | @@ -163,7 +142,7 @@ function check_state($value, $state='Home') | ||
| 163 | $read = fread($handle, 10240); | 142 | $read = fread($handle, 10240); |
| 164 | pclose($handle); | 143 | pclose($handle); |
| 165 | $_SESSION['backupOutput']=$read; | 144 | $_SESSION['backupOutput']=$read; |
| 166 | - $dir = $this->resolveTempDir(); | 145 | + $dir = $this->util->resolveTempDir(); |
| 167 | $_SESSION['backupFile'] = $stmt['target']; | 146 | $_SESSION['backupFile'] = $stmt['target']; |
| 168 | 147 | ||
| 169 | if (OS_UNIX) { | 148 | if (OS_UNIX) { |
| @@ -177,21 +156,9 @@ function check_state($value, $state='Home') | @@ -177,21 +156,9 @@ function check_state($value, $state='Home') | ||
| 177 | $_SESSION['backupStatus'] = false; | 156 | $_SESSION['backupStatus'] = false; |
| 178 | } | 157 | } |
| 179 | } | 158 | } |
| 180 | - else | ||
| 181 | - { | ||
| 182 | - ?> | ||
| 183 | - <P> | ||
| 184 | - The <i>mysqldump</i> utility was not found in the <?php echo $dir;?> subdirectory. | ||
| 185 | - | ||
| 186 | - <input type=button value="back" onclick="javascript:do_start('welcome')"> | ||
| 187 | - <?php | ||
| 188 | - } | ||
| 189 | } | 159 | } |
| 190 | 160 | ||
| 191 | private function backupDone() { | 161 | private function backupDone() { |
| 192 | -// $this->check_state(2); | ||
| 193 | -// $this->set_state(3); | ||
| 194 | -// title('Backup Status'); | ||
| 195 | $status = $_SESSION['backupStatus']; | 162 | $status = $_SESSION['backupStatus']; |
| 196 | $filename = $_SESSION['backupFile']; | 163 | $filename = $_SESSION['backupFile']; |
| 197 | 164 | ||
| @@ -200,7 +167,7 @@ function check_state($value, $state='Home') | @@ -200,7 +167,7 @@ function check_state($value, $state='Home') | ||
| 200 | if ($status) | 167 | if ($status) |
| 201 | { | 168 | { |
| 202 | $stmt = $this->util->create_restore_stmt($filename); | 169 | $stmt = $this->util->create_restore_stmt($filename); |
| 203 | - $this->temp_variables['display'] = 'The backup file <nobr><i>"<?php echo $filename;?>"</i></nobr> has been created. | 170 | + $this->temp_variables['display'] = 'The backup file <nobr><i>"' . $filename . '"</i></nobr> has been created. |
| 204 | <P> It appears as though the <font color=green>backup has been successful</font>. | 171 | <P> It appears as though the <font color=green>backup has been successful</font>. |
| 205 | <P>'; | 172 | <P>'; |
| 206 | if ($stmt['dir'] != '') | 173 | if ($stmt['dir'] != '') |
| @@ -230,136 +197,78 @@ function check_state($value, $state='Home') | @@ -230,136 +197,78 @@ function check_state($value, $state='Home') | ||
| 230 | else | 197 | else |
| 231 | { | 198 | { |
| 232 | $this->temp_variables['display'] .= 'It appears as though <font color=red>the backup process has failed</font>.<P></P> Unfortunately, it is difficult to diagnose these problems automatically | 199 | $this->temp_variables['display'] .= 'It appears as though <font color=red>the backup process has failed</font>.<P></P> Unfortunately, it is difficult to diagnose these problems automatically |
| 233 | - and would recommend that you try to do the backup process manually. | ||
| 234 | - <P> | ||
| 235 | - We appologise for the inconvenience. | ||
| 236 | - <P> | ||
| 237 | - <table bgcolor="lightgrey"> | ||
| 238 | - <tr> | ||
| 239 | - <td>' . $_SESSION['backupOutput'] . '</table>'; | 200 | + and would recommend that you try to do the backup process manually. |
| 201 | + <P> | ||
| 202 | + We appologise for the inconvenience. | ||
| 203 | + <P> | ||
| 204 | + <table bgcolor="lightgrey"> | ||
| 205 | + <tr> | ||
| 206 | + <td>' . $_SESSION['backupOutput'] . '</table>'; | ||
| 240 | } | 207 | } |
| 241 | -} | ||
| 242 | - | ||
| 243 | -function create_backup_stmt($targetfile=null) | ||
| 244 | -{ | ||
| 245 | - $oKTConfig =& KTConfig::getSingleton(); | ||
| 246 | - | ||
| 247 | - $adminUser = $oKTConfig->get('db/dbAdminUser'); | ||
| 248 | - $adminPwd = $oKTConfig->get('db/dbAdminPass'); | ||
| 249 | - $dbHost = $oKTConfig->get('db/dbHost'); | ||
| 250 | - $dbName = $oKTConfig->get('db/dbName'); | ||
| 251 | - | ||
| 252 | - $dbPort = trim($oKTConfig->get('db/dbPort')); | ||
| 253 | - if (empty($dbPort) || $dbPort=='default') $dbPort = get_cfg_var('mysql.default_port'); | ||
| 254 | - if (empty($dbPort)) $dbPort='3306'; | ||
| 255 | - $dbSocket = trim($oKTConfig->get('db/dbSocket')); | ||
| 256 | - if (empty($dbSocket) || $dbSocket=='default') $dbSocket = get_cfg_var('mysql.default_socket'); | ||
| 257 | - if (empty($dbSocket)) $dbSocket='../tmp/mysql.sock'; | ||
| 258 | - | ||
| 259 | - $date=date('Y-m-d-H-i-s'); | ||
| 260 | - | ||
| 261 | - $dir=$this->resolveMysqlDir(); | ||
| 262 | - | ||
| 263 | - $info['dir']=$dir; | ||
| 264 | - | ||
| 265 | - $prefix=''; | ||
| 266 | - if (OS_UNIX) | ||
| 267 | - { | ||
| 268 | - $prefix .= "./"; | ||
| 269 | - } | ||
| 270 | - | ||
| 271 | - if (@stat($dbSocket) !== false) | ||
| 272 | - { | ||
| 273 | - $mechanism="--socket=\"$dbSocket\""; | ||
| 274 | - } | ||
| 275 | - else | ||
| 276 | - { | ||
| 277 | - $mechanism="--port=\"$dbPort\""; | ||
| 278 | - } | ||
| 279 | - | ||
| 280 | - $tmpdir=$this->resolveTempDir(); | ||
| 281 | - | ||
| 282 | - if (is_null($targetfile)) | ||
| 283 | - { | ||
| 284 | - $targetfile="$tmpdir/kt-backup-$date.sql"; | ||
| 285 | - } | ||
| 286 | - | ||
| 287 | - $stmt = $prefix . "mysqldump --user=\"$adminUser\" -p $mechanism \"$dbName\" > \"$targetfile\""; | ||
| 288 | - $info['display']=$stmt; | ||
| 289 | - $info['target']=$targetfile; | ||
| 290 | - | ||
| 291 | - | ||
| 292 | - $stmt = $prefix. "mysqldump --user=\"$adminUser\" --password=\"$adminPwd\" $mechanism \"$dbName\" > \"$targetfile\""; | ||
| 293 | - $info['cmd']=$stmt; | ||
| 294 | - return $info; | ||
| 295 | -} | ||
| 296 | - | ||
| 297 | -function resolveMysqlDir() | ||
| 298 | -{ | ||
| 299 | - // possibly detect existing installations: | ||
| 300 | - | ||
| 301 | - if (OS_UNIX) | ||
| 302 | - { | ||
| 303 | - $dirs = array('/opt/mysql/bin','/usr/local/mysql/bin'); | ||
| 304 | - $mysqlname ='mysql'; | ||
| 305 | - } | ||
| 306 | - else | ||
| 307 | - { | ||
| 308 | - $dirs = explode(';', $_SERVER['PATH']); | ||
| 309 | - $dirs[] ='c:/Program Files/MySQL/MySQL Server 5.0/bin'; | ||
| 310 | - $dirs[] = 'c:/program files/ktdms/mysql/bin'; | ||
| 311 | - $mysqlname ='mysql.exe'; | ||
| 312 | - } | ||
| 313 | - | ||
| 314 | - $oKTConfig =& KTConfig::getSingleton(); | ||
| 315 | - $mysqldir = $oKTConfig->get('backup/mysqlDirectory',$mysqldir); | ||
| 316 | - $dirs[] = $mysqldir; | ||
| 317 | - | ||
| 318 | - if (strpos(__FILE__,'knowledgeTree') !== false && strpos(__FILE__,'ktdms') != false) | ||
| 319 | - { | ||
| 320 | - $dirs [] = realpath(dirname($FILE) . '/../../mysql/bin'); | ||
| 321 | } | 208 | } |
| 322 | 209 | ||
| 323 | - foreach($dirs as $dir) | 210 | + private function create_backup_stmt($targetfile=null) |
| 324 | { | 211 | { |
| 325 | - if (is_file($dir . '/' . $mysqlname)) | 212 | + $oKTConfig =& KTConfig::getSingleton(); |
| 213 | + | ||
| 214 | + $adminUser = $oKTConfig->get('db/dbAdminUser'); | ||
| 215 | + $adminPwd = $oKTConfig->get('db/dbAdminPass'); | ||
| 216 | + $dbHost = $oKTConfig->get('db/dbHost'); | ||
| 217 | + $dbName = $oKTConfig->get('db/dbName'); | ||
| 218 | + | ||
| 219 | + $dbPort = trim($oKTConfig->get('db/dbPort')); | ||
| 220 | + if (empty($dbPort) || $dbPort=='default') $dbPort = get_cfg_var('mysql.default_port'); | ||
| 221 | + if (empty($dbPort)) $dbPort='3306'; | ||
| 222 | + $dbSocket = trim($oKTConfig->get('db/dbSocket')); | ||
| 223 | + if (empty($dbSocket) || $dbSocket=='default') $dbSocket = get_cfg_var('mysql.default_socket'); | ||
| 224 | + if (empty($dbSocket)) $dbSocket='../tmp/mysql.sock'; | ||
| 225 | + | ||
| 226 | + $date=date('Y-m-d-H-i-s'); | ||
| 227 | + | ||
| 228 | + $dir=$this->util->resolveMysqlDir(); | ||
| 229 | + | ||
| 230 | + $info['dir']=$dir; | ||
| 231 | + | ||
| 232 | + $prefix=''; | ||
| 233 | + if (OS_UNIX) | ||
| 326 | { | 234 | { |
| 327 | - return $dir; | 235 | + $prefix .= "./"; |
| 328 | } | 236 | } |
| 237 | + | ||
| 238 | + if (@stat($dbSocket) !== false) | ||
| 239 | + { | ||
| 240 | + $mechanism="--socket=\"$dbSocket\""; | ||
| 241 | + } | ||
| 242 | + else | ||
| 243 | + { | ||
| 244 | + $mechanism="--port=\"$dbPort\""; | ||
| 245 | + } | ||
| 246 | + | ||
| 247 | + $tmpdir=$this->util->resolveTempDir(); | ||
| 248 | + | ||
| 249 | + if (is_null($targetfile)) | ||
| 250 | + { | ||
| 251 | + $targetfile="$tmpdir/kt-backup-$date.sql"; | ||
| 252 | + } | ||
| 253 | + | ||
| 254 | + $stmt = $prefix . "mysqldump --user=\"$adminUser\" -p $mechanism \"$dbName\" > \"$targetfile\""; | ||
| 255 | + $info['display']=$stmt; | ||
| 256 | + $info['target']=$targetfile; | ||
| 257 | + | ||
| 258 | + | ||
| 259 | + $stmt = $prefix. "mysqldump --user=\"$adminUser\" --password=\"$adminPwd\" $mechanism \"$dbName\" > \"$targetfile\""; | ||
| 260 | + $info['cmd']=$stmt; | ||
| 261 | + return $info; | ||
| 329 | } | 262 | } |
| 330 | 263 | ||
| 331 | - return ''; | ||
| 332 | -} | ||
| 333 | - | ||
| 334 | -function resolveTempDir() | ||
| 335 | -{ | ||
| 336 | - if (OS_UNIX) { | ||
| 337 | - $dir='/tmp/kt-db-backup'; | ||
| 338 | - } | ||
| 339 | - else { | ||
| 340 | - $dir='c:/kt-db-backup'; | ||
| 341 | - } | ||
| 342 | - $oKTConfig =& KTConfig::getSingleton(); | ||
| 343 | - $dir = $oKTConfig->get('backup/backupDirectory',$dir); | ||
| 344 | - | ||
| 345 | - if (!is_dir($dir)) { | ||
| 346 | - mkdir($dir); | 264 | + private function backupConfirm() |
| 265 | + { | ||
| 266 | + $stmt = $this->create_backup_stmt(); | ||
| 267 | + $_SESSION['backupFile'] = $stmt['target']; | ||
| 268 | + | ||
| 269 | + $dir = $stmt['dir']; | ||
| 270 | + $this->temp_variables['dir'] = $dir; | ||
| 271 | + $this->temp_variables['display'] = $stmt['display']; | ||
| 347 | } | 272 | } |
| 348 | - return $dir; | ||
| 349 | -} | ||
| 350 | - | ||
| 351 | - | ||
| 352 | -function backupConfirm() | ||
| 353 | -{ | ||
| 354 | - $stmt = $this->create_backup_stmt(); | ||
| 355 | - $_SESSION['backupFile'] = $stmt['target']; | ||
| 356 | - | ||
| 357 | - $dir = $stmt['dir']; | ||
| 358 | - $this->temp_variables['dir'] = $dir; | ||
| 359 | - $this->temp_variables['display'] = $stmt['display']; | ||
| 360 | -} | ||
| 361 | - | ||
| 362 | - | ||
| 363 | - | ||
| 364 | } | 273 | } |
| 365 | ?> | 274 | ?> |
| 366 | \ No newline at end of file | 275 | \ No newline at end of file |
setup/upgrade/steps/upgradeComplete.php
| @@ -44,20 +44,20 @@ require '../../config/dmsDefaults.php'; | @@ -44,20 +44,20 @@ require '../../config/dmsDefaults.php'; | ||
| 44 | 44 | ||
| 45 | class upgradeComplete extends Step { | 45 | class upgradeComplete extends Step { |
| 46 | 46 | ||
| 47 | - protected $silent = true; | ||
| 48 | - | ||
| 49 | protected $util = null; | 47 | protected $util = null; |
| 48 | + protected $silent = false; | ||
| 49 | + protected $temp_variables = array(); | ||
| 50 | 50 | ||
| 51 | public function __construct() { | 51 | public function __construct() { |
| 52 | $this->temp_variables = array("step_name"=>"complete", "silent"=>$this->silent); | 52 | $this->temp_variables = array("step_name"=>"complete", "silent"=>$this->silent); |
| 53 | } | 53 | } |
| 54 | 54 | ||
| 55 | - function doStep() { | 55 | + public function doStep() { |
| 56 | $this->doRun(); | 56 | $this->doRun(); |
| 57 | return 'landing'; | 57 | return 'landing'; |
| 58 | } | 58 | } |
| 59 | 59 | ||
| 60 | - function doRun() { | 60 | + private function doRun() { |
| 61 | $this->storeSilent();// Set silent mode variables | 61 | $this->storeSilent();// Set silent mode variables |
| 62 | } | 62 | } |
| 63 | 63 |
setup/upgrade/steps/upgradeDatabase.php
| 1 | <?php | 1 | <?php |
| 2 | /** | 2 | /** |
| 3 | -* Database Step Controller. | 3 | +* Upgrade Step Controller. |
| 4 | * | 4 | * |
| 5 | * KnowledgeTree Community Edition | 5 | * KnowledgeTree Community Edition |
| 6 | * Document Management Made Simple | 6 | * Document Management Made Simple |
| @@ -40,7 +40,6 @@ | @@ -40,7 +40,6 @@ | ||
| 40 | * @version Version 0.1 | 40 | * @version Version 0.1 |
| 41 | */ | 41 | */ |
| 42 | 42 | ||
| 43 | -// include defaults | ||
| 44 | require '../../config/dmsDefaults.php'; | 43 | require '../../config/dmsDefaults.php'; |
| 45 | require_once KT_LIB_DIR . '/config/config.inc.php'; | 44 | require_once KT_LIB_DIR . '/config/config.inc.php'; |
| 46 | require_once KT_LIB_DIR . '/plugins/pluginutil.inc.php'; | 45 | require_once KT_LIB_DIR . '/plugins/pluginutil.inc.php'; |
| @@ -67,105 +66,6 @@ class upgradeDatabase extends Step | @@ -67,105 +66,6 @@ class upgradeDatabase extends Step | ||
| 67 | public $_util = null; | 66 | public $_util = null; |
| 68 | 67 | ||
| 69 | /** | 68 | /** |
| 70 | - * Database type | ||
| 71 | - * | ||
| 72 | - * @author KnowledgeTree Team | ||
| 73 | - * @access private | ||
| 74 | - * @var array | ||
| 75 | - */ | ||
| 76 | - private $dtype = ''; | ||
| 77 | - | ||
| 78 | - /** | ||
| 79 | - * Database types | ||
| 80 | - * | ||
| 81 | - * @author KnowledgeTree Team | ||
| 82 | - * @access private | ||
| 83 | - * @var array | ||
| 84 | - */ | ||
| 85 | - private $dtypes = array(); | ||
| 86 | - | ||
| 87 | - /** | ||
| 88 | - * Database host | ||
| 89 | - * | ||
| 90 | - * @author KnowledgeTree Team | ||
| 91 | - * @access private | ||
| 92 | - * @var string | ||
| 93 | - */ | ||
| 94 | - private $dhost = ''; | ||
| 95 | - | ||
| 96 | - /** | ||
| 97 | - * Database port | ||
| 98 | - * | ||
| 99 | - * @author KnowledgeTree Team | ||
| 100 | - * @access private | ||
| 101 | - * @var string | ||
| 102 | - */ | ||
| 103 | - private $dport = ''; | ||
| 104 | - | ||
| 105 | - /** | ||
| 106 | - * Database name | ||
| 107 | - * | ||
| 108 | - * @author KnowledgeTree Team | ||
| 109 | - * @access private | ||
| 110 | - * @var string | ||
| 111 | - */ | ||
| 112 | - private $dname = ''; | ||
| 113 | - | ||
| 114 | - /** | ||
| 115 | - * Database root username | ||
| 116 | - * | ||
| 117 | - * @author KnowledgeTree Team | ||
| 118 | - * @access private | ||
| 119 | - * @var string | ||
| 120 | - */ | ||
| 121 | - private $duname = ''; | ||
| 122 | - | ||
| 123 | - /** | ||
| 124 | - * Database root password | ||
| 125 | - * | ||
| 126 | - * @author KnowledgeTree Team | ||
| 127 | - * @access private | ||
| 128 | - * @var string | ||
| 129 | - */ | ||
| 130 | - private $dpassword = ''; | ||
| 131 | - | ||
| 132 | - /** | ||
| 133 | - * Database dms username | ||
| 134 | - * | ||
| 135 | - * @author KnowledgeTree Team | ||
| 136 | - * @access private | ||
| 137 | - * @var string | ||
| 138 | - */ | ||
| 139 | - private $dmsname = ''; | ||
| 140 | - | ||
| 141 | - /** | ||
| 142 | - * Database dms password | ||
| 143 | - * | ||
| 144 | - * @author KnowledgeTree Team | ||
| 145 | - * @access private | ||
| 146 | - * @var string | ||
| 147 | - */ | ||
| 148 | - private $dmspassword = ''; | ||
| 149 | - | ||
| 150 | - /** | ||
| 151 | - * Default dms user username | ||
| 152 | - * | ||
| 153 | - * @author KnowledgeTree Team | ||
| 154 | - * @access private | ||
| 155 | - * @var boolean | ||
| 156 | - */ | ||
| 157 | - private $dmsusername = ''; | ||
| 158 | - | ||
| 159 | - /** | ||
| 160 | - * Default dms user password | ||
| 161 | - * | ||
| 162 | - * @author KnowledgeTree Team | ||
| 163 | - * @access private | ||
| 164 | - * @var boolean | ||
| 165 | - */ | ||
| 166 | - private $dmsuserpassword = ''; | ||
| 167 | - | ||
| 168 | - /** | ||
| 169 | * Location of database binaries. | 69 | * Location of database binaries. |
| 170 | * | 70 | * |
| 171 | * @author KnowledgeTree Team | 71 | * @author KnowledgeTree Team |
| @@ -181,25 +81,7 @@ class upgradeDatabase extends Step | @@ -181,25 +81,7 @@ class upgradeDatabase extends Step | ||
| 181 | * @access private | 81 | * @access private |
| 182 | * @var string | 82 | * @var string |
| 183 | */ | 83 | */ |
| 184 | - private $dbbinary = ''; // TODO:multiple databases | ||
| 185 | - | ||
| 186 | - /** | ||
| 187 | - * Database table prefix | ||
| 188 | - * | ||
| 189 | - * @author KnowledgeTree Team | ||
| 190 | - * @access private | ||
| 191 | - * @var string | ||
| 192 | - */ | ||
| 193 | - private $tprefix = ''; | ||
| 194 | - | ||
| 195 | - /** | ||
| 196 | - * Flag to drop database | ||
| 197 | - * | ||
| 198 | - * @author KnowledgeTree Team | ||
| 199 | - * @access private | ||
| 200 | - * @var boolean | ||
| 201 | - */ | ||
| 202 | - private $ddrop = false; | 84 | + private $dbBinary = ''; // TODO:multiple databases |
| 203 | 85 | ||
| 204 | /** | 86 | /** |
| 205 | * List of errors encountered | 87 | * List of errors encountered |
| @@ -228,26 +110,11 @@ class upgradeDatabase extends Step | @@ -228,26 +110,11 @@ class upgradeDatabase extends Step | ||
| 228 | */ | 110 | */ |
| 229 | public $storeInSession = true; | 111 | public $storeInSession = true; |
| 230 | 112 | ||
| 231 | - /** | ||
| 232 | - * Flag if step needs to be upgraded | ||
| 233 | - * | ||
| 234 | - * @author KnowledgeTree Team | ||
| 235 | - * @access public | ||
| 236 | - * @var array | ||
| 237 | - */ | ||
| 238 | - protected $runUpgrade = true; | ||
| 239 | - | ||
| 240 | - /** | ||
| 241 | - * Flag if step needs to run silently | ||
| 242 | - * | ||
| 243 | - * @author KnowledgeTree Team | ||
| 244 | - * @access public | ||
| 245 | - * @var array | ||
| 246 | - */ | ||
| 247 | - protected $silent = true; | 113 | + protected $silent = false; |
| 114 | + protected $temp_variables = array(); | ||
| 248 | 115 | ||
| 249 | /** | 116 | /** |
| 250 | - * Constructs database object | 117 | + * Constructs database upgrade object |
| 251 | * | 118 | * |
| 252 | * @author KnowledgeTree Team | 119 | * @author KnowledgeTree Team |
| 253 | * @access public | 120 | * @access public |
| @@ -272,12 +139,12 @@ class upgradeDatabase extends Step | @@ -272,12 +139,12 @@ class upgradeDatabase extends Step | ||
| 272 | public function doStep() { | 139 | public function doStep() { |
| 273 | parent::doStep(); | 140 | parent::doStep(); |
| 274 | $this->initErrors(); | 141 | $this->initErrors(); |
| 275 | - $this->setDetails(); // Set any posted variables | ||
| 276 | -// if(!$this->inStep("database")) { | ||
| 277 | -// $this->doRun(); | ||
| 278 | -// return 'landing'; | ||
| 279 | -// } | 142 | + if(!$this->inStep("database")) { |
| 143 | + $this->doRun(); | ||
| 144 | + return 'landing'; | ||
| 145 | + } | ||
| 280 | if($this->next()) { | 146 | if($this->next()) { |
| 147 | + $this->doRun('preview'); | ||
| 281 | return 'next'; | 148 | return 'next'; |
| 282 | } else if($this->previous()) { | 149 | } else if($this->previous()) { |
| 283 | return 'previous'; | 150 | return 'previous'; |
| @@ -297,15 +164,15 @@ class upgradeDatabase extends Step | @@ -297,15 +164,15 @@ class upgradeDatabase extends Step | ||
| 297 | return 'landing'; | 164 | return 'landing'; |
| 298 | } | 165 | } |
| 299 | 166 | ||
| 300 | - function confirmUpgrade() { | 167 | + private function confirmUpgrade() { |
| 301 | return isset($_POST['ConfirmUpgrade']); | 168 | return isset($_POST['ConfirmUpgrade']); |
| 302 | } | 169 | } |
| 303 | 170 | ||
| 304 | - function upgrading() { | 171 | + private function upgrading() { |
| 305 | return isset($_POST['RunUpgrade']); | 172 | return isset($_POST['RunUpgrade']); |
| 306 | } | 173 | } |
| 307 | 174 | ||
| 308 | - function doRun($action = null) { | 175 | + private function doRun($action = null) { |
| 309 | $this->readConfig(KTConfig::getConfigFilename()); | 176 | $this->readConfig(KTConfig::getConfigFilename()); |
| 310 | 177 | ||
| 311 | if($this->dbSettings['dbPort'] == '') { | 178 | if($this->dbSettings['dbPort'] == '') { |
| @@ -327,8 +194,7 @@ class upgradeDatabase extends Step | @@ -327,8 +194,7 @@ class upgradeDatabase extends Step | ||
| 327 | } | 194 | } |
| 328 | else if ($action == 'runUpgrade') { | 195 | else if ($action == 'runUpgrade') { |
| 329 | $this->temp_variables['title'] = 'Upgrade In Progress'; | 196 | $this->temp_variables['title'] = 'Upgrade In Progress'; |
| 330 | - if (!$this->upgrade()) { | ||
| 331 | -// $this->temp_variables['upgradeTable'] = '';//$this->upgradeErrors(); | 197 | + if (!$this->upgradeDatabase()) { |
| 332 | return false; | 198 | return false; |
| 333 | } | 199 | } |
| 334 | } | 200 | } |
| @@ -336,7 +202,7 @@ class upgradeDatabase extends Step | @@ -336,7 +202,7 @@ class upgradeDatabase extends Step | ||
| 336 | return true; | 202 | return true; |
| 337 | } | 203 | } |
| 338 | 204 | ||
| 339 | - public function generateUpgradeTable() { | 205 | + private function generateUpgradeTable() { |
| 340 | global $default; | 206 | global $default; |
| 341 | 207 | ||
| 342 | $this->temp_variables['systemVersion'] = $default->systemVersion; | 208 | $this->temp_variables['systemVersion'] = $default->systemVersion; |
| @@ -367,42 +233,6 @@ class upgradeDatabase extends Step | @@ -367,42 +233,6 @@ class upgradeDatabase extends Step | ||
| 367 | } | 233 | } |
| 368 | 234 | ||
| 369 | /** | 235 | /** |
| 370 | - * Store options | ||
| 371 | - * | ||
| 372 | - * @author KnowledgeTree Team | ||
| 373 | - * @params object SimpleXmlObject | ||
| 374 | - * @access private | ||
| 375 | - * @return void | ||
| 376 | - */ | ||
| 377 | - private function setDetails() { | ||
| 378 | - // create lock file to indicate Upgrade mode | ||
| 379 | - $this->createUpgradeFile(); | ||
| 380 | - } | ||
| 381 | - | ||
| 382 | - /** | ||
| 383 | - * Creates miUpgradeock file so that system knows it is supposed to run an upgrade installation | ||
| 384 | - * | ||
| 385 | - * @author KnowledgeTree Team | ||
| 386 | - * @access private | ||
| 387 | - * @return void | ||
| 388 | - */ | ||
| 389 | - private function createUpgradeFile() { | ||
| 390 | - @touch($this->wizardLocation . DIRECTORY_SEPARATOR . "upgrade.lock"); | ||
| 391 | - } | ||
| 392 | - | ||
| 393 | - /** | ||
| 394 | - * Safer way to return post data | ||
| 395 | - * | ||
| 396 | - * @author KnowledgeTree Team | ||
| 397 | - * @params SimpleXmlObject $simplexml | ||
| 398 | - * @access public | ||
| 399 | - * @return void | ||
| 400 | - */ | ||
| 401 | - public function getPostSafe($key) { | ||
| 402 | - return isset($_POST[$key]) ? $_POST[$key] : ""; | ||
| 403 | - } | ||
| 404 | - | ||
| 405 | - /** | ||
| 406 | * Stores varibles used by template | 236 | * Stores varibles used by template |
| 407 | * | 237 | * |
| 408 | * @author KnowledgeTree Team | 238 | * @author KnowledgeTree Team |
| @@ -455,7 +285,7 @@ class upgradeDatabase extends Step | @@ -455,7 +285,7 @@ class upgradeDatabase extends Step | ||
| 455 | $this->temp_variables['dbSettings'] = $this->dbSettings; | 285 | $this->temp_variables['dbSettings'] = $this->dbSettings; |
| 456 | } | 286 | } |
| 457 | 287 | ||
| 458 | - function upgradeConfirm() | 288 | + private function upgradeConfirm() |
| 459 | { | 289 | { |
| 460 | if (!isset($_SESSION['backupStatus']) || $_SESSION['backupStatus'] === false) { | 290 | if (!isset($_SESSION['backupStatus']) || $_SESSION['backupStatus'] === false) { |
| 461 | $this->temp_variables['backupStatus'] = false; | 291 | $this->temp_variables['backupStatus'] = false; |
| @@ -465,158 +295,141 @@ class upgradeDatabase extends Step | @@ -465,158 +295,141 @@ class upgradeDatabase extends Step | ||
| 465 | } | 295 | } |
| 466 | } | 296 | } |
| 467 | 297 | ||
| 468 | - | ||
| 469 | -function upgrade() | ||
| 470 | -{ | ||
| 471 | - global $default; | 298 | + private function upgradeDatabase() |
| 299 | + { | ||
| 300 | + global $default; | ||
| 301 | + | ||
| 302 | + $this->temp_variables['detail'] = '<p>The table below describes the upgrades that have occurred to | ||
| 303 | + upgrade your KnowledgeTree installation to <strong>' . $default->systemVersion . '</strong>'; | ||
| 304 | + | ||
| 305 | + $pre_res = $this->performPreUpgradeActions(); | ||
| 306 | + if (PEAR::isError($pre_res)) { | ||
| 307 | + $this->temp_variables['preUpgrade'] = '<font color="red">Pre-Upgrade actions failed.</font>'; | ||
| 308 | + } | ||
| 309 | + else { | ||
| 310 | + $this->temp_variables['preUpgrade'] = '<font color="green">Pre-Upgrade actions succeeded.</font>'; | ||
| 472 | 311 | ||
| 473 | - $this->temp_variables['detail'] = '<p>The table below describes the upgrades that have occurred to | ||
| 474 | - upgrade your KnowledgeTree installation to <strong>' . $default->systemVersion . '</strong>'; | ||
| 475 | -?> | ||
| 476 | - <p> | ||
| 477 | - | ||
| 478 | -<?php | ||
| 479 | - | ||
| 480 | - $pre_res = $this->performPreUpgradeActions(); | ||
| 481 | - if (PEAR::isError($pre_res)) { | ||
| 482 | - $this->temp_variables['preUpgrade'] = '<font color="red">Pre-Upgrade actions failed.</font>'; | ||
| 483 | - } | ||
| 484 | - else { | ||
| 485 | - $this->temp_variables['preUpgrade'] = '<font color="green">Pre-Upgrade actions succeeded.</font>'; | ||
| 486 | - | 312 | + } |
| 313 | + | ||
| 314 | + $res = $this->performAllUpgrades(); | ||
| 315 | + if (PEAR::isError($res) || PEAR::isError($pres)) { | ||
| 316 | + $this->temp_variables['upgradeStatus'] = '<font color="red">Upgrade failed.</font>'; | ||
| 317 | + } | ||
| 318 | + else { | ||
| 319 | + $this->temp_variables['upgradeStatus'] = '<font color="green">Upgrade succeeded.</font>'; | ||
| 320 | + } | ||
| 321 | + | ||
| 322 | + $post_pres = $this->performPostUpgradeActions(); | ||
| 323 | + if (PEAR::isError($post_res)) { | ||
| 324 | + $this->temp_variables['postUpgrade'] = '<font color="red">Post-Upgrade actions failed.</font>'; | ||
| 325 | + } | ||
| 326 | + else { | ||
| 327 | + $this->temp_variables['postUpgrade'] = '<font color="green">Post-Upgrade actions succeeded.</font>'; | ||
| 328 | + } | ||
| 487 | } | 329 | } |
| 488 | - ?> | ||
| 489 | - <br/> | ||
| 490 | 330 | ||
| 491 | -<p> | ||
| 492 | - <?php | ||
| 493 | -?> | ||
| 494 | -<p> | ||
| 495 | -<?php | ||
| 496 | - $res = $this->performAllUpgrades(); | ||
| 497 | - if (PEAR::isError($res) || PEAR::isError($pres)) { | ||
| 498 | - $this->temp_variables['upgradeStatus'] = '<font color="red">Upgrade failed.</font>'; | ||
| 499 | - } | ||
| 500 | - else { | ||
| 501 | - $this->temp_variables['upgradeStatus'] = '<font color="green">Upgrade succeeded.</font>'; | ||
| 502 | - } | ||
| 503 | -?> | ||
| 504 | -<p> | ||
| 505 | - | ||
| 506 | -<p> | ||
| 507 | - <?php | ||
| 508 | - $post_pres = $this->performPostUpgradeActions(); | ||
| 509 | - if (PEAR::isError($post_res)) { | ||
| 510 | - $this->temp_variables['postUpgrade'] = '<font color="red">Post-Upgrade actions failed.</font>'; | ||
| 511 | - } | ||
| 512 | - else { | ||
| 513 | - $this->temp_variables['postUpgrade'] = '<font color="green">Post-Upgrade actions succeeded.</font>'; | 331 | + private function performPreUpgradeActions() { |
| 332 | + | ||
| 333 | + // This is just to test and needs to be updated to a more sane and error resistent architrcture if it works. | ||
| 334 | + // It should idealy work the same as the upgrades. | ||
| 335 | + | ||
| 336 | + global $default; | ||
| 337 | + | ||
| 338 | + // Lock the scheduler | ||
| 339 | + $lockFile = $default->cacheDirectory . DIRECTORY_SEPARATOR . 'scheduler.lock'; | ||
| 340 | + touch($lockFile); | ||
| 341 | + return true; | ||
| 342 | + | ||
| 514 | } | 343 | } |
| 515 | -} | ||
| 516 | - | ||
| 517 | -function performPreUpgradeActions() { | ||
| 518 | - | ||
| 519 | - // This is just to test and needs to be updated to a more sane and error resistent architrcture if it works. | ||
| 520 | - // It should idealy work the same as the upgrades. | ||
| 521 | - | ||
| 522 | - global $default; | ||
| 523 | - | ||
| 524 | - // Lock the scheduler | ||
| 525 | - $lockFile = $default->cacheDirectory . DIRECTORY_SEPARATOR . 'scheduler.lock'; | ||
| 526 | - touch($lockFile); | ||
| 527 | - return true; | ||
| 528 | - | ||
| 529 | -} | ||
| 530 | - | ||
| 531 | -function performPostUpgradeActions() { | ||
| 532 | - | ||
| 533 | - // This is just to test and needs to be updated to a more sane and error resistent architrcture if it works. | ||
| 534 | - // It should idealy work the same as the upgrades. | ||
| 535 | - | ||
| 536 | - global $default; | ||
| 537 | - | ||
| 538 | - // Ensure all plugins are re-registered. | ||
| 539 | - $sql = "TRUNCATE plugin_helper"; | ||
| 540 | - $res = DBUtil::runQuery($sql); | ||
| 541 | - | ||
| 542 | - // Clear out all caches and proxies - they need to be regenerated with the new code | ||
| 543 | - $proxyDir = $default->proxyCacheDirectory; | ||
| 544 | - KTUtil::deleteDirectory($proxyDir); | ||
| 545 | - | ||
| 546 | - $oKTCache = new KTCache(); | ||
| 547 | - $oKTCache->deleteAllCaches(); | ||
| 548 | - | ||
| 549 | - // Clear the configuration cache, it'll regenerate on next load | ||
| 550 | - $oKTConfig = new KTConfig(); | ||
| 551 | - $oKTConfig->clearCache(); | ||
| 552 | - | ||
| 553 | - // Unlock the scheduler | ||
| 554 | - $lockFile = $default->cacheDirectory . DIRECTORY_SEPARATOR . 'scheduler.lock'; | ||
| 555 | - if(file_exists($lockFile)){ | ||
| 556 | - @unlink($lockFile); | 344 | + |
| 345 | + private function performPostUpgradeActions() { | ||
| 346 | + | ||
| 347 | + // This is just to test and needs to be updated to a more sane and error resistent architrcture if it works. | ||
| 348 | + // It should idealy work the same as the upgrades. | ||
| 349 | + | ||
| 350 | + global $default; | ||
| 351 | + | ||
| 352 | + // Ensure all plugins are re-registered. | ||
| 353 | + $sql = "TRUNCATE plugin_helper"; | ||
| 354 | + $res = DBUtil::runQuery($sql); | ||
| 355 | + | ||
| 356 | + // Clear out all caches and proxies - they need to be regenerated with the new code | ||
| 357 | + $proxyDir = $default->proxyCacheDirectory; | ||
| 358 | + KTUtil::deleteDirectory($proxyDir); | ||
| 359 | + | ||
| 360 | + $oKTCache = new KTCache(); | ||
| 361 | + $oKTCache->deleteAllCaches(); | ||
| 362 | + | ||
| 363 | + // Clear the configuration cache, it'll regenerate on next load | ||
| 364 | + $oKTConfig = new KTConfig(); | ||
| 365 | + $oKTConfig->clearCache(); | ||
| 366 | + | ||
| 367 | + // Unlock the scheduler | ||
| 368 | + $lockFile = $default->cacheDirectory . DIRECTORY_SEPARATOR . 'scheduler.lock'; | ||
| 369 | + if(file_exists($lockFile)){ | ||
| 370 | + @unlink($lockFile); | ||
| 371 | + } | ||
| 372 | + | ||
| 373 | + return true; | ||
| 374 | + | ||
| 557 | } | 375 | } |
| 558 | 376 | ||
| 559 | - return true; | ||
| 560 | - | ||
| 561 | -} | ||
| 562 | - | ||
| 563 | -function performAllUpgrades () { | ||
| 564 | - global $default; | ||
| 565 | - $query = sprintf('SELECT value FROM %s WHERE name = "databaseVersion"', $default->system_settings_table); | ||
| 566 | - $lastVersion = DBUtil::getOneResultKey($query, 'value'); | ||
| 567 | - $currentVersion = $default->systemVersion; | ||
| 568 | - | ||
| 569 | - $upgrades = describeUpgrade($lastVersion, $currentVersion); | 377 | + private function performAllUpgrades () { |
| 378 | + global $default; | ||
| 379 | + | ||
| 380 | + $row = 1; | ||
| 381 | + | ||
| 382 | + $query = sprintf('SELECT value FROM %s WHERE name = "databaseVersion"', $default->system_settings_table); | ||
| 383 | + $lastVersion = DBUtil::getOneResultKey($query, 'value'); | ||
| 384 | + $currentVersion = $default->systemVersion; | ||
| 570 | 385 | ||
| 571 | - $this->temp_variables['upgradeTable'] = ''; | ||
| 572 | - | ||
| 573 | - foreach ($upgrades as $upgrade) { | ||
| 574 | - if (($GLOBALS['row'] % 2) == 1) { | ||
| 575 | - $class = "odd"; | ||
| 576 | - } else { | ||
| 577 | - $class = "even"; | 386 | + $upgrades = describeUpgrade($lastVersion, $currentVersion); |
| 387 | + | ||
| 388 | + $this->temp_variables['upgradeTable'] = ''; | ||
| 389 | + | ||
| 390 | + foreach ($upgrades as $upgrade) { | ||
| 391 | + if (($row % 2) == 1) { | ||
| 392 | + $class = "odd"; | ||
| 393 | + } else { | ||
| 394 | + $class = "even"; | ||
| 395 | + } | ||
| 396 | + $this->temp_variables['upgradeTable'] .= sprintf('<div class="row %s"><div class="foo">%s</div>' . "\n", $class, htmlspecialchars($upgrade->getDescription())); | ||
| 397 | + ++$row; | ||
| 398 | + $res = $upgrade->performUpgrade(); | ||
| 399 | + $this->temp_variables['upgradeTable'] .= sprintf('<div class="bar">%s</div>', $this->showResult($res)); | ||
| 400 | + $this->temp_variables['upgradeTable'] .= '<br style="clear: both">' . "\n"; | ||
| 401 | + $this->temp_variables['upgradeTable'] .= "</div>\n"; | ||
| 402 | + if (PEAR::isError($res)) { | ||
| 403 | + if (!is_a($res, 'Upgrade_Already_Applied')) { | ||
| 404 | + break; | ||
| 405 | + } else { | ||
| 406 | + $res = true; | ||
| 407 | + } | ||
| 408 | + } | ||
| 409 | + if ($res === false) { | ||
| 410 | + $res = PEAR::raiseError("Upgrade returned false"); | ||
| 411 | + break; | ||
| 412 | + } | ||
| 578 | } | 413 | } |
| 579 | - $this->temp_variables['upgradeTable'] .= sprintf('<div class="row %s"><div class="foo">%s</div>' . "\n", $class, htmlspecialchars($upgrade->getDescription())); | ||
| 580 | - $GLOBALS['row']++; | ||
| 581 | - ob_flush(); | ||
| 582 | - flush(); | ||
| 583 | - $res = $upgrade->performUpgrade(); | ||
| 584 | - $this->temp_variables['upgradeTable'] .= sprintf('<div class="bar">%s</div>', $this->showResult($res)); | ||
| 585 | - $this->temp_variables['upgradeTable'] .= '<br style="clear: both">' . "\n"; | ||
| 586 | - ob_flush(); | ||
| 587 | - flush(); | ||
| 588 | - $this->temp_variables['upgradeTable'] .= "</div>\n"; | 414 | + |
| 415 | + return $res; | ||
| 416 | + } | ||
| 417 | + | ||
| 418 | + private function showResult($res) { | ||
| 589 | if (PEAR::isError($res)) { | 419 | if (PEAR::isError($res)) { |
| 590 | - if (!is_a($res, 'Upgrade_Already_Applied')) { | ||
| 591 | - break; | ||
| 592 | - } else { | ||
| 593 | - $res = true; | 420 | + if (is_a($res, 'Upgrade_Already_Applied')) { |
| 421 | + return '<span style="color: orange">Already applied</span>'; | ||
| 594 | } | 422 | } |
| 423 | + return sprintf('<span style="color: red">%s</span>', htmlspecialchars($res->toString())); | ||
| 595 | } | 424 | } |
| 596 | - if ($res === false) { | ||
| 597 | - $res = PEAR::raiseError("Upgrade returned false"); | ||
| 598 | - break; | 425 | + if ($res === true) { |
| 426 | + return '<span style="color: green">Success</span>'; | ||
| 599 | } | 427 | } |
| 600 | - } | ||
| 601 | - | ||
| 602 | - return $res; | ||
| 603 | -} | ||
| 604 | - | ||
| 605 | -function showResult($res) { | ||
| 606 | - if (PEAR::isError($res)) { | ||
| 607 | - if (is_a($res, 'Upgrade_Already_Applied')) { | ||
| 608 | - return '<span style="color: orange">Already applied</span>'; | 428 | + if ($res === false) { |
| 429 | + return '<span style="color: red">Failure</span>'; | ||
| 609 | } | 430 | } |
| 610 | - return sprintf('<span style="color: red">%s</span>', htmlspecialchars($res->toString())); | 431 | + return $res; |
| 611 | } | 432 | } |
| 612 | - if ($res === true) { | ||
| 613 | - return '<span style="color: green">Success</span>'; | ||
| 614 | - } | ||
| 615 | - if ($res === false) { | ||
| 616 | - return '<span style="color: red">Failure</span>'; | ||
| 617 | - } | ||
| 618 | - return $res; | ||
| 619 | -} | ||
| 620 | 433 | ||
| 621 | } | 434 | } |
| 622 | ?> | 435 | ?> |
| 623 | \ No newline at end of file | 436 | \ No newline at end of file |
setup/upgrade/steps/upgradeInstallation.php
| 1 | <?php | 1 | <?php |
| 2 | /** | 2 | /** |
| 3 | -* Upgrade Step Controller. | 3 | +* Notification Controller. |
| 4 | * | 4 | * |
| 5 | * KnowledgeTree Community Edition | 5 | * KnowledgeTree Community Edition |
| 6 | * Document Management Made Simple | 6 | * Document Management Made Simple |
| @@ -50,12 +50,13 @@ class UpgradeInstallation extends step | @@ -50,12 +50,13 @@ class UpgradeInstallation extends step | ||
| 50 | * @var array | 50 | * @var array |
| 51 | */ | 51 | */ |
| 52 | protected $silent = false; | 52 | protected $silent = false; |
| 53 | + protected $temp_variables = array(); | ||
| 53 | 54 | ||
| 54 | - function __construct() { | 55 | + public function __construct() { |
| 55 | $this->temp_variables = array("step_name"=>"installation"); | 56 | $this->temp_variables = array("step_name"=>"installation"); |
| 56 | } | 57 | } |
| 57 | 58 | ||
| 58 | - function doStep() { | 59 | + public function doStep() { |
| 59 | parent::doStep(); | 60 | parent::doStep(); |
| 60 | if($this->next()) { | 61 | if($this->next()) { |
| 61 | return 'next'; | 62 | return 'next'; |
| @@ -72,13 +73,5 @@ class UpgradeInstallation extends step | @@ -72,13 +73,5 @@ class UpgradeInstallation extends step | ||
| 72 | return 'landing'; | 73 | return 'landing'; |
| 73 | } | 74 | } |
| 74 | 75 | ||
| 75 | - function backup() { | ||
| 76 | - return isset($_POST['Backup']); | ||
| 77 | - } | ||
| 78 | - | ||
| 79 | - function restore() { | ||
| 80 | - return isset($_POST['Restore']); | ||
| 81 | - } | ||
| 82 | - | ||
| 83 | } | 76 | } |
| 84 | ?> | 77 | ?> |
| 85 | \ No newline at end of file | 78 | \ No newline at end of file |
setup/upgrade/steps/upgradeRestore.php
| 1 | <?php | 1 | <?php |
| 2 | /** | 2 | /** |
| 3 | -* Complete Step Controller. | 3 | +* Restore Step Controller. |
| 4 | * | 4 | * |
| 5 | * KnowledgeTree Community Edition | 5 | * KnowledgeTree Community Edition |
| 6 | * Document Management Made Simple | 6 | * Document Management Made Simple |
| @@ -53,10 +53,8 @@ class upgradeRestore extends Step { | @@ -53,10 +53,8 @@ class upgradeRestore extends Step { | ||
| 53 | */ | 53 | */ |
| 54 | private $_dbhandler = null; | 54 | private $_dbhandler = null; |
| 55 | 55 | ||
| 56 | - private $privileges_check = 'tick'; | ||
| 57 | - private $database_check = 'tick'; | ||
| 58 | - protected $silent = true; | ||
| 59 | - | 56 | + protected $silent = false; |
| 57 | + protected $temp_variables = array(); | ||
| 60 | protected $util = null; | 58 | protected $util = null; |
| 61 | 59 | ||
| 62 | public function __construct() { | 60 | public function __construct() { |
| @@ -65,8 +63,10 @@ class upgradeRestore extends Step { | @@ -65,8 +63,10 @@ class upgradeRestore extends Step { | ||
| 65 | $this->util = new UpgradeUtil(); | 63 | $this->util = new UpgradeUtil(); |
| 66 | } | 64 | } |
| 67 | 65 | ||
| 68 | - function doStep() { | 66 | + public function doStep() { |
| 69 | parent::doStep(); | 67 | parent::doStep(); |
| 68 | + $this->temp_variables['restore'] = false; | ||
| 69 | + | ||
| 70 | if(!$this->inStep("restore")) { | 70 | if(!$this->inStep("restore")) { |
| 71 | $this->doRun(); | 71 | $this->doRun(); |
| 72 | return 'landing'; | 72 | return 'landing'; |
| @@ -78,24 +78,40 @@ class upgradeRestore extends Step { | @@ -78,24 +78,40 @@ class upgradeRestore extends Step { | ||
| 78 | } else if($this->previous()) { | 78 | } else if($this->previous()) { |
| 79 | return 'previous'; | 79 | return 'previous'; |
| 80 | } | 80 | } |
| 81 | + else if ($this->restoreNow()) { | ||
| 82 | + $this->temp_variables['restoreSuccessful'] = false; | ||
| 83 | + $this->doRun(true); | ||
| 84 | + return 'next'; | ||
| 85 | + } | ||
| 81 | 86 | ||
| 82 | $this->doRun(); | 87 | $this->doRun(); |
| 83 | return 'landing'; | 88 | return 'landing'; |
| 84 | } | 89 | } |
| 85 | 90 | ||
| 86 | - function doRun() { | ||
| 87 | - $this->temp_variables['selected'] = false; | ||
| 88 | - if ($this->select()) { | ||
| 89 | - $this->restoreSelected(); | ||
| 90 | - $this->temp_variables['selected'] = true; | 91 | + private function restoreNow() { |
| 92 | + return isset($_POST['RunRestore']); | ||
| 93 | + } | ||
| 94 | + | ||
| 95 | + private function doRun($restore = false) { | ||
| 96 | + if (!$restore) { | ||
| 97 | + $this->temp_variables['selected'] = false; | ||
| 98 | + if ($this->select()) { | ||
| 99 | + $this->restoreSelected(); | ||
| 100 | + $this->temp_variables['selected'] = true; | ||
| 101 | + $this->temp_variables['availableBackups'] = true; | ||
| 102 | + } | ||
| 103 | + $this->restoreConfirm(); | ||
| 104 | + } // end not running a restore, just setting up | ||
| 105 | + else { | ||
| 106 | + $this->restoreDatabase(); | ||
| 91 | } | 107 | } |
| 92 | - $this->restoreConfirm(); | 108 | + |
| 93 | $this->storeSilent();// Set silent mode variables | 109 | $this->storeSilent();// Set silent mode variables |
| 94 | 110 | ||
| 95 | return true; | 111 | return true; |
| 96 | } | 112 | } |
| 97 | 113 | ||
| 98 | - function select() { | 114 | + private function select() { |
| 99 | return isset($_POST['RestoreSelect']); | 115 | return isset($_POST['RestoreSelect']); |
| 100 | } | 116 | } |
| 101 | 117 | ||
| @@ -105,183 +121,126 @@ class upgradeRestore extends Step { | @@ -105,183 +121,126 @@ class upgradeRestore extends Step { | ||
| 105 | */ | 121 | */ |
| 106 | private function storeSilent() { | 122 | private function storeSilent() { |
| 107 | } | 123 | } |
| 108 | - /* | ||
| 109 | - // these belong in a shared lib | ||
| 110 | - function set_state($value) | ||
| 111 | -{ | ||
| 112 | - $_SESSION['state'] = $value; | ||
| 113 | -} | ||
| 114 | -function check_state($value, $state='Home') | ||
| 115 | -{ | ||
| 116 | - if ($_SESSION['state'] != $value) | ||
| 117 | - { | ||
| 118 | - ?> | ||
| 119 | - <script type="text/javascript"> | ||
| 120 | - document.location="?go=<?php echo $state;?>"; | ||
| 121 | - </script> | ||
| 122 | - <?php | ||
| 123 | - exit; | ||
| 124 | - } | ||
| 125 | -} | ||
| 126 | -*/ | ||
| 127 | - function restore() | ||
| 128 | -{ | ||
| 129 | -// check_state(1); | ||
| 130 | -// set_state(5); | ||
| 131 | -// title('Restore In Progress'); | ||
| 132 | - $status = $_SESSION['backupStatus']; | ||
| 133 | - $filename = $_SESSION['backupFile']; | ||
| 134 | - $stmt = $this->util->create_restore_stmt($filename); | ||
| 135 | - $dir = $stmt['dir']; | ||
| 136 | 124 | ||
| 137 | - if (is_file($dir . '/mysql') || is_file($dir . '/mysql.exe')) | 125 | + private function restoreDatabase() |
| 138 | { | 126 | { |
| 139 | - | ||
| 140 | -?> | ||
| 141 | - The restore is now underway. Please wait till it completes. | ||
| 142 | -<?php | ||
| 143 | - print "\n"; | ||
| 144 | - | ||
| 145 | - | ||
| 146 | - $curdir=getcwd(); | ||
| 147 | - chdir($dir); | ||
| 148 | - | ||
| 149 | - | ||
| 150 | - $ok=true; | ||
| 151 | - $stmts=explode("\n",$stmt['cmd']); | ||
| 152 | - foreach($stmts as $stmt) | 127 | + $this->temp_variables['restore'] = true; |
| 128 | + $status = $_SESSION['backupStatus']; | ||
| 129 | + $filename = $_SESSION['backupFile']; | ||
| 130 | + $stmt = $this->util->create_restore_stmt($filename); | ||
| 131 | + $dir = $stmt['dir']; | ||
| 132 | + | ||
| 133 | + if (is_file($dir . '/mysql') || is_file($dir . '/mysql.exe')) | ||
| 153 | { | 134 | { |
| 154 | - | ||
| 155 | - $handle = popen($stmt, 'r'); | ||
| 156 | - if ($handle=='false') | 135 | + $curdir=getcwd(); |
| 136 | + chdir($dir); | ||
| 137 | + | ||
| 138 | + $ok=true; | ||
| 139 | + $stmts=explode("\n",$stmt['cmd']); | ||
| 140 | + foreach($stmts as $stmt) | ||
| 157 | { | 141 | { |
| 158 | - $ok=false; | ||
| 159 | - break; | 142 | + |
| 143 | + $handle = popen($stmt, 'r'); | ||
| 144 | + if ($handle=='false') | ||
| 145 | + { | ||
| 146 | + $ok=false; | ||
| 147 | + break; | ||
| 148 | + } | ||
| 149 | + $read = fread($handle, 10240); | ||
| 150 | + pclose($handle); | ||
| 151 | + $_SESSION['restoreOutput']=$read; | ||
| 160 | } | 152 | } |
| 161 | - $read = fread($handle, 10240); | ||
| 162 | - pclose($handle); | ||
| 163 | - $_SESSION['restoreOutput']=$read; | ||
| 164 | - } | ||
| 165 | - | 153 | + |
| 166 | $_SESSION['restoreStatus'] = $ok; | 154 | $_SESSION['restoreStatus'] = $ok; |
| 167 | - | ||
| 168 | - } | ||
| 169 | - else | ||
| 170 | - { | ||
| 171 | -?> | ||
| 172 | -<P> | ||
| 173 | - The <i>mysql</i> utility was not found in the <?php echo $dir;?> subdirectory. | ||
| 174 | - | ||
| 175 | - <input type=button value="back" onclick="javascript:do_start('welcome')"> | ||
| 176 | -<?php | 155 | + // should be some sort of error checking, really |
| 156 | + $this->restoreDone(); | ||
| 157 | + } | ||
| 177 | } | 158 | } |
| 178 | 159 | ||
| 179 | -} | ||
| 180 | - | ||
| 181 | - | ||
| 182 | -function restoreDone() | ||
| 183 | -{ | ||
| 184 | -// check_state(5); | ||
| 185 | -// set_state(6); | ||
| 186 | -// title('Restore Status'); | ||
| 187 | - $status = $_SESSION['restoreStatus']; | ||
| 188 | - $filename = $_SESSION['backupFile']; | ||
| 189 | - | ||
| 190 | - if ($status) | ||
| 191 | - { | ||
| 192 | - | ||
| 193 | -?> | ||
| 194 | - The restore of <nobr><i>"<?php echo $filename;?>"</i></nobr> has been completed. | ||
| 195 | - <P> | ||
| 196 | - It appears as though the <font color=green>restore has been successful</font>. | ||
| 197 | - <P> | ||
| 198 | - | ||
| 199 | - | ||
| 200 | - | ||
| 201 | -<?php | ||
| 202 | - } | ||
| 203 | - else | 160 | + private function restoreDone() |
| 204 | { | 161 | { |
| 205 | -?> | ||
| 206 | -It appears as though <font color=red>the restore process has failed</font>. <P> | ||
| 207 | -Unfortunately, it is difficult to diagnose these problems automatically | ||
| 208 | -and would recommend that you try to do the backup process manually. | ||
| 209 | -<P> | ||
| 210 | -We appologise for the inconvenience. | ||
| 211 | -<P> | ||
| 212 | -<table bgcolor="lightgrey"> | ||
| 213 | -<tr> | ||
| 214 | -<td> | ||
| 215 | -<?php echo $_SESSION['restoreOutput'];?> | ||
| 216 | -</table> | ||
| 217 | -<?php | ||
| 218 | - | 162 | + $status = $_SESSION['restoreStatus']; |
| 163 | + $filename = $_SESSION['backupFile']; | ||
| 164 | + | ||
| 165 | + if ($status) | ||
| 166 | + { | ||
| 167 | + $this->temp_variables['display'] = 'The restore of <nobr><i>"' . $filename . '"</i></nobr> has been completed. | ||
| 168 | + <P> | ||
| 169 | + It appears as though the <font color=green>restore has been successful</font>. | ||
| 170 | + <P>'; | ||
| 171 | + | ||
| 172 | + $this->temp_variables['title'] = 'Restore Complete'; | ||
| 173 | + $this->temp_variables['restoreSuccessful'] = true; | ||
| 174 | + } | ||
| 175 | + else | ||
| 176 | + { | ||
| 177 | + $this->temp_variables['display'] = 'It appears as though <font color=red>the restore process has failed</font>. <P> | ||
| 178 | + Unfortunately, it is difficult to diagnose these problems automatically | ||
| 179 | + and would recommend that you try to do the backup process manually. | ||
| 180 | + <P> | ||
| 181 | + We appologise for the inconvenience. | ||
| 182 | + <P> | ||
| 183 | + <table bgcolor="lightgrey"> | ||
| 184 | + <tr> | ||
| 185 | + <td>' . $_SESSION['restoreOutput'] . ' | ||
| 186 | + </table>'; | ||
| 187 | + $this->temp_variables['title'] = 'Restore Failed'; | ||
| 188 | + $this->temp_variables['restoreSuccessful'] = false; | ||
| 189 | + } | ||
| 219 | } | 190 | } |
| 220 | -?> | ||
| 221 | - | ||
| 222 | -<br/> | ||
| 223 | - | ||
| 224 | - <input type=button value="back" onclick="javascript:do_start('welcome')"> | ||
| 225 | - | ||
| 226 | -<?php | ||
| 227 | - | ||
| 228 | -} | ||
| 229 | - | ||
| 230 | -function restoreSelect() | ||
| 231 | -{ | ||
| 232 | - $this->temp_variables['availableBackups'] = false; | ||
| 233 | -// title('Select Backup to Restore'); | ||
| 234 | - $dir = $this->util->resolveTempDir(); | ||
| 235 | - | ||
| 236 | - $files = array(); | ||
| 237 | - if ($dh = opendir($dir)) | 191 | + |
| 192 | + private function restoreSelect() | ||
| 238 | { | 193 | { |
| 239 | - while (($file = readdir($dh)) !== false) | 194 | + $this->temp_variables['availableBackups'] = false; |
| 195 | + $dir = $this->util->resolveTempDir(); | ||
| 196 | + | ||
| 197 | + $files = array(); | ||
| 198 | + if ($dh = opendir($dir)) | ||
| 240 | { | 199 | { |
| 241 | - if (!preg_match('/kt-backup.+\.sql/',$file)) { | ||
| 242 | - continue; | 200 | + while (($file = readdir($dh)) !== false) |
| 201 | + { | ||
| 202 | + if (!preg_match('/kt-backup.+\.sql/',$file)) { | ||
| 203 | + continue; | ||
| 204 | + } | ||
| 205 | + $files[] = $file; | ||
| 243 | } | 206 | } |
| 244 | - $files[] = $file; | 207 | + closedir($dh); |
| 208 | + } | ||
| 209 | + | ||
| 210 | + $this->temp_variables['title'] = 'Select Backup to Restore'; | ||
| 211 | + $this->temp_variables['dir'] = $dir; | ||
| 212 | + if (count($files) != 0) { | ||
| 213 | + $this->temp_variables['availableBackups'] = true; | ||
| 214 | + $this->temp_variables['files'] = $files; | ||
| 245 | } | 215 | } |
| 246 | - closedir($dh); | ||
| 247 | } | 216 | } |
| 248 | 217 | ||
| 249 | - $this->temp_variables['dir'] = $dir; | ||
| 250 | - if (count($files) != 0) { | ||
| 251 | - $this->temp_variables['availableBackups'] = true; | ||
| 252 | - $this->temp_variables['files'] = $files; | 218 | + private function restoreSelected() |
| 219 | + { | ||
| 220 | + $file=$_REQUEST['file']; | ||
| 221 | + | ||
| 222 | + $dir = $this->util->resolveTempDir(); | ||
| 223 | + $_SESSION['backupFile'] = $dir . '/' . $file; | ||
| 253 | } | 224 | } |
| 254 | -} | ||
| 255 | - | ||
| 256 | -function restoreSelected() | ||
| 257 | -{ | ||
| 258 | - $file=$_REQUEST['file']; | ||
| 259 | - | ||
| 260 | - $dir = $this->util->resolveTempDir(); | ||
| 261 | - $_SESSION['backupFile'] = $dir . '/' . $file; | ||
| 262 | -?> | ||
| 263 | -<?php | ||
| 264 | - | ||
| 265 | -} | ||
| 266 | - | ||
| 267 | -function restoreConfirm() | ||
| 268 | -{ | ||
| 269 | - if (!isset($_SESSION['backupFile']) || !is_file($_SESSION['backupFile']) || filesize($_SESSION['backupFile']) == 0) | 225 | + |
| 226 | + private function restoreConfirm() | ||
| 270 | { | 227 | { |
| 271 | - $this->restoreSelect(); | ||
| 272 | - return; | 228 | + if (!isset($_SESSION['backupFile']) || !is_file($_SESSION['backupFile']) || filesize($_SESSION['backupFile']) == 0) |
| 229 | + { | ||
| 230 | + $this->restoreSelect(); | ||
| 231 | + return; | ||
| 232 | + } | ||
| 233 | + | ||
| 234 | + $status = $_SESSION['backupStatus']; | ||
| 235 | + $filename = $_SESSION['backupFile']; | ||
| 236 | + $stmt = $this->util->create_restore_stmt($filename); | ||
| 237 | + | ||
| 238 | + $this->temp_variables['title'] = 'Confirm Restore'; | ||
| 239 | + $this->temp_variables['dir'] = $stmt['dir']; | ||
| 240 | + $this->temp_variables['display'] = $stmt['display']; | ||
| 241 | + $this->temp_variables['availableBackups'] = true; | ||
| 242 | + $this->temp_variables['selected'] = true; | ||
| 273 | } | 243 | } |
| 274 | 244 | ||
| 275 | - $status = $_SESSION['backupStatus']; | ||
| 276 | - $filename = $_SESSION['backupFile']; | ||
| 277 | - $stmt = $this->util->create_restore_stmt($filename); | ||
| 278 | - | ||
| 279 | - $this->temp_variables['dir'] = $stmt['dir']; | ||
| 280 | - $this->temp_variables['display'] = $stmt['display']; | ||
| 281 | -} | ||
| 282 | - | ||
| 283 | - | ||
| 284 | - | ||
| 285 | - | ||
| 286 | } | 245 | } |
| 287 | ?> | 246 | ?> |
| 288 | \ No newline at end of file | 247 | \ No newline at end of file |
setup/upgrade/steps/upgradeWelcome.php
| @@ -40,14 +40,13 @@ | @@ -40,14 +40,13 @@ | ||
| 40 | * @version Version 0.1 | 40 | * @version Version 0.1 |
| 41 | */ | 41 | */ |
| 42 | 42 | ||
| 43 | -global $default; | ||
| 44 | -// include defaults | ||
| 45 | include '../../config/dmsDefaults.php'; | 43 | include '../../config/dmsDefaults.php'; |
| 46 | require_once KT_LIB_DIR . '/authentication/authenticationutil.inc.php'; | 44 | require_once KT_LIB_DIR . '/authentication/authenticationutil.inc.php'; |
| 47 | 45 | ||
| 48 | class upgradeWelcome extends step { | 46 | class upgradeWelcome extends step { |
| 49 | 47 | ||
| 50 | - protected $silent = true; | 48 | + protected $silent = false; |
| 49 | + protected $temp_variables = array(); | ||
| 51 | 50 | ||
| 52 | public function __construct() { | 51 | public function __construct() { |
| 53 | $this->temp_variables = array("step_name"=>"welcome"); | 52 | $this->temp_variables = array("step_name"=>"welcome"); |
| @@ -76,7 +75,6 @@ class upgradeWelcome extends step { | @@ -76,7 +75,6 @@ class upgradeWelcome extends step { | ||
| 76 | if (!$authenticated) | 75 | if (!$authenticated) |
| 77 | { | 76 | { |
| 78 | session_unset(); | 77 | session_unset(); |
| 79 | -// loginFailed(_kt('Could not authenticate administrative user')); | ||
| 80 | return false; | 78 | return false; |
| 81 | } | 79 | } |
| 82 | 80 |
setup/upgrade/templates/backup.tpl
| @@ -44,18 +44,17 @@ You can continue to do the backup manually using the following process: | @@ -44,18 +44,17 @@ You can continue to do the backup manually using the following process: | ||
| 44 | ?><nobr><?php echo $display; ?></nobr> | 44 | ?><nobr><?php echo $display; ?></nobr> |
| 45 | </table> | 45 | </table> |
| 46 | <P> | 46 | <P> |
| 47 | - <?php if($silent) { ?> | ||
| 48 | - </div> | ||
| 49 | - <?php } ?> | ||
| 50 | </div> | 47 | </div> |
| 51 | - <?php | 48 | + </div> |
| 49 | + <?php | ||
| 52 | if ($dir != '') | 50 | if ($dir != '') |
| 53 | { | 51 | { |
| 54 | if (($action == '') || ($action == 'confirm')) { | 52 | if (($action == '') || ($action == 'confirm')) { |
| 55 | ?><input type="submit" name="BackupNow" value="Next" class="button_next"><?php | 53 | ?><input type="submit" name="BackupNow" value="Next" class="button_next"><?php |
| 56 | } | 54 | } |
| 57 | else if ($backupStatus) { | 55 | else if ($backupStatus) { |
| 58 | - ?><input type="submit" name="Next" value="Next" class="button_next"><?php | 56 | + ?><input type="submit" name="Next" value="Restore" class="button_next"> |
| 57 | + <input type="submit" name="Upgrade" value="Upgrade" class="button_next"><?php | ||
| 59 | } | 58 | } |
| 60 | else { | 59 | else { |
| 61 | ?><input type="submit" name="Next" value="Next" class="button_next"><?php | 60 | ?><input type="submit" name="Next" value="Next" class="button_next"><?php |
| @@ -64,5 +63,4 @@ if ($dir != '') | @@ -64,5 +63,4 @@ if ($dir != '') | ||
| 64 | 63 | ||
| 65 | ?> | 64 | ?> |
| 66 | <input type="submit" name="Previous" value="Back" class="button_previous"> | 65 | <input type="submit" name="Previous" value="Back" class="button_previous"> |
| 67 | - </div> | ||
| 68 | </form> | 66 | </form> |
| 69 | \ No newline at end of file | 67 | \ No newline at end of file |
setup/upgrade/templates/installation.tpl
| @@ -2,7 +2,6 @@ | @@ -2,7 +2,6 @@ | ||
| 2 | <p class="title">Current Installation</p> | 2 | <p class="title">Current Installation</p> |
| 3 | <div id="step_content" class="step"> | 3 | <div id="step_content" class="step"> |
| 4 | <p class="empty_space"> | 4 | <p class="empty_space"> |
| 5 | - <?php // set_state(1); ?> | ||
| 6 | <p class="empty_space"> If you have just updated | 5 | <p class="empty_space"> If you have just updated |
| 7 | your KnowledgeTree code base, you will need to complete the upgrade process in order to ensure your system is fully operational with the new version. | 6 | your KnowledgeTree code base, you will need to complete the upgrade process in order to ensure your system is fully operational with the new version. |
| 8 | <p class="empty_space"> | 7 | <p class="empty_space"> |
setup/upgrade/templates/restore.tpl
| 1 | <form action="index.php?step_name=restore" method="post"> | 1 | <form action="index.php?step_name=restore" method="post"> |
| 2 | - <p class="title">Confirm Restore</p> | 2 | + <p class="title"><?php echo $title; ?></p> |
| 3 | 3 | ||
| 4 | <?php | 4 | <?php |
| 5 | if($errors || $warnings){ | 5 | if($errors || $warnings){ |
| @@ -12,63 +12,65 @@ | @@ -12,63 +12,65 @@ | ||
| 12 | <br/><br/> | 12 | <br/><br/> |
| 13 | <div> | 13 | <div> |
| 14 | <?php | 14 | <?php |
| 15 | - if (!$availableBackups) { | ||
| 16 | - ?>There don't seem to be any backups to restore from the <i>"<?php echo $dir;?>"</i> directory.<?php | ||
| 17 | - } | ||
| 18 | - else if (!$selected) { | 15 | + if (!$restore) { |
| 16 | + if (!$availableBackups) { | ||
| 17 | + ?>There don't seem to be any backups to restore from the <i>"<?php echo $dir;?>"</i> directory.<?php | ||
| 18 | + } | ||
| 19 | + else if (!$selected) { | ||
| 20 | + ?> | ||
| 21 | + <P> | ||
| 22 | + Select a backup to restore from the list below: | ||
| 23 | + <P> | ||
| 24 | + <form action="index.php?step_name=restore" method="post"> | ||
| 25 | + | ||
| 26 | + <table border=1 cellpadding=1 cellspacing=1> | ||
| 27 | + <tr bgcolor="darkgrey"> | ||
| 28 | + <td>Filename | ||
| 29 | + <td>File Size | ||
| 30 | + <td>Action | ||
| 31 | + <?php | ||
| 32 | + $i=0; | ||
| 33 | + foreach($files as $file) | ||
| 34 | + { | ||
| 35 | + $color=((($i++)%2)==0)?'white':'lightgrey'; | ||
| 36 | + ?> | ||
| 37 | + <tr bgcolor="<?php echo $color;?>"> | ||
| 38 | + <td><?php echo $file;?> | ||
| 39 | + <td><?php echo filesize($dir . '/'.$file);?> | ||
| 40 | + <td><input type="submit" name="RestoreSelect" value="restore"> | ||
| 41 | + <?php | ||
| 42 | + } | ||
| 43 | + ?> | ||
| 44 | + </table> | ||
| 45 | + <input type="hidden" name="file" value="<?php echo $file; ?>" /> | ||
| 46 | + </form> | ||
| 47 | + <?php | ||
| 48 | + } | ||
| 49 | + else if ($dir != '') { | ||
| 19 | ?> | 50 | ?> |
| 20 | <P> | 51 | <P> |
| 21 | - Select a backup to restore from the list below: | ||
| 22 | <P> | 52 | <P> |
| 23 | - <form action="index.php?step_name=restore" method="post"> | ||
| 24 | - | ||
| 25 | - <table border=1 cellpadding=1 cellspacing=1> | ||
| 26 | - <tr bgcolor="darkgrey"> | ||
| 27 | - <td>Filename | ||
| 28 | - <td>File Size | ||
| 29 | - <td>Action | ||
| 30 | -<?php | ||
| 31 | - $i=0; | ||
| 32 | - foreach($files as $file) | ||
| 33 | - { | ||
| 34 | - $color=((($i++)%2)==0)?'white':'lightgrey'; | ||
| 35 | -?> | ||
| 36 | - <tr bgcolor="<?php echo $color;?>"> | ||
| 37 | - <td><?php echo $file;?> | ||
| 38 | - <td><?php echo filesize($dir . '/'.$file);?> | ||
| 39 | - <td><input type="submit" name="RestoreSelect" value="restore"> | ||
| 40 | -<?php | ||
| 41 | - } | ||
| 42 | -?> | ||
| 43 | - </table> | ||
| 44 | - <input type="hidden" name="file" value="<?php echo $file; ?>" /> | ||
| 45 | - </form> | 53 | + Manually, you would do the following to restore the backup: |
| 54 | + <P> | ||
| 55 | + <table bgcolor="lightgrey"> | ||
| 56 | + <tr> | ||
| 57 | + <td> | ||
| 58 | + <nobr>cd "<?php echo $dir;?>"</nobr> | ||
| 59 | + <br/> | ||
| 46 | <?php | 60 | <?php |
| 47 | - } | ||
| 48 | -else if ($dir != '') { | ||
| 49 | -?> | ||
| 50 | -<P> | ||
| 51 | -<P> | ||
| 52 | -Manually, you would do the following to restore the backup: | ||
| 53 | -<P> | ||
| 54 | -<table bgcolor="lightgrey"> | ||
| 55 | -<tr> | ||
| 56 | -<td> | ||
| 57 | -<nobr>cd "<?php echo $dir;?>"</nobr> | ||
| 58 | -<br/> | ||
| 59 | -<?php | ||
| 60 | - } | ||
| 61 | - else | ||
| 62 | - { | ||
| 63 | - ?> | ||
| 64 | - The mysql backup utility could not be found automatically. Either do a manual restore, or edit the config.ini and update the backup/mysql Directory entry. | ||
| 65 | -<P> | ||
| 66 | -You can continue to do the restore manually using the following command(s): | ||
| 67 | -<P> | ||
| 68 | -<table bgcolor="lightgrey"> | ||
| 69 | -<tr> | ||
| 70 | -<td><?php | ||
| 71 | - } | 61 | + } |
| 62 | + else | ||
| 63 | + { | ||
| 64 | + ?> | ||
| 65 | + The mysql backup utility could not be found automatically. Either do a manual restore, or edit the config.ini and update the backup/mysql Directory entry. | ||
| 66 | + <P> | ||
| 67 | + You can continue to do the restore manually using the following command(s): | ||
| 68 | + <P> | ||
| 69 | + <table bgcolor="lightgrey"> | ||
| 70 | + <tr> | ||
| 71 | + <td><?php | ||
| 72 | + } | ||
| 73 | + } // end not doing a restore, just preliminary steps | ||
| 72 | ?> | 74 | ?> |
| 73 | <nobr><?php echo $display;?></nobr> | 75 | <nobr><?php echo $display;?></nobr> |
| 74 | </td> | 76 | </td> |
| @@ -89,11 +91,12 @@ Press <i>Next</i> to attempt the command(s) above. | @@ -89,11 +91,12 @@ Press <i>Next</i> to attempt the command(s) above. | ||
| 89 | } | 91 | } |
| 90 | ?> | 92 | ?> |
| 91 | </div> | 93 | </div> |
| 92 | - | ||
| 93 | - | 94 | + </div> |
| 94 | <input type="submit" name="Previous" value="Back" class="button_previous"> | 95 | <input type="submit" name="Previous" value="Back" class="button_previous"> |
| 95 | <?php if (($dir != '') && ($selected)) { ?> | 96 | <?php if (($dir != '') && ($selected)) { ?> |
| 97 | + <input type="submit" name="RunRestore" value="Next" class="button_next"> | ||
| 98 | + <?php } | ||
| 99 | + else { ?> | ||
| 96 | <input type="submit" name="Next" value="Next" class="button_next"> | 100 | <input type="submit" name="Next" value="Next" class="button_next"> |
| 97 | <?php } ?> | 101 | <?php } ?> |
| 98 | - </div> | ||
| 99 | </form> | 102 | </form> |
| 100 | \ No newline at end of file | 103 | \ No newline at end of file |
setup/upgrade/upgradeUtil.php
| @@ -666,115 +666,106 @@ class UpgradeUtil { | @@ -666,115 +666,106 @@ class UpgradeUtil { | ||
| 666 | return join(" ", $aSafeArgs); | 666 | return join(" ", $aSafeArgs); |
| 667 | } | 667 | } |
| 668 | 668 | ||
| 669 | - function create_restore_stmt($targetfile) | ||
| 670 | -{ | ||
| 671 | - $oKTConfig =& KTConfig::getSingleton(); | ||
| 672 | - | ||
| 673 | - $adminUser = $oKTConfig->get('db/dbAdminUser'); | ||
| 674 | - $adminPwd = $oKTConfig->get('db/dbAdminPass'); | ||
| 675 | - $dbHost = $oKTConfig->get('db/dbHost'); | ||
| 676 | - $dbName = $oKTConfig->get('db/dbName'); | ||
| 677 | - $dbPort = trim($oKTConfig->get('db/dbPort')); | ||
| 678 | - if ($dbPort=='' || $dbPort=='default')$dbPort = get_cfg_var('mysql.default_port'); | ||
| 679 | - if (empty($dbPort)) $dbPort='3306'; | ||
| 680 | - $dbSocket = trim($oKTConfig->get('db/dbSocket')); | ||
| 681 | - if (empty($dbSocket) || $dbSocket=='default') $dbSocket = get_cfg_var('mysql.default_socket'); | ||
| 682 | - if (empty($dbSocket)) $dbSocket='../tmp/mysql.sock'; | ||
| 683 | - | ||
| 684 | - $dir = $this->resolveMysqlDir(); | ||
| 685 | - | ||
| 686 | - $info['dir']=$dir; | ||
| 687 | - | ||
| 688 | - $prefix=''; | ||
| 689 | - if (OS_UNIX) | ||
| 690 | - { | ||
| 691 | - $prefix .= "./"; | ||
| 692 | - } | ||
| 693 | - | ||
| 694 | - if (@stat($dbSocket) !== false) | ||
| 695 | - { | ||
| 696 | - $mechanism="--socket=\"$dbSocket\""; | ||
| 697 | - } | ||
| 698 | - else | 669 | + public function create_restore_stmt($targetfile) |
| 699 | { | 670 | { |
| 700 | - $mechanism="--port=\"$dbPort\""; | ||
| 701 | - } | ||
| 702 | - | ||
| 703 | - $tmpdir = $this->resolveTempDir(); | ||
| 704 | - | ||
| 705 | - $stmt = $prefix ."mysqladmin --user=\"$adminUser\" -p $mechanism drop \"$dbName\"<br/>"; | ||
| 706 | - $stmt .= $prefix ."mysqladmin --user=\"$adminUser\" -p $mechanism create \"$dbName\"<br/>"; | ||
| 707 | - | ||
| 708 | - | ||
| 709 | - $stmt .= $prefix ."mysql --user=\"$adminUser\" -p $mechanism \"$dbName\" < \"$targetfile\"\n"; | ||
| 710 | - $info['display']=$stmt; | ||
| 711 | - | ||
| 712 | - | ||
| 713 | - $stmt = $prefix ."mysqladmin --user=\"$adminUser\" --force --password=\"$adminPwd\" $mechanism drop \"$dbName\"\n"; | ||
| 714 | - $stmt .= $prefix ."mysqladmin --user=\"$adminUser\" --password=\"$adminPwd\" $mechanism create \"$dbName\"\n"; | ||
| 715 | - | ||
| 716 | - $stmt .= $prefix ."mysql --user=\"$adminUser\" --password=\"$adminPwd\" $mechanism \"$dbName\" < \"$targetfile\""; | ||
| 717 | - $info['cmd']=$stmt; | ||
| 718 | - return $info; | ||
| 719 | -} | ||
| 720 | - | ||
| 721 | -function resolveMysqlDir() | ||
| 722 | -{ | ||
| 723 | - // possibly detect existing installations: | ||
| 724 | - | ||
| 725 | - if (OS_UNIX) | ||
| 726 | - { | ||
| 727 | - $dirs = array('/opt/mysql/bin','/usr/local/mysql/bin'); | ||
| 728 | - $mysqlname ='mysql'; | ||
| 729 | - } | ||
| 730 | - else | ||
| 731 | - { | ||
| 732 | - $dirs = explode(';', $_SERVER['PATH']); | ||
| 733 | - $dirs[] ='c:/Program Files/MySQL/MySQL Server 5.0/bin'; | ||
| 734 | - $dirs[] = 'c:/program files/ktdms/mysql/bin'; | ||
| 735 | - $mysqlname ='mysql.exe'; | ||
| 736 | - } | ||
| 737 | - | ||
| 738 | - $oKTConfig =& KTConfig::getSingleton(); | ||
| 739 | - $mysqldir = $oKTConfig->get('backup/mysqlDirectory',$mysqldir); | ||
| 740 | - $dirs[] = $mysqldir; | ||
| 741 | - | ||
| 742 | - if (strpos(__FILE__,'knowledgeTree') !== false && strpos(__FILE__,'ktdms') != false) | ||
| 743 | - { | ||
| 744 | - $dirs [] = realpath(dirname($FILE) . '/../../mysql/bin'); | 671 | + $oKTConfig =& KTConfig::getSingleton(); |
| 672 | + | ||
| 673 | + $adminUser = $oKTConfig->get('db/dbAdminUser'); | ||
| 674 | + $adminPwd = $oKTConfig->get('db/dbAdminPass'); | ||
| 675 | + $dbHost = $oKTConfig->get('db/dbHost'); | ||
| 676 | + $dbName = $oKTConfig->get('db/dbName'); | ||
| 677 | + $dbPort = trim($oKTConfig->get('db/dbPort')); | ||
| 678 | + if ($dbPort=='' || $dbPort=='default')$dbPort = get_cfg_var('mysql.default_port'); | ||
| 679 | + if (empty($dbPort)) $dbPort='3306'; | ||
| 680 | + $dbSocket = trim($oKTConfig->get('db/dbSocket')); | ||
| 681 | + if (empty($dbSocket) || $dbSocket=='default') $dbSocket = get_cfg_var('mysql.default_socket'); | ||
| 682 | + if (empty($dbSocket)) $dbSocket='../tmp/mysql.sock'; | ||
| 683 | + | ||
| 684 | + $dir = $this->resolveMysqlDir(); | ||
| 685 | + | ||
| 686 | + $info['dir']=$dir; | ||
| 687 | + | ||
| 688 | + $prefix=''; | ||
| 689 | + if (OS_UNIX) { | ||
| 690 | + $prefix .= "./"; | ||
| 691 | + } | ||
| 692 | + | ||
| 693 | + if (@stat($dbSocket) !== false) { | ||
| 694 | + $mechanism="--socket=\"$dbSocket\""; | ||
| 695 | + } | ||
| 696 | + else { | ||
| 697 | + $mechanism="--port=\"$dbPort\""; | ||
| 698 | + } | ||
| 699 | + | ||
| 700 | + $tmpdir = $this->resolveTempDir(); | ||
| 701 | + | ||
| 702 | + $stmt = $prefix ."mysqladmin --user=\"$adminUser\" -p $mechanism drop \"$dbName\"<br/>"; | ||
| 703 | + $stmt .= $prefix ."mysqladmin --user=\"$adminUser\" -p $mechanism create \"$dbName\"<br/>"; | ||
| 704 | + | ||
| 705 | + | ||
| 706 | + $stmt .= $prefix ."mysql --user=\"$adminUser\" -p $mechanism \"$dbName\" < \"$targetfile\"\n"; | ||
| 707 | + $info['display']=$stmt; | ||
| 708 | + | ||
| 709 | + | ||
| 710 | + $stmt = $prefix ."mysqladmin --user=\"$adminUser\" --force --password=\"$adminPwd\" $mechanism drop \"$dbName\"\n"; | ||
| 711 | + $stmt .= $prefix ."mysqladmin --user=\"$adminUser\" --password=\"$adminPwd\" $mechanism create \"$dbName\"\n"; | ||
| 712 | + | ||
| 713 | + $stmt .= $prefix ."mysql --user=\"$adminUser\" --password=\"$adminPwd\" $mechanism \"$dbName\" < \"$targetfile\""; | ||
| 714 | + $info['cmd']=$stmt; | ||
| 715 | + return $info; | ||
| 745 | } | 716 | } |
| 746 | - | ||
| 747 | - foreach($dirs as $dir) | 717 | + |
| 718 | + public function resolveMysqlDir() | ||
| 748 | { | 719 | { |
| 749 | - if (is_file($dir . '/' . $mysqlname)) | 720 | + // possibly detect existing installations: |
| 721 | + | ||
| 722 | + if (OS_UNIX) { | ||
| 723 | + $dirs = array('/opt/mysql/bin','/usr/local/mysql/bin'); | ||
| 724 | + $mysqlname ='mysql'; | ||
| 725 | + } | ||
| 726 | + else | ||
| 750 | { | 727 | { |
| 751 | - return $dir; | 728 | + $dirs = explode(';', $_SERVER['PATH']); |
| 729 | + $dirs[] ='c:/Program Files/MySQL/MySQL Server 5.0/bin'; | ||
| 730 | + $dirs[] = 'c:/program files/ktdms/mysql/bin'; | ||
| 731 | + $mysqlname ='mysql.exe'; | ||
| 752 | } | 732 | } |
| 733 | + | ||
| 734 | + $oKTConfig =& KTConfig::getSingleton(); | ||
| 735 | + $mysqldir = $oKTConfig->get('backup/mysqlDirectory',$mysqldir); | ||
| 736 | + $dirs[] = $mysqldir; | ||
| 737 | + | ||
| 738 | + if (strpos(__FILE__,'knowledgeTree') !== false && strpos(__FILE__,'ktdms') != false) { | ||
| 739 | + $dirs [] = realpath(dirname($FILE) . '/../../mysql/bin'); | ||
| 740 | + } | ||
| 741 | + | ||
| 742 | + foreach($dirs as $dir) | ||
| 743 | + { | ||
| 744 | + if (is_file($dir . '/' . $mysqlname)) | ||
| 745 | + { | ||
| 746 | + return $dir; | ||
| 747 | + } | ||
| 748 | + } | ||
| 749 | + | ||
| 750 | + return ''; | ||
| 753 | } | 751 | } |
| 754 | - | ||
| 755 | - return ''; | ||
| 756 | -} | ||
| 757 | - | ||
| 758 | -function resolveTempDir() | ||
| 759 | -{ | ||
| 760 | - | ||
| 761 | - if (OS_UNIX) | ||
| 762 | - { | ||
| 763 | - $dir='/tmp/kt-db-backup'; | ||
| 764 | - } | ||
| 765 | - else | ||
| 766 | - { | ||
| 767 | - $dir='c:/kt-db-backup'; | ||
| 768 | - } | ||
| 769 | - $oKTConfig =& KTConfig::getSingleton(); | ||
| 770 | - $dir = $oKTConfig->get('backup/backupDirectory',$dir); | ||
| 771 | - | ||
| 772 | - if (!is_dir($dir)) | 752 | + |
| 753 | + public function resolveTempDir() | ||
| 773 | { | 754 | { |
| 774 | - mkdir($dir); | 755 | + if (OS_UNIX) { |
| 756 | + $dir='/tmp/kt-db-backup'; | ||
| 757 | + } | ||
| 758 | + else { | ||
| 759 | + $dir='c:/kt-db-backup'; | ||
| 760 | + } | ||
| 761 | + $oKTConfig =& KTConfig::getSingleton(); | ||
| 762 | + $dir = $oKTConfig->get('backup/backupDirectory',$dir); | ||
| 763 | + | ||
| 764 | + if (!is_dir($dir)) { | ||
| 765 | + mkdir($dir); | ||
| 766 | + } | ||
| 767 | + return $dir; | ||
| 775 | } | 768 | } |
| 776 | - return $dir; | ||
| 777 | -} | ||
| 778 | 769 | ||
| 779 | } | 770 | } |
| 780 | ?> | 771 | ?> |
| 781 | \ No newline at end of file | 772 | \ No newline at end of file |