public function indexAction() { if (Kwf_Setup::getBaseUrl() === null || !Kwf_Config::getValue('server.domain')) { throw new Kwf_Exception_Client("Before running setup please set server.domain and server.baseUrl in config.local.ini"); } if (file_exists('update')) { //for pre 3.3 webs, update file got replaced by kwf_update table throw new Kwf_Exception_Client("Application seems to be set up already. (update file exists)"); } try { Kwf_Registry::get('db'); } catch (Exception $e) { throw new Kwf_Exception_Client("Connection to database failed: " . $e->getMessage()); } if (!Kwf_Registry::get('db')) { throw new Kwf_Exception_Client("Database not configured: create a config.local.ini containing database connection."); } try { Kwf_Registry::get('db')->query("SELECT 1"); } catch (Exception $e) { throw new Kwf_Exception_Client("Connection to database failed: " . $e->getMessage()); } try { $tables = Kwf_Registry::get('db')->fetchCol("SHOW TABLES"); } catch (Exception $e) { throw new Kwf_Exception_Client("Fetching Tables failed: " . $e->getMessage()); } if (in_array('kwf_update', $tables)) { echo "Application seems to be set up already. (kwf_update table exists)\n"; echo "Executing update...\n"; $this->forward('index', 'update'); return; } if ($tables) { throw new Kwf_Exception_Client("Database not empty, incomplete kwf installation or other application already exists in this database."); } $updates = array(); if (file_exists('setup/initial/dump.sql')) { $updates[] = new Kwf_Update_Setup_InitialDb('setup/initial/dump.sql'); if (file_exists('setup/initial/uploads')) { $updates[] = new Kwf_Update_Setup_InitialUploads('setup/initial/uploads'); } } else { $updates = array_merge($updates, Kwf_Util_Update_Helper::getUpdates()); foreach (Kwf_Util_Update_Helper::getUpdateTags() as $tag) { $file = KWF_PATH . '/setup/' . $tag . '.sql'; if (file_exists($file)) { $update = new Kwf_Update_Sql(0, null); $update->sql = file_get_contents($file); $updates[] = $update; } } $updates[] = new Kwf_Update_Setup_InitialDb('setup/setup.sql'); $updates[] = new Kwf_Update_Setup_InitialUploads('setup/uploads'); } $c = new Zend_ProgressBar_Adapter_Console(); $c->setElements(array(Zend_ProgressBar_Adapter_Console::ELEMENT_PERCENT, Zend_ProgressBar_Adapter_Console::ELEMENT_BAR, Zend_ProgressBar_Adapter_Console::ELEMENT_TEXT)); $c->setTextWidth(50); $runner = new Kwf_Util_Update_Runner($updates); $progress = new Zend_ProgressBar($c, 0, $runner->getProgressSteps()); $runner->setProgressBar($progress); if (!$runner->checkUpdatesSettings()) { echo "\ncheckSettings failed, setup stopped\n"; exit; } $doneNames = $runner->executeUpdates(); $runner->writeExecutedUpdates($doneNames); $errors = $runner->getErrors(); if ($errors) { echo "\n\n================\n"; echo count($errors) . " setup script(s) failed:\n"; foreach ($errors as $error) { echo $error['name'] . ": \n"; echo $error['message'] . "\n\n"; } } else { echo "\n\nSetup finished.\nThank you for using Koala Framework.\n"; } exit; }
public function jsonInstallAction() { $cfg = "[production]\n"; $cfg .= "database.web.username = "******"\n"; $cfg .= "database.web.password = "******"\n"; $cfg .= "database.web.dbname = " . $this->_getParam('db_dbname') . "\n"; $cfg .= "database.web.host = " . $this->_getParam('db_host') . "\n"; $cfg .= "\n"; $cfg .= "server.domain = " . $this->getRequest()->getHttpHost() . "\n"; $cfg .= "server.baseUrl = \"" . $this->getRequest()->getBaseUrl() . "\"\n"; $cfg .= "\n"; $cfg .= "debug.error.log = " . (!$this->_getParam('display_errors') ? 'true' : 'false') . "\n"; file_put_contents('config.local.ini', $cfg); file_put_contents('config_section', $this->_getParam('config_section')); //re-create config to load changed config.local.ini Kwf_Config::deleteValueCache('database'); Kwf_Config_Web::reload(); Zend_Registry::getInstance()->offsetUnset('db'); Zend_Registry::getInstance()->offsetSet('dao', new Kwf_Dao()); $updates = array(); foreach (Kwf_Util_Update_Helper::getUpdateTags() as $tag) { $file = KWF_PATH . '/setup/' . $tag . '.sql'; if (file_exists($file)) { $update = new Kwf_Update_Sql(0, null); $update->sql = file_get_contents($file); $updates[] = $update; } } $updates = array_merge($updates, Kwf_Util_Update_Helper::getUpdates()); $updates[] = new Kwf_Update_Setup_InitialDb('setup/setup.sql'); $updates[] = new Kwf_Update_Setup_InitialUploads('setup/uploads'); $update = new Kwf_Update_Sql(0, null); $db = Kwf_Registry::get('db'); mt_srand((double) microtime() * 1000000); $passwordSalt = substr(md5(uniqid(mt_rand(), true)), 0, 10); $update->sql = "TRUNCATE TABLE kwf_users;\n"; $update->sql .= "INSERT INTO kwf_users SET\n role='admin',\n email=" . $db->quote($this->_getParam('admin_email')) . ",\n password="******",\n password_salt=" . $db->quote($passwordSalt) . ";\n"; $updates[] = $update; $c = new Kwf_Util_ProgressBar_Adapter_Cache($this->_getParam('progressNum')); $runner = new Kwf_Util_Update_Runner($updates); $progress = new Zend_ProgressBar($c, 0, $runner->getProgressSteps()); $runner->setProgressBar($progress); if (!$runner->checkUpdatesSettings()) { throw new Kwf_Exception_Client("checkSettings failed, setup stopped"); } $doneNames = $runner->executeUpdates(array('refreshCache' => false)); $runner->writeExecutedUpdates($doneNames); $errors = $runner->getErrors(); if ($errors) { $errMsg = count($errors) . " setup script(s) failed:\n"; foreach ($errors as $error) { $errMsg .= $error['name'] . ": \n"; $errMsg .= $error['message'] . "\n\n"; } throw new Kwf_Exception_Client(nl2br($errMsg)); } }