public function get() { $oFile = Phpfox::getLib('file'); $bSlaveEnabled = Phpfox::getParam(array('db', 'slave')); $sDriver = Phpfox::getParam(array('db', 'driver')); $aStats = array ( Phpfox::getPhrase('admincp.phpfox_version') => PhpFox::getVersion() . '<i>(build ' . Phpfox::getBuild() . ')</i>', Phpfox::getPhrase('admincp.php_version') => '<a href="' . Phpfox::getLib('url')->makeUrl('admincp.core.phpinfo') . '">' . PHP_VERSION . '</a>', Phpfox::getPhrase('admincp.php_sapi') => php_sapi_name(), Phpfox::getPhrase('admincp.php_safe_mode') => (PHPFOX_SAFE_MODE ? Phpfox::getPhrase('admincp.true') : Phpfox::getPhrase('admincp.false')), Phpfox::getPhrase('admincp.php_open_basedir') => (PHPFOX_OPEN_BASE_DIR ? Phpfox::getPhrase('admincp.true') : Phpfox::getPhrase('admincp.false')), Phpfox::getPhrase('admincp.php_disabled_functions') => (@ini_get('disable_functions') ? str_replace( ",", ", ", @ini_get('disable_functions') ) : Phpfox::getPhrase('admincp.none')), Phpfox::getPhrase('admincp.php_loaded_extensions') => implode(' ', get_loaded_extensions()), Phpfox::getPhrase('admincp.operating_system') => PHP_OS, Phpfox::getPhrase('admincp.server_time_stamp') => date('F j, Y, g:i a', PHPFOX_TIME) . ' (GMT)', Phpfox::getPhrase('admincp.gzip') => (Phpfox::getParam('core.use_gzip') ? Phpfox::getPhrase('admincp.enabled') : Phpfox::getPhrase('admincp.disabled')), Phpfox::getPhrase('admincp.sql_driver_version') => ($sDriver == 'DATABASE_DRIVER' ? Phpfox::getPhrase('admincp.n_a') : Phpfox::getLib('database')->getServerInfo()), Phpfox::getPhrase('admincp.sql_slave_enabled') => ($bSlaveEnabled ? Phpfox::getPhrase('admincp.yes') : Phpfox::getPhrase('admincp.no')), Phpfox::getPhrase('admincp.sql_total_slaves') => ($bSlaveEnabled ? count(Phpfox::getParam(array('db', 'slave_servers'))) : Phpfox::getPhrase('admincp.n_a')), Phpfox::getPhrase('admincp.sql_slave_server') => ($bSlaveEnabled ? Phpfox::getLib('database')->sSlaveServer : Phpfox::getPhrase('admincp.n_a')), Phpfox::getPhrase('admincp.memory_limit') => $oFile->filesize($this->_getUsableMemory()) . ' (' . @ini_get('memory_limit') . ')', Phpfox::getPhrase('admincp.load_balancing_enabled') => (Phpfox::getParam(array('balancer', 'enabled')) ? Phpfox::getPhrase('admincp.yes') : Phpfox::getPhrase('admincp.no')) ); if(strpos(strtolower(PHP_OS), 'win') === 0 || PHPFOX_SAFE_MODE || PHPFOX_OPEN_BASE_DIR) { } else { $sMemory = @shell_exec("free -m"); $aMemory = explode("\n", str_replace( "\r", "", $sMemory)); if (is_array($aMemory)) { $aMemory = array_slice($aMemory, 1, 1); if (isset($aMemory[0])) { $aMemory = preg_split("#\s+#", $aMemory[0]); $aStats[Phpfox::getPhrase('admincp.total_server_memory')] = (isset($aMemory[1]) ? $aMemory[1] . ' MB' : '--'); $aStats[Phpfox::getPhrase('admincp.available_server_memory')] = (isset($aMemory[3]) ? $aMemory[3] . ' MB' : '--'); } } } if (!PHPFOX_OPEN_BASE_DIR && ($sLoad = Phpfox::getService('core.load')->get()) !== null) { $aStats[Phpfox::getPhrase('admincp.current_server_load')] = $sLoad; } return $aStats; }
public function displayCaptcha($sText) { Phpfox::getParam('captcha.captcha_use_font') && function_exists('imagettftext') ? $this->_writeFromFont($sText) : $this->_writeFromString($sText); ob_clean(); header("X-Content-Encoded-By: phpFox " . PhpFox::getVersion()); header("Pragma: no-cache"); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Content-Type: image/jpeg'); imagejpeg($this->_hImg); imagedestroy($this->_hImg); }
/** * Controller */ public function process() { Phpfox::isUser(true); Phpfox::getUserParam('admincp.has_admin_access', true); if (Phpfox::getParam('core.admincp_http_auth')) { $aAuthUsers = Phpfox::getParam('core.admincp_http_auth_users'); if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW']) && isset($aAuthUsers[Phpfox::getUserId()]) && ($_SERVER['PHP_AUTH_USER'] == $aAuthUsers[Phpfox::getUserId()]['name'] && $_SERVER['PHP_AUTH_PW'] == $aAuthUsers[Phpfox::getUserId()]['password'])) { } else { header("WWW-Authenticate: Basic realm=\"AdminCP\""); header("HTTP/1.0 401 Unauthorized"); exit("NO DICE!"); } } if (Phpfox::getParam('admincp.admin_cp') != $this->request()->get('req1')) { return Phpfox_Module::instance()->setController('error.404'); } if (!Phpfox::getService('user.auth')->isActiveAdminSession()) { return Phpfox_Module::instance()->setController('admincp.login'); } if ($this->request()->get('upgraded')) { Phpfox::getLib('cache')->remove(); Phpfox::getLib('template.cache')->remove(); $this->url()->send('admincp'); } $this->_sModule = ($sReq2 = $this->request()->get('req2')) ? strtolower($sReq2) : Phpfox::getParam('admincp.admin_cp'); if ($this->_sModule == 'logout') { $this->_sController = $this->_sModule; $this->_sModule = 'admincp'; } else { $this->_sController = ($sReq3 = $this->request()->get('req3')) ? $sReq3 : $this->_sController; } if ($sReq4 = $this->request()->get('req4')) { $sReq4 = str_replace(' ', '', strtolower(str_replace('-', ' ', $sReq4))); } $sReq5 = $this->request()->get('req5'); $bPass = false; if (file_exists(PHPFOX_DIR_MODULE . $this->_sModule . PHPFOX_DS . PHPFOX_DIR_MODULE_COMPONENT . PHPFOX_DS . 'controller' . PHPFOX_DS . 'admincp' . PHPFOX_DS . $this->_sController . '.class.php')) { $this->_sController = 'admincp.' . $this->_sController; $bPass = true; } if (!$bPass && $sReq5 && file_exists(PHPFOX_DIR_MODULE . $this->_sModule . PHPFOX_DS . PHPFOX_DIR_MODULE_COMPONENT . PHPFOX_DS . 'controller' . PHPFOX_DS . 'admincp' . PHPFOX_DS . $this->_sController . PHPFOX_DS . $sReq4 . PHPFOX_DS . $sReq5 . '.class.php')) { $this->_sController = 'admincp.' . $this->_sController . '.' . $sReq4 . '.' . $sReq5; $bPass = true; } if (!$bPass && $sReq4 && file_exists(PHPFOX_DIR_MODULE . $this->_sModule . PHPFOX_DS . PHPFOX_DIR_MODULE_COMPONENT . PHPFOX_DS . 'controller' . PHPFOX_DS . 'admincp' . PHPFOX_DS . $this->_sController . PHPFOX_DS . $sReq4 . '.class.php')) { $this->_sController = 'admincp.' . $this->_sController . '.' . $sReq4; $bPass = true; } if (!$bPass && file_exists(PHPFOX_DIR_MODULE . $this->_sModule . PHPFOX_DS . PHPFOX_DIR_MODULE_COMPONENT . PHPFOX_DS . 'controller' . PHPFOX_DS . 'admincp' . PHPFOX_DS . $this->_sController . PHPFOX_DS . $this->_sController . '.class.php')) { $this->_sController = 'admincp.' . $this->_sController . '.' . $this->_sController; $bPass = true; } if (!$bPass && $sReq4 && file_exists(PHPFOX_DIR_MODULE . $this->_sModule . PHPFOX_DS . PHPFOX_DIR_MODULE_COMPONENT . PHPFOX_DS . 'controller' . PHPFOX_DS . 'admincp' . PHPFOX_DS . $this->_sController . PHPFOX_DS . $sReq4 . '.class.php')) { $this->_sController = 'admincp.' . $this->_sController . '.' . $sReq4; $bPass = true; } if (!$bPass && $sReq4 && file_exists(PHPFOX_DIR_MODULE . $this->_sModule . PHPFOX_DS . PHPFOX_DIR_MODULE_COMPONENT . PHPFOX_DS . 'controller' . PHPFOX_DS . 'admincp' . PHPFOX_DS . $this->_sController . PHPFOX_DS . $sReq4 . PHPFOX_DS . 'index.class.php')) { $this->_sController = 'admincp.' . $this->_sController . '.' . $sReq4 . '.index'; $bPass = true; } if (!$bPass && file_exists(PHPFOX_DIR_MODULE . $this->_sModule . PHPFOX_DS . PHPFOX_DIR_MODULE_COMPONENT . PHPFOX_DS . 'controller' . PHPFOX_DS . 'admincp' . PHPFOX_DS . $this->_sController . PHPFOX_DS . 'index.class.php')) { $this->_sController = 'admincp.' . $this->_sController . '.index'; $bPass = true; } if (!$bPass && file_exists(PHPFOX_DIR_MODULE . 'admincp' . PHPFOX_DS . PHPFOX_DIR_MODULE_COMPONENT . PHPFOX_DS . 'controller' . PHPFOX_DS . $this->_sModule . PHPFOX_DS . $this->_sController . '.class.php')) { $this->_sController = $this->_sModule . '.' . $this->_sController; $this->_sModule = 'admincp'; $bPass = true; } if (!$bPass && $sReq4 && file_exists(PHPFOX_DIR_MODULE . 'admincp' . PHPFOX_DS . PHPFOX_DIR_MODULE_COMPONENT . PHPFOX_DS . 'controller' . PHPFOX_DS . $this->_sModule . PHPFOX_DS . $this->_sController . PHPFOX_DS . $sReq4 . '.class.php')) { $this->_sController = $this->_sModule . '.' . $this->_sController . '.' . $sReq4; $this->_sModule = 'admincp'; $bPass = true; } if (!$bPass && Phpfox::getParam('admincp.admin_cp') != 'admincp' && file_exists(PHPFOX_DIR_MODULE . $this->_sModule . PHPFOX_DS . PHPFOX_DIR_MODULE_COMPONENT . PHPFOX_DS . 'controller' . PHPFOX_DS . $this->_sController . '.class.php')) { $bPass = true; } $bForceIndex = false; if (!$bPass && Phpfox::isModule($this->request()->segment('req2'))) { $this->_sModule = 'admincp'; $this->_sController = 'app.index'; $bForceIndex = true; $bPass = true; } // Get the menu we will used to display all the "Modules" // $aModules = Phpfox::getService('admincp.module')->getAdminMenu(); // Create AdminCP menu $aMenus = array('admincp.users' => array('admincp.browse_members' => 'admincp.user.browse', 'admincp.user_group_manager' => array('admincp.manage_user_groups' => 'admincp.user.group', 'admincp.create_user_group' => 'admincp.user.group.add', 'admincp.add_user_group_setting' => 'admincp.user.group.setting'), 'admincp.user_cancellation_options' => array('admincp.user_cancellation_options_add' => 'admincp.user.cancellations.add', 'admincp.user_cancellation_options_manage' => 'admincp.user.cancellations.manage', 'admincp.user_cancellations_feedback' => 'admincp.user.cancellations.feedback'), 'user.promotions' => array('user.manage_promotions' => 'admincp.user.promotion', 'user.add_promotion' => 'admincp.user.promotion.add'), 'admincp.inactive_members' => 'admincp.user.inactivereminder')); $aMenus = ['<i class="fa fa-dashboard"></i>Dashboard' => 'admincp', '<i class="fa fa-cubes"></i>Apps' => 'admincp.apps', '<i class="fa fa-paint-brush"></i>Themes' => 'admincp.theme', 'Members', '<i class="fa fa-search"></i>Search' => 'admincp.user.browse', '<i class="fa fa-users"></i>User Groups' => 'admincp.user.group', '<i class="fa fa-diamond"></i>Promotions' => 'admincp.user.promotion', '<i class="fa fa-th-list"></i>Custom Fields' => 'admincp.custom', 'Site', '<i class="fa fa-file-text-o"></i>Pages' => 'admincp.page', '<i class="fa fa-bars"></i>Menus' => 'admincp.menu', '<i class="fa fa-th"></i>Blocks' => 'admincp.block', '<i class="fa fa-language"></i>Phrases' => 'admincp.language.phrase', 'Tools', 'Settings' => ['Countries' => 'admincp.core.country', 'Currencies' => 'admincp.core.currency', 'Attachments' => 'admincp.attachment', 'Payment Gateways' => 'admincp.api.gateway', 'Language' => 'admincp.language', 'Short URLs' => 'admincp.setting.url', 'User', 'Settings' => $this->url()->makeUrl('admincp.setting.edit', ['module-id' => 'user']), 'Registration' => $this->url()->makeUrl('admincp.setting.edit', ['group-id' => 'registration']), 'Relationship Statues' => 'admincp.custom.relationships', 'Cancellation Options' => 'admincp.user.cancellations.manage', 'Subscription Packages' => 'admincp.subscribe', 'E-Gifts' => 'admincp.egift.categories', 'Anti-SPAM Questions' => 'admincp.user.spam'], '<i class="fa fa-th-large"></i>Modules' => 'admincp.product', '<i class="fa fa-bullhorn"></i>Announcements' => 'admincp.announcement', '<i class="fa fa-newspaper-o"></i>Newsletter' => 'admincp.newsletter.manage', '<i class="fa fa-info"></i>Status' => array(Phpfox::getPhrase('core.site_statistics') => 'admincp.core.stat', Phpfox::getPhrase('core.admincp_menu_system_overview') => 'admincp.core.system', Phpfox::getPhrase('admincp.inactive_members') => 'admincp.user.inactivereminder'), '<i class="fa fa-server"></i>Maintenance' => array(Phpfox::getPhrase('admincp.menu_cache_manager') => 'admincp.maintain.cache', Phpfox::getPhrase('admincp.admincp_menu_reparser') => 'admincp.maintain.reparser', Phpfox::getPhrase('admincp.remove_duplicates') => 'admincp.maintain.duplicate', Phpfox::getPhrase('admincp.counters') => 'admincp.maintain.counter', Phpfox::getPhrase('admincp.check_modified_files') => 'admincp.checksum.modified', Phpfox::getPhrase('admincp.check_unknown_files') => 'admincp.checksum.unknown', Phpfox::getPhrase('admincp.find_missing_settings') => 'admincp.setting.missing', 'Toggle Modules' => $this->url()->makeUrl('admincp.module', ['view' => 'all'])), '<i class="fa fa-ban"></i>Ban Filters' => array(Phpfox::getPhrase('ban.ban_filter_username') => 'admincp.ban.username', Phpfox::getPhrase('ban.ban_filter_email') => 'admincp.ban.email', Phpfox::getPhrase('ban.ban_filter_display_name') => 'admincp.ban.display', Phpfox::getPhrase('ban.ban_filter_ip') => 'admincp.ban.ip', Phpfox::getPhrase('ban.ban_filter_word') => 'admincp.ban.word')]; /* $aThemes = []; foreach (Theme_Service_Theme::instance()->get() as $aTheme) { $aThemes[$aTheme['name']] = $this->url()->makeUrl('admincp.theme.manage', ['id' => $aTheme['theme_id']]); } */ // d($aThemes); exit; list($aGroups, $aModules, $aProductGroups) = Phpfox::getService('admincp.setting.group')->get(); $aCache = $aGroups; $aGroups = []; // $aGroups[] = 'Site & Server'; foreach ($aCache as $key => $value) { $n = $key; switch ($value['group_id']) { case 'cookie': $n = 'Browser Cookies'; break; case 'site_offline_online': $n = 'Toggle Site'; break; case 'general': $n = 'Site Settings'; break; case 'mail': $n = 'Mail Server'; break; case 'spam': $n = 'Spam Assistance'; break; case 'registration': continue 2; break; } // unset($aGroups[$key]); $aGroups[$n] = $value; } ksort($aGroups); // d($aGroups); exit; $aApps = []; /* $aProducts = Admincp_Service_Product_Product::instance()->getNewProductsForInstall(); if (count($aProducts)) { foreach ($aProducts as $aProduct) { $aApps[$aProduct['title']] = [ 'highlight' => true, 'message' => 'Install', 'url' => $this->url()->makeUrl('admincp.product.install', ['id' => $aProduct['product_id']]) ]; } } */ /* $aSkip = ['apps', 'user', 'track', 'tinymce', 'theme', 'tag', 'subscribe', 'share', 'search', 'rss', 'request', 'report', 'rate', 'profile', 'privacy', 'page', 'notification', 'mobile', 'log', 'link', 'like', 'language', 'input', 'admincp', 'api', 'apps', 'attachment', 'ban', 'comment', 'contact', 'core', 'custom', 'emoticon', 'error', 'favorite', 'help', 'im']; foreach (Phpfox_Module::instance()->getModules() as $sModule) { if (in_array($sModule, $aSkip)) { continue; } // $aApps[$sModule] = $this->url()->makeUrl('admincp.app', ['id' => $sModule]); $aApps[$sModule] = $this->url()->makeUrl('admincp.' . $sModule); } */ $aSettings = []; foreach ($aGroups as $sGroupName => $aGroupValues) { $aSettings[$sGroupName] = $this->url()->makeUrl('admincp.setting.edit', ['group-id' => $aGroupValues['group_id']]); // $aMenus['Settings'][$sGroupName] = '#'; } // d($aSettings); exit; $aCache = $aMenus; $aMenus = []; foreach ($aCache as $sKey => $mValue) { /* if ($mValue == '#modules') { $aMenus[$sKey] = $aApps; continue; } else if ($mValue == '#themes') { $aMenus[$sKey] = $aThemes; continue; } */ /* if (is_string($mValue) && $mValue === 'Tools') { // d($mValue); $aMenus[$sKey] = 'Modules'; foreach ((new Core\App())->all('__core') as $Core) { $icon = ''; $name = $Core->name; $id = str_replace('__module_', '', $Core->id); switch ($id) { case 'ad': $icon = 'money'; break; case 'blog': $icon = 'file'; break; } if (!empty($icon)) { $icon = '<i class="fa fa-' . $icon . '"></i>'; } $aMenus[$icon . $Core->name] = $this->url()->makeUrl('admincp.app', ['id' => $Core->id]); } $sKey++; } */ if ($sKey === 'Settings') { $sKey = '<i class="fa fa-cog"></i>Settings'; /* $aMerge = []; foreach ($mValue as $sSubKey => $sSubValue) { if (strpos($sSubValue, '.')) { $aMerge[Phpfox::getPhrase($sSubKey)] = $sSubValue; } else { $aMerge[] = $sSubValue; } } $mValue = array_merge($aSettings, $aMerge); */ $moduleSettings = []; foreach ((new Core\App())->all('__core') as $Core) { $name = $Core->name; $id = str_replace('__module_', '', $Core->id); $url = $this->url()->makeUrl('admincp.app', ['id' => $Core->id]); $goSettings = false; $goIndex = false; switch ($id) { case 'ad': $name = 'Ad Campaigns'; break; case 'blog': $name = 'Blog Categories & Settings'; break; case 'contact': $name = '"Contact Us" Form'; break; /* case 'user': $goSettings = true; $name = 'User'; break; */ /* case 'user': $goSettings = true; $name = 'User'; break; */ case 'feed': $goSettings = true; $this->template()->setSectionTitle('Activity Feed'); break; case 'forum': $name = 'Forums'; $goIndex = true; break; case 'mail': $name = 'Private Messages'; break; case 'event': case 'photo': case 'marketplace': case 'music': case 'pages': $goIndex = true; break; } if ($goSettings) { $url = $this->url()->makeUrl('admincp.setting.edit', ['module-id' => $id]); } else { if ($goIndex) { $url = $this->url()->makeUrl('admincp.' . $id); } } $moduleSettings[$name] = $url; } $mValue = array_merge($aSettings, $mValue, ['Modules'], $moduleSettings); } $aMenus[$sKey] = $mValue; if (is_string($mValue) && $mValue == 'admincp.theme' && PHPFOX_IS_TECHIE) { $aMenus['<i class="fa fa-sheqel"></i>Techie'] = ['Products' => 'admincp.product', 'Modules' => 'admincp.module', 'Plugins' => 'admincp.plugin', 'Components' => 'admincp.component']; } } ($sPlugin = Phpfox_Plugin::get('admincp.component_controller_index_process_menu')) ? eval($sPlugin) : false; $aUser = Phpfox::getUserBy(); // $aUser['full_name'] = substr($aUser['full_name'], 0, Phpfox::getParam('user.maximum_length_for_full_name')); $sSectionTitle = ''; $app = $this->request()->get('req2'); $bForceIndex = true; if ($app == 'app') { $app = str_replace('__module_', '', $this->request()->get('id')); $bForceIndex = false; } $is_settings = false; if ($this->url()->getUrl() == 'admincp/setting/edit') { $app = $this->request()->get('module-id'); $is_settings = true; } $aSkipModules = ['api', 'comment', 'feed', 'apps', 'announcement', 'ban', 'facebook', 'user', 'core', 'custom', 'admincp', 'page', 'language', 'attachment', 'theme']; $searchSettings = Admincp_Service_Setting_Setting::instance()->getForSearch($aSkipModules); $this->template()->setHeader('<script>var admincpSettings = ' . json_encode($searchSettings) . ';</script>'); if ($is_settings && in_array($app, $aSkipModules) && $app != 'user' && $app != 'feed') { $this->url()->send('admincp'); } if ($app && Phpfox::isModule($app) && !in_array($app, $aSkipModules)) { $app = Phpfox_Module::instance()->get($app); $name = Phpfox_Locale::instance()->translate($app['module_id'], 'module'); $sSectionTitle = $name; $menu = unserialize($app['menu']); $menus = []; $current = $this->url()->getUrl(); $infoActive = false; if ($this->request()->get('req2') == 'app') { $infoActive = true; } if (Admincp_Service_Setting_Setting::instance()->moduleHasSettings($app['module_id'])) { $menus['Settings'] = ['is_active' => $is_settings, 'url' => $this->url()->makeUrl('admincp.setting.edit', ['module-id' => $app['module_id']])]; } if (is_array($menu) && count($menu)) { foreach ($menu as $key => $value) { $is_active = false; $url = 'admincp.' . implode('.', $value['url']); if ($current == str_replace('.', '/', $url)) { $is_active = true; if ($infoActive) { $menus['Info']['is_active'] = false; } } $menus[Phpfox::getPhrase($key)] = ['url' => $url, 'is_active' => $is_active]; } } $this->template()->assign(['aSectionAppMenus' => $menus, 'ActiveApp' => (new Core\App())->get('__module_' . $app['module_id'])]); } $this->template()->assign(array('sSectionTitle' => $sSectionTitle, 'aModulesMenu' => $aModules, 'aAdminMenus' => $aMenus, 'aUserDetails' => $aUser, 'sPhpfoxVersion' => PhpFox::getVersion(), 'sSiteTitle' => Phpfox::getParam('core.site_title')))->setHeader(array('menu.css' => 'style_css', 'menu.js' => 'style_script', 'admin.js' => 'static_script', 'jquery/plugin/jquery.mosaicflow.min.js' => 'static_script'))->setTitle(Phpfox::getPhrase('admincp.admin_cp')); if (in_array($app, ['plugin', 'module', 'component'])) { $this->template()->setSectionTitle('Techie: ' . ucwords($app)); $this->template()->setActionMenu(['New ' . ucwords($app) => ['url' => $this->url()->makeUrl('admincp.' . $app . '.add'), 'class' => 'popup']]); } if ($bPass) { Phpfox_Module::instance()->setController($this->_sModule . '.' . $this->_sController); $sMenuController = str_replace(array('.index', '.phrase'), '', 'admincp.' . ($this->_sModule != 'admincp' ? $this->_sModule . '.' . str_replace('admincp.', '', $this->_sController) : $this->_sController)); $aCachedSubMenus = array(); $sActiveSideBar = ''; if ($sMenuController == 'admincp.setting.edit') { $sMenuController = 'admincp.setting'; } if ($this->_getMenuName() !== null) { $sMenuController = $this->_getMenuName(); } /* foreach ($aMenus as $sKey => $aSubMenus) { if (is_array($aSubMenus)) { foreach ($aSubMenus as $sSubkey => $mSubMenus) { if (is_array($mSubMenus)) { foreach ($mSubMenus as $sSubkey2 => $mSubMenus2) { if ($sMenuController == $mSubMenus2) { $sActiveSideBar = $sSubkey; foreach ($aSubMenus as $sSubkey3 => $mSubMenus3) { if (is_array($mSubMenus3)) { $aCachedSubMenus[$sSubkey3] = $mSubMenus3; } else { $aCachedSubMenus[$sKey][$sSubkey3] = $mSubMenus3; } } } } } else { if ($sMenuController == $mSubMenus) { $sActiveSideBar = $sKey; foreach ($aSubMenus as $sSubkey3 => $mSubMenus3) { if (is_array($mSubMenus3)) { $aCachedSubMenus[$sSubkey3] = $mSubMenus3; } else { $aCachedSubMenus[$sKey][$sSubkey3] = $mSubMenus3; } } } } } } } $bIsModuleConnection = false; if (!$aCachedSubMenus) { $bIsModuleConnection = true; $sActiveSideBar = $this->_sModule; foreach ($aModules as $aModule) { if (!isset($aModule['module_id'])) { continue; } if (!$aModule['is_menu']) { continue; } if (!is_array($aModule['menu'])) { continue; } foreach ($aModule['menu'] as $sPhrase => $aLink) { $aCachedSubMenus[$aModule['module_id']][$sPhrase] = 'admincp.' . str_replace('/', '.', $aLink['url']); } } } */ $this->template()->assign(array('aCachedSubMenus' => $aCachedSubMenus, 'sActiveSideBar' => $sActiveSideBar, 'bIsModuleConnection' => false, 'sMenuController' => $sMenuController, 'aActiveMenus' => false && isset($aCachedSubMenus[$sActiveSideBar]) ? $aCachedSubMenus[$sActiveSideBar] : array())); } else { if ($this->_sModule != Phpfox::getParam('admincp.admin_cp')) { Phpfox_Module::instance()->setController('error.404'); } else { Phpfox::getService('admincp')->check(); /* define('PHPFOX_CAN_MOVE_BLOCKS', true); $this->template()->setHeader('cache', array( 'sort.js' => 'module_theme', 'design.js' => 'module_theme', 'jquery/ui.js' => 'static_script', ) ) ->setHeader(array( '<script type="text/javascript">function designOnUpdate() { $Core.design.updateSorting(); }</script>', '<script type="text/javascript">$Core.design.init({type_id: \'admincp\'});</script>' ) ); Phpfox_Module::instance()->setCacheBlockData(array( 'table' => 'admincp_dashboard', 'field' => 'user_id', 'item_id' => Phpfox::getUserId(), 'controller' => 'admincp.index' ) ); */ $this->template()->setBreadcrumb(Phpfox::getPhrase('admincp.dashboard'))->setTitle(Phpfox::getPhrase('admincp.dashboard'))->assign(array('bIsModuleConnection' => false, 'bIsDashboard' => true, 'aNewProducts' => Admincp_Service_Product_Product::instance()->getNewProductsForInstall())); } } }
/** * Provide "powered by" link. * * @param bool $bLink TRUE to include a link to phpFox. * @param bool $bVersion TRUE to include the version being used. * @return string Powered by phpFox string returned. */ public static function link($bLink = true, $bVersion = true) { if (Phpfox::getParam('core.branding')) { return ''; } return '' . ($bLink ? '<a href="http://www.phpfox.com/">' : '') . 'Powered By PHPFox' . ($bVersion ? ' Version ' . PhpFox::getVersion() : '') . ($bLink ? '</a>' : ''); }
/** * Class process method wnich is used to execute this component. */ public function process() { Phpfox::getUserParam('admincp.has_admin_access', true); if (Phpfox::getParam('admincp.admin_cp') != $this->request()->get('req1')) { return Phpfox::getLib('module')->setController('error.404'); } if (!Phpfox::getService('user.auth')->isActiveAdminSession()) { return Phpfox::getLib('module')->setController('admincp.login'); } if (Phpfox::getParam('core.phpfox_is_hosted')) { $sMaxHistory = Phpfox::getParam('core.phpfox_total_users_online_history'); if (!empty($sMaxHistory) && Phpfox::getLib('parse.format')->isSerialized($sMaxHistory)) { $aMaxHistory = unserialize($sMaxHistory); $this->template()->assign(array( 'aMaxHistory' => $aMaxHistory ) ); } } $this->_sModule = (($sReq2 = $this->request()->get('req2')) ? strtolower($sReq2) : Phpfox::getParam('admincp.admin_cp')); if ($this->_sModule == 'logout') { $this->_sController = $this->_sModule; $this->_sModule = 'admincp'; } else { $this->_sController = (($sReq3 = $this->request()->get('req3')) ? $sReq3 : $this->_sController); } if ($sReq4 = $this->request()->get('req4')) { $sReq4 = str_replace(' ', '', strtolower(str_replace('-', ' ', $sReq4))); } $sReq5 = $this->request()->get('req5'); $bPass = false; if (file_exists(PHPFOX_DIR_MODULE . $this->_sModule . PHPFOX_DS . PHPFOX_DIR_MODULE_COMPONENT . PHPFOX_DS . 'controller' . PHPFOX_DS . 'admincp' . PHPFOX_DS . $this->_sController . '.class.php')) { $this->_sController = 'admincp.' . $this->_sController; $bPass = true; } if (!$bPass && $sReq5 && file_exists(PHPFOX_DIR_MODULE . $this->_sModule . PHPFOX_DS . PHPFOX_DIR_MODULE_COMPONENT . PHPFOX_DS . 'controller' . PHPFOX_DS . 'admincp' . PHPFOX_DS . $this->_sController . PHPFOX_DS . $sReq4 . PHPFOX_DS . $sReq5 . '.class.php')) { $this->_sController = 'admincp.' . $this->_sController . '.' . $sReq4 . '.' . $sReq5; $bPass = true; } if (!$bPass && $sReq4 && file_exists(PHPFOX_DIR_MODULE . $this->_sModule . PHPFOX_DS . PHPFOX_DIR_MODULE_COMPONENT . PHPFOX_DS . 'controller' . PHPFOX_DS . 'admincp' . PHPFOX_DS . $this->_sController . PHPFOX_DS . $sReq4 . '.class.php')) { $this->_sController = 'admincp.' . $this->_sController . '.' . $sReq4; $bPass = true; } if (!$bPass && file_exists(PHPFOX_DIR_MODULE . $this->_sModule . PHPFOX_DS . PHPFOX_DIR_MODULE_COMPONENT . PHPFOX_DS . 'controller' . PHPFOX_DS . 'admincp' . PHPFOX_DS . $this->_sController . PHPFOX_DS . $this->_sController . '.class.php')) { $this->_sController = 'admincp.' . $this->_sController . '.' . $this->_sController; $bPass = true; } if (!$bPass && $sReq4 && file_exists(PHPFOX_DIR_MODULE . $this->_sModule . PHPFOX_DS . PHPFOX_DIR_MODULE_COMPONENT . PHPFOX_DS . 'controller' . PHPFOX_DS . 'admincp' . PHPFOX_DS . $this->_sController . PHPFOX_DS . $sReq4 . '.class.php')) { $this->_sController = 'admincp.' . $this->_sController . '.' . $sReq4; $bPass = true; } if (!$bPass && $sReq4 && file_exists(PHPFOX_DIR_MODULE . $this->_sModule . PHPFOX_DS . PHPFOX_DIR_MODULE_COMPONENT . PHPFOX_DS . 'controller' . PHPFOX_DS . 'admincp' . PHPFOX_DS . $this->_sController . PHPFOX_DS . $sReq4 . PHPFOX_DS . 'index.class.php')) { $this->_sController = 'admincp.' . $this->_sController . '.' . $sReq4 . '.index'; $bPass = true; } if (!$bPass && file_exists(PHPFOX_DIR_MODULE . $this->_sModule . PHPFOX_DS . PHPFOX_DIR_MODULE_COMPONENT . PHPFOX_DS . 'controller' . PHPFOX_DS . 'admincp' . PHPFOX_DS . $this->_sController . PHPFOX_DS . 'index.class.php')) { $this->_sController = 'admincp.' . $this->_sController . '.index'; $bPass = true; } if (!$bPass && file_exists(PHPFOX_DIR_MODULE . 'admincp' . PHPFOX_DS . PHPFOX_DIR_MODULE_COMPONENT . PHPFOX_DS . 'controller' . PHPFOX_DS . $this->_sModule . PHPFOX_DS . $this->_sController . '.class.php')) { $this->_sController = $this->_sModule . '.' . $this->_sController; $this->_sModule = 'admincp'; $bPass = true; } if (!$bPass && $sReq4 && file_exists(PHPFOX_DIR_MODULE . 'admincp' . PHPFOX_DS . PHPFOX_DIR_MODULE_COMPONENT . PHPFOX_DS . 'controller' . PHPFOX_DS . $this->_sModule . PHPFOX_DS . $this->_sController . PHPFOX_DS . $sReq4 . '.class.php')) { $this->_sController = $this->_sModule . '.' . $this->_sController . '.' . $sReq4; $this->_sModule = 'admincp'; $bPass = true; } if (!$bPass && Phpfox::getParam('admincp.admin_cp') != 'admincp' && file_exists(PHPFOX_DIR_MODULE . $this->_sModule . PHPFOX_DS . PHPFOX_DIR_MODULE_COMPONENT . PHPFOX_DS . 'controller' . PHPFOX_DS . $this->_sController . '.class.php')) { $bPass = true; } // Get the menu we will used to display all the "Modules" $aModules = Phpfox::getService('admincp.module')->getAdminMenu(); // Create AdminCP menu $aMenus = array( 'admincp.dashboard' => 'admincp', 'admincp.cms' => array( 'admincp.menus' => array( 'admincp.manage_menus' => 'admincp.menu', 'admincp.add_new_menu' => 'admincp.menu.add' ), 'admincp.blocks' => array( 'admincp.manage_blocks' => 'admincp.block', 'admincp.add_new_block' => 'admincp.block.add' ), 'admincp.pages' => array( 'admincp.manage_pages' => 'admincp.page', 'admincp.add_new_page' => 'admincp.page.add' ) ), 'admincp.users' => array( 'admincp.browse_members' => 'admincp.user.browse', 'admincp.user_group_manager' => array( 'admincp.manage_user_groups' => 'admincp.user.group', 'admincp.create_user_group' => 'admincp.user.group.add', 'admincp.add_user_group_setting' => 'admincp.user.group.setting' ), 'admincp.user_cancellation_options' => array( 'admincp.user_cancellation_options_add' => 'admincp.user.cancellations.add', 'admincp.user_cancellation_options_manage' => 'admincp.user.cancellations.manage', 'admincp.user_cancellations_feedback' => 'admincp.user.cancellations.feedback' ), 'user.promotions' => array( 'user.manage_promotions' => 'admincp.user.promotion', 'user.add_promotion' => 'admincp.user.promotion.add' ), 'admincp.inactive_members' => 'admincp.user.inactivereminder' ), 'admincp.extensions' => array( 'admincp.module' => array( 'admincp.manage_modules' => 'admincp.module', 'admincp.create_new_module' => 'admincp.module.add', 'admincp.add_component' => 'admincp.component.add', 'admincp.manage_components' => 'admincp.component' ), 'admincp.language' => array( 'admincp.manage_language_packs' => 'admincp.language', 'admincp.phrase_manager' => 'admincp.language.phrase', 'admincp.add_phrase' => 'admincp.language.phrase.add', 'language.create_language_pack' => 'admincp.language.add', // 'admincp.language_import_export' => 'admincp.language.file' 'language.import_language_pack' => 'admincp.language.import', 'language.email_phrases' => 'admincp.language.email' ), 'admincp.products' => array( 'admincp.manage_products' => 'admincp.product', 'admincp.create_new_product' => 'admincp.product.add', 'admincp.import_export' => 'admincp.product.file' ), 'admincp.plugin' => array( 'admincp.manage_plugins' => 'admincp.plugin', 'admincp.create_new_plugin' => 'admincp.plugin.add' ), 'admincp.theme' => array( 'admincp.manage_themes' => 'admincp.theme', 'theme.admincp_menu_create_theme' => 'admincp.theme.add', 'theme.admincp_menu_create_style' => 'admincp.theme.style.add', 'theme.create_a_new_template' => 'admincp.theme.template.add', 'theme.admincp_create_css_file' => 'admincp.theme.style.css.add', 'theme.admincp_menu_import_themes' => 'admincp.theme.import', 'theme.admincp_menu_import_styles' => 'admincp.theme.style.import' ) ), 'admincp.settings' => array( 'admincp.system_settings_menu' => array( 'admincp.manage_settings' => 'admincp.setting', 'admincp.add_new_setting' => 'admincp.setting.add', 'admincp.add_new_setting_group' => 'admincp.setting.group.add', 'admincp.find_missing_settings' => 'admincp.setting.missing' // 'admincp.language_import_export' => 'admincp.setting.file' ), 'admincp.payment_gateways_menu' => 'admincp.api.gateway' ), 'admincp.tools' => array( 'core.admincp_menu_system_overview' => 'admincp.core.system', 'admincp.ip_address' => 'admincp.core.ip', 'admincp.menu_site_stats' => array( 'admincp.menu_manage_stats' => 'admincp.stat', 'admincp.menu_create_new_stat' => 'admincp.stat.add' ), 'admincp.maintenance' => array( 'admincp.menu_cache_manager' => 'admincp.maintain.cache', 'admincp.admincp_menu_reparser' => 'admincp.maintain.reparser', 'admincp.remove_duplicates' => 'admincp.maintain.duplicate', 'admincp.counters' => 'admincp.maintain.counter' ), 'ban.ban_filters' => array( 'ban.ban_filter_username' => 'admincp.ban.username', 'ban.ban_filter_email' => 'admincp.ban.email', 'ban.ban_filter_display_name' => 'admincp.ban.display', 'ban.ban_filter_ip' => 'admincp.ban.ip', 'ban.ban_filter_word' => 'admincp.ban.word' ), 'admincp.mail_messages' => array( 'admincp.view_messages' => 'admincp.mail.private' ), 'core.admincp_menu_country' => array( 'core.admincp_menu_country_manager' => 'admincp.core.country', 'core.admincp_menu_country_add' => 'admincp.core.country.add', 'core.admincp_menu_country_child_add' => 'admincp.core.country.child.add', 'core.admincp_menu_country_import' => 'admincp.core.country.import' ), 'core.admincp_menu_online' => array( 'core.admincp_menu_online_members' => 'admincp.user.browse.view_online', 'core.admincp_menu_online_guests' => 'admincp.core.online-guest' ), 'admincp.sql' => array( 'admincp.sql_maintenance' => 'admincp.sql', 'admincp.sql_backup' => 'admincp.sql.backup', 'admincp.alter_title_fields' => 'admincp.sql.title' ), 'core.currency' => array( 'core.currency_manager' => 'admincp.core.currency', 'core.add_currency' => 'admincp.core.currency.add' ) ) ); if (!Phpfox::getUserParam('mail.can_read_private_messages')) { unset($aMenus['admincp.tools']['admincp.mail_messages']['admincp.view_messages']); if (empty($aMenus['admincp.tools']['admincp.mail_messages'])) { unset($aMenus['admincp.tools']['admincp.mail_messages']); } } if (!Phpfox::getUserParam('admincp.can_add_new_block')) { unset($aMenus['admincp.cms']['admincp.blocks']['admincp.add_new_block']); } if (Phpfox::isModule('custom')) { $aMenus['admincp.users']['custom.admincp_custom_fields'] = array( 'custom.admin_menu_add_custom_field' => 'admincp.custom.add', 'custom.admin_menu_manage_custom_fields' => 'admincp.custom', 'custom.admin_menu_add_custom_group' => 'admincp.custom.group.add', 'custom.admin_menu_manage_relationships' => 'admincp.custom.relationships' ); } if (Phpfox::isModule('emoticon')) { $aMenus['admincp.extensions']['emoticon.emoticons'] = array( 'admincp.menu_tools_emoticon_package' => 'admincp.emoticon.package', 'admincp.menu_tools_emoticon_package_add' => 'admincp.emoticon.package.add', 'admincp.menu_tools_emoticon_add' => 'admincp.emoticon.add', 'emoticon.import_export_emoticon' => 'admincp.emoticon.file' ); } if (Phpfox::isModule('attachment.admincp_attachment_menu')) { $aMenus['admincp.extensions']['attachment.admincp_attachment_menu'] = array( 'attachment.admincp_menu_attachment_types' => 'admincp.attachment', 'attachment.admincp_menu_attachment_add' => 'admincp.attachment.add' ); } if (!Phpfox::getParam('core.branding')) { $aMenus['admincp.settings']['core.phpfox_branding_removal'] = 'admincp.core.branding'; } if (Phpfox::getParam('core.phpfox_is_hosted')) { unset($aMenus['admincp.extensions']['admincp.module']); unset($aMenus['admincp.extensions']['admincp.products']['admincp.create_new_product']); unset($aMenus['admincp.extensions']['admincp.products']['admincp.import_export']); unset($aMenus['admincp.extensions']['admincp.plugin']); unset($aMenus['admincp.extensions']['admincp.language']['language.import_language_pack']); unset($aMenus['admincp.extensions']['admincp.theme']['theme.create_a_new_template']); unset($aMenus['admincp.extensions']['admincp.theme']['theme.admincp_create_css_file']); unset($aMenus['admincp.extensions']['admincp.theme']['theme.admincp_menu_import_themes']); unset($aMenus['admincp.extensions']['admincp.theme']['theme.admincp_menu_import_styles']); unset($aMenus['admincp.extensions']['emoticon.emoticons']['emoticon.import_export_emoticon']); unset($aMenus['admincp.settings']['admincp.system_settings_menu']['admincp.add_new_setting']); unset($aMenus['admincp.settings']['admincp.system_settings_menu']['admincp.add_new_setting_group']); } (($sPlugin = Phpfox_Plugin::get('admincp.component_controller_index_process_menu')) ? eval($sPlugin) : false); $this->template()->assign(array( 'aModulesMenu' => $aModules, 'aAdminMenus' => $aMenus, 'aUserDetails' => Phpfox::getUserBy(), 'sPhpfoxVersion' => PhpFox::getVersion(), 'sSiteTitle' => Phpfox::getParam('core.site_title') ) )->setHeader(array( 'menu.css' => 'style_css', "<!--[if IE]\n\t\t\t<link rel=\"stylesheet\" href=\"" . $this->template()->getStyle('css') . "ie.css\">\n\t\t\t<script type=\"text/javascript\">\n\t\t\t\t window.mlrunShim = true;\n\t\t\t</script>\n\t\t<![endif]-->", 'menu.js' => 'style_script', "<!--[if lt IE 7]>\n\t\t\t<link rel=\"stylesheet\" href=\"" . $this->template()->getStyle('css') . "ie6.css\">\n\t\t<![endif]-->", "<!--[if IE 6]>\n\t\t\t<script type=\"text/javascript\" src=\"" . Phpfox::getParam('core.url_static_script') . "admin_ie6.js\"></script>\n\t\t<![endif]-->", 'admin.js' => 'static_script' ) )->setTitle(Phpfox::getPhrase('admincp.admin_cp')); if ($bPass) { Phpfox::getLib('module')->setController($this->_sModule . '.' . $this->_sController); $sMenuController = str_replace(array('.index', '.phrase'), '', 'admincp.' . ($this->_sModule != 'admincp' ? $this->_sModule . '.' . str_replace('admincp.', '', $this->_sController) : $this->_sController)); $aCachedSubMenus = array(); $sActiveSideBar = ''; if ($sMenuController == 'admincp.setting.edit') { $sMenuController = 'admincp.setting'; } if ($this->_getMenuName() !== null) { $sMenuController = $this->_getMenuName(); } foreach ($aMenus as $sKey => $aSubMenus) { if (is_array($aSubMenus)) { foreach ($aSubMenus as $sSubkey => $mSubMenus) { if (is_array($mSubMenus)) { foreach ($mSubMenus as $sSubkey2 => $mSubMenus2) { if ($sMenuController == $mSubMenus2) { $sActiveSideBar = $sSubkey; foreach ($aSubMenus as $sSubkey3 => $mSubMenus3) { if (is_array($mSubMenus3)) { $aCachedSubMenus[$sSubkey3] = $mSubMenus3; } else { $aCachedSubMenus[$sKey][$sSubkey3] = $mSubMenus3; } } } } } else { if ($sMenuController == $mSubMenus) { $sActiveSideBar = $sKey; foreach ($aSubMenus as $sSubkey3 => $mSubMenus3) { if (is_array($mSubMenus3)) { $aCachedSubMenus[$sSubkey3] = $mSubMenus3; } else { $aCachedSubMenus[$sKey][$sSubkey3] = $mSubMenus3; } } } } } } } $bIsModuleConnection = false; if (!$aCachedSubMenus) { $bIsModuleConnection = true; $sActiveSideBar = $this->_sModule; foreach ($aModules as $aModule) { if (!$aModule['is_menu']) { continue; } if (!is_array($aModule['menu'])) { continue; } foreach ($aModule['menu'] as $sPhrase => $aLink) { $aCachedSubMenus[$aModule['module_id']][$sPhrase] = 'admincp.' . str_replace('/', '.', $aLink['url']); } } } $this->template()->assign(array( 'aCachedSubMenus' => $aCachedSubMenus, 'sActiveSideBar' => $sActiveSideBar, 'bIsModuleConnection' => $bIsModuleConnection, 'sMenuController' => $sMenuController, 'aActiveMenus' => (($bIsModuleConnection && isset($aCachedSubMenus[$sActiveSideBar])) ? $aCachedSubMenus[$sActiveSideBar] : array()) ) ); } else { if ($this->_sModule != Phpfox::getParam('admincp.admin_cp')) { Phpfox::getLib('module')->setController('error.404'); } else { Phpfox::getService('admincp')->check(); /* define('PHPFOX_CAN_MOVE_BLOCKS', true); $this->template()->setHeader('cache', array( 'sort.js' => 'module_theme', 'design.js' => 'module_theme', 'jquery/ui.js' => 'static_script', ) ) ->setHeader(array( '<script type="text/javascript">function designOnUpdate() { $Core.design.updateSorting(); }</script>', '<script type="text/javascript">$Core.design.init({type_id: \'admincp\'});</script>' ) ); Phpfox::getLib('module')->setCacheBlockData(array( 'table' => 'admincp_dashboard', 'field' => 'user_id', 'item_id' => Phpfox::getUserId(), 'controller' => 'admincp.index' ) ); */ $this->template()->setBreadcrumb(Phpfox::getPhrase('admincp.dashboard')) ->setTitle(Phpfox::getPhrase('admincp.dashboard')) ->assign(array( 'bIsModuleConnection' => false, 'bIsDashboard' => true ) ); } } }
/** * Provide "powered by" link. * * @param bool $bLink TRUE to include a link to phpFox. * @param bool $bVersion TRUE to include the version being used. * @return string Powered by phpFox string returned. */ public static function link($bLink = true, $bVersion = true) { if (Phpfox::getParam('core.branding')) { return ''; } return 'Powered By PHPFox' . ($bVersion ? ' Version ' . PhpFox::getVersion() : ''); }
/** * Send a request to another server. Usually using CURL. * * @param string $sUrl URL of the server. * @param array $aPost $_POST data to send. * @param string $sMethod Method of request (GET or POST). * @param string $sUserAgent Useragent to send. * @param string $aCookies ARRAY of any cookies to pass. * @return mixed FALSE if failed to connect, STRING if anything was returned from the server. */ public function send($sUrl, $aPost = array(), $sMethod = 'POST', $sUserAgent = null, $aCookies = null, $bFollow = false) { $aHost = parse_url($sUrl); $sPost = ''; foreach ($aPost as $sKey => $sValue) { $sPost .= '&' . $sKey . '=' . $sValue; } // Curl if (extension_loaded('curl') && function_exists('curl_init')) { $hCurl = curl_init(); curl_setopt($hCurl, CURLOPT_URL, $sMethod == 'GET' && !empty($sPost) ? $sUrl . '?' . ltrim($sPost, '&') : $sUrl); curl_setopt($hCurl, CURLOPT_HEADER, false); curl_setopt($hCurl, CURLOPT_FOLLOWLOCATION, $bFollow); curl_setopt($hCurl, CURLOPT_RETURNTRANSFER, true); // Testing this out at the moment... curl_setopt($hCurl, CURLOPT_SSL_VERIFYPEER, false); // Run if this is a POST request method if ($sMethod != 'GET') { curl_setopt($hCurl, CURLOPT_POST, true); curl_setopt($hCurl, CURLOPT_POSTFIELDS, $sPost); } // Add the browser agent curl_setopt($hCurl, CURLOPT_USERAGENT, $sUserAgent === null ? "" . PHPFOX::BROWSER_AGENT . " (" . PhpFox::getVersion() . ")" : $sUserAgent); // Check if we need to set some cookies if ($aCookies !== null) { $sLine = "\n"; // Loop thru all the cookies we currently have set foreach ($aCookies as $sKey => $sValue) { // Make sure we don't see the session ID or the browser will crash if ($sKey == 'PHPSESSID') { continue; } // Add the cookies $sLine .= '' . $sKey . '=' . $sValue . '; '; } // Trim the cookie $sLine = trim(rtrim($sLine, ';')); // Set the cookie curl_setopt($hCurl, CURLOPT_COOKIE, $sLine); } // Run the exec $sData = curl_exec($hCurl); // Close the curl connection curl_close($hCurl); // Return whatever we can from the curl request return trim($sData); } // file_get_contents() if ($sMethod == 'GET' && ini_get('allow_url_fopen') && function_exists('file_get_contents')) { $sData = file_get_contents($sUrl . "?" . ltrim($sPost, '&')); return trim($sData); } // fsockopen if (!isset($sData)) { $hConnection = fsockopen($aHost['host'], 80, $errno, $errstr, 30); if (!$hConnection) { return false; } else { if ($sMethod == 'GET') { $sUrl = $sUrl . '?' . ltrim($sPost, '&'); } $sSend = "{$sMethod} {$sUrl} HTTP/1.1\r\n"; $sSend .= "Host: {$aHost['host']}\r\n"; $sSend .= "User-Agent: " . PHPFOX::BROWSER_AGENT . " (" . PhpFox::getVersion() . ")\r\n"; $sSend .= "Content-Type: application/x-www-form-urlencoded\r\n"; $sSend .= "Content-Length: " . strlen($sPost) . "\r\n"; $sSend .= "Connection: close\r\n\r\n"; $sSend .= $sPost; fwrite($hConnection, $sSend); $sData = ''; while (!feof($hConnection)) { $sData .= fgets($hConnection, 128); } $aResponse = preg_split("/\r\n\r\n/", $sData); $sHeader = $aResponse[0]; $sData = $aResponse[1]; if (!(strpos($sHeader, "Transfer-Encoding: chunked") === false)) { $aAux = split("\r\n", $sData); for ($i = 0; $i < count($aAux); $i++) { if ($i == 0 || $i % 2 == 0) { $aAux[$i] = ''; } $sData = implode("", $aAux); } } return chop($sData); } } return false; }
/** * Debug output found at the bottom of the site when debug mode is enabled. * * @static * @return mixed Only returns something if the installer is being used and in that case it returns FALSE */ public static function getDetails() { if (defined('PHPFOX_INSTALLER')) { return false; } // SQL $iSqlCount = 0; $fSum = 0.0; $fLimit = 0.05 * 128; $iSqlMemory = 0; $aKeywords = array('SELECT', 'SELECT ', 'FROM', 'FROM ', 'WHERE ', 'UPDATE ', 'OFFSET', ' AS ', 'UNION ALL', 'INNER JOIN ', 'LEFT JOIN ', 'INSERT INTO ', 'SHOW COLUMNS ', 'ON', 'SET', 'USING', 'USE INDEX', 'JOIN ', 'ORDER BY', 'DESC', 'LIMIT', 'DELETE'); $oRequest = Phpfox_Request::instance(); $oFile = Phpfox_File::instance(); $aReplaces = array_map(array('self', '_addKeywordSyntax'), $aKeywords); $sDriver = Phpfox::getParam(array('db', 'driver')); $sSql = ''; $bIsCmd = PHP_SAPI == 'cli' || defined('PHPFOX_IS_AJAX') && PHPFOX_IS_AJAX; if (!isset(self::$_aDebugHistory['sql'])) { self::$_aDebugHistory['sql'] = array(); } // Fresh install, no need to display sql debug if ($sDriver == 'DATABASE_DRIVER') { self::$_aDebugHistory['sql'] = array(); } foreach (self::$_aDebugHistory['sql'] as $aLine) { if (!isset($aLine['sql'])) { continue; } $iSqlCount++; $sExtra = Phpfox_Database::instance()->sqlReport($aLine['sql']); if ($bIsCmd) { $sSql .= "\n ----------------- \n Rows: " . $aLine['rows'] . " Slave: " . ($aLine['slave'] ? 'Yes' : 'No') . " \n " . $aLine['sql'] . " \n\n"; } else { if ($aLine['time'] == '0.0000000') { $aLine['time'] = '0.0000001'; } $sColor = sprintf('%02X', min(255, $fLimit / $aLine['time'])); $aLine['sql'] = str_replace($aKeywords, $aReplaces, htmlspecialchars($aLine['sql'])); $sSql .= '<div class="nDebugInfo"> <span style="background-color: #FF' . $sColor . $sColor . '; color:#000; padding:2px;">' . $aLine['time'] . '</span> | <b>Memory Before:</b> ' . $oFile->filesize($aLine['memory_before']) . ' | <b>Memory After:</b> ' . $oFile->filesize($aLine['memory_after']) . ' | <b>Memory Used:</b> ' . $oFile->filesize($aLine['memory_after'] - $aLine['memory_before']) . ' | <b>Rows:</b> ' . $aLine['rows'] . ' | <b>Slave:</b> ' . ($aLine['slave'] ? 'Yes' : 'No') . ' </div>'; $sSql .= '<div class="nDebugItems">' . self::_parseSQL($aLine['sql']) . '' . $sExtra . '</div>'; } $fSum += $aLine['time']; $iSqlMemory += $aLine['memory_after'] - $aLine['memory_before']; } // General Stats $iTotalTime = sprintf('%0.7f', array_sum(explode(' ', microtime())) - PHPFOX_TIME_START); $iTotalSqlTime = sprintf('%0.7f', $fSum); $sDebugReturn = '<div id="js_main_debug_holder">'; if (!defined('PHPFOX_MEM_END')) { define('PHPFOX_MEM_END', memory_get_usage()); } if (PHPFOX_DEBUG_LEVEL === 1) { $sDebugReturn .= '<div style="font-size:9pt; text-align:center; padding-bottom:50px;">Page generated in ' . round($iTotalTime, 4) . ' seconds with ' . $iSqlCount . ' queries and GZIP ' . (Phpfox::getParam('core.use_gzip') ? 'enabled' : 'disabled') . ' on ' . $_SERVER['SERVER_ADDR'] . '.</div>'; } elseif (PHPFOX_DEBUG_LEVEL === 2 || PHPFOX_DEBUG_LEVEL === 3) { $bSlaveEnabled = Phpfox::getParam(array('db', 'slave')); $aStats = array('Version' => PhpFox::getVersion(), 'Product Code Name' => PhpFox::getCodeName(), '1' => '', 'Total Time' => $iTotalTime, 'PHP General Time' => $iTotalTime - $iTotalSqlTime, 'GZIP' => Phpfox::getParam('core.use_gzip') ? 'enabled' : 'disabled', '2' => '', 'Driver Version' => $sDriver == 'DATABASE_DRIVER' ? 'N/A' : Phpfox_Database::instance()->getServerInfo(), 'SQL Time' => $iTotalSqlTime, 'SQL Queries' => $iSqlCount, 'SQL Memory Usage' => $oFile->filesize($iSqlMemory), 'SQL Slave Enabled' => $bSlaveEnabled ? 'Yes' : 'No', 'SQL Total Slaves' => $bSlaveEnabled ? count(Phpfox::getParam(array('db', 'slave_servers'))) : 'N/A', 'SQL Slave Server' => $bSlaveEnabled ? Phpfox_Database::instance()->sSlaveServer : 'N/A', '3' => '', 'Total Memory Usage' => $oFile->filesize(PHPFOX_MEM_END), 'Total Memory Usage (Including Debug)' => $oFile->filesize(memory_get_usage()), 'Memory Limit' => $oFile->filesize(self::_getUsableMemory()) . ' (' . @ini_get('memory_limit') . ')', '4' => '', 'Load Balancing Enabled' => Phpfox::getParam(array('balancer', 'enabled')) ? 'Yes' : 'No', 'Requests From' => $oRequest->getServer('SERVER_ADDR'), 'Server ID#' => $oRequest->getServer('PHPFOX_SERVER_ID'), '5' => '', 'Server Time Stamp' => date('F j, Y, g:i a', PHPFOX_TIME), 'PHP Version' => PHP_VERSION, 'PHP Sapi' => php_sapi_name(), 'PHP safe_mode' => PHPFOX_SAFE_MODE ? 'true' : 'false', 'PHP open_basedir' => PHPFOX_OPEN_BASE_DIR ? 'true' : 'false', 'Operating System' => PHP_OS, '6' => '', 'Cache' => Phpfox::getParam('core.cache_storage')); if (extension_loaded('xdebug')) { $aXdebug = array('4' => '', 'xDebug File Name' => xdebug_get_profiler_filename(), 'xDebug Total Time' => xdebug_time_index()); $aStats = array_merge($aStats, $aXdebug); } $sDebugStats = ''; foreach ($aStats as $sStatTitle => $mStatValue) { if (!$mStatValue) { $sDebugStats .= $bIsCmd ? "\n" : "<br />"; } else { $sDebugStats .= $bIsCmd ? "" . $sStatTitle . ": " . $mStatValue . "\n" : "<div class=\"nDebugLeft\">" . $sStatTitle . ":</div><div>" . $mStatValue . "</div>\n<div class=\"nClear\"></div>\n"; } } $aCookies = array(); $sCookiePrefix = Phpfox::getParam('core.session_prefix'); $iPrefixLength = strlen($sCookiePrefix); foreach ($_COOKIE as $sKey => $sValue) { if (substr($sKey, 0, $iPrefixLength) != $sCookiePrefix) { continue; } $aCookies[$sKey] = $sValue; } if ($bIsCmd) { $sDebugReturn .= $sDebugStats; $sDebugReturn .= "##############################################"; } else { $sDebugReturn .= ' <div id="n_debug"> <div id="n_debug_header"> phpFox Developers Debug <a href="#" onclick="if (getCookie(\'js_console\')) { deleteCookie(\'js_console\'); $(\'#firebug_no_console\').remove(); } else { setCookie(\'js_console\', \'1\', 365); p(\'Enabled JavaScript Console\'); } return false;">Toggle JavaScript Console</a> </div> <div class="nDebugItem"><a href="#" onclick="if (getCookie(\'phpfox_debug_detail\')) { deleteCookie(\'phpfox_debug_detail\'); $(\'#phpfox_debug_detail\').slideDown(); } else { $(\'#phpfox_debug_detail\').slideUp(); setCookie(\'phpfox_debug_detail\', \'1\', 365); } return false;">Debug Details</a></div> <div class="nDebugContent nDebugContentShell" id="phpfox_debug_detail"' . (Phpfox::getCookie('phpfox_debug_detail') ? ' style="display:none;"' : '') . '> <div class="nDebugContentShell"> ' . $sDebugStats . ' </div> </div> '; } if (PHPFOX_DEBUG_LEVEL === 3) { if ($bIsCmd) { $sDebugReturn .= $sSql; $sDebugReturn .= "##############################################"; } else { $sDebugReturn .= ' <div class="nDebugItem">SQL Queries</div> <div class="nDebugContent nDebugContentShell" style="height:400px;"> ' . $sSql . ' </div> '; } } /* <div class="nDebugItem">Debug History</div> <div class="nDebugContent nDebugContentShell" style="height:200px;"> <pre>'. self::_loadData(self::$_aDebugHistory) .'</pre> </div> */ if (!$bIsCmd) { $sDebugReturn .= ' <div class="nDebugItem"><a href="#" onclick="if (getCookie(\'phpfox_debug_session\')) { deleteCookie(\'phpfox_debug_session\'); $(\'#phpfox_debug_session\').slideDown(); } else { $(\'#phpfox_debug_session\').slideUp(); setCookie(\'phpfox_debug_session\', \'1\', 365); } return false;">Session</a></div> <div class="nDebugContent nDebugContentShell" id="phpfox_debug_session"' . (Phpfox::getCookie('phpfox_debug_session') ? ' style="display:none;"' : '') . '> <pre>' . self::_loadData($_SESSION[Phpfox::getParam('core.session_prefix')]) . '</pre> </div> <div class="nDebugItem"><a href="#" onclick="if (getCookie(\'phpfox_debug_cookie\')) { deleteCookie(\'phpfox_debug_cookie\'); $(\'#phpfox_debug_cookie\').slideDown(); } else { $(\'#phpfox_debug_cookie\').slideUp(); setCookie(\'phpfox_debug_cookie\', \'1\', 365); } return false;">Cookie</a></div> <div class="nDebugContent nDebugContentShell" id="phpfox_debug_cookie"' . (Phpfox::getCookie('phpfox_debug_cookie') ? ' style="display:none;"' : '') . '> <pre>' . self::_loadData($aCookies) . '</pre> </div> </div> '; } } $sDebugReturn .= '</div>'; if (defined('PHPFOX_DEBUG_SHOW_FIXED')) { $sDebugReturn .= '<div style="position:fixed; bottom:0px; right:5px; background:#fff; border:1px #dfdfdf solid; width:200px; padding:5px; font-size:16px;"> Generated in: ' . round($iTotalTime, 4) . ' <br /> SQL: ' . $iSqlCount . ' (' . $iTotalSqlTime . ') <br /> Server: ' . $_SERVER['SERVER_ADDR'] . ' </div>'; } return $sDebugReturn; }
/** * Provide "powered by" link. * * @param bool $bLink TRUE to include a link to phpFox. * @param bool $bVersion TRUE to include the version being used. * @return string Powered by phpFox string returned. */ public static function link($bLink = true, $bVersion = true) { return 'Powered By ' . ($bLink ? '' : '') . 'phpFox' . ($bLink ? '' : '') . ($bVersion ? ' Version ' . PhpFox::getVersion() : ''); }
public function run() { if (defined('PHPFOX_IS_HOSTED_SCRIPT')) { $this->_update(); exit; } if ($this->_bUpgrade && (int) substr($this->_getCurrentVersion(), 0, 1) < 2 && file_exists(PHPFOX_DIR . '.htaccess')) { $sHtaccessContent = file_get_contents(PHPFOX_DIR . '.htaccess'); if (preg_match('/RewriteEngine/i', $sHtaccessContent)) { exit('In order for us to continue with the upgrade you will need to rename or remove the file ".htaccess".'); } } $sStep = $this->_oReq->get('req2') ? strtolower($this->_oReq->get('req2')) : 'key'; $this->_oTpl->setTitle(self::getPhrase('phpfox_installer'))->setBreadcrumb(self::getPhrase('phpfox_installer')); $bPass = false; if (!in_array($sStep, $this->_aSteps)) { if (in_array($sStep, $this->_aModuleInstalls)) { $bPass = true; } else { exit('Invalid step.'); } } $sMethod = '_' . $sStep; $iStep = 0; foreach ($this->_aSteps as $iKey => $sMyStep) { if ($sMyStep === $sStep) { $iStep = $iKey - 1; break; } } if ($bPass === false && isset($this->_aSteps[$iStep]) && !$this->_isPassed($this->_aSteps[$iStep])) { $this->_oUrl->forward($this->_step($this->_aSteps[$iStep])); } $this->_sStep = $sStep; if (method_exists($this, $sMethod)) { call_user_func(array(&$this, $sMethod)); } else { $sStep = 'key'; } if (PHPFOX_DEBUG) { $this->_oTpl->setHeader(array('debug.css' => 'style_css')); } if (!file_exists($this->_oTpl->getLayoutFile($sStep))) { $sStep = 'default'; } list($aBreadCrumbs, $aBreadCrumbTitle) = $this->_oTpl->getBreadCrumb(); $this->_oTpl->setImage(array('ajax_small' => 'ajax/small.gif', 'ajax_large' => 'ajax/large.gif', 'loading_animation' => 'misc/loading_animation.gif', 'close' => 'misc/close.gif')); $this->_oTpl->setHeader(array('<link rel="shortcut icon" type="image/x-icon" href="' . Phpfox_Installer::getHostPath() . 'favicon.ico?v=' . $this->_oTpl->getStaticVersion() . '" />', 'layout.css' => 'style_css', 'thickbox.css' => 'style_css', 'jquery/jquery.js' => 'static_script', 'common.js' => 'static_script', 'main.js' => 'static_script', 'thickbox/thickbox.js' => 'static_script'))->assign(array('sTemplate' => $sStep, 'sLocaleDirection' => 'ltr', 'sLocaleCode' => 'en', 'sUrl' => $this->_sUrl, 'aErrors' => Phpfox_Error::get(), 'sPublicMessage' => Phpfox::getMessage(), 'aBreadCrumbs' => $aBreadCrumbs, 'aBreadCrumbTitle' => $aBreadCrumbTitle, 'aSteps' => $this->_getSteps())); if ($this->_bUpgrade) { $this->_oTpl->setTitle('Upgrading from: ' . $this->_getCurrentVersion()); } header("X-Content-Encoded-By: phpFox " . PhpFox::getVersion()); $this->_oTpl->getLayout('template'); Phpfox::clearMessage(); }