XpressEngine Core  1.11.2
 All Classes Namespaces Files Functions Variables Pages
install.controller.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) NAVER <http://www.navercorp.com> */
9 {
12  var $flagLicenseAgreement = './files/env/license_agreement';
13 
17  function init()
18  {
19  // Error occurs if already installed
20  if($this->act !== 'procInstallLicenseAggrement' && Context::isInstalled())
21  {
22  $this->stop('msg_already_installed');
23  }
24 
25  $this->db_tmp_config_file = _XE_PATH_.'files/config/tmpDB.config.php';
26  $this->etc_tmp_config_file = _XE_PATH_.'files/config/tmpEtc.config.php';
27  }
28 
34  {
35  return $this->_procDBSetting();
36  }
37 
43  {
44  return $this->_procDBSetting();
45  }
46 
51  function procMssqlDBSetting()
52  {
53  return $this->_procDBSetting();
54  }
55 
60  function procMysqlDBSetting()
61  {
62  return $this->_procDBSetting();
63  }
64 
70  {
71  return $this->_procDBSetting();
72  }
73 
79  {
80  return $this->_procDBSetting();
81  }
82 
86  function _procDBSetting()
87  {
88  // Get DB-related variables
89  $con_string = Context::gets('db_type','db_port','db_hostname','db_userid','db_password','db_database','db_table_prefix');
90 
91  $db_info = new stdClass();
92  $db_info->master_db = get_object_vars($con_string);
93  $db_info->slave_db = array($db_info->master_db);
94  $db_info->default_url = Context::getRequestUri();
95  $db_info->lang_type = Context::getLangType();
96  $db_info->use_mobile_view = 'Y';
97 
98  // Set DB type and information
99  Context::setDBInfo($db_info);
100 
101  // Check if available to connect to the DB
102  $oDB = &DB::getInstance();
103  $output = $oDB->getError();
104  if(!$output->toBool()) return $output;
105  if(!$oDB->isConnected()) return $oDB->getError();
106 
107  // Create a db temp config file
108  if(!$this->makeDBConfigFile()) return new BaseObject(-1, 'msg_install_failed');
109 
110  if(!in_array(Context::getRequestMethod(),array('XMLRPC','JSON')))
111  {
112  $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'act', 'dispInstallConfigForm');
113  header('location:'.$returnUrl);
114  return;
115  }
116  }
117 
121  function procConfigSetting()
122  {
123  // Get variables
124  $config_info = Context::gets('use_rewrite','time_zone');
125  if($config_info->use_rewrite!='Y') $config_info->use_rewrite = 'N';
126 
127  // Create a db temp config file
128  if(!$this->makeEtcConfigFile($config_info)) return new BaseObject(-1, 'msg_install_failed');
129 
130  if(!in_array(Context::getRequestMethod(),array('XMLRPC','JSON')))
131  {
132  $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'act', 'dispInstallManagerForm');
133  header('location:'.$returnUrl);
134  return;
135  }
136  }
137 
141  function procInstall()
142  {
143  // Check if it is already installed
144  if(Context::isInstalled()) return new BaseObject(-1, 'msg_already_installed');
145 
146  Context::loadLang('modules/member/lang');
147  $oMemberModel = getModel('member');
148  $vars = Context::getRequestVars();
149 
150  if(!$oMemberModel->checkPasswordStrength($vars->password, 'high'))
151  {
152  Context::loadLang('modules/member/lang');
153  $message = Context::getLang('about_password_strength');
154  return new BaseObject(-1, $message['high']);
155  }
156 
157  // Assign a temporary administrator when installing
158  $logged_info = new stdClass();
159  $logged_info->is_admin = 'Y';
160  Context::set('logged_info', $logged_info);
161 
162  // check install config
163  if(Context::get('install_config'))
164  {
165  $db_info = $this->_makeDbInfoByInstallConfig();
166  }
167  // install by default XE UI
168  else
169  {
170  if(FileHandler::exists($this->db_tmp_config_file)) include $this->db_tmp_config_file;
171  if(FileHandler::exists($this->etc_tmp_config_file)) include $this->etc_tmp_config_file;
172  }
173 
174  // Set DB type and information
175  Context::setDBInfo($db_info);
176  // Create DB Instance
177  $oDB = &DB::getInstance();
178  // Check if available to connect to the DB
179  if(!$oDB->isConnected()) return $oDB->getError();
180 
181  // Install all the modules
182  try {
183  $oDB->begin();
184  $this->installDownloadedModule();
185  $oDB->commit();
186  } catch(Exception $e) {
187  $oDB->rollback();
188  return new BaseObject(-1, $e->getMessage());
189  }
190 
191  // Create a config file
192  if(!$this->makeConfigFile()) return new BaseObject(-1, 'msg_install_failed');
193 
194  // load script
195  $scripts = FileHandler::readDir(_XE_PATH_ . 'modules/install/script', '/(\.php)$/');
196  if(count($scripts)>0)
197  {
198  sort($scripts);
199  foreach($scripts as $script)
200  {
201  $script_path = FileHandler::getRealPath('./modules/install/script/');
202  $output = include($script_path . $script);
203  }
204  }
205 
206  // save selected lang info
207  $oInstallAdminController = getAdminController('install');
208  $oInstallAdminController->saveLangSelected(array(Context::getLangType()));
209 
210  // Display a message that installation is completed
211  $this->setMessage('msg_install_completed');
212 
213  unset($_SESSION['use_rewrite']);
214 
215  if(!in_array(Context::getRequestMethod(),array('XMLRPC','JSON')))
216  {
217  $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('');
218  header('location:'.$returnUrl);
219  return new BaseObject();
220  }
221  }
222 
227  {
228  $db_info = new stdClass();
229  $db_info->master_db = array(
230  'db_type' => Context::get('db_type'),
231  'db_port' => Context::get('db_port'),
232  'db_hostname' => Context::get('db_hostname'),
233  'db_userid' => Context::get('db_userid'),
234  'db_password' => Context::get('db_password'),
235  'db_database' => Context::get('db_database'),
236  'db_table_prefix' => Context::get('db_table_prefix')
237  );
238  $db_info->slave_db = array($db_info->master_db);
239  $db_info->default_url = Context::getRequestUri();
240  $db_info->lang_type = Context::get('lang_type') ? Context::get('lang_type') : Context::getLangType();
241  Context::setLangType($db_info->lang_type);
242  $db_info->use_rewrite = Context::get('use_rewrite');
243  $db_info->time_zone = Context::get('time_zone');
244 
245  if($_SERVER['HTTPS'] == 'on')
246  {
247  $https_port = (Context::get('https_port')) ? Context::get('https_port') : $_SERVER['SERVER_PORT'];
248  $https_port = (!$https_port != 443) ? $https_port : null;
249  }
250  else
251  {
252  $http_port = (Context::get('http_port')) ? Context::get('http_port') : $_SERVER['SERVER_PORT'];
253  $http_port = (!$http_port != 80) ? $http_port : null;
254  }
255  if($http_port) $db_info->http_port = $http_port;
256  if($https_port) $db_info->https_port = $https_port;
257 
258  return $db_info;
259  }
260 
264  function procInstallFTP()
265  {
266  if(Context::isInstalled()) return new BaseObject(-1, 'msg_already_installed');
267  $ftp_info = Context::gets('ftp_host', 'ftp_user','ftp_password','ftp_port','ftp_root_path');
268  $ftp_info->ftp_port = (int)$ftp_info->ftp_port;
269  if(!$ftp_info->ftp_port) $ftp_info->ftp_port = 21;
270  if(!$ftp_info->ftp_host) $ftp_info->ftp_host = '127.0.0.1';
271  if(!$ftp_info->ftp_root_path) $ftp_info->ftp_root_path = '/';
272 
273  $buff = array('<?php if(!defined("__XE__")) exit();');
274  $buff[] = "\$ftp_info = new stdClass();";
275  foreach($ftp_info as $key => $val)
276  {
277  $buff[] = sprintf("\$ftp_info->%s='%s';", $key, str_replace("'","\\'",$val));
278  }
279 
280  // If safe_mode
281  if(ini_get('safe_mode'))
282  {
283  if(!$ftp_info->ftp_user || !$ftp_info->ftp_password) return new BaseObject(-1,'msg_safe_mode_ftp_needed');
284 
285  require_once(_XE_PATH_.'libs/ftp.class.php');
286  $oFtp = new ftp();
287  if(!$oFtp->ftp_connect($ftp_info->ftp_host, $ftp_info->ftp_port)) return new BaseObject(-1, sprintf(Context::getLang('msg_ftp_not_connected'), 'host'));
288 
289  if(!$oFtp->ftp_login($ftp_info->ftp_user, $ftp_info->ftp_password))
290  {
291  $oFtp->ftp_quit();
292  return new BaseObject(-1,'msg_ftp_invalid_auth_info');
293  }
294 
295  if(!is_dir(_XE_PATH_.'files') && !$oFtp->ftp_mkdir($ftp_info->ftp_root_path.'files'))
296  {
297  $oFtp->ftp_quit();
298  return new BaseObject(-1,'msg_ftp_mkdir_fail');
299  }
300 
301  if(!$oFtp->ftp_site("CHMOD 777 ".$ftp_info->ftp_root_path.'files'))
302  {
303  $oFtp->ftp_quit();
304  return new BaseObject(-1,'msg_ftp_chmod_fail');
305  }
306 
307  if(!is_dir(_XE_PATH_.'files/config') && !$oFtp->ftp_mkdir($ftp_info->ftp_root_path.'files/config'))
308  {
309  $oFtp->ftp_quit();
310  return new BaseObject(-1,'msg_ftp_mkdir_fail');
311  }
312 
313  if(!$oFtp->ftp_site("CHMOD 777 ".$ftp_info->ftp_root_path.'files/config'))
314  {
315  $oFtp->ftp_quit();
316  return new BaseObject(-1,'msg_ftp_chmod_fail');
317  }
318 
319  $oFtp->ftp_quit();
320  }
321 
322  FileHandler::WriteFile(Context::getFTPConfigFile(), join(PHP_EOL, $buff));
323  }
324 
326  {
327  $ftp_info = Context::gets('ftp_user','ftp_password','ftp_port','sftp');
328  $ftp_info->ftp_port = (int)$ftp_info->ftp_port;
329  if(!$ftp_info->ftp_port) $ftp_info->ftp_port = 21;
330  if(!$ftp_info->sftp) $ftp_info->sftp = 'N';
331 
332  if(!$ftp_info->ftp_user || !$ftp_info->ftp_password) return new BaseObject(-1,'msg_safe_mode_ftp_needed');
333 
334  if($ftp_info->sftp == 'Y')
335  {
336  $connection = ssh2_connect('localhost', $ftp_info->ftp_port);
337  if(!ssh2_auth_password($connection, $ftp_info->ftp_user, $ftp_info->ftp_password))
338  {
339  return new BaseObject(-1,'msg_ftp_invalid_auth_info');
340  }
341  }
342  else
343  {
344  require_once(_XE_PATH_.'libs/ftp.class.php');
345  $oFtp = new ftp();
346  if(!$oFtp->ftp_connect('127.0.0.1', $ftp_info->ftp_port)) return new BaseObject(-1, sprintf(Context::getLang('msg_ftp_not_connected'), 'localhost'));
347 
348  if(!$oFtp->ftp_login($ftp_info->ftp_user, $ftp_info->ftp_password))
349  {
350  $oFtp->ftp_quit();
351  return new BaseObject(-1,'msg_ftp_invalid_auth_info');
352  }
353  $oFtp->ftp_quit();
354  }
355 
356  $this->setMessage('msg_ftp_connect_success');
357  }
358 
362  function checkInstallEnv()
363  {
364  // Check each item
365  $checklist = array();
366  // 0. check your version of php (5.2.4 or higher)
367  $checklist['php_version'] = true;
368  if(version_compare(PHP_VERSION, __XE_MIN_PHP_VERSION__, '<'))
369  {
370  $checklist['php_version'] = false;
371  }
372 
373  if(version_compare(PHP_VERSION, __XE_RECOMMEND_PHP_VERSION__, '<'))
374  {
375  Context::set('phpversion_warning', true);
376  }
377 
378  // 1. Check permission
379  if(is_writable('./')||is_writable('./files')) $checklist['permission'] = true;
380  else $checklist['permission'] = false;
381  // 2. Check if xml_parser_create exists
382  if(function_exists('xml_parser_create')) $checklist['xml'] = true;
383  else $checklist['xml'] = false;
384  // 3. Check if ini_get (session.auto_start) == 1
385  if(ini_get('session.auto_start')!=1) $checklist['session'] = true;
386  else $checklist['session'] = false;
387  // 4. Check if iconv exists
388  if(function_exists('iconv')) $checklist['iconv'] = true;
389  else $checklist['iconv'] = false;
390  // 5. Check gd(imagecreatefromgif function)
391  if(function_exists('imagecreatefromgif')) $checklist['gd'] = true;
392  else $checklist['gd'] = false;
393  // 6. Check DB
394  if(DB::getEnableList()) $checklist['db'] = true;
395  else $checklist['db'] = false;
396 
397  if(!$checklist['php_version'] || !$checklist['permission'] || !$checklist['xml'] || !$checklist['session'] || !$checklist['db']) $install_enable = false;
398  else $install_enable = true;
399 
400  // Save the checked result to the Context
401  Context::set('checklist', $checklist);
402  Context::set('install_enable', $install_enable);
403  Context::set('phpversion', PHP_VERSION);
404 
405  return $install_enable;
406  }
407 
412  {
413  $vars = Context::getRequestVars();
414 
415  $license_agreement = ($vars->license_agreement == 'Y') ? true : false;
416 
417  if($license_agreement)
418  {
419  $currentTime = $_SERVER['REQUEST_TIME'];
420  FileHandler::writeFile($this->flagLicenseAgreement, $currentTime);
421  }
422  else
423  {
424  FileHandler::removeFile($this->flagLicenseAgreement);
425  return new BaseObject(-1, 'msg_must_accept_license_agreement');
426  }
427 
428  if(!in_array(Context::getRequestMethod(),array('XMLRPC','JSON')))
429  {
430  $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'act', 'dispInstallCheckEnv');
431  $this->setRedirectUrl($returnUrl);
432  }
433  }
434 
441  function checkRewriteUsable() {
442  $checkString = "isApproached";
443  $checkFilePath = 'files/config/tmpRewriteCheck.txt';
444 
445  FileHandler::writeFile(_XE_PATH_.$checkFilePath, trim($checkString));
446 
447  $scheme = ($_SERVER['HTTPS'] === 'on') ? 'https' : 'http';
448  $hostname = $_SERVER['SERVER_NAME'];
449  $port = $_SERVER['SERVER_PORT'];
450  $str_port = '';
451  if($port)
452  {
453  $str_port = ':' . $port;
454  }
455 
456  $tmpPath = $_SERVER['DOCUMENT_ROOT'];
457 
458  //if DIRECTORY_SEPARATOR is not /(IIS)
459  if(DIRECTORY_SEPARATOR !== '/')
460  {
461  //change to slash for compare
462  $tmpPath = str_replace(DIRECTORY_SEPARATOR, '/', $_SERVER['DOCUMENT_ROOT']);
463  }
464 
465  $query = "/JUST/CHECK/REWRITE/" . $checkFilePath;
466  $currentPath = str_replace($tmpPath, "", _XE_PATH_);
467  if($currentPath != "")
468  {
469  $query = $currentPath . $query;
470  }
471  $requestUrl = sprintf('%s://%s%s%s', $scheme, $hostname, $str_port, $query);
472  $requestConfig = array();
473  $requestConfig['ssl_verify_peer'] = false;
474  $buff = FileHandler::getRemoteResource($requestUrl, null, 3, 'GET', null, array(), array(), array(), $requestConfig);
475 
476  FileHandler::removeFile(_XE_PATH_.$checkFilePath);
477 
478  return (trim($buff) == $checkString);
479  }
480 
486  {
487  $directory_list = array(
488  './files/config',
489  './files/cache/queries',
490  './files/cache/js_filter_compiled',
491  './files/cache/template_compiled',
492  );
493 
494  foreach($directory_list as $dir)
495  {
496  FileHandler::makeDir($dir);
497  }
498  }
499 
506  {
507  $oModuleModel = getModel('module');
508  // Create a table ny finding schemas/*.xml file in each module
509  $module_list = FileHandler::readDir('./modules/', NULL, false, true);
510  foreach($module_list as $module_path)
511  {
512  // Get module name
513  $tmp_arr = explode('/',$module_path);
514  $module = $tmp_arr[count($tmp_arr)-1];
515 
516  $xml_info = $oModuleModel->getModuleInfoXml($module);
517  if(!$xml_info) continue;
518  $modules[$xml_info->category][] = $module;
519  }
520  // Install "module" module in advance
521  $this->installModule('module','./modules/module');
522  $oModule = getClass('module');
523  if($oModule->checkUpdate()) $oModule->moduleUpdate();
524  // Determine the order of module installation depending on category
525  $install_step = array('system','content','member');
526  // Install all the remaining modules
527  foreach($install_step as $category)
528  {
529  if(count($modules[$category]))
530  {
531  foreach($modules[$category] as $module)
532  {
533  if($module == 'module') continue;
534  $this->installModule($module, sprintf('./modules/%s', $module));
535 
536  $oModule = getClass($module);
537  if(is_object($oModule) && method_exists($oModule, 'checkUpdate'))
538  {
539  if($oModule->checkUpdate()) $oModule->moduleUpdate();
540  }
541  }
542  unset($modules[$category]);
543  }
544  }
545  // Install all the remaining modules
546  if(count($modules))
547  {
548  foreach($modules as $category => $module_list)
549  {
550  if(count($module_list))
551  {
552  foreach($module_list as $module)
553  {
554  if($module == 'module') continue;
555  $this->installModule($module, sprintf('./modules/%s', $module));
556 
557  $oModule = getClass($module);
558  if($oModule && method_exists($oModule, 'checkUpdate') && method_exists($oModule, 'moduleUpdate'))
559  {
560  if($oModule->checkUpdate()) $oModule->moduleUpdate();
561  }
562  }
563  }
564  }
565  }
566 
567  return new BaseObject();
568  }
569 
574  {
575  // create db instance
576  $oDB = &DB::getInstance();
577  // Create a table if the schema xml exists in the "schemas" directory of the module
578  $schema_dir = sprintf('%s/schemas/', $module_path);
579  $schema_files = FileHandler::readDir($schema_dir, NULL, false, true);
580 
581  $file_cnt = count($schema_files);
582  for($i=0;$i<$file_cnt;$i++)
583  {
584  $file = trim($schema_files[$i]);
585  if(!$file || substr($file,-4)!='.xml') continue;
586  $output = $oDB->createTableByXmlFile($file);
587  if($output === false)
588  throw new Exception('msg_create_table_failed');
589  }
590  // Create a table and module instance and then execute install() method
591  unset($oModule);
592  $oModule = getClass($module);
593  if(method_exists($oModule, 'moduleInstall')) $oModule->moduleInstall();
594  return new BaseObject();
595  }
596 
597  function _getDBConfigFileContents($db_info)
598  {
599  if(substr($db_info->master_db['db_table_prefix'], -1) != '_')
600  {
601  $db_info->master_db['db_table_prefix'] .= '_';
602  }
603 
604  foreach($db_info->slave_db as &$slave)
605  {
606  if(substr($slave['db_table_prefix'], -1) != '_')
607  {
608  $slave['db_table_prefix'] .= '_';
609  }
610  }
611 
612  $buff = array();
613  $buff[] = '<?php if(!defined("__XE__")) exit();';
614  $buff[] = '$db_info = (object)' . var_export(get_object_vars($db_info), TRUE) . ';';
615 
616  return implode(PHP_EOL, $buff);
617  }
618 
623  function makeDBConfigFile()
624  {
626 
627  $db_info = Context::getDBInfo();
628  if(!$db_info) return;
629 
630  $buff = $this->_getDBConfigFileContents($db_info);
631 
633 
634  if(@file_exists($db_tmp_config_file)) return true;
635  return false;
636  }
637 
642  function makeEtcConfigFile($config_info)
643  {
645 
646  $buff = '<?php if(!defined("__XE__")) exit();'."\n";
647  foreach($config_info as $key => $val)
648  {
649  $buff .= sprintf("\$db_info->%s = '%s';\n", $key, str_replace("'","\\'",$val));
650  }
651 
653 
654  if(@file_exists($etc_tmp_config_file)) return true;
655  return false;
656  }
657 
662  function makeConfigFile()
663  {
664  try {
665  $config_file = Context::getConfigFile();
666  //if(file_exists($config_file)) return;
667 
668  $db_info = Context::getDBInfo();
669  if(!$db_info) return;
670 
671  $buff = $this->_getDBConfigFileContents($db_info);
672 
673  FileHandler::writeFile($config_file, $buff);
674 
675  if(@file_exists($config_file))
676  {
677  FileHandler::removeFile($this->db_tmp_config_file);
678  FileHandler::removeFile($this->etc_tmp_config_file);
679  return true;
680  }
681  return false;
682  } catch (Exception $e) {
683  return false;
684  }
685  }
686 
687  function installByConfig($install_config_file)
688  {
689  include $install_config_file;
690  if(!is_array($auto_config)) return false;
691 
692  $auto_config['module'] = 'install';
693  $auto_config['act'] = 'procInstall';
694 
695  $fstr = "<%s><![CDATA[%s]]></%s>\r\n";
696  $fheader = "POST %s HTTP/1.1\r\nHost: %s\r\nContent-Type: application/xml\r\nContent-Length: %s\r\n\r\n%s\r\n";
697  $body = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n<methodCall>\r\n<params>\r\n";
698  foreach($auto_config as $k => $v)
699  {
700  if(!in_array($k,array('host','port','path'))) $body .= sprintf($fstr,$k,$v,$k);
701  }
702  $body .= "</params>\r\n</methodCall>";
703 
704  $header = sprintf($fheader,$auto_config['path'],$auto_config['host'],strlen($body),$body);
705  $fp = @fsockopen($auto_config['host'], $auto_config['port'], $errno, $errstr, 5);
706 
707  if($fp)
708  {
709  fputs($fp, $header);
710  while(!feof($fp))
711  {
712  $line = trim(fgets($fp, 4096));
713  if(strncmp('<error>', $line, 7) === 0)
714  {
715  fclose($fp);
716  return false;
717  }
718  }
719  fclose($fp);
720  }
721  return true;
722 
723  }
724 }
725 /* End of file install.controller.php */
726 /* Location: ./modules/install/install.controller.php */
$oModuleModel
Definition: ko.install.php:236
setMessage($message= 'success', $type=NULL)
init()
Initialization.
checkInstallEnv()
Result returned after checking the installation environment.
_makeDbInfoByInstallConfig()
Make DB Information by Install Config.
procPostgresqlDBSetting()
postgresql db setting wrapper, becase Server Side Validator... Server Side Validatro can use only one...
removeFile($filename)
loadLang($path)
_procDBSetting()
division install step... DB Config temp file create
$output
Definition: ko.install.php:193
makeDefaultDirectory()
Create files and subdirectories Local evironment setting before installation by using DB information...
set($key, $val, $set_to_get_vars=0)
getNotEncodedUrl()
Definition: func.inc.php:316
installModule($module, $module_path)
Install an each module.
writeFile($filename, $buff, $mode="w")
installByConfig($install_config_file)
const __XE_RECOMMEND_PHP_VERSION__
Definition: config.inc.php:39
makeConfigFile()
Create config file Create the config file when all settings are completed.
procInstall()
Install with received information.
$xml_info
an object containing the module description extracted from XML file
$module_path
a path to directory where module source code resides
getRemoteResource($url, $body=null, $timeout=3, $method= 'GET', $content_type=null, $headers=array(), $cookies=array(), $post_data=array(), $request_config=array())
_getDBConfigFileContents($db_info)
setLangType($lang_type= 'ko')
procInstallLicenseAggrement()
License agreement.
installDownloadedModule()
Install all the modules.
procConfigSetting()
division install step... rewrite, time_zone Config temp file create
procCubridDBSetting()
cubrid db setting wrapper, becase Server Side Validator... Server Side Validatro can use only one pro...
setRedirectUrl($url= './', $output=NULL)
install module of the Controller class
static getEnableList()
Definition: DB.class.php:211
install module of the high class
getInstance($db_type=NULL)
Definition: DB.class.php:142
getRealPath($source)
makeDir($path_string)
makeEtcConfigFile($config_info)
Create etc config file Create the config file when all settings are completed.
getLang($code)
const _XE_PATH_
Definition: config.inc.php:49
procSqliteDBSetting()
sqlite db setting wrapper, becase Server Side Validator... Server Side Validatro can use only one pro...
getRequestUri($ssl_mode=FOLLOW_REQUEST_SSL, $domain=null)
const __XE_MIN_PHP_VERSION__
Definition: config.inc.php:38
getModel($module_name)
Definition: func.inc.php:145
makeDBConfigFile()
Create DB temp config file Create the config file when all settings are completed.
setDBInfo($db_info)
procFirebirdDBSetting()
firebird db setting wrapper, becase Server Side Validator... Server Side Validatro can use only one p...
procMssqlDBSetting()
mssql db setting wrapper, becase Server Side Validator... Server Side Validatro can use only one proc...
getAdminController($module_name)
Definition: func.inc.php:101
readDir($path, $filter= '', $to_lower=FALSE, $concat_prefix=FALSE)
$module
Class name of Xe Module that is identified by mid.
procInstallFTP()
Set FTP Information.
procMysqlDBSetting()
mysql db setting wrapper, becase Server Side Validator... Server Side Validatro can use only one proc...
getClass($module_name)
Definition: func.inc.php:189