// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // // SOFTWARE. // ///////////////////////////////////////////////////////////////////////////////////// /////////////////////// // UPGRADE TO V2.0.2 /////////////////////// // --------------------------------------------------------- // Set the proper permissions on the SQLite database file. // Updates the version setting to 2.0.2. // Removes and current patch version from the patch setting. // --------------------------------------------------------- $results = upgrade(); exit(json_encode($results)); function upgrade() { require_once $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "classes" . DIRECTORY_SEPARATOR . "common.class.php"; require_once $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "classes" . DIRECTORY_SEPARATOR . "settings.class.php"; $common = new common(); $settings = new settings(); try { // Set proper permissions on the SQLite file. if ($settings::db_driver == "sqlite") { chmod($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "portal.sqlite", 0666); } // Update the version and patch settings.. $common->updateSetting("version", "2.0.2"); $common->updateSetting("patch", "");
//prepare a 'goback' // break 1; //do a re-switch //prepare a 'goback' // break 1; //do a re-switch case STATE::SELECT: $_STATE->old_date = ""; $new_date = new DATE_FIELD("txtNew", "", TRUE, TRUE, TRUE, 0, FALSE, "now"); old_date(); $_STATE->status = STATE::UPDATE; break 2; case STATE::UPDATE: $_STATE->msgGreet = ""; $new_date = new DATE_FIELD("txtNew", "", TRUE, TRUE, TRUE, 0, FALSE, "now"); $msg = $new_date->audit(); if ($msg === true) { upgrade($new_date); } else { $_STATE->msgStatus = $msg; $_STATE->status = STATE::INIT; break; } $_STATE->status = STATE::DONE; break 2; default: throw_the_bum_out(NULL, "Evicted(" . __LINE__ . "): invalid state=" . $_STATE->status); } } //while & switch //End Main State Gate function old_date() {
public function save($obj, $mysqli) { // save either one or array of objects to database $use_existing_connection = false; try { // use object class name for table name if (is_array($obj)) { $tableName = get_class(reset($obj)); } else { $tableName = get_class($obj); } if ($mysqli == null) { // connect to database $mysqli = mysqli_connect($settings->DatabaseServerIP, $settings->DatabaseUser, $settings->DatabasePassword, $settings->SchemaName); } else { $use_existing_connection = true; } // check to see if the table exists... if not, create. $checkTableQuery = "SELECT COLUMN_NAME,DATA_TYPE FROM information_schema.columns WHERE table_schema = '" . $settings->SchemaName . "' AND table_name = '" . $tableName . "'"; $table = $mysqli->query($checkTableQuery); $columns = []; if ($table->num_rows == 0) { // create table $createTableQuery = "CREATE TABLE " . $tableName . " (id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY)"; $mysqli->query($createTableQuery); $columns['id'] = 'integer'; } else { for ($i = 0; $i < $table->num_rows; $i++) { $data = $res->fetch_assoc(); $columns[$data['COLUMN_NAME']] = $data['DATA_TYPE']; //TODO: add data type conversion function } } // unify our process so it works with single items or arrays. $items = []; $ids = []; if (is_array($obj)) { $items = $obj; } else { $items[] = $obj; } // evaluate all items to save. foreach ($items as $item) { // get all item values $properties = get_object_vars($item); // loop through columns ($column) checking, modifying // TODO: add data type modification function // allowed one-way modification sequences: // boolean > int > double > string // date/time > string foreach ($column as $name => $type) { $column[$name] = php_type($type); } // loop through properties and add columns as needed based on type of property. // TODO: add reverse data type conversion function foreach ($properties as $property => $value) { if (get_object_vars($value) == null) { $match = false; foreach ($column as $name => $type) { if ($name == $property) { $match = true; if (gettype($value) == $type) { } else { $oldtype = $type; $type = upgrade($type, gettype($value)); if ($oldtype != $type) { $modifyColumnQuery = "ALTER TABLE " . $tablename . " MODIFY " . $property . " " . mysql_type($type) . ";"; $mysqli->query($modifyColumnQuery); } } } } // if the column does not yet exist in the MySQL table, then add it. if (!$match) { $createColumnQuery = "ALTER TABLE " . $tablename . " ADD " . $property . " " . mysql_type(gettype($value)) . ";"; $mysqli->query($createColumnQuery); } } else { // save the subobject in its own table. save($value, $mysqli); } } } // catch any MySQL errors and throw them into the main error handler with appropriate context data. if ($mysqli->error) { throw new Exception("MySQL Error: " . $mysqli->error . " Query: " . $createTableQuery, $msqli->errno); } // close connection if, and only if the connection was not passed in from another function. if (!$use_existing_connection) { $mysqli->close(); } } catch (Exception $e) { error_log($e->getMessage()) . "\n"; return null; } // return id or list of ids. Null for exception if (is_array($obj)) { return $ids; // get the whole list. } else { return reset($ids); // get just the first id from the array. } }
function Save() { global $page_template; $default_pattern = "RANDOM PICKUP LINE"; $default_error_response = "No AIML category found. This is a Default Response."; $default_conversation_lines = '1'; $default_remember_up_to = '10'; $_SESSION['errorMessage'] = ''; // First off, write the config file $myPostVars = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); ksort($myPostVars); $configContents = file_get_contents(_CONF_PATH_ . 'global_config.tpl'); foreach ($myPostVars as $key => $value) { $tagSearch[] = "[{$key}]"; $varReplace[] = $value; } $configContents = str_replace($tagSearch, $varReplace, $configContents); $saveFile = file_put_contents(_CONF_PATH_ . 'global_config.php', $configContents); #die("<pre>Executing function Save - Config file saved as config.php.test\n\n</pre>\n"); // Now, update the data to the database, starting with making sure the tables are installed $sql = "show tables;"; $conn = mysql_connect($myPostVars['dbh'], $myPostVars['dbu'], $myPostVars['dbp']) or install_error('Could not connect to the database!', mysql_error(), $sql); $dbn = $myPostVars['dbn']; $db = mysql_select_db($dbn, $conn) or install_error("Can't select the database {$dbn}!", mysql_error(), "use {$dbn}"); $result = mysql_query($sql, $conn) or install_error('Unknown database error!', mysql_error(), $sql); $out = mysql_fetch_assoc($result); if (empty($out)) { $sql = file_get_contents('new.sql'); $queries = preg_split("/;/", $sql); foreach ($queries as $query) { if (strlen(trim($query)) > 0) { $result = mysql_query($query, $conn) or install_error('Error creating new tables for DB!', mysql_error(), $sql); $success = mysql_affected_rows(); } } } $sql = 'select `error_response` from `bots` where 1 limit 1'; $result = mysql_query($sql, $conn) or upgrade($conn); $sql = 'select `php_code` from `aiml` where 1 limit 1'; $result = mysql_query($sql, $conn) or upgrade($conn); // $default_pattern, $default_remember_up_to, $default_conversation_lines, $default_error_response $sql_template = "\nINSERT IGNORE INTO `bots` (`bot_id`, `bot_name`, `bot_desc`, `bot_active`, `bot_parent_id`, `format`, `use_aiml_code`, `update_aiml_code`, `save_state`, `conversation_lines`, `remember_up_to`, `debugemail`, `debugshow`, `debugmode`, `error_response`, `default_aiml_pattern`)\nVALUES ([bot_id], '[bot_name]', '[bot_desc]', '[bot_active]', '[bot_parent_id]', '[format]', '[use_aiml_code]', '[update_aiml_code]', '[save_state]', \n'{$default_conversation_lines}', '{$default_remember_up_to}', '[debugemail]', '[debugshow]', '[debugmode]', '{$default_error_response}', '{$default_pattern}');"; require_once _LIB_PATH_ . 'error_functions.php'; require_once _LIB_PATH_ . 'db_functions.php'; $bot_id = 1; $sql = str_replace('[bot_id]', $bot_id, $sql_template); $sql = str_replace('[bot_name]', $myPostVars["bot_name"], $sql); $sql = str_replace('[bot_desc]', $myPostVars["bot_desc"], $sql); $sql = str_replace('[bot_active]', $myPostVars["bot_active"], $sql); $sql = str_replace('[bot_parent_id]', 1, $sql); $sql = str_replace('[format]', $myPostVars["default_format"], $sql); // "Use PHP from DB setting if (!isset($myPostVars["default_use_aiml_code"])) { $myPostVars["default_use_aiml_code"] = 0; } $sql = str_replace('[use_aiml_code]', $myPostVars["default_use_aiml_code"], $sql); // "Update PHP in DB setting if (!isset($myPostVars["default_update_aiml_code"])) { $myPostVars["default_update_aiml_code"] = 0; } $sql = str_replace('[update_aiml_code]', $myPostVars["default_update_aiml_code"], $sql); $sql = str_replace('[save_state]', $myPostVars["default_save_state"], $sql); $sql = str_replace('[conversation_lines]', $default_conversation_lines, $sql); $sql = str_replace('[remember_up_to]', $default_remember_up_to, $sql); $sql = str_replace('[debugemail]', $myPostVars["default_debugemail"], $sql); $sql = str_replace('[debugshow]', $myPostVars["default_debugshow"], $sql); $sql = str_replace('[debugmode]', $myPostVars["default_debugmode"], $sql); $sql = str_replace('[error_response]', $default_error_response, $sql); $sql = str_replace('[default_aiml_pattern]', $default_pattern, $sql); $save = file_put_contents(_CONF_PATH_ . 'sql.txt', $sql); $x = db_query($sql, $conn) or install_error('Could not enter bot info for bot #' . $bot_id . '!', mysql_error(), $sql); $encrypted_adm_dbp = md5($myPostVars["adm_dbp"]); $adm_dbu = $myPostVars["adm_dbu"]; $cur_ip = $_SERVER['REMOTE_ADDR']; $adminSQL = "insert ignore into `myprogramo` (`id`, `uname`, `pword`, `lastip`) values(null, '{$adm_dbu}', '{$encrypted_adm_dbp}', '{$cur_ip}');"; $result = db_query($adminSQL, $conn) or install_error('Could not add admin credentials! Check line #' . __LINE__, mysql_error(), $sql); mysql_close($conn); return ($result and empty($_SESSION['errorMessage'])) ? getSection('InstallComplete', $page_template) : getSection('InstallError', $page_template); }
$sql = "DROP TABLE IF EXISTS `ad_computers`;\r\n CREATE TABLE `ad_computers` (\r\n `guid` varchar(45) NOT NULL,\t# Computer object GUID from AD as a string\r\n `cn` varchar(45) NOT NULL,\t\t# Computer object CN value from AD\r\n `audit_timestamp` varchar(45) NOT NULL,\t# last audit timestamp\r\n `usnchanged` int(10) unsigned NOT NULL,\t# Computer object usnchanged value from AD\r\n `first_audit_timestamp` varchar(45) NOT NULL, # First audit timestamp\r\n `ou_id` varchar(45) NOT NULL,\t# Reference to ad_ous.ou_id (the OU that owns this computer account)\r\n `description` varchar(45) default NULL,\t# Computer object description value from AD\r\n `os` varchar(45) default NULL,\t# Computer object operatingsystem value from AD\r\n `service_pack` varchar(45) default NULL,\t# Computer object operatingsystemservicepack value from AD\r\n `dn` varchar(255) NOT NULL,\t# Computer object distinguishedname value from AD\r\n PRIMARY KEY (`guid`)\r\n ) ENGINE=MyISAM DEFAULT CHARSET=latin1;\r\n\r\n\r\n DROP TABLE IF EXISTS `ad_domains`;\r\n CREATE TABLE `ad_domains` (\r\n `guid` varchar(45) NOT NULL,\t# Unique ID for the domain (intend to use the domain AD GUID at some point)\r\n `default_nc` varchar(45) NOT NULL,\t# Domain defaultnamingcontext\r\n `fqdn` varchar(45) NOT NULL,\t# Domain FQDN\r\n `ldap_server` varchar(45) NOT NULL,\t# LDAP host server\r\n `ldap_user` varchar(45) NOT NULL,\t# LDAP login (AD Account)\r\n `ldap_password` varchar(45) NOT NULL,\t# LDAP password \r\n `netbios_name` varchar(45) NOT NULL,\t# Domain NetBIOS name\r\n PRIMARY KEY (`guid`)\r\n ) ENGINE=MyISAM DEFAULT CHARSET=latin1;\r\n\r\n\r\n DROP TABLE IF EXISTS `ad_ous`;\r\n CREATE TABLE `ad_ous` (\r\n `ou_id` varchar(45) NOT NULL,\t# Unique ID for the OU (intend to use the OU AD GUID at some point)\r\n `ou_dn` varchar(255) default NULL,\t# OU object distinguished name\r\n `ou_domain_guid` varchar(45) default NULL,\t# Reference to ad_domains.guid (the domain that owns this OU)\r\n `ou_audit_timestamp` varchar(45) default NULL,\t# Audit timestamp for this OU\r\n `include_in_audit` tinyint(1) default NULL,\t# Flag to include/exclude OU from audit\r\n PRIMARY KEY (`ou_id`)\r\n ) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;\r\n\r\n\r\n DROP TABLE IF EXISTS `ad_users`;\r\n CREATE TABLE `ad_users` (\r\n `guid` varchar(45) NOT NULL,\r\n `cn` varchar(45) NOT NULL,\r\n `audit_timestamp` varchar(45) NOT NULL,\r\n `usnchanged` int(10) unsigned NOT NULL,\r\n `first_audit_timestamp` varchar(45) NOT NULL,\r\n `ou_id` varchar(45) NOT NULL,\r\n `description` varchar(45) default NULL,\r\n `department` varchar(45) default NULL,\r\n `users_dn` varchar(255) NOT NULL,\r\n PRIMARY KEY (`guid`)\r\n ) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;"; upgrade($version, "08.05.21", $sql); $sql = "ALTER TABLE `mapped` ADD COLUMN `mapped_username` varchar(100) NOT NULL default '' AFTER `mapped_size`,\r\n ADD COLUMN `mapped_connect_as` varchar(100) NOT NULL default '' AFTER `mapped_username`;\r\n\r\n ALTER TABLE `motherboard` ADD COLUMN `motherboard_cpu_sockets` INT( 10 ) NOT NULL DEFAULT '0' AFTER `motherboard_product`,\r\n ADD COLUMN `motherboard_memory_slots` INT( 10 ) NOT NULL DEFAULT '0' AFTER `motherboard_cpu_sockets`;\r\n\r\n ALTER TABLE `groups` CHANGE `groups_members` `groups_members` VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL;"; upgrade($version, "08.06.06", $sql); $sql = "ALTER TABLE `memory` ADD COLUMN `memory_tag` varchar(255) NOT NULL default '' AFTER `memory_speed`"; upgrade($version, "08.07.23", $sql); $sql = "DROP TABLE IF EXISTS `ad_computers`;\r\n DROP TABLE IF EXISTS `ad_domains`;\r\n DROP TABLE IF EXISTS `ad_ous`;\r\n DROP TABLE IF EXISTS `ad_users`;\r\n\r\n DROP TABLE IF EXISTS `ldap_computers`;\r\n CREATE TABLE `ldap_computers` (\r\n `ldap_computers_guid` varchar(45) NOT NULL,\r\n `ldap_computers_cn` varchar(255) NOT NULL,\r\n `ldap_computers_timestamp` varchar(45) NOT NULL,\r\n `ldap_computers_first_timestamp` varchar(45) NOT NULL,\r\n `ldap_computers_path_id` varchar(45) NOT NULL,\r\n `ldap_computers_description` varchar(255) default NULL,\r\n `ldap_computers_os` varchar(255) default NULL,\r\n `ldap_computers_service_pack` varchar(255) default NULL,\r\n `ldap_computers_dn` varchar(255) NOT NULL,\r\n PRIMARY KEY (`ldap_computers_guid`)\r\n ) ENGINE=MyISAM DEFAULT CHARSET=latin1;\r\n\r\n DROP TABLE IF EXISTS `ldap_connections`;\r\n CREATE TABLE `ldap_connections` (\r\n `ldap_connections_id` int(10) unsigned NOT NULL auto_increment,\r\n `ldap_connections_nc` varchar(255) NOT NULL,\r\n `ldap_connections_fqdn` varchar(255) NOT NULL,\r\n `ldap_connections_server` varchar(255) NOT NULL,\r\n `ldap_connections_user` varchar(45) NOT NULL,\r\n `ldap_connections_password` varchar(45) NOT NULL,\r\n `ldap_connections_name` varchar(45) NOT NULL,\r\n `ldap_connections_schema` varchar(45) NOT NULL,\r\n PRIMARY KEY (`ldap_connections_id`)\r\n ) ENGINE=MyISAM DEFAULT CHARSET=latin1;\r\n\r\n DROP TABLE IF EXISTS `ldap_paths`;\r\n CREATE TABLE `ldap_paths` (\r\n `ldap_paths_id` int(10) unsigned NOT NULL auto_increment,\r\n `ldap_paths_dn` varchar(255) default NULL,\r\n `ldap_paths_connection_id` varchar(45) default NULL,\r\n `ldap_paths_timestamp` varchar(45) default NULL,\r\n `ldap_paths_audit` tinyint(1) default NULL,\r\n PRIMARY KEY (`ldap_paths_id`)\r\n ) ENGINE=MyISAM DEFAULT CHARSET=latin1;\r\n\r\n DROP TABLE IF EXISTS `ldap_users`;\r\n CREATE TABLE `ldap_users` (\r\n `ldap_users_guid` varchar(45) NOT NULL,\r\n `ldap_users_cn` varchar(255) NOT NULL,\r\n `ldap_users_timestamp` varchar(45) NOT NULL,\r\n `ldap_users_first_timestamp` varchar(45) NOT NULL,\r\n `ldap_users_path_id` varchar(45) NOT NULL,\r\n `ldap_users_description` varchar(255) default NULL,\r\n `ldap_users_department` varchar(255) default NULL,\r\n `ldap_users_dn` varchar(255) NOT NULL,\r\n PRIMARY KEY (`ldap_users_guid`)\r\n ) ENGINE=MyISAM DEFAULT CHARSET=latin1;\r\n\r\n DROP TABLE IF EXISTS `log`;\r\n CREATE TABLE `log` (\r\n `log_id` int(10) unsigned NOT NULL auto_increment,\r\n `log_timestamp` varchar(45) NOT NULL,\r\n `log_message` varchar(1024) NOT NULL,\r\n `log_severity` int(10) unsigned NOT NULL,\r\n `log_module` varchar(128) NOT NULL,\r\n `log_function` varchar(128) NOT NULL,\r\n PRIMARY KEY (`log_id`)\r\n ) ENGINE=MyISAM DEFAULT CHARSET=latin1;"; upgrade($version, "08.10.08", $sql); // Add indexes to improve performance of queries used by index.php - this can take longer than standard script timeout set_time_limit(300); $sql = "ALTER TABLE `software` ADD INDEX `Index3`(`software_first_timestamp`);\r\n ALTER TABLE `software` ADD INDEX `Index4`(`software_name`);\r\n ALTER TABLE `system` ADD INDEX `Index3`(`system_first_timestamp`);"; upgrade($version, "08.10.09", $sql); //Added more ldap fields (most of the active directory ;¬) set_time_limit(3000); $sql = "ALTER TABLE `ldap_users` ADD COLUMN `ldap_users_sn` varchar(255) NOT NULL default '' AFTER `ldap_users_dn`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_c` varchar(255) NOT NULL default '' AFTER `ldap_users_sn`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_l` varchar(255) NOT NULL default '' AFTER `ldap_users_c`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_st` varchar(255) NOT NULL default '' AFTER `ldap_users_l`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_title` varchar(255) NOT NULL default '' AFTER `ldap_users_st`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_postalcode` varchar(255) NOT NULL default '' AFTER `ldap_users_title`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_physicaldeliveryofficename` varchar(255) NOT NULL default '' AFTER `ldap_users_postalcode`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_telephonenumber` varchar(255) NOT NULL default '' AFTER `ldap_users_physicaldeliveryofficename`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_givenname` varchar(255) NOT NULL default '' AFTER `ldap_users_telephonenumber`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_distinguishedname` varchar(255) NOT NULL default '' AFTER `ldap_users_givenname`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_instancetype` varchar(255) NOT NULL default '' AFTER `ldap_users_distinguishedname`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_whencreated` varchar(255) NOT NULL default '' AFTER `ldap_users_instancetype`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_whenchanged` varchar(255) NOT NULL default '' AFTER `ldap_users_whencreated`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_displayname` varchar(255) NOT NULL default '' AFTER `ldap_users_whenchanged`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_usncreated` varchar(255) NOT NULL default '' AFTER `ldap_users_displayname`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_usnchanged` varchar(255) NOT NULL default '' AFTER `ldap_users_usncreated`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_co` varchar(255) NOT NULL default '' AFTER `ldap_users_usnchanged`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_company` varchar(255) NOT NULL default '' AFTER `ldap_users_co`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_streetaddress` varchar(255) NOT NULL default '' AFTER `ldap_users_company`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_name` varchar(255) NOT NULL default '' AFTER `ldap_users_streetaddress`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_objectguid` varchar(255) NOT NULL default '' AFTER `ldap_users_name`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_useraccountcontrol` varchar(255) NOT NULL default '' AFTER `ldap_users_objectguid`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_badpwdcount` varchar(255) NOT NULL default '' AFTER `ldap_users_useraccountcontrol`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_codepage` varchar(255) NOT NULL default '' AFTER `ldap_users_badpwdcount`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_countrycode` varchar(255) NOT NULL default '' AFTER `ldap_users_codepage`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_badpasswordtime` varchar(255) NOT NULL default '' AFTER `ldap_users_countrycode`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_lastlogoff` varchar(255) NOT NULL default '' AFTER `ldap_users_badpasswordtime`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_lastlogon` varchar(255) NOT NULL default '' AFTER `ldap_users_lastlogoff`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_scriptpath` varchar(255) NOT NULL default '' AFTER `ldap_users_lastlogon`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_pwdlastset` varchar(255) NOT NULL default '' AFTER `ldap_users_scriptpath`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_primarygroupid` varchar(255) NOT NULL default '' AFTER `ldap_users_pwdlastset`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_objectsid` varchar(255) NOT NULL default '' AFTER `ldap_users_primarygroupid`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_accountexpires` varchar(255) NOT NULL default '' AFTER `ldap_users_objectsid`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_logoncount` varchar(255) NOT NULL default '' AFTER `ldap_users_accountexpires`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_samaccountname` varchar(255) NOT NULL default '' AFTER `ldap_users_logoncount`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_samaccounttype` varchar(255) NOT NULL default '' AFTER `ldap_users_samaccountname`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_userprincipalname` varchar(255) NOT NULL default '' AFTER `ldap_users_samaccounttype`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_lockouttime` varchar(255) NOT NULL default '' AFTER `ldap_users_userprincipalname`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_objectcategory` varchar(255) NOT NULL default '' AFTER `ldap_users_lockouttime`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_dscorepropagationdata` varchar(255) NOT NULL default '' AFTER `ldap_users_objectcategory`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_lastlogontimestamp` varchar(255) NOT NULL default '' AFTER `ldap_users_dscorepropagationdata`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_mail` varchar(255) NOT NULL default '' AFTER `ldap_users_lastlogontimestamp`;\r\nALTER TABLE `ldap_users` ADD COLUMN `ldap_users_manager` varchar(255) NOT NULL default '' AFTER `ldap_users_mail`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_distinguishedname` varchar(255) NOT NULL default '' AFTER `ldap_computers_cn`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_instancetype` varchar(255) NOT NULL default '' AFTER `ldap_computers_distinguishedname`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_whencreated` varchar(255) NOT NULL default '' AFTER `ldap_computers_instancetype`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_whenchanged` varchar(255) NOT NULL default '' AFTER `ldap_computers_whencreated`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_displayname` varchar(255) NOT NULL default '' AFTER `ldap_computers_whenchanged`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_usncreated` varchar(255) NOT NULL default '' AFTER `ldap_computers_displayname`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_usnchanged` varchar(255) NOT NULL default '' AFTER `ldap_computers_usncreated`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_name` varchar(255) NOT NULL default '' AFTER `ldap_computers_usnchanged`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_objectguid` varchar(255) NOT NULL default '' AFTER `ldap_computers_name`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_useraccountcontrol` varchar(255) NOT NULL default '' AFTER `ldap_computers_objectguid`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_badpwdcount` varchar(255) NOT NULL default '' AFTER `ldap_computers_useraccountcontrol`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_codepage` varchar(255) NOT NULL default '' AFTER `ldap_computers_badpwdcount`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_countrycode` varchar(255) NOT NULL default '' AFTER `ldap_computers_codepage`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_badpasswordtime` varchar(255) NOT NULL default '' AFTER `ldap_computers_countrycode`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_lastlogoff` varchar(255) NOT NULL default '' AFTER `ldap_computers_badpasswordtime`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_lastlogon` varchar(255) NOT NULL default '' AFTER `ldap_computers_lastlogoff`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_localpolicyflags` varchar(255) NOT NULL default '' AFTER `ldap_computers_lastlogon`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_pwdlastset` varchar(255) NOT NULL default '' AFTER `ldap_computers_localpolicyflags`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_primarygroupid` varchar(255) NOT NULL default '' AFTER `ldap_computers_pwdlastset`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_objectsid` varchar(255) NOT NULL default '' AFTER `ldap_computers_primarygroupid`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_accountexpires` varchar(255) NOT NULL default '' AFTER `ldap_computers_objectsid`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_logoncount` varchar(255) NOT NULL default '' AFTER `ldap_computers_accountexpires`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_samaccountname` varchar(255) NOT NULL default '' AFTER `ldap_computers_logoncount`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_samaccounttype` varchar(255) NOT NULL default '' AFTER `ldap_computers_samaccountname`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_operatingsystem` varchar(255) NOT NULL default '' AFTER `ldap_computers_samaccounttype`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_operatingsystemversion` varchar(255) NOT NULL default '' AFTER `ldap_computers_operatingsystem`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_operatingsystemservicepack` varchar(255) NOT NULL default '' AFTER `ldap_computers_operatingsystemversion`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_dnshostname` varchar(255) NOT NULL default '' AFTER `ldap_computers_operatingsystemservicepack`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_serviceprincipalname` varchar(255) NOT NULL default '' AFTER `ldap_computers_dnshostname`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_objectcategory` varchar(255) NOT NULL default '' AFTER `ldap_computers_serviceprincipalname`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_iscriticalsystemobject` varchar(255) NOT NULL default '' AFTER `ldap_computers_objectcategory`;\r\nALTER TABLE `ldap_computers` ADD COLUMN `ldap_computers_lastlogontimestamp` varchar(255) NOT NULL default '' AFTER `ldap_computers_iscriticalsystemobject`;"; upgrade($version, "08.12.10", $sql); // ************* Version 09.03.17 ******************************************************************* // Update include_config.php - preserving existing values $current_content = file_get_contents("include_config.php"); $content = "<?php\ninclude_once \"include_config_defaults.php\"; // Ensures that all variables have a default value\n"; $content .= substr($current_content, 6); if (is_writable("include_config.php")) { if (!($handle = fopen("include_config.php", 'w'))) { exit("Cannot open file ({$filename})"); } if (fwrite($handle, $content) === FALSE) { exit("Cannot write to file ({$filename})"); } echo __("The Open-AudIT config has been updated"); fclose($handle); } else {
/** * Install, uninstall, or upgrade a module. This calls the init file in a module and runs one of the following functions: * install(), uninstall(), or upgrade(). * * @param int $id * @param string $action * */ function init_module($id, $action, $msg = '') { $directory = $this->get_module($id); if (!$directory) { return false; } if ($this->exists($directory['directory'], '/init.php')) { require_once $this->modules_dir . '/' . $directory['directory'] . '/init.php'; } if ($action == "deactivate") { if (function_exists('uninstall')) { $msg = uninstall(); } $this->db->delete('modules', array('id' => $id)); return $msg; } elseif ($action == "upgrade") { if (function_exists('upgrade')) { upgrade(); } if ($this->exists($directory['directory'])) { $data = $this->get_config($directory['directory']); $module_data = array('name' => $data['module']['name'], 'displayname' => $data['module']['displayname'], 'description' => $data['module']['description'], 'directory' => $data['module']['name'], 'version' => $data['module']['version'], 'active' => 1); $this->db->where('id', $id); $this->db->update('modules', $module_data); $this->db->cache_delete_all(); } } else { if (function_exists('install')) { install(); } } }
function install() { global $dblink, $dbserv, $dbuser, $dbpass, $dbname, $dbpref, $dberror, $abxd_version; doSanityChecks(); if (file_exists("config/database.php")) { //TODO: Check for errors when parsing this file (It may be corrupted or wrong or whatever. //If it fails, fail gracefully and instruct the user to fix or delete database.php include "config/database.php"; } else { $dbserv = $_POST['dbserv']; $dbuser = $_POST['dbuser']; $dbpass = $_POST['dbpass']; $dbname = $_POST['dbname']; $dbpref = $_POST['dbpref']; } $convert = $_POST["convert"] == "true"; $convertFrom = $_POST["convertFrom"]; $convertDbName = $_POST["convertDbName"]; $convertDbPrefix = $_POST["convertDbPrefix"]; if (!sqlConnect()) { installationError("Could not connect to the database. Error was: " . $dberror); } $currVersion = getInstalledVersion(); if ($currVersion == $abxd_version) { installationError("The board is already installed and updated (Database version {$currVersion}). You don't need to run the installer!\n"); } if ($currVersion != -1 && $convert) { die("ERROR: You asked to convert a forum database, but an ABXD installation was already found in the installation DB. Converting is only possible when doing a new installation."); } echo "Setting utf8_unicode_ci collation to the database...\n"; query("ALTER DATABASE {$dbname} COLLATE utf8_unicode_ci"); if ($currVersion == -1) { echo "Installing database version {$abxd_version}...\n"; } else { echo "Upgrading database from version {$currVersion} to {$abxd_version}...\n"; } upgrade(); $misc = Query("select * from {misc}"); if (NumRows($misc) == 0) { Query("INSERT INTO `{misc}` (`views`, `hotcount`, `milestone`, `maxuserstext`) VALUES (0, 30, 'Nothing yet.', 'Nobody yet.');"); } Query("UPDATE `{misc}` SET `version` = {0}", $abxd_version); if (!is_dir("config")) { mkdir("config"); } if ($currVersion == -1) { //Stuff to do on new installation (Not upgrade) Import("install/smilies.sql"); if ($convert) { runConverter($convertFrom, $convertDbName, $convertPrefix); } else { Import("install/installDefaults.sql"); } if (file_exists("config/salt.php")) { echo "Not generating new salt.php as it's already present...\n"; } else { echo "Generating new salt.php...\n"; writeConfigSalt(); } } if (!file_exists("config/database.php")) { writeConfigDatabase(); } }
// add derived stats $stats = stats_derive($stats); // modify derived stats by talents $stats = talents_calculate_derived($stats); // modify derived stats by buffs $stats = buffs_calculate_derived($stats); // dps is only counted when comparing weapons, dont add it to total score yet. $stats["dps"][0]="0"; // fetch items and show upgrade suggestion list $slot = $_GET['slot']; $slotgeneral = trim($slot, "0..9"); // remove the number (ring1 -> ring, lesser3 -> lesser, etc) upgrade($slotgeneral,$_POST[$slot.'suggest'],$stats,$statslist,$mainhand,$offhand,$spec); mysql_close($link); // END OF MAIN CODE // // this function returns a html table with all alternative items for the given slot, and score relative to the given itemname function upgrade($slot,$currentitemname,$stats,$statslist,$mainhand,$offhand,$spec) { // if no name was entered, assume "None (Slot)" was intended if($currentitemname=="") $currentitemname = "None (".$slot.")"; // create array with old values of stats $oldstats = array(); foreach($stats as $stat) { $oldstats[$stat[1]] = $stats[$stat[1]][0]; }
} include_once dirname(__FILE__) . '/ressources/class.templates.inc'; include_once dirname(__FILE__) . '/ressources/class.status.inc'; include_once dirname(__FILE__) . '/ressources/class.os.system.inc'; include_once dirname(__FILE__) . '/framework/class.unix.inc'; include_once dirname(__FILE__) . "/framework/frame.class.inc"; if (preg_match("#--verbose#", implode(" ", $argv))) { $GLOBALS["debug"] = true; $GLOBALS["VERBOSE"] = true; } if ($argv[1] == "--detect") { detect_kernels(); die; } if ($argv[1] == "--install") { upgrade($argv[2]); die; } function detect_kernels() { $unix = new unix(); if (!$GLOBALS["VERBOSE"]) { if (is_file("/usr/share/artica-postfix/ressources/logs/kernel.lst")) { if ($unix->file_time_min("/usr/share/artica-postfix/ressources/logs/kernel.lst") < 360) { die; } } } $users = new usersMenus(); if ($users->LinuxDistriCode != "DEBIAN" && $users->LinuxDistriCode != "UBUNTU") { die;
/** * Runs on activation * * Currently: * - Calls `init` * - Calls `upgrade` * - Flushes the rewrite rules so this plugin's PT permalinks * are registered with WP * * @since 3.0.0 */ function activate() { init(); upgrade(); flush_rewrite_rules(); php_version_check(); }
$version = $database->loadResult(); // If current version is 2.00 if (in_array($version, array('2.00', '-1', '2.0.0', ''))) { upgrade(2, 0, 0); } $database->setQuery('SELECT value, varname FROM #__mt_config WHERE varname LIKE \'%version\' AND groupname = \'core\' LIMIT 4'); $version = $database->loadObjectList('varname'); // A fix for 2.0.1/3/4. Appears that 2.0.1/3/4's mtree.xml file does not update dev_version to 1/3/4 if (in_array($version['version']->value, array('2.0.1', '2.0.3', '2.0.4'))) { $version['major_version']->value = 2; $version['minor_version']->value = 0; $version['dev_version']->value = substr($version['version']->value, -1, 1); } JToolBarHelper::title(JText::_('Mosets Tree Upgrader')); printStartTable(); if (upgrade($version['major_version']->value, $version['minor_version']->value, $version['dev_version']->value) === false) { // printRow('You\'re currently at version ' . $version['major_version']->value . '.' . $version['minor_version']->value . '.' . $version['dev_version']->value); // printRow('No more upgrades needed.',2); } else { printRow('Upgrades Completed!', 2); printRow('<a href="index2.php?option=com_mtree">< Back to Mosets Tree</a>', 2); } printEndTable(); function is15xSeries() { global $mainframe; $database =& JFactory::getDBO(); $db_prefix = $mainframe->getCfg('dbprefix'); $database->setQuery("SHOW TABLE STATUS LIKE '" . $db_prefix . "mt_config'"); $table = $database->loadObject(); if ($table->Name == $db_prefix . 'mt_config' && $table->Rows == 30) {
function loadSQLFile($db, $filename) { $lines = explode("\n", file_get_contents($filename)); foreach ($lines as $line) { upgrade($db, $line); } }
saveconfig($cid[0], $option); break; case 'uploadfile': uploadPackage(); break; case 'uploadlanguage': uploadPackage(); break; case 'changelanguage': changeLanguage(); break; case 'import_swMenuFree': import_swmenufree(); break; case "upgrade": upgrade($option); break; case "exportMenu": $msg = exportMenu($cid[0], $option); $mainframe->redirect("index2.php?task=showmodules&option={$option}&limit={$limit}&limitstart={$limitstart}", $msg); break; case "imagesave": saveImages($cid[0], $option); break; case "manualsave": saveCSS($cid[0], $option); break; case "editDhtmlMenu": editDhtmlMenu($cid[0], $option); break; case "editCSS":
header('Content-type:application/text'); header('Content-Disposition:attachment;filename=bugfree.sql.gz'); echo $compressSql; break; } } renderFile($viewFile, array('version' => $version)); @mysql_close($con); break; case UPGRADE: list($dbhost, $dbname, $port, $dbuser, $dbpwd, $dbprefix) = getDBConfig(CONFIG_FILE); list($result, $info, $target, $con) = getDBCon($dbhost, $port, $dbuser, $dbpwd); if (!$result) { $dbVersion = isset($_GET['dbversion']) ? $_GET['dbversion'] : null; $step = isset($_GET['step']) ? $_GET['step'] : 1; list($result, $info, $dbVersion, $step) = upgrade($con, $dbname, $dbprefix, $dbVersion, $step); } @mysql_close($con); echo json_encode(array('result' => $result, 'info' => $info, 'dbversion' => $dbVersion, 'step' => $step)); break; case UPGRADED: $viewFile = $viewDir . 'upgraded.php'; file_put_contents('install.lock', ''); renderFile($viewFile); break; case CONFIG: $viewFile = $viewDir . 'config.php'; renderFile($viewFile); break; case INSTALL: $dbname = isset($_POST['dbname']) ? $_POST['dbname'] : '';
function uploadPackage() { $absolute_path = JPATH_ROOT; //echo $absolute_path; $userfile = JRequest::getVar('userfile', null, 'files', 'array'); if (!$userfile) { exit; } //echo $userfile_name; $msg = ''; move_uploaded_file($userfile['tmp_name'], $absolute_path . '/tmp/' . $userfile['name']); //$resultdir = uploadFile( $userfile['tmp_name'], $userfile['name'], $msg ); $msg = extractArchive($userfile['name']); if (file_exists($msg . "/swmenufree.xml")) { $upload_version = get_Version($msg . "/swmenufree.xml"); } else { $upload_version = 0; } // echo $msg; $current_version = get_Version($absolute_path . '/administrator/components/com_swmenufree/swmenufree.xml'); //echo $upload_version; if ($current_version < $upload_version) { if (copydirr($msg . "/admin/", $absolute_path . '/administrator/components/com_swmenufree', false)) { unlink($absolute_path . '/administrator/components/com_swmenufree/swmenufree.xml'); unlink($absolute_path . '/administrator/components/com_swmenufree/admin.swmenufree.php'); copy($msg . "/swmenufree.xml", $absolute_path . '/administrator/components/com_swmenufree/swmenufree.xml'); $message = _SW_COMPONENT_SUCCESS; } else { $message = _SW_COMPONENT_FAIL; } } else { $message = _SW_INVALID_FILE; } sw_deldir($msg); unlink($absolute_path . "/tmp/" . $userfile['name']); echo "<dl id=\"system-message\"><dt class=\"message\">Message</dt>\n\t\t<dd class=\"message message fade\"><ul><li>" . $message . "</li>\n\t </ul></dd></dl>\n"; //editCSS($id, $option); upgrade('com_swmenufree'); }
} if ($upgrade == true) { //If we're doing an upgrade don't call the rest of the installer. ?> <!doctype html> <html> <head> <title>Upgrade</title> <style type="text/css"> .error { color: red;} .success { color: green;} </style> </head> <body> <?php upgrade(); if (isset($results)) { date_default_timezone_set($config->ParameterArray['timezone']); $fh = fopen('install.err', 'a'); fwrite($fh, date("Y-m-d g:i:s a\n")); foreach ($results as $key => $value) { foreach ($value as $status => $message) { if ($status == 1) { $class = "error"; } else { $class = "success"; } fwrite($fh, $message); } } fclose($fh);
<?php include_once('ressources/class.templates.inc'); include_once('ressources/class.ldap.inc'); include_once('ressources/class.users.menus.inc'); $users=new usersMenus(); if(!$users->AsSystemAdministrator){ $tpl=new templates(); echo "alert('". $tpl->javascript_parse_text("{ERROR_NO_PRIVS}")."');"; die();exit(); } if(isset($_GET["popup"])){popup();exit;} if(isset($_GET["upgrade-kernel-confirm"])){upgrade();exit;} js(); function upgrade(){ $pkg=$_GET["upgrade-kernel-confirm"]; $sock=new sockets(); $sock->getFrameWork("cmd.php?system-debian-upgrade-kernel=$pkg"); } function js(){
<?php if(posix_getuid()<>0){die("Cannot be used in web server mode\n\n");} include_once(dirname(__FILE__).'/ressources/class.templates.inc'); include_once(dirname(__FILE__).'/ressources/class.status.inc'); include_once(dirname(__FILE__).'/ressources/class.os.system.inc'); include_once(dirname(__FILE__).'/framework/class.unix.inc'); include_once(dirname(__FILE__)."/framework/frame.class.inc"); if(preg_match("#--verbose#",implode(" ",$argv))){$GLOBALS["debug"]=true;$GLOBALS["VERBOSE"]=true;} if($argv[1]=="--detect"){detect_kernels();die();} if($argv[1]=="--install"){upgrade($argv[2]);die();} function detect_kernels(){ $unix=new unix(); if(!$GLOBALS["VERBOSE"]){ if(is_file("/usr/share/artica-postfix/ressources/logs/kernel.lst")){ if($unix->file_time_min("/usr/share/artica-postfix/ressources/logs/kernel.lst")<360){die();} }} $users=new usersMenus(); if(($users->LinuxDistriCode<>"DEBIAN") && ($users->LinuxDistriCode<>"UBUNTU")){die();} $unix=new unix(); $apt_cache=$unix->find_program("apt-cache"); if($apt_cache==null){
/** * proceed with installation * - returns true on success */ function step_02_proceed() { global $g_form_fields, $sql_obj; echo "<h2>Proceeding...</h2>"; $f_db_type = $g_form_fields['db_type']['value']; $f_hostname = $g_form_fields['hostname']['value']; $f_db_name = $g_form_fields['db_name']['value']; $f_db_username = $g_form_fields['db_username']['value']; $f_db_password = $g_form_fields['db_password']['value']; $f_db_table_prefix = $g_form_fields['db_table_prefix']['value']; $f_user_admin_name = $g_form_fields['user_admin_name']['value']; $f_user_admin_password = $g_form_fields['user_admin_password']['value']; $f_continue_on_sql_errors = $g_form_fields['continue_on_sql_errors']['value']; require_once dirname(__FILE__) . "/../db/db_" . $f_db_type . "_class.php"; print_testStart("checking mysql connecting to '{$f_hostname}'..."); $sql_obj = new sql_class($f_hostname, $f_db_username, $f_db_password, $f_db_name); if ($sql_obj->error == false) { # Connection DB if (!$sql_obj->connect()) { $hint = 'This could be a problem with incorrect setup of your sql-server. <a href="http://www.streber-pm.org/1176">Read more...</a>'; print_testResult(RESULT_FAILED, "mySQL-Error[" . __LINE__ . "]:<pre>" . $sql_obj->error . "</pre><br>{$hint}"); return false; } else { print_testResult(RESULT_GOOD, $sql_obj->error); } } else { print_testResult(RESULT_FAILED, $sql_obj->error); return false; } print_testStart("Make sure to not overwrite existing streber-db called '{$f_db_name}'"); ### db does NOT exists ### if (!$sql_obj->selectdb()) { print_testResult(RESULT_GOOD, $sql_obj->error); ### create new database ### print_testStart("create database"); if (!$sql_obj->execute("CREATE DATABASE IF NOT EXISTS {$f_db_name} charset utf8 COLLATE utf8_general_ci")) { print_testResult(RESULT_FAILED, "<pre>" . $sql_obj->error . "</pre>"); return false; } else { if (!$sql_obj->selectdb()) { print_testResult(RESULT_FAILED, $sql_obj->error); return false; } else { print_testResult(RESULT_GOOD, 'Database ' . $f_db_name . ' created.'); } } } else { print_testResult(RESULT_PROBLEM, "DB '{$f_db_name}' already exists"); ### check version of existing database ### print_testStart("checking version of existing database"); if ($sql_obj->execute("SELECT * FROM {$f_db_table_prefix}db \r\n \t\tWHERE `updated` IS NULL ORDER BY `version` ASC")) { $count = 0; $db_version = NULL; $streber_version_required = NULL; while ($row = $sql_obj->fetchArray()) { $db_version = $row['version']; $streber_version_required = $row['version_streber_required']; $count++; } /** * there should be excactly one row with updated == NULL. Otherwise we a have a problem */ if ($count < 1) { /* Ugh oh. Lets see if we can get the row with the highest version instead. */ print_testResult(RESULT_PROBLEM, "Streber has detected a problem with db-version but is attempting to work around it.\n"); if ($sql_obj->execute("SELECT * FROM {$f_db_table_prefix}db ORDER BY `version` DESC LIMIT 1")) { while ($row = $sql_obj->fetchArray()) { $db_version = $row['version']; $streber_version_required = $row['version_streber_required']; $count++; } } if ($count < 1) { print_testResult(RESULT_FAILED, "Streber is unable to detect your current installed version.<br/>\n" . "You can work around this by manually adding this information to the db table in your Streber database."); return false; } print_testResult(RESULT_PROBLEM, "Taking best guess at currently installed version.\n"); } if ($count > 1) { /* Doh. It appears that our user is the victim of an installer bug * found in older versions of Streber (we hope). */ print_testResult(RESULT_PROBLEM, "Streber has detected a problem with db-version but is now fixing. Upgrade history lost."); $sql_obj->execute("TRUNCATE TABLE {$f_db_table_prefix}db"); $sql_obj->execute("INSERT INTO {$f_db_table_prefix}db SET version = " . $db_version . ", version_streber_required = " . $streber_version_required . ", id = 1, updated = "); } if ($db_version < confGet('STREBER_VERSION')) { ### update ### print_testResult(RESULT_PROBLEM, "version is {$db_version}. Upgrading..."); $result = upgrade(array('db_type' => $f_db_type, 'hostname' => $f_hostname, 'db_username' => $f_db_username, 'db_password' => $f_db_password, 'db_table_prefix' => $f_db_table_prefix, 'db_name' => $f_db_name, 'db_version' => $db_version, 'continue_on_sql_errors' => $f_continue_on_sql_errors)); return $result; } else { if ($streber_version_required > confGet('STREBER_VERSION')) { print_testResult(RESULT_PROBLEM, "version is {$db_version}. It's requires Version " . confGet('STREBER_VERSION') . " of Streber. Current Version is " . confGet('STREBER_VERSION') . ". Please download and install the latest version."); return false; } else { $filename = '../' . confGet('DIR_SETTINGS') . confGet('FILE_DB_SETTINGS'); print_testStart("writing configuration file '{$filename}'..."); $write_ok = writeSettingsFile($filename, array('DB_TYPE' => $f_db_type, 'HOSTNAME' => $f_hostname, 'DB_USERNAME' => $f_db_username, 'DB_PASSWORD' => $f_db_password, 'DB_TABLE_PREFIX' => $f_db_table_prefix, 'DB_NAME' => $f_db_name, 'DB_VERSION' => confGet('STREBER_VERSION'))); if ($write_ok) { print_testResult(RESULT_GOOD, "Current database (version {$db_version}) looks fine. Installation finished with database setting rewritten to file. Please view " . getStreberWikiLink('installation', 'Installation Guide') . " on how to fix unsolved problems."); } else { print_testResult(RESULT_PROBLEM, "Current database (version {$db_version}) looks fine. Installation finished with no change (unable to rewrite database setting to file). Please view " . getStreberWikiLink('installation', 'Installation Guide') . " on how to fix unsolved problems."); } return true; } } print_testResult(RESULT_PROBLEM, "Installation aborted due to unknown reason."); return false; } else { print_testResult(RESULT_GOOD, "Could not query streber-db version. Assuming fresh installation"); } } /** * fresh installation */ ### creating database-structure ### print_testStart("creating table structure..."); $filename = "./create_structure_v" . confGet('DB_CREATE_DUMP_VERSION') . ".sql"; $upgradeFromVersion = confGet('DB_CREATE_DUMP_VERSION'); if (!file_exists($filename)) { $filenames = glob("./create_structure_v*.sql"); if ($filenames) { rsort($filenames); print_testResult(RESULT_PROBLEM, "Required file {$filename} is missing, trying to use {$filenames['0']} instead and then upgrade."); $filename = $filenames[0]; preg_match("/create_structure_v(.*)\\.sql/", $filename, $matches); $upgradeFromVersion = $matches[1]; } else { print_testResult(RESULT_FAILED, "Getting sql-code failed. This is an internal error. Look at " . getStreberWikiLink('installation', 'Installation Guide') . " for clues. "); return false; } } if (!parse_mysql_dump($filename, $f_db_table_prefix, $sql_obj)) { print_testResult(RESULT_FAILED, "SQL-Error[" . __LINE__ . "]:<br><pre>" . $sql_obj->error . "</pre>"); return false; } print_testResult(RESULT_GOOD); ### upgrade if ($upgradeFromVersion != confGet('STREBER_VERSION')) { print_testStart("updating to latest version..."); $result = upgrade(array('db_type' => $f_db_type, 'hostname' => $f_hostname, 'db_username' => $f_db_username, 'db_password' => $f_db_password, 'db_table_prefix' => $f_db_table_prefix, 'db_name' => $f_db_name, 'continue_on_sql_errors' => $f_continue_on_sql_errors, 'db_version' => $upgradeFromVersion)); if (!$result) { print_testResult(RESULT_FAILED, "Upgrading failed. This is an internal error. Look at " . getStreberWikiLink('installation', 'Installation Guide') . " for clues. "); return false; } print_testResult(RESULT_GOOD); } ### create db-version entry ### print_testStart("add db-version entry"); $db_version = confGet('STREBER_VERSION'); $streber_version_required = confGet('STREBER_VERSION'); $str_query = "INSERT into {$f_db_table_prefix}db (id,version,version_streber_required,created) VALUES(1,'{$db_version}','{$streber_version_required}',NOW() )"; if (!$sql_obj->execute($str_query)) { print_testResult(RESULT_FAILED, "SQL-Error[" . __LINE__ . "]:<pre>" . $sql_obj->error . "</pre>"); return false; } else { print_testResult(RESULT_GOOD); } ### create admin entry entry ### print_testStart("add admin-user entry 1/2"); $password_md5 = md5($f_user_admin_password); $str_query = "INSERT into {$f_db_table_prefix}person\r\n (id,\r\n name,\r\n nickname,\r\n password,\r\n user_rights,\r\n can_login,\r\n profile,\r\n language,\r\n ip_address,\r\n office_email\r\n )\r\n VALUES(\r\n 1,\r\n '{$f_user_admin_name}',\r\n '{$f_user_admin_name}',\r\n '{$password_md5}',\r\n 268435455, /* all rights */\r\n 1,\r\n 1,\r\n '" . confGet('DEFAULT_LANGUAGE') . "',\r\n '',\r\n '" . $g_form_fields["site_email"]["value"] . "'\r\n )"; if (!$sql_obj->execute($str_query)) { print_testResult(RESULT_FAILED, "SQL-Error[" . __LINE__ . "]:<br><pre>" . $sql_obj->error . "</pre>"); return false; } else { print_testResult(RESULT_GOOD); } ### create admin entry entry ### print_testStart("add admin-user entry 2/2"); $str_query = "INSERT into {$f_db_table_prefix}item\r\n (id,\r\n type,\r\n state,\r\n created_by,\r\n modified_by\r\n )\r\n VALUES(\r\n 1,\r\n " . ITEM_PERSON . ",\r\n " . ITEM_STATE_OK . ",\r\n 1,\r\n 1\r\n )"; if (!$sql_obj->execute($str_query)) { print_testResult(RESULT_FAILED, "SQL-Error[" . __LINE__ . "]:<br><pre>" . $sql_obj->error . "</pre>"); return false; } else { print_testResult(RESULT_GOOD); } ### settings-directory already exists? ### if (!file_exists('../' . confGet('DIR_SETTINGS'))) { print_testStart("try to create " . confGet('DIR_SETTINGS') . "..."); if (!mkdir('../' . confGet('DIR_SETTINGS'))) { print_testResult(RESULT_FAILED, "could not create directory. This could be a file permission problem..."); } else { print_testResult(RESULT_GOOD); } } /* Write general site settings */ $filename = "../" . confGet("DIR_SETTINGS") . confGet("SITE_SETTINGS"); print_testStart("writing configuration file '" . $filename . "'..."); $settings = array("APP_NAME" => $g_form_fields["site_name"]["value"], "EMAIL_ADMINISTRATOR" => $g_form_fields["site_email"]["value"], 'APP_TITLE_HEADER' => $g_form_fields["site_name"]["value"] . "<span class=extend>PM</span>"); $write_ok = writeSettingsFile($filename, $settings); if (!$write_ok) { print_testResult(RESULT_FAILED, "can not write '" . $filename . "'. Please create it with this content:<br><pre><?php" . buildSettingsFile($settings) . "?></pre>"); return false; } else { print_testResult(RESULT_GOOD); } /* Write database settings */ $filename = '../' . confGet('DIR_SETTINGS') . confGet('FILE_DB_SETTINGS'); print_testStart("writing configuration file '{$filename}'..."); $settings = array('DB_TYPE' => $f_db_type, 'HOSTNAME' => $f_hostname, 'DB_USERNAME' => $f_db_username, 'DB_PASSWORD' => $f_db_password, 'DB_TABLE_PREFIX' => $f_db_table_prefix, 'DB_NAME' => $f_db_name, 'DB_VERSION' => confGet('STREBER_VERSION')); $write_ok = writeSettingsFile($filename, $settings); if (!$write_ok) { print_testResult(RESULT_FAILED, "can not write '{$filename}'. Please create it with this content:<br><pre><?php" . buildSettingsFile($settings) . "?></pre>"); return false; } else { print_testResult(RESULT_GOOD); } ### tmp-directory already exists? ### if (!file_exists('../' . confGet('DIR_TEMP'))) { print_testStart("try to create directory of tempory files " . confGet('DIR_TEMP') . "..."); if (!mkdir('../' . confGet('DIR_TEMP'))) { print_testResult(RESULT_FAILED, "could not create directory. This could be a file permission problem..."); } else { print_testResult(RESULT_GOOD); } } return true; }