Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Damiann.

Użytkownik
  • Postów

    42
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    3

Odpowiedzi opublikowane przez Damiann.

  1. Miałem identycznie na testowym. Jeśli to jest to co myślę to mi pomogła podmianka pliku dashboard.php, a raczej jej zawartości na:

     

    <?php
    /**
     * <pre>
     * Invision Power Services
     * IP.Board v3.4.8
     * Dashboard
     * Last Updated: $Date: 2013-09-06 16:39:06 -0400 (Fri, 06 Sep 2013) $
     * </pre>
     *
     * @author 		$Author: bfarber $
     * @copyright	(c) 2001 - 2009 Invision Power Services, Inc.
     * @license		http://www.invisionpower.com/company/standards.php#license
     * @package		IP.Board
     * @subpackage	Core
     * @link		http://www.invisionpower.com
     * @since		5th January 2005
     * @version		$Revision: 12348 $
     */
    
    if ( ! defined( 'IN_ACP' ) )
    {
    	print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";
    	exit();
    }
    
    class admin_core_mycp_dashboard extends ipsCommand
    {
    	/**
    	 * Skin object
    	 *
    	 * @var		object			Skin templates
    	 */
    	protected $html;
    
    	/**
    	 * Shortcut for url
    	 *
    	 * @var		string			URL shortcut
    	 */
    	protected $form_code;
    
    	/**
    	 * Shortcut for url (javascript)
    	 *
    	 * @var		string			JS URL shortcut
    	 */
    	protected $form_code_js;
    
    	/**
    	 * Main function executed automatically by the controller
    	 *
    	 * @param	object		$registry		Registry object
    	 * @return	@e void
    	 */
    	public function doExecute( ipsRegistry $registry )
    	{
    		//-----------------------------------------
    		// Load skin
    		//-----------------------------------------
    
    		$this->html = $this->registry->output->loadTemplate('cp_skin_mycp');
    
    		//-----------------------------------------
    		// Load language
    		//-----------------------------------------
    
    		$this->registry->getClass('class_localization')->loadLanguageFile( array( 'admin_mycp' ) );
    
    		/* This is a little hacky, but we have to allow access to the whole module to get access to 
    		   'change my details'.  This check just makes sure that we don't also get access to the Dashboard
    		   if the permission system automatically added permission for 'change my details' */
    		if( $this->registry->getClass('class_permissions')->editDetailsOnly )
    		{
    			/* If they just don't have access to the dashboard, let's show them something we do have access to */
    			if ( !$this->request['app'] )
    			{
    				foreach( ipsRegistry::$applications as $k => $data )
    				{
    					if ( $this->registry->getClass('class_permissions')->checkForAppAccess( $k ) and ( $k != 'core' or !$this->registry->getClass('class_permissions')->editDetailsOnly ) )
    					{
    						foreach( ipsRegistry::$modules[ $k ] as $module )
    						{
    							if ( $this->registry->getClass('class_permissions')->checkForModuleAccess( $k, $module['sys_module_key'] ) )
    							{
    								$filepath  = IPSLib::getAppDir( $k ) . '/modules_admin/' . $module['sys_module_key'] . '/defaultSection.php';
    								if ( is_file( $filepath ) )
    								{
    									$DEFAULT_SECTION = '';
    									include( $filepath );/*noLibHook*/
    					
    									if ( $this->registry->getClass('class_permissions')->checkForSectionAccess( $k, $module['sys_module_key'], $DEFAULT_SECTION ) )
    									{
    										$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . "app={$k}&amp;module={$module['sys_module_key']}&amp;section={$DEFAULT_SECTION}" );
    									}
    								}
    							}
    						}
    					}
    				}
    			}
    			
    			/* If all else fails, take them to the change details page */
    			$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . "core&amp;module=mycp&amp;section=details" );
    		}
    		else if( !$this->registry->getClass('class_permissions')->checkPermission( 'dashboard', 'core', 'mycp' ) )
    		{
    			$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . "core&amp;module=mycp&amp;section=details" );
    		}
    
    		//-----------------------------------------
    		// Set up stuff
    		//-----------------------------------------
    
    		$this->form_code	= $this->html->form_code	= 'module=mycp&amp;section=dashboard';
    		$this->form_code_js	= $this->html->form_code_js	= 'module=mycp&section=dashboard';
    		
    		//-----------------------------------------
    		// Hang on, do we need the upgrader?
    		// The only reason this is still here, since we check on the login form, is because Rhett Buck AKA BHP wants to
    		// login to the ACP, then upload files, then click the System tab and be automatically redirected to the upgrader.
    		// Seriously though?  Who does that?  The login form redirects you, so if you happen to upload files and click on 
    		// the ACP link you're already covered.  Only Mr. RB, that's who.
    		//-----------------------------------------
    		
    		if ( !IN_DEV AND ( !defined('SKIP_UPGRADE_CHECK') OR !SKIP_UPGRADE_CHECK ) )
    		{
    			require_once( IPS_ROOT_PATH . 'setup/sources/base/setup.php' );/*noLibHook*/
    			foreach( ipsRegistry::$applications as $app_dir => $app )
    			{
    				$_a = ( $app_dir == 'forums' or $app_dir == 'members' ) ? 'core' : $app_dir;
    				$numbers = IPSSetUp::fetchAppVersionNumbers( $_a );
    	
    				if ( $numbers['latest'][0] and $numbers['latest'][0] > $numbers['current'][0] )
    				{
    					$this->registry->output->silentRedirect( $this->settings['base_acp_url'] . '/upgrade/index.php?_acpRedirect=1' );
    					return;
    				}
    			}
    		}
    		
    		//-----------------------------------------
    		// Get external data
    		//-----------------------------------------
    		
    		$content         	= array();
    		$thiscontent     	= "";
       		$latest_version  	= array();
       		$reg_end         	= "";
    		$unfinished_upgrade	= 0;
    				
    		$ipsNewsData = $this->cache->getCache( 'ipsNewsData' );
    		if ( !isset( $ipsNewsData['time'] ) or $ipsNewsData['time'] < ( time() - 43200 ) ) // 12 hour cache
    		{
    			$classToLoad = IPSLib::loadLibrary( IPS_KERNEL_PATH . 'classFileManagement.php', 'classFileManagement' );
    			$classFileManagement = new $classToLoad();
    			
    			if( strpos( $this->settings['base_url'], 'https://' ) !== false )
    			{
    				$ipsNewsData['news'] = $classFileManagement->getFileContents( 'https://external.ipslink.com/ipboard33/dashboard/index.php?v=' . ipsRegistry::$vn_full );
    				$ipsNewsData['vcheck'] = $classFileManagement->getFileContents( 'https://external.ipslink.com/latestversioncheck/ipb30x.php?' . base64_encode( ipsRegistry::$vn_full.'|^|'.$this->settings['board_url'] ) );
    			}
    			else
    			{
    				$ipsNewsData['news'] = $classFileManagement->getFileContents( 'http://external.ipslink.com/ipboard33/dashboard/index.php?v=' . ipsRegistry::$vn_full );
    				$ipsNewsData['vcheck'] = $classFileManagement->getFileContents( 'http://external.ipslink.com/latestversioncheck/ipb30x.php?' . base64_encode( ipsRegistry::$vn_full.'|^|'.$this->settings['board_url'] ) );
    			}
    			
    			$ipsNewsData['time'] = time();
    			
    			$this->cache->setCache( 'ipsNewsData', $ipsNewsData, array( 'array' => 1 ) );
    		}
    
    		//-----------------------------------------
    		// Get MySQL & PHP Version
    		//-----------------------------------------
    
    		$this->DB->getSqlVersion();
    
       		//-----------------------------------------
       		// Upgrade history?
       		//-----------------------------------------
    
       		$latest_version = array( 'upgrade_version_id' => NULL );
    
       		$this->DB->build( array( 'select' => '*', 'from' => 'upgrade_history', 'order' => 'upgrade_version_id DESC', 'limit' => array(1) ) );    		  		
       		$this->DB->execute();
    
       		while( $r = $this->DB->fetch() )
       		{
    			$latest_version = $r;
       		}
    
    		//-----------------------------------------
    		// Resetting security image?
    		//-----------------------------------------
    
    		if ( $this->request['reset_security_flag'] AND $this->request['reset_security_flag'] == 1 AND $this->request['new_build'] )
    		{
    			$_latest	 = IPSLib::fetchVersionNumber('core');
    			$new_build   = intval( $this->request['new_build'] );
    			$new_reason  = trim( substr( $this->request['new_reason'], 0, 1 ) );
    			$new_version = $_latest['long'].'.'.$new_build.'.'.$new_reason;
    
    			$this->DB->update( 'upgrade_history', array( 'upgrade_notes' => $new_version ), 'upgrade_version_id='.$latest_version['upgrade_version_id'] );
    
    			$latest_version['upgrade_notes'] = $new_version;
    		}
    
    		//-----------------------------------------
    		// Got real version number?
    		//-----------------------------------------
    
    		ipsRegistry::$version = 'v'.$latest_version['upgrade_version_human'];
    		ipsRegistry::$vn_full = !empty($latest_version['upgrade_notes']) ? $latest_version['upgrade_notes'] : ipsRegistry::$vn_full;
    
    		//-----------------------------------------
    		// Notepad
    		//-----------------------------------------
    
    		if ( $this->request['save'] AND $this->request['save'] == 1 )
    		{
    			$_POST['notes'] = $_POST['notes'] ? $_POST['notes'] : $this->lang->words['cp_acpnotes'];
    			$this->cache->setCache( 'adminnotes', IPSText::stripslashes($_POST['notes']), array( 'donow' => 1, 'array' => 0 ) );
    		}
    
    		$text = $this->lang->words['cp_acpnotes'];
    
    		if ( !$this->cache->getCache('adminnotes') )
    		{
    			$this->cache->setCache( 'adminnotes', $text, array( 'donow' => 1, 'array' => 0 ) );
    		}
    
    		$this->cache->updateCacheWithoutSaving( 'adminnotes', htmlspecialchars($this->cache->getCache('adminnotes'), ENT_QUOTES) );
    		$this->cache->updateCacheWithoutSaving( 'adminnotes', str_replace( "&amp;#", "&#", $this->cache->getCache('adminnotes') ) );
    
    		$content['ad_notes'] = $this->html->acp_notes( $this->cache->getCache('adminnotes') );
    
    		//-----------------------------------------
    		// ADMINS USING CP
    		//-----------------------------------------
    
    		$t_time    = time() - 60*10;
    		$time_now  = time();
    		$seen_name = array();
    		$acponline = "";
    
    		$this->DB->build( array(
    								'select'   => 's.session_member_name, s.session_member_id, s.session_location, s.session_log_in_time, s.session_running_time, s.session_ip_address, s.session_url',
    								'from'     => array( 'core_sys_cp_sessions' => 's' ),
    								'add_join' => array( array(  'select' => 'm.*',
    															'from'   => array( 'members' => 'm' ),
    															'where'  => "m.member_id=s.session_member_id",
    															'type'   => 'left'
    														),
    													 array(  'select' => 'pp.*',
    															'from'   => array( 'profile_portal' => 'pp' ),
    															'where'  => 'pp.pp_member_id=m.member_id',
    															'type'   => 'left'
    														)  )  )	);
    
    		$q = $this->DB->execute();
    
    		while ( $r = $this->DB->fetch( $q ) )
    		{
    			if ( isset($seen_name[ $r['session_member_name'] ]) AND $seen_name[ $r['session_member_name'] ] == 1 )
    			{
    				continue;
    			}
    			else
    			{
    				$seen_name[ $r['session_member_name'] ] = 1;
    			}
    
    			$r['_log_in'] = $time_now - $r['session_log_in_time'];
    			$r['_click']  = $time_now - $r['session_running_time'];
    
    			if ( ($r['_log_in'] / 60) < 1 )
    			{
    				$r['_log_in'] = sprintf("%0d", $r['_log_in']) . ' ' . $this->lang->words['cp_secondsago'];
    			}
    			else
    			{
    				$r['_log_in'] = sprintf("%0d", ($r['_log_in'] / 60) ) . ' ' . $this->lang->words['cp_minutesago'];
    			}
    
    			if ( ($r['_click'] / 60) < 1 )
    			{
    				$r['_click'] = sprintf("%0d", $r['_click']) . ' ' . $this->lang->words['cp_secondsago'];
    			}
    			else
    			{
    				$r['_click'] = sprintf("%0d", ($r['_click'] / 60) ) . ' ' . $this->lang->words['cp_minutesago'];
    			}
    
    			$r['session_location'] = $r['session_location'] ? $r['session_location'] : $this->lang->words['cp_index'];
    			
    			$r['seo_link'] = $this->registry->output->buildSEOUrl( $this->settings['board_url'] . '/index.php?showuser=' . $r['session_member_id'], 'none', $r['members_seo_name'], 'showuser' );
    				
    			$admins_online[] = $r;
    		}
    
    		$content['acp_online'] = $this->html->acp_onlineadmin_wrapper( $admins_online );
    
    		//-----------------------------------------
    		// Members awaiting admin validation?
    		//-----------------------------------------
    
    		if( $this->settings['reg_auth_type'] == 'admin_user' OR $this->settings['reg_auth_type'] == 'admin' )
    		{
    			$where_extra = $this->settings['reg_auth_type'] == 'admin_user' ? ' AND user_verified=1' : '';
    
    			$admin_reg	= $this->DB->buildAndFetch( array( 'select' => 'COUNT(*) as reg'  , 'from' => 'validating', 'where' => 'new_reg=1' . $where_extra ) );
    
    			if( $admin_reg['reg'] > 0 )
    			{
    				// We have some member's awaiting admin validation
    				$data = null;
    
    				$this->DB->build( array(
    											'select' 	=> 'v.*',
    											'from'		=> array( 'validating' => 'v' ),
    											'where'	=> 'new_reg=1' . $where_extra,
    											'limit'	=> array( 3 ),
    											'add_join'	=> array(
    											 					array(
    																		'type'		=> 'left',
    														 				'select'	=> 'm.members_display_name, m.email, m.ip_address',
    														 				'from'		=> array( 'members' => 'm' ),
    														 				'where'		=> 'm.member_id=v.member_id'
    														 			)
    														 		)
    								)	);
    				$this->DB->execute();
    
    				while( $r = $this->DB->fetch() )
    				{
    					if ($r['coppa_user'] == 1)
    					{
    						$r['_coppa'] = ' ( COPPA )';
    					}
    					else
    					{
    						$r['_coppa'] = "";
    					}
    
    					$r['_entry']  = $this->registry->getClass( 'class_localization')->getDate( $r['entry_date'], 'TINY' );
    
    					$data .= $this->html->acp_validating_block( $r );
    
    
    				}
    
    				$content['validating'] = $this->html->acp_validating_wrapper( $data );
    			}
    		}
    		
    		//-----------------------------------------
    		// Info for the stats bar
    		//-----------------------------------------
    
    		$stats	= array(
    						'performance'	=> false,
    						'active_users'	=> 0,
    						'server_load'	=> 0,
    						);
    		
    		$record = $this->cache->getCache('performanceCache');
    
    		if( is_array($record) AND count($record) )
    		{
    		     $stats['performance']	= true;
    		}
    		
    		list( $load, $time )	= explode( '-', $this->caches['systemvars']['loadlimit'] );
    		
    		$time	= time() - ( $this->settings['au_cutoff'] * 60 );
    		
    		$stats['active_users']	= $online['rows'];
    		$stats['server_load']	= $load;
    
    		//-----------------------------------------
    		// Piece it together
    		//-----------------------------------------
    
    		$this->registry->output->html .= $this->html->mainTemplate( $content, $ipsNewsData, $this->getNotificationPanelEntries(), $stats );
    
    		//-----------------------------------------
    		// Left log all on?
    		//-----------------------------------------
    
    		if ( IPS_LOG_ALL === TRUE )
    		{
    			$_html = $this->html->warning_box( $this->lang->words['ds_log_all_title'], $this->lang->words['ds_log_all_desc'] ) . "<br />";
    			$this->registry->output->html = str_replace( '<!--in_dev_check-->', $_html . '<!--in_dev_check-->', $this->registry->output->html );
    		}
    
    		//-----------------------------------------
    		// IN DEV stuff...
    		//-----------------------------------------
    
    		if ( IN_DEV )
    		{
    			$lastUpdate     = $this->caches['indev'];
    			$lastUpdate     = ( is_array( $lastUpdate ) ) ? $lastUpdate : array( 'import' => array( 'settings' => array() ) );
    			$lastModUpdate  = ( is_array( $lastUpdate ) ) ? $lastUpdate : array( 'import' => array( 'modules'  => array() ) );
    			$lastTaskUpdate = ( is_array( $lastUpdate ) ) ? $lastUpdate : array( 'import' => array( 'tasks'    => array() ) );
    			$lastHelpUpdate = ( is_array( $lastUpdate ) ) ? $lastUpdate : array( 'import' => array( 'help'     => array() ) );
    			$lastbbUpdate   = ( is_array( $lastUpdate ) ) ? $lastUpdate : array( 'import' => array( 'bbcode'   => array() ) );
    			$content        = array();
    			$modContent     = array();
    			$tasksContent	= array();
    			$helpContent    = array();
    			$bbContent      = array();
    						$_html          = '';
    
    			foreach( ipsRegistry::$applications as $app_dir => $data )
    			{
    				/* Settings */
    				$lastMtime  = intval( @filemtime( IPSLib::getAppDir( $app_dir ) . '/xml/' . $app_dir . '_settings.xml' ) );
    				$lastDBtime = intval( $lastUpdate['import']['settings'][ $app_dir ] );
    
    				if ( $lastMtime > $lastDBtime )
    				{
    					$_mtime  = $this->registry->getClass( 'class_localization')->getDate( $lastMtime , 'JOINED' );
    					$_dbtime = $this->registry->getClass( 'class_localization')->getDate( $lastDBtime, 'JOINED' );
    
    					$content[] = "<strong>" . $data['app_title'] . " {$this->lang->words['cp_settingsupdated']}.</strong><br />-- {$this->lang->words['cp_lastimportrun']}: {$_dbtime}<br />-- {$this->lang->words['cp_lastxmlexport']}: {$_mtime}";
    				}
    
    				/* Modules */
    				$lastMtime  = intval( @filemtime( IPSLib::getAppDir( $app_dir ) . '/xml/' . $app_dir . '_modules.xml' ) );
    				$lastDBtime = intval( $lastUpdate['import']['modules'][ $app_dir ] );
    
    				if ( $lastMtime > $lastDBtime )
    				{
    					$_mtime  = $this->registry->getClass( 'class_localization')->getDate( $lastMtime , 'JOINED' );
    					$_dbtime = $this->registry->getClass( 'class_localization')->getDate( $lastDBtime, 'JOINED' );
    
    					$modContent[] = "<strong>" . $data['app_title'] . " {$this->lang->words['cp_modulessneedup']}.</strong><br />-- {$this->lang->words['cp_lastimportrun']}: {$_dbtime}<br />-- {$this->lang->words['cp_lastxmlexport']}: {$_mtime}";
    				}
    
    				/* Tasks */
    				$lastMtime  = intval( @filemtime( IPSLib::getAppDir( $app_dir ) . '/xml/' . $app_dir . '_tasks.xml' ) );
    				$lastDBtime = intval( $lastUpdate['import']['tasks'][ $app_dir ] );
    
    				if ( $lastMtime > $lastDBtime )
    				{
    					$_mtime  = $this->registry->getClass( 'class_localization')->getDate( $lastMtime , 'JOINED' );
    					$_dbtime = $this->registry->getClass( 'class_localization')->getDate( $lastDBtime, 'JOINED' );
    
    					$tasksContent[] = "<strong>" . $data['app_title'] . " {$this->lang->words['cp_taskssneedup']}.</strong><br />-- {$this->lang->words['cp_lastimportrun']}: {$_dbtime}<br />-- {$this->lang->words['cp_lastxmlexport']}: {$_mtime}";
    				}
    
    				/* Help Files */
    				$lastMtime  = intval( @filemtime( IPSLib::getAppDir( $app_dir ) . '/xml/' . $app_dir . '_help.xml' ) );
    				$lastDBtime = intval( $lastUpdate['import']['help'][ $app_dir ] );
    
    				if ( $lastMtime > $lastDBtime )
    				{
    					$_mtime  = $this->registry->getClass( 'class_localization')->getDate( $lastMtime , 'JOINED' );
    					$_dbtime = $this->registry->getClass( 'class_localization')->getDate( $lastDBtime, 'JOINED' );
    
    					$helpContent[] = "<strong>" . $data['app_title'] . " {$this->lang->words['cp_helpneedup']}.</strong><br />-- {$this->lang->words['cp_lastimportrun']}: {$_dbtime}<br />-- {$this->lang->words['cp_lastxmlexport']}: {$_mtime}";
    				}
    
    				/* BBCode Files */
    				$lastMtime  = intval( @filemtime( IPSLib::getAppDir( $app_dir ) . '/xml/' . $app_dir . '_bbcode.xml' ) );
    				$lastDBtime = intval( $lastUpdate['import']['bbcode'][ $app_dir ] );
    
    				if ( $lastMtime > $lastDBtime )
    				{
    					$_mtime  = $this->registry->getClass( 'class_localization')->getDate( $lastMtime , 'JOINED' );
    					$_dbtime = $this->registry->getClass( 'class_localization')->getDate( $lastDBtime, 'JOINED' );
    
    					$bbContent[] = "<strong>" . $data['app_title'] . " {$this->lang->words['cp_bbcodeneedup']}.</strong><br />-- {$this->lang->words['cp_lastimportrun']}: {$_dbtime}<br />-- {$this->lang->words['cp_lastxmlexport']}: {$_mtime}";
    				}
    			}
    
    			if ( count( $content ) )
    			{
    				$_html = $this->html->warning_box( $this->lang->words['cp_settingsneedup'], implode( $content, "<br />" ) . "<br /><a href='" . $this->settings['base_url'] . "app=core&amp;module=settings&amp;section=settings&amp;do=settingsImportApps'>{$this->lang->words['cp_clickhere']}</a> {$this->lang->words['cp_clickhere_info']}.");
    			}
    
    			if ( count( $modContent ) )
    			{
    				$_html .= $this->html->warning_box( $this->lang->words['cp_modulessneedup'], implode( $modContent, "<br />" ) . "<br /><a href='" . $this->settings['base_url'] . "app=core&amp;module=applications&amp;section=applications&amp;do=inDevRebuildAll'>{$this->lang->words['cp_clickhere']}</a> {$this->lang->words['cp_clickhere_info']}.");
    			}
    
    			if ( count( $tasksContent ) )
    			{
    				$_html .= $this->html->warning_box( $this->lang->words['cp_taskssneedup'], implode( $tasksContent, "<br />" ) . "<br /><a href='" . $this->settings['base_url'] . "app=core&amp;module=system&amp;section=taskmanager&amp;do=tasksImportAllApps'>{$this->lang->words['cp_clickhere']}</a> {$this->lang->words['cp_clickhere_info']}.");
    			}
    
    			if ( count( $helpContent ) )
    			{
    				$_html .= $this->html->warning_box( $this->lang->words['cp_helpneedup'], implode( $helpContent, "<br />" ) . "<br /><a href='" . $this->settings['base_url'] . "app=core&amp;module=tools&amp;section=help&amp;do=importXml'>{$this->lang->words['cp_clickhere']}</a> {$this->lang->words['cp_clickhere_info']}.");
    			}
    
    			if ( count( $bbContent ) )
    			{
    				$_html .= $this->html->warning_box( $this->lang->words['cp_bbcodeneedup'], implode( $bbContent, "<br />" ) . "<br /><a href='" . $this->settings['base_url'] . "app=core&amp;module=posts&amp;section=bbcode&amp;do=bbcode_import_all'>{$this->lang->words['cp_clickhere']}</a> {$this->lang->words['cp_clickhere_info']}.");
    			}
    
    			$this->registry->output->html = str_replace( '<!--in_dev_check-->', $_html, $this->registry->output->html );
    			
    			/* Got notes!? */
    			if ( is_file( DOC_IPS_ROOT_PATH . '_dev_notes.txt' ) )
    			{
    				/* file retains tabs, file_get_contents not! */
    				$_notes = file( DOC_IPS_ROOT_PATH . '_dev_notes.txt' );
    				
    				if ( $_notes )
    				{
    					/* sanitize data and convert tabs! */
    					//$_notes = array_map( 'htmlentities', $_notes );
    					$_notes = implode( '', $_notes );
    					$_notes = str_replace( "\t", '&nbsp;&nbsp;&nbsp;&nbsp;', $_notes );
    					
    					$_html = $this->registry->output->global_template->warning_box( $this->lang->words['cp_devnotes'], nl2br($_notes) ) . "<br />";
    					$this->registry->output->html = str_replace( '<!--in_dev_notes-->', $_html, $this->registry->output->html );
    				}
    			}
    		}
    
    		//-----------------------------------------
    		// Last 5 log in attempts
    		//-----------------------------------------
    
    		$this->registry->getClass('class_permissions')->return	= true;
    
    		if( $this->registry->getClass('class_permissions')->checkPermission( 'acplogin_log', 'core', 'logs' ) )
    		{
    			$this->DB->build( array(
    										'select' => '*',
    										'from'   => 'admin_login_logs',
    										'where'	 => 'admin_success = 0 AND admin_time > 0',		// This just helps mysql use the index properly, which is useful for sorting
    										'order'  => 'admin_time DESC',
    										'limit'  => array( 0, 4 )
    							)	);
    
    			$this->DB->execute();
    
    			while ( $rowb = $this->DB->fetch() )
    			{
    				$rowb['_admin_time'] = $this->registry->class_localization->getDate( $rowb['admin_time'], 'long' );
    
    				$logins .= $this->html->acp_last_logins_row( $rowb );
    			}
    			
    			$this->registry->output->html = str_replace( '<!--acplogins-->', $this->html->acp_last_logins_wrapper( $logins ), $this->registry->output->html );
    		}
    
    		//-----------------------------------------
    		// Pass to CP output hander
    		//-----------------------------------------
    
    		$this->registry->getClass('output')->html_main .= $this->registry->getClass('output')->global_template->global_frame_wrapper();
    		$this->registry->getClass('output')->sendOutput();
    	}
    	
    	/**
    	 * Builds a list of nag panel entries
    	 *
    	 * @return	array
    	 */
    	public function getNotificationPanelEntries()
    	{
    		/* INIT */
    		$entries = array();
    		
    		/* Look for notification classes */
    		foreach( IPSLib::getEnabledApplications() as $r )
    		{
    			/* Notification Class */
    			$_file	= IPSLib::getAppDir( $r['app_directory'] ) . '/extensions/dashboardNotifications.php';
    			
    			/* Look for the file */
    			if( is_file( $_file ) )
    			{
    				/* Get the file */
    				$_class = IPSLib::loadLibrary( $_file, 'dashboardNotifications__' . $r['app_directory'], $r['app_directory'] );
    				
    				/* Look for the class */
    				if( class_exists( $_class ) )
    				{
    					/* Create the object */
    					$notifyObj = new $_class;
    					
    					/* Look for the method */
    					if( method_exists( $notifyObj, 'get' ) )
    					{
    						/* Get the entries */
    						$_entries = $notifyObj->get();
    						
    						if( is_array( $_entries ) && count( $_entries ) )
    						{
    							$entries = array_merge( $entries, $_entries );
    						}
    					}
    				}
    			}
    		}
    
    		/* Return entries */
    		return $entries;
    	}
    }


    Swoją drogą nie myślałeś o aktualizacji IPB do najnowszego IPS?

  2. Zmiany w wyglądzie na pewno na duży plusik, ale co do tych cen no to troszkę przesadzili. Mogliby dodać odnowienie na 6 m-cy i roczne wtedy ludzie mieliby wybór bo nie oszukujmy się, ale licencja sama w sobie jest droga jak i dodatki do niej, a jeszcze by strona jakkolwiek działała trzeba też dokupić niektóre wtyczki/apki.

    • Lubię to 1
  3. Tak na szybko dopasuje to pod wasz motyw..

    Możesz dodać do custom.css

    .cAuthorPane_badge:not( .cAuthorPane_badge--rank ) {
        background: #e4183c;
        border: 2px solid rgb( var(--theme-area_background_reset) );
        border-radius: 50%;
    }
    .ipsButton_split > li > .ipsButton {
        border-radius: inherit;
        font-size: 13.0px;
        line-height: 2.83;
        padding: 0 18px;
    }

    EFEKT:
     

    Spoiler

    image.png.1a666366014b6ac804290114dfa7cf80.pngimage.png.8ea8fa7536f97f2d1384bdc60d98087e.png




    Wtyczkę profile song lepiej by zaktualizować do najnowszej wersji IPS 4.6 bo sądząc po buttonie jest przestarzała, ale kod powinien pomóc.

    • Lubię to 2
  4. W dniu 8.07.2021 o 22:10, slu12345 napisał:

    mówisz lepiej? to jak to zrobić bo już zapomniałem 

    Tworzysz pocztę na swoim hostingu, a następnie wpisujesz odpowiednie rzeczy w odpowiednie miejsca

     

    Spoiler

    image.thumb.png.ad50c2c079264560da54d0fec064cd93.png

    Host, nazwę użytkownika i hasło coś w stylu jak byś wpisywał dane do połączenia się z FTP ;) 

  5. 5 godzin temu, slu12345 napisał:

    czyli wychodzi, że użytkownik czasem nie dostrzeże maila potwierdzającego? bo może do spamu np trafić ?...

    Może trafić do spamu zależy od poczty.


    Tak tylko dodam nie lepiej było by ci zmienić metodę wysyłania wiadomości e-mail na SMTP? Wtedy e-maile szybciej się wysyłają i ogólnie jest lepiej.

    • Lubię to 1
  6. 5 godzin temu, PawelZerebiec napisał:

    Po zaktualizowaniu spolszczenia do najnowszego nie mam wszystkich tlumaczen, przy najnowszej wersji 4.6 nie przetlumaczylo zadnych rang. Wgrac osobno poza marketplace?

    Tłumaczenie nie obejmuje rang. Musisz sam je przetłumaczyć.

    • Lubię to 2
  7. 6 godzin temu, SeNioR napisał:

    Ale to trochę bez sensu nie uważasz? :) Jeżeli jest taka "rzadka" to dlaczego wszyscy userzy przy wszystkich odznakach mają oznaczone odznaki jako "Rzadki". :) 

     

    Plakietka "Rzadki" powinno się wyświetlać przy odznakach trudnych do zdobycia np. 100 punktów reputacji a przy np. "Rozpoczęcie dyskusji" (bo zapewne jest większy odsetek userów z 1 napisanym postem) plakietki nie powinno być. Możliwe że to kwestia ustawień albo coś przy przebudowywaniu poszło nie tak.

    Ja po zaktualizowaniu forum na początku miałem identycznie. Każdy użytkownik miał plakietkę "Rzadki" po czasie jak kilka osób zdobyło tę samą odznakę plakietka "Rzadki" znikła i jest tylko przy odznakach, które posiada mało użytkowników. To już chyba zależy od aktywności użytkowników. :) 
     

    • Lubię to 2
  8. 7 minut temu, aXen napisał:

    Gdyby takie podejście miał każdy programista, to nic by nie było w markecie.

    W sumie to masz rację chodziło mi bardziej o to czy taki mod będzie potrzebny komuś coś w tym stylu.

    W takim razie nie będę nic zmieniał w plikach IPS jeżeli będę miał chwilę czasu to stworzę mod nadpisujący to.

     

  9. 2 godziny temu, SeNioR napisał:

    Coś z oznakami jest chyba nie tak.

     

    Przy każdej odznace pokazuje "rzadki" a nie taki jest zamysł tej opcji.

     

    Otrzymałem odznakę "Rozpoczęcie rozmowy prywatnej" tylko problem w tym że nie rozpocząłem jeszcze żadnej rozmowy prywatnej, jak i nie otrzymałem żadnego PW.

    Tą odznakę otrzymuje się za napisanie pierwszego tematu z tego co zauważyłem więc albo to jest błąd w tłumaczeniu albo po prostu błąd w przyznawaniu odznak.

    Co do napisu "rzadki" przy każdej jest to spowodowane tym, że mało osób ma tą odznakę i jest rzadko spotykana bynajmniej moim zdaniem.

     

  10. W dniu 18.04.2021 o 15:24, DawPi napisał:

    Tak czy siak to nie wina forum.

    To nie była wina forum, cf ale też nie żadnych ustawień domeny.
    Miałem jakąś wtyczkę, która sprawdza IP coś podobnego do tego jak dodatek aktywnej licencji AntySpam i po prostu coś się w niej zepsuło. I wtyczka zaczęła szaleć blokując dostęp do strony. Przez to miałem błąd od CF "522 Connection Timed Out".

    • Lubię to 1
  11. Od 3 dni mam problem z ładowaniem się strony, ale nie wiem czy problem leży po stronie cloudflare czy po stronie skryptu. Było dobrze od samego początku i ostatnio chciałem wejść na forum po czym pokazał mi się błąd 
     

    Cytat

    image.thumb.png.ec2b42c9f4c3ff3bed6a89829a4a7ab2.png

    Najlepsze jest to, że podobno u każdego działa normalnie, a u mnie strona nie chcę się załadować poprawnie raz działa, a raz nie. Czyściłem ciasteczka próbowałem z inną przeglądarką sprawdzałem też na telefonie, ale bez efektu dodam tylko, że ludzie się skarżą na długość ładowania strony, ale po napisaniu do hostingu otrzymałem wiadomość że u nich wszystko jest w porządku. Gdy wyłączę cloudflare na stronie mogę wejść do ACP forum działa normalnie.

  12. 6 minut temu, MichaelKosa napisał:

    Tam gdzie masz IP tam musisz podać ID serwera, nie podajesz go w nazwie Custom name, z tego co widzę trochę chyba pousuwałeś z kodu pewne kody i brakuje plików pewnie, stąd takie działanie pluginu

    Nie, nie usuwałem żadnych kodów, ale dobra pojawił się po podmianie tego pliku o którym pisałeś chociaż nie od razu.

    Cytat

    image.thumb.png.1f94a8d01f439ea0ba2aa25c41d7408f.png

    Dodane mam tak jak powinno być

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.