| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536 |
- <?php
- /***************************************************************************
- * Dolphin Smart Community Builder
- * -----------------
- * begin : Mon Mar 23 2006
- * copyright : (C) 2006 BoonEx Group
- * website : http://www.boonex.com/
- * This file is part of Dolphin - Smart Community Builder
- *
- * Dolphin is free software. This work is licensed under a Creative Commons Attribution 3.0 License.
- * http://creativecommons.org/licenses/by/3.0/
- *
- * Dolphin is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- * See the Creative Commons Attribution 3.0 License for more details.
- * You should have received a copy of the Creative Commons Attribution 3.0 License along with Dolphin,
- * see license.txt file; if not, write to marketing@boonex.com
- ***************************************************************************/
- define('CHECK_DOLPHIN_REQUIREMENTS', 1); //Don`t recommend to skip this step
- if (defined('CHECK_DOLPHIN_REQUIREMENTS')) {
- //check requirements
- $aErrors = array();
- $aErrors[] = (ini_get('register_globals') == 0) ? '' : '<font color="red">register_globals is On (warning, you should have this param in Off state, or your site will unsafe)</font>';
- $aErrors[] = (ini_get('safe_mode') == 0) ? '' : '<font color="red">safe_mode is On, disable it</font>';
- //$aErrors[] = (ini_get('allow_url_fopen') == 0) ? 'Off (warning, better keep this parameter in On to able register Dolphin' : '';
- $aErrors[] = (version_compare(PHP_VERSION, '5.2.0', '<')) ? '<font color="red">PHP version too old, please update to PHP 5.2.0 at least</font>' : '';
- $aErrors[] = (! extension_loaded( 'mbstring')) ? '<font color="red">mbstring extension not installed. <b>Warning!</b> Dolphin cannot work without <b>mbstring</b> extension.</font>' : '';
- // $aErrors[] = (! function_exists('shell_exec')) ? '<font color="red">shell_exec function is unvailable. <b>Warning!</b> Dolphin cannot work without <b>shell_exec</b> function.</font>' : '';
- $aErrors[] = (ini_get('short_open_tag') == 0) ? '<font color="red">short_open_tag is Off (must be On!)<b>Warning!</b> Dolphin cannot work without <b>short_open_tag</b>.</font>' : '';
- if (version_compare(phpversion(), "5.2", ">") == 1) {
- $aErrors[] = (ini_get('allow_url_include') == 0) ? '' : '<font color="red">allow_url_include is On (warning, you should have this param in Off state, or your site will unsafe)</font>';
- };
- $aErrors = array_diff($aErrors, array('')); //delete empty
- if (count($aErrors)) {
- $sErrors = implode(" <br /> ", $aErrors);
- echo <<<EOF
- {$sErrors} <br />
- Please go to the <br />
- <a href="http://www.boonex.com/trac/dolphin/wiki/GenDolTShooter">Dolphin Troubleshooter</a> <br />
- and solve the problem.
- EOF;
- exit;
- }
- }
- if (version_compare(phpversion(), "5.3.0", ">=") == 1)
- error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
- else
- error_reporting(E_ALL & ~E_NOTICE);
- set_magic_quotes_runtime(0);
- ini_set('magic_quotes_sybase', 0);
- /*------------------------------*/
- /*----------Vars----------------*/
- $aConf = array();
- $aConf['release'] = '24.03.11';
- $aConf['iVersion'] = '8.0';
- $aConf['iPatch'] = '0';
- $aConf['dolFile'] = '../inc/header.inc.php';
- $aConf['confDir'] = '../inc/';
- $aConf['headerTempl'] = <<<EOS
- <?php
- /**
- * @package Dolphin Core
- * @copyright Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
- * @license CC-BY - http://creativecommons.org/licenses/by/3.0/
- */
- define ('BX_PROFILER', true);
- if (BX_PROFILER && !isset(\$GLOBALS['bx_profiler_start']))
- \$GLOBALS['bx_profiler_start'] = microtime ();
- //--- Version ---//
- define('BX_DOL_VERSION', '{$aConf['iVersion']}');
- define('BX_DOL_BUILD', '{$aConf['iPatch']}');
- //--- Main URLs ---//
- define('BX_DOL_URL_ROOT', '%site_url%');
- define('BX_DOL_URL_PLUGINS', BX_DOL_URL_ROOT . 'plugins/');
- define('BX_DOL_URL_MODULES', BX_DOL_URL_ROOT . 'modules/');
- define('BX_DOL_URL_CACHE_PUBLIC', BX_DOL_URL_ROOT . 'cache_public/');
- define('BX_DOL_URL_BASE', BX_DOL_URL_ROOT . 'template/');
- //--- Main Pathes ---//
- define('BX_DIRECTORY_PATH_ROOT', '%dir_root%');
- define('BX_DIRECTORY_PATH_INC', BX_DIRECTORY_PATH_ROOT . 'inc/');
- define('BX_DIRECTORY_PATH_BASE', BX_DIRECTORY_PATH_ROOT . 'template/');
- define('BX_DIRECTORY_PATH_CACHE', BX_DIRECTORY_PATH_ROOT . 'cache/');
- define('BX_DIRECTORY_PATH_CACHE_PUBLIC', BX_DIRECTORY_PATH_ROOT . 'cache_public/');
- define('BX_DIRECTORY_PATH_CLASSES', BX_DIRECTORY_PATH_ROOT . 'inc/classes/');
- define('BX_DIRECTORY_PATH_PLUGINS', BX_DIRECTORY_PATH_ROOT . 'plugins/');
- define('BX_DIRECTORY_PATH_MODULES', BX_DIRECTORY_PATH_ROOT . 'modules/');
- define('BX_DIRECTORY_STORAGE', BX_DIRECTORY_PATH_ROOT . 'storage/');
- //--- DB Connection ---//
- define('BX_DATABASE_HOST', '%db_host%');
- define('BX_DATABASE_SOCK', '%db_sock%');
- define('BX_DATABASE_PORT', '%db_port%');
- define('BX_DATABASE_USER', '%db_user%');
- define('BX_DATABASE_PASS', '%db_password%');
- define('BX_DATABASE_NAME', '%db_name%');
- //--- System settings ---//
- define('BX_SYSTEM_MOGRIFY', '%dir_mogrify%');
- define('BX_SYSTEM_CONVERT', '%dir_convert%');
- define('BX_SYSTEM_COMPOSITE', '%dir_composite%');
- define('BX_SYSTEM_PHPBIN', '%dir_php%');
- define('BX_DOL_DIR_RIGHTS', 0777);
- define('BX_DOL_FILE_RIGHTS', 0666);
- define('BX_DOL_STORAGE_OBJ_IMAGES', 'sys_images');
- define('BX_DOL_INT_MAX', 2147483647);
- define('BX_DOL_TRANSCODER_OBJ_ICON_APPLE', 'sys_icon_apple');
- define('BX_DOL_TRANSCODER_OBJ_ICON_FACEBOOK', 'sys_icon_facebook');
- define('BX_DOL_TRANSCODER_OBJ_ICON_FAVICON', 'sys_icon_favicon');
- define('BX_DOL_TRANSCODER_OBJ_CMTS_IMAGE_PREVIEW', 'sys_cmts_images_preview');
- //--- Module types ---//
- define('BX_DOL_MODULE_TYPE_MODULE', 'module');
- define('BX_DOL_MODULE_TYPE_LANGUAGE', 'language');
- define('BX_DOL_MODULE_TYPE_TEMPLATE', 'template');
- //--- Studio settings ---//
- define('BX_DOL_STUDIO_FOLDER', 'studio');
- define('BX_DOL_URL_STUDIO', BX_DOL_URL_ROOT . BX_DOL_STUDIO_FOLDER . '/');
- define('BX_DOL_URL_STUDIO_BASE', BX_DOL_URL_STUDIO . 'template/');
- define('BX_DOL_DIR_STUDIO', BX_DIRECTORY_PATH_ROOT . BX_DOL_STUDIO_FOLDER . '/');
- define('BX_DOL_DIR_STUDIO_INC', BX_DOL_DIR_STUDIO . 'inc/');
- define('BX_DOL_DIR_STUDIO_CLASSES', BX_DOL_DIR_STUDIO . 'classes/');
- define('BX_DOL_DIR_STUDIO_BASE', BX_DOL_DIR_STUDIO . 'template/');
- //--- BoonEx Unity Settings ---//
- define('BX_DOL_UNITY_URL_ROOT', 'http://www.boonex.com/');
- define('BX_DOL_UNITY_URL_MARKET', BX_DOL_UNITY_URL_ROOT . 'market/');
- define('BX_DOL_UNITY_URL_PRODUCT', BX_DOL_UNITY_URL_ROOT . 'm/');
- //--- BoonEx OAuth Settings ---//
- define('BX_DOL_OAUTH_URL_REQUEST_TOKEN', BX_DOL_UNITY_URL_ROOT . 'scripts_public/oauth_request_token.php5');
- define('BX_DOL_OAUTH_URL_AUTHORIZE', BX_DOL_UNITY_URL_ROOT . 'scripts_public/oauth_authorize.php5');
- define('BX_DOL_OAUTH_URL_ACCESS_TOKEN', BX_DOL_UNITY_URL_ROOT . 'scripts_public/oauth_access_token.php5');
- define('BX_DOL_OAUTH_URL_FETCH_DATA', BX_DOL_UNITY_URL_ROOT . 'scripts_public/oauth_fetch_data.php5');
- //--- User Roles ---//
- define('BX_DOL_ROLE_GUEST', 0);
- define('BX_DOL_ROLE_MEMBER', 1);
- define('BX_DOL_ROLE_ADMIN', 2);
- // profile statuses
- define('BX_PROFILE_STATUS_SUSPENDED', 'suspended'); ///< profile status - suspended, profile is syspended by admin/moderator and usually can't access the site
- define('BX_PROFILE_STATUS_ACTIVE', 'active'); ///< profile status - active, profile is active on the site
- define('BX_PROFILE_STATUS_PENDING', 'pending'); ///< profile status - pending, default method of approving is manual approving
- define('BX_DOL', 1);
- define('BX_DOL_SECRET', 'sdn378vGR35'); // TODO: autogenerate during installation
- define('CHECK_DOLPHIN_REQUIREMENTS', 1);
- if (defined('CHECK_DOLPHIN_REQUIREMENTS')) {
- //check requirements
- \$aErrors = array();
- \$aErrors[] = (ini_get('register_globals') == 0) ? '' : '<font color="red">register_globals is On (warning, you should have this param in Off state, or your site will unsafe)</font>';
- \$aErrors[] = (ini_get('safe_mode') == 0) ? '' : '<font color="red">safe_mode is On, disable it</font>';
- //\$aErrors[] = (ini_get('allow_url_fopen') == 0) ? 'Off (warning, better keep this parameter in On to able register Dolphin' : '';
- \$aErrors[] = (version_compare(PHP_VERSION, '5.2.0', '<')) ? '<font color="red">PHP version too old, please update to PHP 5.2.0 at least</font>' : '';
- \$aErrors[] = (! extension_loaded( 'mbstring')) ? '<font color="red">mbstring extension not installed. <b>Warning!</b> Dolphin cannot work without <b>mbstring</b> extension.</font>' : '';
- if (version_compare(phpversion(), "5.2", ">") == 1) {
- \$aErrors[] = (ini_get('allow_url_include') == 0) ? '' : '<font color="red">allow_url_include is On (warning, you should have this param in Off state, or your site will unsafe)</font>';
- };
- \$aErrors = array_diff(\$aErrors, array('')); //delete empty
- if (count(\$aErrors)) {
- \$sErrors = implode(" <br /> ", \$aErrors);
- echo <<<EOF
- {\$sErrors} <br />
- Please go to the <br />
- <a href="http://www.boonex.com/trac/dolphin/wiki/GenDolTShooter">Dolphin Troubleshooter</a> <br />
- and solve the problem.
- EOF;
- exit;
- }
- }
- //check correct hostname
- \$aUrl = parse_url( BX_DOL_URL_ROOT );
- if( isset(\$_SERVER['HTTP_HOST']) and 0 != strcasecmp(\$_SERVER['HTTP_HOST'], \$aUrl['host']) and 0 != strcasecmp(\$_SERVER['HTTP_HOST'], \$aUrl['host'] . ':80') ) {
- header( "Location:http://{\$aUrl['host']}{\$_SERVER['REQUEST_URI']}" );
- exit;
- }
- // check if install folder exists
- /**
- * Uncomment for live version
- *
- if ( !defined ('BX_SKIP_INSTALL_CHECK') && file_exists( BX_DIRECTORY_PATH_ROOT . 'install' ) ) {
- \$ret = <<<EOJ
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
- <head>
- <title>Dolphin Smart Community Builder Installed</title>
- <link href="install/general.css" rel="stylesheet" type="text/css" />
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- </head>
- <body>
- <div id="main">
- <div id="header">
- <img src="install/images/boonex-logo.png" alt="" /></div>
- <div id="content">
- <div class="installed_pic">
- <img alt="Dolphin Installed" src="install/images/dolphin_installed.jpg" />
- </div>
- <div class="installed_text">
- Please, remove INSTALL directory from your server and reload this page to activate your community site.
- </div>
- <div class="installed_text">
- NOTE: Once you remove this page you can safely <a href="administration/modules.php">install modules via Admin Panel</a>.
- </div>
- </body>
- </html>
- EOJ;
- echo \$ret;
- exit();
- }
- */
- // set error reporting level
- error_reporting(E_ALL);
- ini_set('magic_quotes_sybase', 0);
- // set default encoding for multibyte functions
- mb_internal_encoding('UTF-8');
- mb_regex_encoding('UTF-8');
- require_once(BX_DIRECTORY_PATH_CLASSES . "BxDol.php");
- require_once(BX_DIRECTORY_PATH_INC . "security.inc.php");
- require_once(BX_DIRECTORY_PATH_INC . "utils.inc.php");
- require_once(BX_DIRECTORY_PATH_INC . "db.inc.php");
- require_once(BX_DIRECTORY_PATH_INC . "profiles.inc.php");
- bx_import('BxDolConfig');
- bx_import('BxDolService');
- bx_import('BxDolAlerts');
- \$oZ = new BxDolAlerts('system', 'begin', 0);
- \$oZ->alert();
- EOS;
- $aConf['periodicTempl'] = <<<EOS
- MAILTO=%site_email%<br />
- * * * * * cd %dir_root%periodic; %dir_php% -q cron.php<br />
- EOS;
- $confFirst = array();
- $confFirst['site_url'] = array(
- name => "Site URL",
- ex => "http://www.mydomain.com/path/",
- desc => "Your site URL here (backslash at the end required)",
- def => "http://",
- def_exp => '
- $str = "http://".$_SERVER[\'HTTP_HOST\'].$_SERVER[\'PHP_SELF\'];
- return preg_replace("/install\/(index\.php$)/","",$str);',
- check => 'return strlen($arg0) >= 10 ? true : false;'
- );
- $confFirst['dir_root'] = array(
- name => "Directory root",
- ex => "/path/to/your/script/files/",
- desc => "Path to directory where your php script files stored.",
- def_exp => '
- $str = rtrim($_SERVER[\'DOCUMENT_ROOT\'], \'/\').$_SERVER[\'PHP_SELF\'];
- return preg_replace("/install\/(index\.php$)/","",$str);',
- check => 'return strlen($arg0) >= 1 ? true : false;'
- );
- $confFirst['dir_php'] = array(
- name => "Path to php binary",
- ex => "/usr/local/bin/php",
- desc => "You should specify full path to your PHP interpreter here.",
- def => "/usr/local/bin/php",
- def_exp => "
- if ( file_exists(\"/usr/local/bin/php\") ) return \"/usr/local/bin/php\";
- \$fp = popen ( \"whereis php\", \"r\");
- if ( \$fp )
- {
- \$s = fgets(\$fp);
- \$s = sscanf(\$s, \"php: %s\");
- if ( file_exists(\"\$s[0]\") ) return \"\$s[0]\";
- }
- return '';",
- check => 'return strlen($arg0) >= 7 ? true : false;'
- );
- $confFirst['dir_mogrify'] = array(
- name => "Path to mogrify",
- ex => "/usr/local/bin/mogrify",
- desc => "If mogrify binary doesn't exist please install <a href='http://www.imagemagick.org/'>ImageMagick</a>",
- def => "/usr/local/bin/mogrify",
- def_exp => "
- if ( file_exists(\"/usr/X11R6/bin/mogrify\") ) return \"/usr/X11R6/bin/mogrify\";
- if ( file_exists(\"/usr/local/bin/mogrify\") ) return \"/usr/local/bin/mogrify\";
- if ( file_exists(\"/usr/bin/mogrify\") ) return \"/usr/bin/mogrify\";
- if ( file_exists(\"/usr/local/X11R6/bin/mogrify\") ) return \"/usr/local/X11R6/bin/mogrify\";
- if ( file_exists(\"/usr/bin/X11/mogrify\") ) return \"/usr/bin/X11/mogrify\";
- return '';",
- check => 'return strlen($arg0) >= 7 ? true : false;'
- );
- $confFirst['dir_convert'] = array(
- name => "Path to convert",
- ex => "/usr/local/bin/convert",
- desc => "If convert binary doesn't exist please install <a href='http://www.imagemagick.org/'>ImageMagick</a>",
- def => "/usr/local/bin/convert",
- def_exp => "
- if ( file_exists(\"/usr/X11R6/bin/convert\") ) return \"/usr/X11R6/bin/convert\";
- if ( file_exists(\"/usr/local/bin/convert\") ) return \"/usr/local/bin/convert\";
- if ( file_exists(\"/usr/bin/convert\") ) return \"/usr/bin/convert\";
- if ( file_exists(\"/usr/local/X11R6/bin/convert\") ) return \"/usr/local/X11R6/bin/convert\";
- if ( file_exists(\"/usr/bin/X11/convert\") ) return \"/usr/bin/X11/convert\";
- return '';",
- check => 'return strlen($arg0) >= 7 ? true : false;'
- );
- $confFirst['dir_composite'] = array(
- name => "Path to composite",
- ex => "/usr/local/bin/composite",
- desc => "If composite binary doesn't exist please install <a href='http://www.imagemagick.org/'>ImageMagick</a>",
- def => "/usr/local/bin/composite",
- def_exp => "
- if ( file_exists(\"/usr/X11R6/bin/composite\") ) return \"/usr/X11R6/bin/composite\";
- if ( file_exists(\"/usr/local/bin/composite\") ) return \"/usr/local/bin/composite\";
- if ( file_exists(\"/usr/bin/composite\") ) return \"/usr/bin/composite\";
- if ( file_exists(\"/usr/local/X11R6/bin/composite\") ) return \"/usr/local/X11R6/bin/composite\";
- if ( file_exists(\"/usr/bin/X11/composite\") ) return \"/usr/bin/X11/composite\";
- return '';",
- check => 'return strlen($arg0) >= 7 ? true : false;'
- );
- $aDbConf = array();
- $aDbConf['sql_file'] = array(
- name => "SQL file",
- ex => "/home/dolphin/public_html/install/sql/vXX.sql",
- desc => "SQL file location",
- def => "./sql/vXX.sql",
- def_exp => '
- if ( !( $dir = opendir( "sql/" ) ) )
- return "";
- while (false !== ($file = readdir($dir)))
- {
- if ( substr($file,-3) != \'sql\' ) continue;
- closedir( $dir );
- return "./sql/$file";
- }
- closedir( $dir );
- return "";',
- check => 'return strlen($arg0) >= 4 ? true : false;'
- );
- $aDbConf['db_host'] = array(
- name => "Database host name",
- ex => "localhost",
- desc => "Your MySQL database host name here.",
- def => "localhost",
- check => 'return strlen($arg0) >= 1 ? true : false;'
- );
- $aDbConf['db_port'] = array(
- name => "Database host port number",
- ex => "5506",
- desc => "Leave blank or specify MySQL Database host port number.",
- def => "",
- check => ''
- );
- $aDbConf['db_sock'] = array(
- name => "Database socket path",
- ex => "/tmp/mysql50.sock",
- desc => "Leave blank or specify MySQL Database socket path.",
- def => "",
- check => ''
- );
- $aDbConf['db_name'] = array(
- name => "Database name",
- ex => "YourDatabaseName",
- desc => "Your MySQL database name here.",
- check => 'return strlen($arg0) >= 1 ? true : false;'
- );
- $aDbConf['db_user'] = array(
- name => "Database user",
- ex => "YourName",
- desc => "Your MySQL database read/write user name here.",
- check => 'return strlen($arg0) >= 1 ? true : false;'
- );
- $aDbConf['db_password'] = array(
- name => "Database password",
- ex => "YourPassword",
- desc => "Your MySQL database password here.",
- check => 'return strlen($arg0) >= 0 ? true : false;'
- );
- $aGeneral = array();
- $aGeneral['site_title'] = array(
- name => "Site Title",
- ex => "The Best Community",
- desc => "The name of your site",
- check => 'return strlen($arg0) >= 1 ? true : false;'
- );
- $aGeneral['site_desc'] = array(
- name => "Site Description",
- ex => "The place to find new friends, communicate and have fun.",
- desc => "Meta description of your site",
- check => 'return strlen($arg0) >= 1 ? true : false;'
- );
- $aGeneral['site_email'] = array(
- name => "Site e-mail",
- ex => "your@email.here",
- desc => "Your site e-mail.",
- check => 'return strlen($arg0) > 0 AND strstr($arg0,"@") ? true : false;'
- );
- $aGeneral['notify_email'] = array(
- name => "Notify e-mail",
- ex => "your@email.here",
- desc => "Envelope \"From:\" address for notification messages",
- check => 'return strlen($arg0) > 0 AND strstr($arg0,"@") ? true : false;'
- );
- $aGeneral['bug_report_email'] = array(
- name => "Bug report email",
- ex => "your@email.here",
- desc => "Your email for receiving bug reports.",
- check => 'return strlen($arg0) > 0 AND strstr($arg0,"@") ? true : false;'
- );
- $aGeneral['admin_username'] = array(
- name => "Admin Username",
- ex => "admin",
- desc => "Specify the admin name here",
- check => 'return strlen($arg0) >= 1 ? true : false;'
- );
- $aGeneral['admin_password'] = array(
- name => "Admin Password",
- ex => "dolphin",
- desc => "Specify the admin password here",
- check => 'return strlen($arg0) >= 1 ? true : false;'
- );
- $aNonDeletableModules = array(
- 'boonex/shared_photo/',
- );
- $aTemporalityWritableFolders = array(
- 'inc',
- );
- /*----------Vars----------------*/
- /*------------------------------*/
- $sAction = $_REQUEST['action'];
- $sError = '';
- define('BX_SKIP_INSTALL_CHECK', true);
- // --------------------------------------------
- if ($sAction=='step6' || $sAction=='step7' || $sAction=='compile_languages') {
- require_once('../inc/header.inc.php' );
- require_once( BX_DIRECTORY_PATH_INC . 'db.inc.php' );
- require_once( BX_DIRECTORY_PATH_INC . 'design.inc.php' );
- } else {
- define ('BX_DOL', 1);
- require_once('../inc/classes/BxDol.php');
- }
- // --------------------------------------------
- require_once('../inc/classes/BxDolIO.php');
- $sInstallPageContent = InstallPageContent( $sError );
- mb_internal_encoding('UTF-8');
- echo PageHeader( $sAction, $sError );
- echo $sInstallPageContent;
- echo PageFooter( $sAction );
- function InstallPageContent(&$sError) {
- global $aConf, $confFirst, $aDbConf, $aGeneral;
- $sRet = '';
- switch ($_REQUEST['action']) {
- case 'compile_languages':
- performInstallLanguages();
- $sRet .= 'Default Dolphin language was recompiled';
- break;
- /*case 'step8':
- $sRet .= genMainDolphinPage();
- break;
- case 'step7':
- $sInstallLog = '';
- if ($_REQUEST['sub_action']=='install_modules') {
- if (is_array($_POST['pathes']) && count($_POST['pathes'])>0) {
- $oInstallerUi = new BxDolInstallerUi();
- $sInstallLog = $oInstallerUi->actionInstall($_POST['pathes']);
- }
- }
- $sRet .= genInstallModulesPage($sInstallLog);
- break;*/
- case 'step7':
- $sRet .= genMainDolphinPage();
- break;
- case 'step6':
- $sErrorMessage = checkPostInstallPermissions($sError);
- $sRet .= (strlen($sErrorMessage)) ? genPostInstallPermissionTable($sErrorMessage) : genMainDolphinPage();
- break;
- case 'step5':
- $sRet .= genPostInstallPermissionTable();
- break;
- case 'step4':
- $sErrorMessage = checkConfigArray($aGeneral, $sError);
- $sRet .= (strlen($sErrorMessage)) ? genSiteGeneralConfig($sErrorMessage) : genInstallationProcessPage();
- break;
- case 'step3':
- $sErrorMessage = checkConfigArray($aDbConf, $sError);
- $sErrorMessage .= CheckSQLParams();
- $sRet .= (strlen($sErrorMessage)) ? genDatabaseConfig($sErrorMessage) : genSiteGeneralConfig();
- break;
- case 'step2':
- $sErrorMessage = checkConfigArray($confFirst, $sError);
- $sRet .= (strlen($sErrorMessage)) ? genPathCheckingConfig($sErrorMessage) : genDatabaseConfig();
- break;
- case 'step1':
- $sErrorMessage = checkPreInstallPermission($sError);
- $sRet .= (strlen($sErrorMessage)) ? genPreInstallPermissionTable($sErrorMessage) : genPathCheckingConfig();
- break;
- case 'preInstall':
- $sRet .= genPreInstallPermissionTable();
- break;
- default:
- $sRet .= StartInstall();
- break;
- }
- return $sRet;
- }
- function performInstallLanguages() {
- db_res("TRUNCATE TABLE `sys_localization_languages`");
- db_res("TRUNCATE TABLE `sys_localization_keys`");
- db_res("TRUNCATE TABLE `sys_localization_strings`");
- if (!($sLangsDir = opendir(BX_DIRECTORY_PATH_ROOT . 'install/langs/')))
- return;
- while (false !== ($sFilename = readdir($sLangsDir))) {
- if (substr($sFilename,-3) == 'php') {
- //$sLangName = substr($sFilename,-6, 2);
- unset($LANG);
- unset($LANG_INFO);
- require_once(BX_DIRECTORY_PATH_ROOT . 'install/langs/' . $sFilename);
- walkThroughLanguage($LANG, $LANG_INFO);
- }
- }
- closedir ($sLangsDir);
- require_once('../inc/languages.inc.php');
- compileLanguage();
- }
- function walkThroughLanguage($aLanguage, $aLangInfo) {
- $sLangName = $aLangInfo['Name'];
- $sLangFlag = $aLangInfo['Flag'];
- $sLangTitle = $aLangInfo['Title'];
- $sInsertLanguageSQL = "INSERT INTO `sys_localization_languages` VALUES (NULL, '{$sLangName}', '{$sLangFlag}', '{$sLangTitle}')";
- db_res($sInsertLanguageSQL);
- $iLangKey = db_last_id();
- foreach ($aLanguage as $sKey => $sValue) {
- $sDqKey = str_replace("'", "''", $sKey);
- $sDqValue = str_replace("'", "''", $sValue);
- $iExistedKey = (int)db_value("SELECT `ID` FROM `sys_localization_keys` WHERE `Key`='{$sDqKey}'");
- if ($iExistedKey>0) { //Key existed, no need insert key
- } else {
- $sInsertKeySQL = "INSERT INTO `sys_localization_keys` VALUES(NULL, 1, '{$sDqKey}')";
- db_res($sInsertKeySQL);
- $iExistedKey = db_last_id();
- }
- $sInsertValueSQL = "INSERT INTO `sys_localization_strings` VALUES({$iExistedKey}, {$iLangKey}, '{$sDqValue}');";
- db_res($sInsertValueSQL);
- }
- }
- function genInstallModulesPage($sErrorMessage = '') {
- global $aNonDeletableModules;
- $sCurPage = $_SERVER['PHP_SELF'];
- if ($_REQUEST['sub_action']!='install_modules') {
- performInstallLanguages();
- }
- $sErrors = printInstallError($sErrorMessage);
- $oInstallerUi = new BxDolInstallerUi();
- $aAdditionalInputs['hidden_sub_action'] = array(
- 'type' => 'hidden',
- 'name' => 'sub_action',
- 'value' => 'install_modules'
- );
- $aAdditionalInputs['hidden_action'] = array(
- 'type' => 'hidden',
- 'name' => 'action',
- 'value' => 'step7'
- );
- $sNotInstalled = $oInstallerUi->getNotInstalled($aAdditionalInputs /*, $aNonDeletableModules*/);
- //module_not_install_form
- $sSkipStep = '';
- if ($_REQUEST['sub_action']=='install_modules') {
- $sSkipStep = <<<EOF
- <div class="button_area_2">
- <form action="{$sCurPage}" method="post">
- <input id="button" type="image" src="images/skip.gif" />
- <input type="hidden" name="action" value="step8" />
- </form>
- </div>
- EOF;
- }
- return <<<EOF
- <div class="position">Modules.</div>
- {$sErrors}
- <div class="LeftRight">
- <div class="clearBoth"></div>
- <div class="left"> </div>
- <div class="right">
- <script type="text/javascript">
- <!--
- function PerformInstall() {
- var oForm = document.getElementById('module_not_install_form');
- oForm.submit();
- }
- -->
- </script>
- {$sNotInstalled}
- <div class="formKeeper1">
- <div class="button_area_1">
- <form action="{$sCurPage}" method="post">
- <input id="button" type="image" src="images/next.gif" onclick="PerformInstall(); return false;" />
- <input type="hidden" name="action" value="step8" />
- </form>
- </div>
- {$sSkipStep}
- </div>
- </div>
- <div class="clearBoth"></div>
- </div>
- EOF;
- }
- function genInstallationProcessPage($sErrorMessage = '') {
- global $aConf, $confFirst, $aDbConf, $aGeneral;
- $sAdminName = get_magic_quotes_gpc() ? stripslashes($_REQUEST['admin_username']) : $_REQUEST['admin_username'];
- $sAdminPassword = get_magic_quotes_gpc() ? stripslashes($_REQUEST['admin_password']) : $_REQUEST['admin_password'];
- $resRunSQL = RunSQL( $sAdminName, $sAdminPassword );
- $sForm = '';
- if ('done' == $resRunSQL) {
- $sForm = '
- <div class="formKeeper">
- <form action="' . $_SERVER['PHP_SELF'] . '" method="post">
- <input type="image" src="images/next.gif" />
- <input type="hidden" name="action" value="step5" />
- </form>
- </div>
- <div class="clearBoth"></div>';
- } else {
- $sForm = $resRunSQL . '
- <div class="formKeeper">
- <form action="' . $_SERVER['PHP_SELF'] . '" method="post">
- <input type="image" src="images/back.gif" />';
- foreach ($_POST as $sKey => $sValue) {
- if ($sKey != "action")
- $sForm .= '<input type="hidden" name="' . $sKey . '" value="' . $sValue . '" />';
- }
- $sForm .= '<input type="hidden" name="action" value="step2" />
- </form>
- </div>
- <div class="clearBoth"></div>';
- return $sForm;
- }
- foreach ($confFirst as $key => $val) {
- $aConf['headerTempl'] = str_replace ("%$key%", $_POST[$key], $aConf['headerTempl']);
- }
- foreach ($aDbConf as $key => $val) {
- $aConf['headerTempl'] = str_replace ("%$key%", $_POST[$key], $aConf['headerTempl']);
- }
- foreach ($aGeneral as $key => $val) {
- $aConf['headerTempl'] = str_replace ("%$key%", $_POST[$key], $aConf['headerTempl']);
- }
- $aConf['periodicTempl'] = str_replace("%site_email%", $_POST['site_email'], $aConf['periodicTempl']);
- $aConf['periodicTempl'] = str_replace("%dir_root%", $_POST['dir_root'], $aConf['periodicTempl']);
- $aConf['periodicTempl'] = str_replace("%dir_php%", $_POST['dir_php'], $aConf['periodicTempl']);
- $sInnerCode = '';
- $fp = fopen($aConf['dolFile'], 'w');
- if ($fp) {
- fputs($fp, $aConf['headerTempl']);
- fclose($fp);
- chmod($aConf['dolFile'], 0666);
- //$sInnerCode .='Config file was successfully written to <strong>' . $aConf['dolFile'] . '</strong><br />';
- } else {
- $text = 'Warning!!! can not get write access to config file ' . $aConf['dolFile'] . '. Here is config file</font><br>';
- $sInnerCode .= printInstallError($text);
- $trans = get_html_translation_table(HTML_ENTITIES);
- $templ = strtr($aConf['headerTempl'], $trans);
- $sInnerCode .= '<textarea cols="20" rows="10" class="headerTextarea">' . $aConf['headerTempl'] . '</textarea>';
- }
- $sInnerCode .= <<<EOF
- <div class="left">
- Please, setup Cron Jobs as specified below. Helpful info about Cron Jobs is <a href="http://www.boonex.com/trac/dolphin/wiki/DetailedInstall#InstallScript-Step5-CronJobs">available here</a>.</div>
- <div class="debug">
- {$aConf['periodicTempl']}
- </div>
- EOF;
- return <<<EOF
- <div class="position">Cron Jobs</div>
- <div class="LeftRirght">
- {$sInnerCode}{$sForm}
- </div>
- EOF;
- }
- function isAdmin() { return false; }
- // check of step 5
- function checkPostInstallPermissions(&$sError) {
- global $aTemporalityWritableFolders;
- $sFoldersErr = $sFilesErr = $sErrorMessage = '';
-
- require_once('../studio/classes/BxDolStudioTools.php');
- $oAdmTools = new BxDolStudioTools();
- $oBxDolIO = new BxDolIO();
- $aInstallDirsMerged = array_merge($aTemporalityWritableFolders, $oAdmTools->aPostInstallPermDirs);
- foreach ($aInstallDirsMerged as $sFolder) {
- if ($oBxDolIO->isWritable($sFolder)) {
- $sFoldersErr .= ' ' . $sFolder . ';<br />';
- }
- }
- if (strlen( $sFoldersErr)) {
- $sError = 'error';
- $sErrorMessage .= '<strong>Next directories have inappropriate permissions</strong>:<br />' . $sFoldersErr;
- }
- foreach ($oAdmTools->aPostInstallPermFiles as $sFile) {
- if ($oBxDolIO->isWritable($sFile)) {
- $sFilesErr .= ' ' . $sFile . ';<br /> ';
- }
- }
- if (strlen($sFilesErr)) {
- $sError = 'error';
- $sErrorMessage .= '<strong>Next files have inappropriate permissions</strong>:<br />' . $sFilesErr;
- }
- return $sErrorMessage;
- }
- // step 5
- function genPostInstallPermissionTable($sErrorMessage = '') {
- global $aTemporalityWritableFolders;
- $sCurPage = $_SERVER['PHP_SELF'];
- $sPostFolders = $sPostFiles = '';
- $sErrors = printInstallError($sErrorMessage);
- require_once('../studio/classes/BxDolStudioTools.php');
- $oAdmTools = new BxDolStudioTools();
- $oBxDolIO = new BxDolIO();
- $aInstallDirsMerged = array_merge($aTemporalityWritableFolders, $oAdmTools->aPostInstallPermDirs);
- $i = 0;
- foreach($aInstallDirsMerged as $sFolder) {
- $sStyleAdd = ( ($i%2) == 0 ) ? 'background-color:#ede9e9;' : 'background-color:#fff;';
- $sEachFolder = ( $oBxDolIO->isWritable($sFolder) )
- ? '<span class="unwritable">Writable</span>' : '<span class="writable">Non-writable</span>';
- $sPostFolders .= <<<EOF
- <tr style="{$sStyleAdd}" class="cont">
- <td>{$sFolder}</td>
- <td class="span">
- {$sEachFolder}
- </td>
- <td class="span">
- <span class="desired">Non-writable</span>
- </td>
- </tr>
- EOF;
- $i++;
- }
- $i = 0;
- foreach($oAdmTools->aPostInstallPermFiles as $sFile) {
- $str = $_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF'];
- $sFolder = preg_replace("/install\/(index\.php$)/","",$str);
- if (file_exists($sFolder . $sFile)) {
- $sStyleAdd = ( ($i%2) == 0 ) ? 'background-color:#ede9e9;' : 'background-color:#fff;';
- $sEachFile = ( $oBxDolIO->isWritable($sFile) )
- ? '<span class="unwritable">Writable</span>'
- : '<span class="writable">Non-writable</span>';
- $sPostFiles .= <<<EOF
- <tr style="{$sStyleAdd}" class="cont">
- <td>{$sFile}</td>
- <td class="span">
- {$sEachFile}
- </td>
- <td class="span">
- <span class="desired">Non-writable</span>
- </td>
- </tr>
- EOF;
- $i++;
- }
- }
- return <<<EOF
- <div class="position">Permissions Reversal</div>
- {$sErrors}
- <div class="LeftRight">
- <div class="clearBoth"></div>
- <div class="left">Now, when Dolphin completed installation, you should change permissions for some files to keep your site secure. Please, change permissions as specified in the chart below. Helpful info about permissions is <a href="http://www.boonex.com/trac/dolphin/wiki/DetailedInstall#InstallScript-Step1-Permissions" target="_blank">available here</a>.</div>
- <div class="right">
- <table cellpadding="0" cellspacing="1" width="100%" border="0" style="background-color:silver;">
- <tr class="head">
- <td>Directories</td>
- <td>Current Level</td>
- <td>Desired Level</td>
- </tr>
- {$sPostFolders}
- <tr class="head">
- <td>Files</td>
- <td>Current Level</td>
- <td>Desired Level</td>
- </tr>
- {$sPostFiles}
- </table>
- <div class="formKeeper1">
- <div class="button_area_1">
- <form action="{$sCurPage}" method="post">
- <input id="button" type="image" src="images/check.gif" />
- <input type="hidden" name="action" value="step5" />
- </form>
- </div>
- <div class="button_area_1">
- <form action="{$sCurPage}" method="post">
- <input id="button" type="image" src="images/next.gif" />
- <input type="hidden" name="action" value="step6" />
- </form>
- </div>
- <div class="button_area_2">
- <form action="{$sCurPage}" method="post">
- <input id="button" type="image" src="images/skip.gif" />
- <input type="hidden" name="action" value="step7" />
- </form>
- </div>
- </div>
- </div>
- <div class="clearBoth"></div>
- </div>
- EOF;
- }
- function genSiteGeneralConfig($sErrorMessage = '') {
- global $aGeneral;
- $sCurPage = $_SERVER['PHP_SELF'];
- $sSGParamsTable = createTable($aGeneral);
- $sErrors = '';
- if (strlen($sErrorMessage)) {
- $sErrors = printInstallError($sErrorMessage);
- unset($_POST['site_title']);
- unset($_POST['site_email']);
- unset($_POST['notify_email']);
- unset($_POST['bug_report_email']);
- }
- $sOldDataParams = '';
- foreach($_POST as $postKey => $postValue) {
- $sOldDataParams .= ('action' == $postKey || isset($aGeneral[$postKey])) ? '' : '<input type="hidden" name="' . $postKey . '" value="' . $postValue . '" />';
- }
- return <<<EOF
- <div class="position">Configuration</div>
- {$sErrors}
- <div class="LeftRirght">
- <div class="clearBoth"></div>
- <div class="left"></div>
- <div class="right">
- <form action="{$sCurPage}" method="post">
- <table cellpadding="0" cellspacing="1" width="100%" border="0" style="background-color:silver;">
- <tr class="head">
- <td> </td>
- <td> </td>
- </tr>
- {$sSGParamsTable}
- </table>
- <div class="formKeeper">
- <input id="button" type="image" src="images/next.gif" />
- <input type="hidden" name="action" value="step4" />
- {$sOldDataParams}
- </div>
- </form>
- </div>
- <div class="clearBoth"></div>
- </div>
- EOF;
- }
- // check of config pages steps
- function checkConfigArray($aCheckedArray, &$sError) {
- //$error_arr //It is like global variable
- //$config_arr //It is like global variable, but non used
- $sErrorMessage = '';
- foreach ($aCheckedArray as $sKey => $sValue) {
- if (! strlen($sValue['check'])) continue;
- $funcbody = $sValue['check'];
- $func = create_function('$arg0', $funcbody);
- if (! $func($_POST[$sKey])) {
- $sFieldErr = $sValue['name'];
- $sErrorMessage .= "Please, input valid data to <b>{$sFieldErr}</b> field<br />";
- $error_arr[$sKey] = 1;
- unset($_POST[$sKey]);
- } else
- $error_arr[$sKey] = 0;
- //$config_arr[$sKey]['def'] = $_POST[$sKey];
- }
- if (strlen($sErrorMessage)) {
- $sError = 'error';
- }
- return $sErrorMessage;
- }
- function genDatabaseConfig($sErrorMessage = '') {
- global $aDbConf;
- $sCurPage = $_SERVER['PHP_SELF'];
- $sDbParamsTable = createTable($aDbConf);
- $sErrors = '';
- if (strlen($sErrorMessage)) {
- $sErrors = printInstallError($sErrorMessage);
- unset($_POST['db_name']);
- unset($_POST['db_user']);
- unset($_POST['db_password']);
- }
- $sOldDataParams = '';
- foreach($_POST as $postKey => $postValue) {
- $sOldDataParams .= ('action' == $postKey || isset($aDbConf[$postKey])) ? '' : '<input type="hidden" name="' . $postKey . '" value="' . $postValue . '" />';
- }
- return <<<EOF
- <div class="position">Database</div>
- {$sErrors}
- <div class="LeftRirght">
- <div class="clearBoth"></div>
- <div class="left">
- Please <a target="_blank" href="http://www.boonex.com/trac/dolphin/wiki/DetailedInstall#Part2:CreateaDatabaseandaUser">create a database</a> and tell Dolphin about it.
- </div>
- <div class="right">
- <form action="{$sCurPage}" method="post">
- <table cellpadding="0" cellspacing="1" width="100%" border="0" style="background-color:silver;">
- <tr class="head">
- <td> </td>
- <td> </td>
- </tr>
- {$sDbParamsTable}
- </table>
- <div class="formKeeper">
- <input id="button" type="image" src="images/next.gif" />
- <input type="hidden" name="action" value="step3" />
- {$sOldDataParams}
- </div>
- </form>
- </div>
- <div class="clearBoth"></div>
- </div>
- EOF;
- }
- function genPathCheckingConfig($sErrorMessage = '') {
- global $aConf, $confFirst;
- $sCurPage = $_SERVER['PHP_SELF'];
- $sGDRes = (extension_loaded('gd')) ? '<span class="writable">GD library installed</span>'
- : '<span class="unwritable">GD library NOT installed</span>';
- $sError = printInstallError( $sErrorMessage );
- $sPathsTable = createTable($confFirst);
- return <<<EOF
- <div class="position">Paths Check</div>
- {$sError}
- <div class="LeftRirght">
- <div class="clearBoth"></div>
- <div class="left">
- Dolphin checks general script paths.
- </div>
- <div class="right">
- <form action="{$sCurPage}" method="post">
- <table cellpadding="0" cellspacing="1" width="100%" border="0" style="background-color:silver;">
- <tr class="head">
- <td> </td>
- <td> </td>
- </tr>
- {$sPathsTable}
- <tr class="cont" style="background-color:#ede9e9;">
- <td>
- Check GD Installed
- </td>
- <td>
- {$sGDRes}
- </td>
- </tr>
- </table>
- <div class="formKeeper">
- <input id="button" type="image" src="images/next.gif" />
- <input type="hidden" name="action" value="step2" />
- </div>
- </form>
- </div>
- <div class="clearBoth"></div>
- </div>
- EOF;
- }
- function checkPreInstallPermission(&$sError) {
- global $aTemporalityWritableFolders;
- $sFoldersErr = $sFilesErr = $sErrorMessage = '';
- $oBxDolIO = new BxDolIO();
- require_once('../studio/classes/BxDolStudioTools.php');
- $oAdmTools = new BxDolStudioTools();
- $aInstallDirsMerged = array_merge($aTemporalityWritableFolders, $oAdmTools->aInstallDirs);
- foreach ($aInstallDirsMerged as $sFolder) {
- if (! $oBxDolIO->isWritable($sFolder)) {
- $sFoldersErr .= ' ' . $sFolder . ';<br />';
- }
- }
- foreach ($oAdmTools->aFlashDirs as $sFolder) {
- if (! $oBxDolIO->isWritable($sFolder)) {
- $sFoldersErr .= ' ' . $sFolder . ';<br />';
- }
- }
- if( strlen( $sFoldersErr ) ) {
- $sError = 'error';
- $sErrorMessage .= '<strong>Next directories have inappropriate permissions</strong>:<br />' . $sFoldersErr;
- }
- foreach ($oAdmTools->aInstallFiles as $sFile) {
- if (! $oBxDolIO->isWritable($sFile)) {
- $sFilesErr .= ' ' . $sFile . ';<br /> ';
- }
- }
- foreach( $oAdmTools->aFlashFiles as $sFile ) {
- if (strpos($sFile,'ffmpeg') === false) {
- if (! $oBxDolIO->isWritable($sFile)) {
- $sFilesErr .= ' ' . $sFile . ';<br /> ';
- }
- } else {
- if (! $oBxDolIO->isExecutable($sFile)) {
- $sFilesErr .= ' ' . $sFile . ';<br /> ';
- }
- }
- }
- if (strlen($sFilesErr)) {
- $sError = 'error';
- $sErrorMessage .= '<strong>Next files have inappropriate permissions</strong>:<br />' . $sFilesErr;
- }
- return $sErrorMessage;
- }
- // pre install
- function genPreInstallPermissionTable($sErrorMessage = '') {
- global $aTemporalityWritableFolders;
- $sCurPage = $_SERVER['PHP_SELF'];
- $sErrorMessage .= (ini_get('safe_mode') == 1 || ini_get('safe_mode') == 'On') ? "Please turn off <b>safe_mode</b> in your php.ini file configuration" : '';
- $sError = printInstallError($sErrorMessage);
- require_once('../studio/classes/BxDolStudioTools.php');
- $oAdmTools = new BxDolStudioTools();
- $oAdmTools->aInstallDirs = array_merge($aTemporalityWritableFolders, $oAdmTools->aInstallDirs);
- $sPermTable = $oAdmTools->GenCommonCode();
- $sPermTable .= $oAdmTools->GenPermTable();
- return <<<EOF
- <div class="position">Permissions</div>
- {$sError}
- <div class="LeftRirght">
- <div class="clearBoth"></div>
- <div class="left">
- Dolphin needs special access for certain files and directories. Please, change permissions as specified in the chart below. Helpful info about permissions is <a href="http://www.boonex.com/trac/dolphin/wiki/DetailedInstall#InstallScript-Step1-Permissions" target="_blank">available here</a>.
- </div>
- <div class="clear_both"></div>
- <div class="right">
- <script src="../plugins/jquery/jquery.js" type="text/javascript" language="javascript"></script>
- {$sPermTable}
- <div class="formKeeper">
- <div class="button_area_1">
- <form action="{$sCurPage}" method="post">
- <input id="button" type="image" src="images/check.gif" />
- <input type="hidden" name="action" value="preInstall" />
- </form>
- </div>
- <div class="button_area_2">
- <form action="{$sCurPage}" method="post">
- <input id="button" type="image" src="images/next.gif" />
- <input type="hidden" name="action" value="step1" />
- </form>
- </div>
- <div class="clearBoth"></div>
- </div>
- </div>
- </div>
- EOF;
- }
- function StartInstall() {
- global $aConf;
- return <<<EOF
- <div class="install_pic">
- Dolphin {$aConf['iVersion']}.{$aConf['iPatch']}
- </div>
- <div class="install_text">
- Thank you for choosing Dolphin Smart Community Builder!<br />
- Click the button below to create your own community.
- </div>
- <div class="install_button">
- <form action="{$_SERVER['PHP_SELF']}" method="post">
- <input id="button" type="image" src="images/install.gif" />
- <input type="hidden" name="action" value="preInstall" />
- </form>
- </div>
- EOF;
- }
- function genMainDolphinPage() {
- //TODO: Forward into Studio -> Store to install Language(s) or install default one automatically.
- //performInstallLanguages();
- /**
- * Register System Transcoders
- */
- $aTranscoders = array(
- BX_DOL_TRANSCODER_OBJ_ICON_APPLE,
- BX_DOL_TRANSCODER_OBJ_ICON_FACEBOOK,
- BX_DOL_TRANSCODER_OBJ_ICON_FAVICON,
- BX_DOL_TRANSCODER_OBJ_CMTS_IMAGE_PREVIEW
- );
- bx_import('BxDolImageTranscoder');
- BxDolImageTranscoder::registerHandlersArray($aTranscoders);
- /**
- * Perform admin login.
- */
- $sExistedAdminPass = db_value("SELECT `password` FROM `sys_accounts` WHERE `id`='1'");
- $aUrl = parse_url($GLOBALS['site']['url']);
- $sPath = isset($aUrl['path']) && !empty($aUrl['path']) ? $aUrl['path'] : '/';
- $sHost = '';
- $iCookieTime = 0;
- setcookie("memberID", 1, $iCookieTime, $sPath, $sHost);
- $_COOKIE['memberID'] = 1;
- setcookie("memberPassword", $sExistedAdminPass, $iCookieTime, $sPath, $sHost, false, true /* http only */);
- $_COOKIE['memberPassword'] = $sExistedAdminPass;
- return <<<EOF
- <script type="text/javascript">
- window.location = "../index.php";
- </script>
- EOF;
- }
- function PageHeader($sAction = '', $sError = '') {
- global $aConf;
- $aActions = array(
- "startInstall" => "Dolphin Installation",
- "preInstall" => "Permissions",
- "step1" => "Paths",
- "step2" => "Database",
- "step3" => "Config",
- "step4" => "Cron Jobs",
- "step5" => "Permissions Reversal",
- "step6" => "Modules"
- );
- if( !strlen( $sAction ) )
- $sAction = "startInstall";
- $sActiveStyle = ($sAction == "step6") ? 'Active' : 'Inactive';
- $iCounterCurrent = 1;
- $iCounterActive = 1;
- foreach ($aActions as $sActionKey => $sActionValue) {
- if ($sAction != $sActionKey) {
- $iCounterActive++;
- } else
- break;
- }
- if (strlen($sError))
- $iCounterActive--;
- $sSubActions = '';
- foreach ($aActions as $sActionKey => $sActionValue) {
- if ($iCounterActive == $iCounterCurrent) {
- $sSubActions .= '<div id="topActive">' . $sActionValue . '</div>';
- } elseif (($iCounterActive - $iCounterCurrent) == -1) {
- $sSubActions .= '<img src="images/active_inactive.gif" /><div id="topInactive">' . $sActionValue . '</div><img src="images/inactive_inactive.gif" />';
- } elseif (($iCounterActive - $iCounterCurrent) == 1) {
- $sSubActions .= '<div id="topInactive">' . $sActionValue . '</div><img src="images/inactive_active.gif" />';
- } else {
- $sSubActions .= '<div id="topInactive">' . $sActionValue . '</div>';
- if ($sActionKey != "step6")
- $sSubActions .= '<img src="images/inactive_inactive.gif" />';
- }
- $iCounterCurrent++;
- }
- return <<<EOF
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
- <head>
- <title>Dolphin Smart Community Builder Installation Script</title>
- <link href="general.css" rel="stylesheet" type="text/css" />
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <script src="../inc/js/functions.js" type="text/javascript" language="javascript"></script>
- <!--[if lt IE 7.]>
- <script defer type="text/javascript" src="../inc/js/pngfix.js"></script>
- <![endif]-->
- </head>
- <body>
- <div id="main">
- <div id="topMenu{$sActiveStyle}">
- {$sSubActions}
- </div>
- <div id="header">
- <img src="images/boonex-logo.png" alt="" /></div>
- <div id="content">
- EOF;
- }
- function PageFooter($sAction) {
- $sAdminAdd = ($sAction) ? '<div id="footer"><img src="images/dolphin_transparent.jpg" alt="" /></div>' : '';
- return <<<EOF
- </div>
- {$sAdminAdd}
- </div>
- </body>
- </html>
- EOF;
- }
- function printInstallError($sText) {
- $sRet = (strlen($sText)) ? '<div class="error">' . $sText . '</div>' : '';
- return $sRet;
- }
- function createTable($arr) {
- $ret = '';
- $i = '';
- foreach($arr as $key => $value) {
- $sStyleAdd = (($i%2) == 0) ? 'background-color:#ede9e9;' : 'background-color:#fff;';
- $def_exp_text = "";
- if (strlen($value['def_exp'])) {
- $funcbody = $value['def_exp'];
- $func = create_function("", $funcbody);
- $def_exp = $func();
- if (strlen($def_exp)) {
- $def_exp_text = " <font color=green>found</font>";
- $value['def'] = $def_exp;
- } else {
- $def_exp_text = " <font color=red>not found</font>";
- }
- }
- $st_err = ($error_arr[$key] == 1) ? ' style="background-color:#FFDDDD;" ' : '';
- $ret .= <<<EOF
- <tr class="cont" style="{$sStyleAdd}">
- <td>
- <div>{$value['name']}</div>
- <div>Description:</div>
- <div>Example:</div>
- </td>
- <td>
- <div><input {$st_err} size="30" name="{$key}" value="{$value['def']}" /> {$def_exp_text}</div>
- <div>{$value['desc']}</div>
- <div style="font-style:italic;">{$value['ex']}</div>
- </td>
- </tr>
- EOF;
- $i ++;
- }
- return $ret;
- }
- function rewriteFile($sCode, $sReplace, $sFile) {
- $ret = '';
- $fs = filesize($sFile);
- $fp = fopen($sFile, 'r');
- if ($fp) {
- $fcontent = fread($fp, $fs);
- $fcontent = str_replace($sCode, $sReplace, $fcontent);
- fclose($fp);
- $fp = fopen($sFile, 'w');
- if ($fp) {
- if (fputs($fp, $fcontent)) {
- $ret .= true;
- } else {
- $ret .= false;
- }
- fclose ( $fp );
- } else {
- $ret .= false;
- }
- } else {
- $ret .= false;
- }
- return $ret;
- }
- function RunSQL($sAdminName, $sAdminPassword) {
- $aDbConf['host'] = $_POST['db_host'];
- $aDbConf['sock'] = $_POST['db_sock'];
- $aDbConf['port'] = $_POST['db_port'];
- $aDbConf['user'] = $_POST['db_user'];
- $aDbConf['passwd'] = $_POST['db_password'];
- $aDbConf['db'] = $_POST['db_name'];
- $aDbConf['host'] .= ( $aDbConf['port'] ? ":{$aDbConf['port']}" : '' ) . ( $aDbConf['sock'] ? ":{$aDbConf['sock']}" : '' );
- $pass = true;
- $errorMes = '';
- $filename = $_POST['sql_file'];
- $vLink = @mysql_connect($aDbConf['host'], $aDbConf['user'], $aDbConf['passwd']);
- if( !$vLink )
- return printInstallError( mysql_error() );
- if (!mysql_select_db ($aDbConf['db'], $vLink))
- return printInstallError( $aDbConf['db'] . ': ' . mysql_error() );
- mysql_query ("SET sql_mode = ''", $vLink);
- if (! ($f = fopen ( $filename, "r" )))
- return printInstallError( 'Could not open file with sql instructions:' . $filename );
- //Begin SQL script executing
- $s_sql = "";
- while ($s = fgets ( $f, 10240)) {
- $s = trim( $s ); //Utf with BOM only
- if (! strlen($s)) continue;
- if (mb_substr($s, 0, 1) == '#') continue; //pass comments
- if (mb_substr($s, 0, 2) == '--') continue;
- if (substr($s, 0, 5) == "\xEF\xBB\xBF\x2D\x2D") continue;
- $s_sql .= $s;
- if (mb_substr($s, -1) != ';') continue;
- $res = mysql_query($s_sql, $vLink);
- if (!$res)
- $errorMes .= 'Error while executing: ' . $s_sql . '<br />' . mysql_error($vLink) . '<hr />';
- $s_sql = '';
- }
- fclose($f);
- $sAdminNameDB = DbEscape($sAdminName, false);
- $sSiteEmail = DbEscape($_POST['site_email']);
- $sSaltDB = base64_encode(substr(md5(microtime()), 2, 6));
- $sAdminPasswordDB = sha1(md5($sAdminPassword) . $sSaltDB); // encryptUserPwd
- $sAdminQuery = "
- INSERT INTO `sys_accounts`
- (`name`, `email`, `email_confirmed`, `receive_updates`, `receive_news`, `password`, `salt`, `role`, `added`)
- VALUES
- ('{$sAdminNameDB}', '{$sSiteEmail}', 1, 1, 1, '{$sAdminPasswordDB}', '{$sSaltDB}', 3, '" . time() . "')
- ";
- if (!mysql_query($sAdminQuery, $vLink)) {
- $errorMes .= 'Error while executing: ' . $sAdminQuery . '<br />' . mysql_error($vLink) . '<hr />';
- } else {
- $iAccontId = mysql_insert_id($vLink);
- $sAdminQuery = "
- INSERT INTO `sys_profiles`
- (`account_id`, `type`, `content_id`, `status`)
- VALUES
- ($iAccontId, 'system', $iAccontId, 'active')
- ";
- if (!mysql_query($sAdminQuery, $vLink))
- $errorMes .= 'Error while executing: ' . $sAdminQuery . '<br />' . mysql_error($vLink) . '<hr />';
- }
-
- $enable_gd_value = extension_loaded('gd') ? 'on' : '';
- if (!(mysql_query ("UPDATE `sys_options` SET `VALUE`='{$enable_gd_value}' WHERE `Name`='enable_gd'", $vLink)))
- $ret .= "<font color=red><i><b>Error</b>:</i> " . mysql_error($vLink) . "</font><hr>";
- $sSiteTitle = DbEscape($_POST['site_title']);
- $sSiteDesc = DbEscape($_POST['site_desc']);
- $sSiteEmailNotify = DbEscape($_POST['notify_email']);
- $sSiteEmailBugReport = DbEscape($_POST['bug_report_email']);
- if ($sSiteEmail != '' && $sSiteTitle != '' && $sSiteEmailNotify != '') {
- if (! (mysql_query("UPDATE `sys_options` SET `VALUE`='{$sSiteEmail}' WHERE `Name`='site_email'", $vLink)))
- $ret .= "<font color=red><i><b>Error</b>:</i> ".mysql_error($vLink)."</font><hr>";
- if (! (mysql_query("UPDATE `sys_options` SET `VALUE`='{$sSiteTitle}' WHERE `Name`='site_title'", $vLink)))
- $ret .= "<font color=red><i><b>Error</b>:</i> ".mysql_error($vLink)."</font><hr>";
- if (! (mysql_query("UPDATE `sys_options` SET `VALUE`='{$sSiteEmailNotify}' WHERE `Name`='site_email_notify'", $vLink)))
- $ret .= "<font color=red><i><b>Error</b>:</i> ".mysql_error($vLink)."</font><hr>";
- if (! (mysql_query("UPDATE `sys_options` SET `VALUE`='{$sSiteEmailBugReport}' WHERE `Name`='site_email_bug_report'", $vLink)))
- $ret .= "<font color=red><i><b>Error</b>:</i> ".mysql_error($vLink)."</font><hr>";
- if (! (mysql_query("UPDATE `sys_options` SET `VALUE`='{$sSiteDesc}' WHERE `Name`='MetaDescription'", $vLink)))
- $ret .= "<font color=red><i><b>Error</b>:</i> ".mysql_error($vLink)."</font><hr>";
- } else {
- $ret .= "<font color=red><i><b>Error</b>:</i> Don`t received POSTed site_email or site_title or site_email_notify</font><hr>";
- }
- mysql_close($vLink);
- $errorMes .= $ret;
- if (strlen($errorMes)) {
- return printInstallError($errorMes);
- } else {
- return 'done';
- }
- // return $ret."Truncating tables finished.<br>";
- }
- function DbEscape($s, $isDetectMagixQuotes = true) {
- if (get_magic_quotes_gpc() && $isDetectMagixQuotes)
- $s = stripslashes ($s);
- return mysql_real_escape_string($s);
- }
- function CheckSQLParams() {
- $aDbConf['host'] = $_POST['db_host'];
- $aDbConf['sock'] = $_POST['db_sock'];
- $aDbConf['port'] = $_POST['db_port'];
- $aDbConf['user'] = $_POST['db_user'];
- $aDbConf['passwd'] = $_POST['db_password'];
- $aDbConf['db'] = $_POST['db_name'];
- $aDbConf['host'] .= ( $aDbConf['port'] ? ":{$aDbConf['port']}" : '' ) . ( $aDbConf['sock'] ? ":{$aDbConf['sock']}" : '' );
- $vLink = @mysql_connect($aDbConf['host'], $aDbConf['user'], $aDbConf['passwd']);
- if (!$vLink)
- return printInstallError(mysql_error());
- if (!mysql_select_db ($aDbConf['db'], $vLink))
- return printInstallError($aDbConf['db'] . ': ' . mysql_error());
- mysql_close($vLink);
- }
- // set error reporting level
- if (version_compare(phpversion(), "5.3.0", ">=") == 1)
- error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
- else
- error_reporting(E_ALL & ~E_NOTICE);
- ?>
|