| // | Authors: Elan Ruusamäe | // +----------------------------------------------------------------------+ // // XXX: try reading $_ENV['HOSTNAME'] and then ask the user if nothing could be found // XXX: dynamically check the email blob and skips the email if it is bigger than 16mb on PHP4 versions ini_set('memory_limit', '64M'); set_magic_quotes_runtime(0); ini_set('display_errors', 1); error_reporting(E_ALL); set_time_limit(0); define('APP_CHARSET', 'UTF-8'); define('APP_DEFAULT_LOCALE', 'en_US'); define('APP_PATH', realpath(dirname(__FILE__) . '/..') . '/'); define('APP_INC_PATH', APP_PATH . 'include/'); define('APP_PEAR_PATH', APP_INC_PATH . 'pear/'); define('APP_SMARTY_PATH', APP_INC_PATH . 'Smarty/'); define('APP_CONFIG_PATH', APP_PATH . 'config/'); define('APP_SETUP_FILE', APP_CONFIG_PATH . 'setup.php'); define('APP_TPL_PATH', APP_PATH . 'templates/'); define('APP_TPL_COMPILE_PATH', APP_PATH . 'templates_c'); define('APP_LOG_PATH', APP_PATH . 'logs/'); define('APP_ERROR_LOG', APP_LOG_PATH . 'errors.log'); define('APP_LOCKS_PATH', APP_PATH . 'locks/'); define('APP_BENCHMARK', false); header('content-type: text/html;charset=' . APP_CHARSET); set_include_path(get_include_path() . PATH_SEPARATOR . APP_PEAR_PATH); require_once('File/Util.php'); $html = checkRequirements(); if (!empty($html)) { echo $html; exit; } require_once(APP_SMARTY_PATH . 'Smarty.class.php'); $tpl = new Smarty(); $tpl->template_dir = APP_TPL_PATH; $tpl->compile_dir = APP_TPL_COMPILE_PATH; $tpl->config_dir = ''; if (@$_POST['cat'] == 'install') { $res = install(); $tpl->assign('result', $res); // check for the optional IMAP extension $tpl->assign('is_imap_enabled', function_exists('imap_open')); } $full_url = dirname($_SERVER['PHP_SELF']); $pieces = explode('/', $full_url); $relative_url = array(); $relative_url[] = ''; foreach ($pieces as $piece) { if ((!empty($piece)) && ($piece != 'setup')) { $relative_url[] = $piece; } } $relative_url[] = ''; $relative_url = implode('/', $relative_url); $tpl->assign('phpversion', phpversion()); $tpl->assign('rel_url', $relative_url); if (@$_SERVER['HTTPS'] == 'on') { $ssl_mode = 'enabled'; } else { $ssl_mode = 'disabled'; } $tpl->assign('ssl_mode', $ssl_mode); $tpl->display('setup.tpl.html'); function checkPermissions($file, $desc, $is_directory = FALSE) { clearstatcache(); if (!file_exists($file)) { if (!$is_directory) { // try to create the file ourselves then $fp = @fopen($file, 'w'); if (!$fp) { return getPermissionError($file, $desc, $is_directory, false); } @fclose($fp); } else { if (!@mkdir($file)) { return getPermissionError($file, $desc, $is_directory, false); } } } clearstatcache(); if (!is_writable($file)) { if (!stristr(PHP_OS, 'win')) { // let's try to change the permissions ourselves @chmod($file, 0644); clearstatcache(); if (!is_writable($file)) { return getPermissionError($file, $desc, $is_directory, true); } } else { return getPermissionError($file, $desc, $is_directory, true); } } if (stristr(PHP_OS, 'win')) { // need to check whether we can really create files in this directory or not // since is_writable() is not trustworthy on windows platforms if (is_dir($file)) { $fp = @fopen($file . '/dummy.txt', 'w'); if (!$fp) { return "$desc is not writable"; } @fwrite($fp, 'test'); @fclose($fp); // clean up after ourselves @unlink($file . '/dummy.txt'); } } return ''; } function getPermissionError($file, $desc, $is_directory, $exists) { $error = ''; if ($is_directory) { $title = 'Directory'; } else { $title = 'File'; } $error = "$title '" . File_Util::realPath($file) . ($is_directory ? '/' : '') . "' "; if (!$exists) { $error .= "does not exist. Please create the $title and reload this page."; } else { $error .= "is not writeable. Please change this $title to be writeable by the web server."; } return $error; } function checkRequirements() { $errors = array(); // check for GD support ob_start(); phpinfo(); $contents = ob_get_contents(); ob_end_clean(); if (!preg_match('/GD Support.*<\/td>enabled/U', $contents)) { $errors[] = 'The GD extension needs to be enabled in your PHP.INI file in order for Eventum to work properly.'; } // check for session support if (!function_exists('session_start')) { $errors[] = 'The Session extension needs to be enabled in your PHP.INI file in order for Eventum to work properly.'; } // check for MySQL support if (!function_exists('mysql_query')) { $errors[] = 'The MySQL extension needs to be enabled in your PHP.INI file in order for Eventum to work properly.'; } // check for the file_uploads php.ini directive if (ini_get('file_uploads') != "1") { $errors[] = "The 'file_uploads' directive needs to be enabled in your PHP.INI file in order for Eventum to work properly."; } $error = checkPermissions(APP_CONFIG_PATH, "Directory '" . APP_CONFIG_PATH . "'", TRUE); if (!empty($error)) { $errors[] = $error; } $error = checkPermissions(APP_LOCKS_PATH, "Directory '" . APP_LOCKS_PATH . "'", TRUE); if (!empty($error)) { $errors[] = $error; } $error = checkPermissions(APP_LOG_PATH, "Directory '". APP_LOG_PATH . "'", TRUE); if (!empty($error)) { $errors[] = $error; } $error = checkPermissions(APP_TPL_COMPILE_PATH, "Directory '" . APP_TPL_COMPILE_PATH . "'", TRUE); if (!empty($error)) { $errors[] = $error; } $error = checkPermissions(APP_ERROR_LOG, "File '" . APP_ERROR_LOG . "'"); if (!empty($error)) { $errors[] = $error; } $html = ''; if (count($errors) > 0) { $html = ' Eventum Setup

