/** * Get or set system configuration. * * @param string $key * @param string $value (optional) * @return mixed */ function config($key, $value = null) { if ($value === null) { return Rhymix\Framework\Config::get($key); } else { Rhymix\Framework\Config::set($key, $value); } }
/** * Update FTP configuration. */ function procAdminUpdateFTPInfo() { $vars = Context::getRequestVars(); $vars->ftp_path = str_replace('\\', '/', rtrim(trim($vars->ftp_path), '/\\')) . '/'; if (strlen($vars->ftp_pass) === 0) { $vars->ftp_pass = Rhymix\Framework\Config::get('ftp.pass'); } // Test FTP connection. if ($vars->ftp_sftp !== 'Y') { if (!($conn = @ftp_connect($vars->ftp_host, $vars->ftp_port, 3))) { return new Object(-1, 'msg_ftp_not_connected'); } if (!@ftp_login($conn, $vars->ftp_user, $vars->ftp_pass)) { return new Object(-1, 'msg_ftp_invalid_auth_info'); } if (!@ftp_pasv($conn, $vars->ftp_pasv === 'Y')) { return new Object(-1, 'msg_ftp_cannot_set_passive_mode'); } if (!@ftp_chdir($conn, $vars->ftp_path)) { return new Object(-1, 'msg_ftp_invalid_path'); } ftp_close($conn); } else { if (!function_exists('ssh2_connect')) { return new Object(-1, 'disable_sftp_support'); } if (!($conn = ssh2_connect($vars->ftp_host, $vars->ftp_port))) { return new Object(-1, 'msg_ftp_not_connected'); } if (!@ssh2_auth_password($conn, $vars->ftp_user, $vars->ftp_pass)) { return new Object(-1, 'msg_ftp_invalid_auth_info'); } if (!@($sftp = ssh2_sftp($conn))) { return new Object(-1, 'msg_ftp_sftp_error'); } if (!@ssh2_sftp_stat($sftp, $vars->ftp_path . 'common/defaults/config.php')) { return new Object(-1, 'msg_ftp_invalid_path'); } unset($sftp, $conn); } // Save settings. Rhymix\Framework\Config::set('ftp.host', $vars->ftp_host); Rhymix\Framework\Config::set('ftp.port', $vars->ftp_port); Rhymix\Framework\Config::set('ftp.user', $vars->ftp_user); Rhymix\Framework\Config::set('ftp.pass', $vars->ftp_pass); Rhymix\Framework\Config::set('ftp.path', $vars->ftp_path); Rhymix\Framework\Config::set('ftp.pasv', $vars->ftp_pasv === 'Y'); Rhymix\Framework\Config::set('ftp.sftp', $vars->ftp_sftp === 'Y'); Rhymix\Framework\Config::save(); $this->setMessage('success_updated'); $this->setRedirectUrl(Context::get('success_return_url') ?: getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdminConfigFtp')); }
/** * Convert YYYYMMDDHHIISS format to Unix timestamp. * This function assumes the internal timezone. * * @param string $str Time in YYYYMMDDHHIISS format * @return int */ function ztime($str) { if (!$str) { return null; } $year = (int) substr($str, 0, 4); $month = (int) substr($str, 4, 2) ?: 1; $day = (int) substr($str, 6, 2) ?: 1; if (strlen($str) >= 8) { $hour = (int) substr($str, 8, 2); $min = (int) substr($str, 10, 2); $sec = (int) substr($str, 12, 2); } else { $hour = $min = $sec = 0; } $timestamp = gmmktime($hour, $min, $sec, $month, $day, $year); $offset = Rhymix\Framework\Config::get('locale.internal_timezone') ?: date('Z', $timestamp); return $timestamp - $offset; }
/** * Display FTP Configuration(settings) page * @return void */ function dispAdminConfigFtp() { Context::set('ftp_info', Rhymix\Framework\Config::get('ftp')); Context::set('sftp_support', function_exists('ssh2_sftp')); $this->setTemplateFile('config_ftp'); }
/** * Find selected languages to serve in the site * * @return array Selected languages */ public static function loadLangSelected() { static $lang_selected = array(); if (!count($lang_selected)) { $supported = Rhymix\Framework\Lang::getSupportedList(); $selected = Rhymix\Framework\Config::get('locale.enabled_lang'); if ($selected) { foreach ($selected as $lang) { $lang_selected[$lang] = $supported[$lang]['name']; } } else { $lang_selected = array_map(function ($val) { return $val['name']; }, $supported); } } return $lang_selected; }
/** * Save the exception configuration. */ public function procAdvanced_MailerAdminInsertExceptions() { // Get the current configuration. $config = $this->getConfig(); $sending_methods = Rhymix\Framework\Mail::getSupportedDrivers(); // Get and validate the list of exceptions. $exceptions = array(); for ($i = 1; $i <= 3; $i++) { $method = strval(Context::get('exception_' . $i . '_method')); $domains = trim(Context::get('exception_' . $i . '_domains')); if ($method !== '' && $domains !== '') { if ($method !== 'default' && !isset($sending_methods[$method])) { return new Object(-1, 'msg_advanced_mailer_sending_method_is_invalid'); } if ($method !== 'default') { foreach ($this->sending_methods[$method]['required'] as $conf_name) { if (!Rhymix\Framework\Config::get("mail.{$method}.{$conf_name}")) { return new Object(-1, sprintf(Context::getLang('msg_advanced_mailer_sending_method_is_not_configured'), Context::getLang('cmd_advanced_mailer_sending_method_' . $method))); } } } $exceptions[$i]['method'] = $method; $exceptions[$i]['domains'] = array(); $domains = array_map('trim', preg_split('/[,\\n]/', $domains, null, PREG_SPLIT_NO_EMPTY)); foreach ($domains as $domain) { if (strpos($domain, 'xn--') !== false) { $domain = Rhymix\Framework\URL::decodeIdna($domain); } $exceptions[$i]['domains'][] = $domain; } } } // Save the new configuration. $config->exceptions = $exceptions; $output = getController('module')->insertModuleConfig('advanced_mailer', $config); if ($output->toBool()) { $this->setMessage('success_registed'); } else { return $output; } if (Context::get('success_return_url')) { $this->setRedirectUrl(Context::get('success_return_url')); } else { $this->setRedirectUrl(getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdvanced_mailerAdminExceptions')); } }
} $filename .= isset($matches[3]) && $matches[3] ? '.' . strtolower($matches[3]) : '.class'; $filename .= '.php'; } } if ($filename && file_exists($filename)) { include $filename; } }); /** * Also include the Composer autoloader. */ require_once RX_BASEDIR . 'vendor/autoload.php'; /** * Load system configuration. */ Rhymix\Framework\Config::init(); /** * Install the debugger. */ Rhymix\Framework\Debug::registerErrorHandlers(error_reporting()); /** * Set the internal timezone. */ $internal_timezone = Rhymix\Framework\DateTime::getTimezoneNameByOffset(config('locale.internal_timezone')); date_default_timezone_set($internal_timezone); /** * Initialize the cache handler. */ Rhymix\Framework\Cache::init(Rhymix\Framework\Config::get('cache'));