Ejemplo n.º 1
0
	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;
	}
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
 /**
  * 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 &amp; 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 &amp; 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()));
         }
     }
 }
Ejemplo n.º 4
0
 /**
  * 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>' : '');
 }
Ejemplo n.º 5
0
	/**
	 * 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
					)
				);
			}
		}	
	}
Ejemplo n.º 6
0
 /**
  * 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() : '');
 }
Ejemplo n.º 7
0
 /**
  * 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;
 }
Ejemplo n.º 8
0
    /**
     * 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;
    }
Ejemplo n.º 9
0
	/**
	 * 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() : '');
	}
Ejemplo n.º 10
0
 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();
 }