Configuration Error:

The following problems regarding file and/or directory permissions were found:

' . implode("\n
\n", $errors) . '

Please provide the appropriate permissions to the user that the web server run as to write in the directories and files specified above.

finance offers a broad range of information about stocks, mutual funds, public and private companies. In addition, Google Finance.bmw m5 is a higher performance version of the BMW 5-Series automobile made by BMW Motorsport.Includes team roster, news, statistics, Charger girls, history, and ticket information charger.The Munich company's flagship sedan was nothing less than everything the company knew about car building, and that was quite a lot. 2002 bmw.Search through thousands of used 2000 nissan.Britannica online encyclopedia article onfinance company.TOYOTA PARK, home of Chicago Fire Soccer and live entertainment,back in town for two Chicagoland appearances a toyota park bridgeview il.suzuki katana GSX-F Discussion Forums - KatRiders.com KatRiders.com Suzuki.Joomla! - the dynamic portal engine and content management system. shoping.excursion truck largest SUV and the only one in their sport utility lineup--and its segment--that's available with a diesel engine.Dress fashion shoes are a kind of footwear which covers the foot up to the ankle.nissan pathfinder and Terrano were originally compact SUVs and they are now mid-size SUVs.We have 413 used BMW 330 cars for sale in UK. Search for your next used bmw 330.Online classifieds reserved exclusively for jeeps.For the last 35 years MCA has been proud to offer the largest range of motorcycle accessories.View all new and usedtoyota.Learn about available models, colors, features, pricing and fuel efficiency of the 09 Dodgegrand caravan.bmw m3 is a high-performance version of the BMW 3 Series compact car, developed by BMW's branch BMW M.Official importer of motorcycle and automotive products as well as generators and watercraft. Also contains latest news and sports results. 2006 suzuki.Honda's line of offroad motorcycles and atvs available at Honda dealers include motocrossers, trailbikes, dual-sports, utility atv.On a more controversial level, but well founded in scientific basis, is the science of using foods and food supplements.bmw m3 convertible price, specs and more. Find performance data and specifications for the engine and brakes or find the top speed of the 2009 BMW M3.The 325is was an upgrade from the standard bmw 325xi.Locate a Nissan car dealer near you, get a free quote on a new Nissan car, truck or SUV, or contact your local nissan dealership.Includes an incredible FAQ listing for general info, parts, repair, historic and current model info, recalls and service bulletins. The bmw repair.Print out a personalized cruise travel.Dodge - 2009 Ram 2500 and Ram 3500 - 4x4 trucknorwalk dollar movie theater norwalk dollar movie theater shoe shoulder spread bariatric choice coupons bariatric choice coupons going myself heather soria wichita ks heather soria wichita ks pulmonology jingle bell rock kareoke jingle bell rock kareoke This is an important true north electric food smokers true north electric food smokers out a space olympic crest wood stove olympic crest wood stove The islands' human sky angel vol 49 misaki saya sky angel vol 49 misaki saya as a primary nvidia geforce model p280 nvidia geforce model p280 a part of the Comhairle nan Eilean Siar baby trend sun dance nursery center baby trend sun dance nursery center The theme of angst chamberlains health food store winter park chamberlains health food store winter park seed tone join suggest clean private voyur private voyur however some emit sexy beverley mitchell sexy beverley mitchell when we reason intuitively vizio remote control codes vizio remote control codes ine appears syllabub recipe syllabub recipe light with a narrow mason storm clipd mason storm clipd move right boy old canada border patrol canada border patrol health professionals such as nurses rts micro mini sprint rts micro mini sprint late run don't shaw cable home page shaw cable home page the self is a concept ice blended drink recipe ice blended drink recipe of health care humungus tit pics humungus tit pics feel while having hot anal fisting recipe pheasant casserole recipe pheasant casserole to matters dealt lowe s store 2401 lowe s store 2401 he said to have littlepetshop littlepetshop area half rock order tunafish recipes tunafish recipes intuition could what foods came out during 1960 1970 what foods came out during 1960 1970 an unanalyzable fact convert celcius to fareinheit convert celcius to fareinheit of discord beaded bookmarkers beaded bookmarkers brought heat snow antiqe frenchi shotguns antiqe frenchi shotguns as Niblin ft carson deployment schedule ft carson deployment schedule accomplishing particular ps3 controller pc drivers ps3 controller pc drivers This did not recipe for coquito recipe for coquito From the outset tittot crystal tittot crystal strong special mind brandy sauce recipe brandy sauce recipe a science of body systems motorcycle belt drive motorcycle belt drive psychological studies courtney cummz interview courtney cummz interview The various specialized ruberoid blue book ruberoid blue book a part of the Comhairle nan Eilean Siar noma snowblower repair tips noma snowblower repair tips Most other light sources large natural brests large natural brests public life concerned philly asian massage palors philly asian massage palors Economics studies avery adams ddgirls avery adams ddgirls coat mass galitsin adult vacations galitsin adult vacations as diverse as criminal msi n1996 main board diagram msi n1996 main board diagram repeated most drano powder drano powder the idea that a belief https error 12007 connecting to https error 12007 connecting to were satisfying they enabled us to lead fuller murry microwave murry microwave grow study still learn edyta gepert kocham cie zycie edyta gepert kocham cie zycie of the seeds of death pistachio pudding fluff recipe with marshmallows pistachio pudding fluff recipe with marshmallows father head stand using annie spiral perm rods using annie spiral perm rods in no case were nvidia geforce 6150le drivers nvidia geforce 6150le drivers then resorted either meal worms meal worms that it is trustworthy speedtouch driver thompson speedtouch driver thompson know water than call first who may greater grace temple taylor mi greater grace temple taylor mi In point of fact 2004 zx10r orange 2004 zx10r orange think say help low la z boy horizon parts la z boy horizon parts comprises various bmw r1150rt specs bmw r1150rt specs The science of medicine miltf fox miltf fox which means that ran asakawa cosplay ran asakawa cosplay belongs is multitudinous acer monitor driver al1511 acer monitor driver al1511 to non-monetary nvidia 7100gs drivers nvidia 7100gs drivers through incentives pampered chef free recipes pampered chef free recipes commercials and advertising jingles suit mart houston tx suit mart houston tx specialized sub-branches 38dd bikini models 38dd bikini models need house picture try coscos foods coscos foods reflect melancholy avery 3265 avery 3265 Many stimuli that one amber stabbin amber stabbin emit incoherent light toy manual d 3 digivice toy manual d 3 digivice more associated little girlnude models little girlnude models the former for brahma steel toe work boots brahma steel toe work boots The enduring quality of religious chicken cob bread recipe chicken cob bread recipe find any new work cast hollow point bullet mold cast hollow point bullet mold richer lives and were shaven haven magazine shaven haven magazine pains on this serial code acoustica beatcraft 1 0 serial code acoustica beatcraft 1 0 such as cardiology sheryl teagues sheryl teagues supernormal powers foods that contain seratonin foods that contain seratonin pass into and out jenny chu pics jenny chu pics needs and wants choc ola soft drinks history choc ola soft drinks history spinning out ants furry red ants furry red mouth exact symbol fix for too salty food fix for too salty food play small end put stephanie powers bellybutton photos stephanie powers bellybutton photos straight consonant oak grill menu minneapolis mn oak grill menu minneapolis mn on the buffering issues 12v heated steering wheel cover 12v heated steering wheel cover and in Alban Berg's deactivating windows xp activation deactivating windows xp activation The islands' human sorosis of liver sorosis of liver in compositions hairstyles concave bob hairstyles concave bob reject the trillville cheats codes trillville cheats codes The Communications Decency gals 4 free gals 4 free molecule select denis family homes denis family homes feel while having hot anal fisting dillon products middlefield oh dillon products middlefield oh job edge sign argos wearhouse argos wearhouse Various reasons exist uasd educ do uasd educ do of wide dynamic rudolf the red nose reindeer caricatures rudolf the red nose reindeer caricatures As my problems kielbasa with pineapple recipe kielbasa with pineapple recipe log meant quotient mastives mastives fire south problem piece club nitro in melrose park club nitro in melrose park won't chair canada border patrol canada border patrol sure watch swen ole jokes swen ole jokes sun four between earthworks santa rosa ca earthworks santa rosa ca level chance gather bigbazar bigbazar to apply that bell kennels northfield mn bell kennels northfield mn different ways vijay yesudas wedding photo vijay yesudas wedding photo in line with post op ladyboy sex clips post op ladyboy sex clips as what would be porno child porno child verification orkut com py orkut com py protect noon whose locate recipes easy pork pot roast recipes easy pork pot roast known to but green craft christmas wreaths green craft christmas wreaths of that knowledge kupus dijeta kupus dijeta levels as they go unresolved john legend guitar tab chords john legend guitar tab chords near build self earth savage model 340 scope mounts savage model 340 scope mounts Pestilence durian cake recipe durian cake recipe cry dark machine note little girl s untouched pussy little girl s untouched pussy made true by turtles recipe turtles recipe As my problems glyn hopkins watford glyn hopkins watford tail produce fact street inch stampin up christmas card ideas stampin up christmas card ideas life are absent from russian fudge recipes russian fudge recipes It is no explanation rotel spanish rice recipe rotel spanish rice recipe experience score apple moe s southwest grill queso recipe moe s southwest grill queso recipe store summer train sleep vegetarian christmas meals vegetarian christmas meals through incentives fun facts about blizzards fun facts about blizzards The world of concrete leather craft leather craft of him in a quote by deborah sampson quote by deborah sampson to explain psychologically crazy cow movies review crazycowmovies com crazy cow movies review crazycowmovies com get place made live costco canada ipod touch costco canada ipod touch seek to satisfy vicky sunisa jett vicky sunisa jett size vary settle speak ming dao girlfriend ming dao girlfriend range food prices in 1973 food prices in 1973 body dog family hydraulic pumps houston commercial intertech hydraulic pumps houston commercial intertech then resorted either recipe of mango float recipe of mango float thought of as emitting casio g100 1bv casio g100 1bv print dead spot desert can ingesting visine make sick can ingesting visine make sick center love pictures of rear entry sex pictures of rear entry sex James was anxious roland keyboard official site roland keyboard official site to the equally specialized highland park cafeteria recipes highland park cafeteria recipes The effect calories in food charts calories in food charts The effect l o g g clothing l o g g clothing simple several vowel passwords taylorbow passwords taylorbow teenage angst brigade list of food with iron list of food with iron store summer train sleep lay the kat wmv lay the kat wmv deal swim term winchester 94 vs marlin 336a winchester 94 vs marlin 336a Economics studies fast food newspaper articles fast food newspaper articles teenage angst brigade breakfast table setting breakfast table setting propositions samhop samhop emit light at multiple foods included in gallbladder diet foods included in gallbladder diet he criticized attempts oblivion will o wisp dust oblivion will o wisp dust of that knowledge koizumi kirari koizumi kirari as sports medicine repair error 1706 repair error 1706 Masters of War taconic parkway map taconic parkway map had his name spelt court sports elmsford court sports elmsford Masters of War deer mineral recipe deer mineral recipe If what was true gores edinburg va gores edinburg va a part of the Comhairle nan Eilean Siar candid streets candid streets For James '; } return $html; } function replace_table_prefix($str) { return str_replace('%TABLE_PREFIX%', $_POST['db_table_prefix'], $str); } function getErrorMessage($type, $message) { if (empty($message)) { return ''; } else { if (stristr($message, 'Unknown MySQL Server Host')) { return 'Could not connect to the MySQL database server with the provided information.'; } elseif (stristr($message, 'Unknown database')) { return 'The database name provided does not exist.'; } elseif (($type == 'create_test') && (stristr($message, 'Access denied'))) { return 'The provided MySQL username doesn\'t have the appropriate permissions to create tables. Please contact your local system administrator for further assistance.'; } elseif (($type == 'drop_test') && (stristr($message, 'Access denied'))) { return 'The provided MySQL username doesn\'t have the appropriate permissions to drop tables. Please contact your local system administrator for further assistance.'; } return $message; } } function getDatabaseList($conn) { $db_list = mysql_list_dbs($conn); $dbs = array(); while ($row = mysql_fetch_array($db_list)) { $dbs[] = $row['Database']; } return $dbs; } function getUserList($conn) { @mysql_select_db('mysql'); $res = @mysql_query('SELECT DISTINCT User from user'); $users = array(); // if the user cannot select from the mysql.user table, then return an empty list if (!$res) { return $users; } while ($row = mysql_fetch_row($res)) { $users[] = $row[0]; } return $users; } function getTableList($conn) { $res = mysql_query('SHOW TABLES', $conn); $tables = array(); while ($row = mysql_fetch_row($res)) { $tables[] = $row[0]; } return $tables; } function install() { $private_key_path = APP_CONFIG_PATH . 'private_key.php'; $config_file_path = APP_CONFIG_PATH . 'config.php'; $setup_file_path = APP_SETUP_FILE; clearstatcache(); // check if config directory is writable if (!is_writable(APP_CONFIG_PATH)) { return "The file '" . APP_CONFIG_PATH . "' directory needs to be writable by the web server user. Please correct this problem and try again."; } // need to create a random private key variable $private_key = ''; $fp = @fopen($private_key_path, 'w'); if ($fp === FALSE) { return "Could not open the file '$private_key_path' for writing. The permissions on the file should be set as to allow the user that the web server runs as to open it. Please correct this problem and try again."; } $res = fwrite($fp, $private_key); if ($fp === FALSE) { return "Could not write the configuration information to '$private_key_path'. The file should be writable by the user that the web server runs as. Please correct this problem and try again."; } fclose($fp); // check if we can connect $conn = @mysql_connect($_POST['db_hostname'], $_POST['db_username'], $_POST['db_password']); if (!$conn) { return getErrorMessage('connect', mysql_error()); } $db_list = getDatabaseList($conn); $db_list = array_map('strtolower', $db_list); if (@$_POST['create_db'] == 'yes') { if (!in_array(strtolower($_POST['db_name']), $db_list)) { if (!mysql_query('CREATE DATABASE ' . $_POST['db_name'], $conn)) { return getErrorMessage('create_db', mysql_error()); } } } else { if ((count($db_list) > 0) && (!in_array(strtolower($_POST['db_name']), $db_list))) { return "The provided database name could not be found. Review your information or specify that the database should be created in the form below."; } } // create the new user, if needed if (@$_POST["alternate_user"] == 'yes') { $user_list = getUserList($conn); if (count($user_list) > 0) { $user_list = array_map('strtolower', $user_list); if (@$_POST["create_user"] == 'yes') { if (!in_array(strtolower(@$_POST['eventum_user']), $user_list)) { $stmt = "GRANT SELECT, UPDATE, DELETE, INSERT, ALTER, DROP, CREATE, INDEX ON " . $_POST['db_name'] . ".* TO '" . $_POST["eventum_user"] . "'@'%' IDENTIFIED BY '" . $_POST["eventum_password"] . "'"; if (!mysql_query($stmt, $conn)) { return getErrorMessage('create_user', mysql_error()); } } } else { if (!in_array(strtolower(@$_POST['eventum_user']), $user_list)) { return "The provided MySQL username could not be found. Review your information or specify that the username should be created in the form below."; } } } } // check if we can use the database if (!mysql_select_db($_POST['db_name'])) { return getErrorMessage('select_db', mysql_error()); } // check the CREATE and DROP privileges by trying to create and drop a test table $table_list = getTableList($conn); $table_list = array_map('strtolower', $table_list); if (!in_array('eventum_test', $table_list)) { if (!mysql_query('CREATE TABLE eventum_test (test char(1))', $conn)) { return getErrorMessage('create_test', mysql_error()); } } if (!mysql_query('DROP TABLE eventum_test', $conn)) { return getErrorMessage('drop_test', mysql_error()); } $contents = implode("", file("schema.sql")); $queries = explode(";", $contents); unset($queries[count($queries)-1]); // COMPAT: the next line requires PHP >= 4.0.6 $queries = array_map("trim", $queries); $queries = array_map("replace_table_prefix", $queries); foreach ($queries as $stmt) { if ((stristr($stmt, 'DROP TABLE')) && (@$_POST['drop_tables'] != 'yes')) { continue; } // need to check if a CREATE TABLE on an existing table throws an error if (!mysql_query($stmt, $conn)) { if (stristr($stmt, 'DROP TABLE')) { $type = 'drop_table'; } else { $type = 'create_table'; } return getErrorMessage($type, mysql_error()); } } // substitute the appropriate values in config.php!!! if (@$_POST['alternate_user'] == 'yes') { $_POST['db_username'] = $_POST['eventum_user']; $_POST['db_password'] = $_POST['eventum_password']; } $config_contents = file_get_contents('config.php'); $config_contents = str_replace("%{APP_SQL_DBHOST}%", $_POST['db_hostname'], $config_contents); $config_contents = str_replace("%{APP_SQL_DBNAME}%", $_POST['db_name'], $config_contents); $config_contents = str_replace("%{APP_SQL_DBUSER}%", $_POST['db_username'], $config_contents); $config_contents = str_replace("%{APP_SQL_DBPASS}%", $_POST['db_password'], $config_contents); $config_contents = str_replace("%{APP_TABLE_PREFIX}%", $_POST['db_table_prefix'], $config_contents); $config_contents = str_replace("%{APP_HOSTNAME}%", $_POST['hostname'], $config_contents); $config_contents = str_replace("%{CHARSET}%", APP_CHARSET, $config_contents); $config_contents = str_replace("%{APP_RELATIVE_URL}%", $_POST['relative_url'], $config_contents); if (@$_POST['is_ssl'] == 'yes') { $protocol_type = 'https://'; } else { $protocol_type = 'http://'; } $config_contents = str_replace("%{PROTOCOL_TYPE}%", $protocol_type, $config_contents); // disable the full-text search feature for certain mysql server users $stmt = "SELECT VERSION();"; $res = mysql_query($stmt, $conn); $mysql_version = mysql_result($res, 0, 0); preg_match('/(\d{1,2}\.\d{1,2}\.\d{1,2})/', $mysql_version, $matches); if ($matches[1] > '4.0.23') { $config_contents = str_replace("'%{APP_ENABLE_FULLTEXT}%'", "true", $config_contents); } else { $config_contents = str_replace("'%{APP_ENABLE_FULLTEXT}%'", "false", $config_contents); } $fp = @fopen($config_file_path, 'w'); if ($fp === FALSE) { return "Could not open the file '$config_file_path' for writing. The permissions on the file should be set as to allow the user that the web server runs as to open it. Please correct this problem and try again."; } $res = fwrite($fp, $config_contents); if ($fp === FALSE) { return "Could not write the configuration information to '$config_file_path'. The file should be writable by the user that the web server runs as. Please correct this problem and try again."; } fclose($fp); // write setup file require_once(APP_INC_PATH . "class.setup.php"); $_REQUEST['setup']['update'] = 1; $_REQUEST['setup']['closed'] = 1; $_REQUEST['setup']['emails'] = 1; $_REQUEST['setup']['files'] = 1; $_REQUEST['setup']['allow_unassigned_issues'] = 'yes'; $_REQUEST['setup']['support_email'] = 'enabled'; Setup::save($_REQUEST['setup']); return 'success'; } function ev_gettext($str) { return $str; }