calendar.php

来自「sabreipb 2.1.6 utf-8中文版本!」· PHP 代码 · 共 1,905 行 · 第 1/5 页

PHP
1,905 行
字号
		//-----------------------------------------				if ( ! checkdate( $month, $day , $year ) )        {			$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'cal_date_oor') );		}				$this->output .= $this->ipsclass->compiled_templates['skin_calendar']->cal_page_events_start();                //-----------------------------------------        // Get the events        //-----------------------------------------                $this->get_events_sql($month, $year);                $events = $this->get_day_events( $month, $day, $year );        				if ( is_array( $events ) AND count( $events ) )		{			foreach( $events as $idx => $event )			{ 				if ( ! $this->shown_events[ $month.'-'.$day.'-'.$year ][ $event['event_id'] ] )				{					//-----------------------------------------					// Is it a private event?					//-----------------------------------------										if ( $event['event_private'] == 1 and $this->ipsclass->member['id'] != $event['event_member_id'] )					{						continue;					}										//-----------------------------------------					// Do we have permission to see the event?					//-----------------------------------------										if ( $event['event_perms'] != '*' )					{						if ( ! preg_match( "/(^|,)".$this->ipsclass->member['mgroup']."(,|$)/", $event['event_perms'] ) )						{							continue;						}					}										if ( ! $seen_ids[ $event['eventid'] ] )					{						$this->output .= $this->make_event_html($event);											$printed++;						$seen_ids[ $event['event_id'] ] = 1;					}				}			}		}        //-----------------------------------------        // Do we have any printed events?        //-----------------------------------------                if ($printed > 0)        {        	$switch = 1;        }        else        {        	// Error if no birthdays        	$switch = 0;        }                $this->output .= $this->make_birthday_html($month, $day, $switch);                $this->output .= $this->ipsclass->compiled_templates['skin_calendar']->cal_page_events_end();                $this->nav[] = "<a href='{$this->ipsclass->base_url}act=calendar'>{$this->ipsclass->lang['page_title']}</a>";		$this->nav[] = $day." ".$this->month_words[$this->chosen_month - 1]." ".$this->chosen_year;    }		/*-------------------------------------------------------------------------*/    // SHOW A SINGLE EVENT BASED ON eventid    /*-------------------------------------------------------------------------*/        function show_event()    {		//-----------------------------------------		// INIT		//-----------------------------------------		         $event_id = intval($this->ipsclass->input['event_id']);				//-----------------------------------------		// CHECK		//-----------------------------------------				if ( ! $event_id )		{			$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'cal_no_events') );		}				//-----------------------------------------		// Get it from the DB		//-----------------------------------------                $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'cal_events', 'where' => "event_id=$event_id" ) );		$this->ipsclass->DB->simple_exec();                if ( ! $event = $this->ipsclass->DB->fetch_row() )        {        	$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'cal_no_events') );        }                $set_offset = 0;        if( $event['event_timeset'] )		{			$set_offset = $this->ipsclass->member['time_offset'] * 3600;		}                        $event['event_unix_from'] = $event['event_unix_from'] - $set_offset;        //$event['event_unix_to'] = $event['event_unix_to'] ? $event['event_unix_to'] + ( $this->ipsclass->member['time_offset'] * 3600 ) : 0;                //-----------------------------------------        // Is it a private event?        //-----------------------------------------                if ( $event['event_private'] == 1 and $this->ipsclass->member['id'] != $event['event_member_id'] )        {        	$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'cal_no_events') );        }                //-----------------------------------------        // Do we have permission to see the event?        //-----------------------------------------                if ( $event['event_perms'] != '*' )		{			if ( ! preg_match( "/(^|,)".$this->ipsclass->member['mgroup']."(,|$)/", $event['event_perms'] ) )			{				$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'cal_no_events') );			}		}                $this->output .= $this->ipsclass->compiled_templates['skin_calendar']->cal_page_events_start() . $this->make_event_html($event) . $this->ipsclass->compiled_templates['skin_calendar']->cal_page_events_end();                $this->nav[] = "<a href='{$this->ipsclass->base_url}act=calendar'>{$this->ipsclass->lang['page_title']}</a>";		$this->nav[] = $event['title'];            }        /*-------------------------------------------------------------------------*/    // MAKE EVENT HTML (return HTML for bdays)    /*-------------------------------------------------------------------------*/        function make_event_html($event)    {    	$approve_button = "";    	        //-----------------------------------------        // Parse the text        //-----------------------------------------        		$this->post->parser->parse_smilies = $event['event_smilies'];		$this->post->parser->parse_html    = 0;		$this->post->parser->parse_bbcode  = 1;		        $event['event_content'] = $this->post->parser->pre_display_parse( $this->post->parser->pre_db_parse( $event['event_content'] ) );				//-----------------------------------------        // What kind of event is it?        //-----------------------------------------                $event_type = $this->ipsclass->lang['public_event'];                if ($event['event_private'] == 1)        {        	$event_type = $this->ipsclass->lang['private_event'];        }        else if ($event['event_perms'] != '*')        {        	$event_type = $this->ipsclass->lang['restricted_event'];        }                //-----------------------------------------        // Do we have an edit button?        //-----------------------------------------                $edit_button = "";                //-----------------------------------------        // Are we a super dooper moderator?        //-----------------------------------------                if ( $this->ipsclass->member['g_is_supmod'] == 1 )        {        	$edit_button = $this->ipsclass->compiled_templates['skin_calendar']->cal_edit_del_button($event['event_id'], $event['event_calendar_id']);        }                //-----------------------------------------        // Are we the OP of this event?        //-----------------------------------------                else if ( $this->ipsclass->member['id'] == $event['event_member_id'] )        {        	$edit_button = $this->ipsclass->compiled_templates['skin_calendar']->cal_edit_del_button($event['event_id'], $event['event_calendar_id']);        }                //-----------------------------------------        // Get the member details and stuff        //-----------------------------------------                $this->ipsclass->DB->cache_add_query( 'generic_get_all_member', array( 'mid' => $event['event_member_id'] ) );		$this->ipsclass->DB->cache_exec_query();		        $member = $this->ipsclass->DB->fetch_row();                $member = $this->topiclib->parse_member( $member );                //-----------------------------------------        // Date        //-----------------------------------------                $set_offset = 0;        if( $event['event_timeset'] )		{			$set_offset = $this->ipsclass->member['time_offset'] * 3600;		}	                        $tmp  = explode( ',', gmdate( 'n,j,Y', $event['event_unix_from'] - $set_offset ) );                $event['mday']       = $tmp[1];        $event['month']      = $tmp[0];        $event['year']       = $tmp[2];        $event['month_text'] = $this->month_words[ $tmp[0] - 1 ];                $this->ipsclass->input['d'] = $event['mday'];        $this->ipsclass->input['m'] = $event['month'];        $this->ipsclass->input['y'] = $event['year'];                $type = $this->ipsclass->lang['se_normal'];        $de   = "";                if ( $event['event_recurring'] == 0 AND $event['event_unix_to'] )        {        	$type = $this->ipsclass->lang['se_range'];        	$de   = $this->ipsclass->lang['se_ends'].' '.gmdate( $this->ipsclass->vars['clock_joined'], $event['event_unix_to'] );        }        else if ( $event['event_recurring'] == 1 )        {        	$type = $this->ipsclass->lang['se_recur'];        	$de   = $this->ipsclass->lang['se_ends'].' '.gmdate( $this->ipsclass->vars['clock_joined'], $event['event_unix_to'] - $set_offset );        }                //-----------------------------------------        // Moderated?        //-----------------------------------------                $event['_quicktime'] = intval($event['month']).'-'.intval($event['mday']).'-'.intval( $event['year']);                if ( $this->can_moderate )        {			if ( ! $event['event_approved'] )			{				$event['_event_css_1'] = 'row2shaded';				$event['_event_css_2'] = 'row4shaded';				$approve_button = $this->ipsclass->compiled_templates['skin_calendar']->cal_approve_button($event['event_id'], $event['event_calendar_id'], $event);			}			else			{				$event['_event_css_1'] = 'row1';				$event['_event_css_2'] = 'row2';				$approve_button = $this->ipsclass->compiled_templates['skin_calendar']->cal_unapprove_button($event['event_id'], $event['event_calendar_id'], $event);			}        }        else        {        	$event['_event_css_1'] = 'row1';			$event['_event_css_2'] = 'row2';		}		        //-----------------------------------------        // Show        //-----------------------------------------                return $this->ipsclass->compiled_templates['skin_calendar']->cal_show_event($event, $member, $event_type, $edit_button, $approve_button, $type, $de );    }        /*-------------------------------------------------------------------------*/    // GET MINI CALENDAR    /*-------------------------------------------------------------------------*/        function get_mini_calendar($month, $year)    {        foreach ($this->day_words as $day)        {        	$cal_output .= $this->ipsclass->compiled_templates['skin_calendar']->mini_cal_day_bit( $day,0,1) ;        }                //-----------------------------------------        // Print the main calendar body        //-----------------------------------------                $cal_output .= $this->get_month_events( $month, $year, 1 );                return $this->ipsclass->compiled_templates['skin_calendar']->mini_cal_mini_wrap($this->month_words[$month - 1], $month, $year, $cal_output);    }        /*-------------------------------------------------------------------------*/    // Get BIRTHDAYS    /*-------------------------------------------------------------------------*/        function get_birthday_sql($month)    {    	if ( ! is_array( $this->query_bday_cache[ $month ] ) )		{			$this->query_bday_cache[ $month ] = array();						$this->ipsclass->DB->simple_construct( array( 'select' => 'bday_day, bday_month, id, members_display_name', 'from' => 'members', 'where' => 'bday_month='.$month ) );			$this->ipsclass->DB->simple_exec();						while ($r = $this->ipsclass->DB->fetch_row())			{				$this->query_bday_cache[ $month ][ $r['bday_day'] ][] = $r;			}		}    }        /*-------------------------------------------------------------------------*/    // Get EVENTS    /*-------------------------------------------------------------------------*/       function get_events_sql( $month=0, $year=0, $get_cached=array() )    {    	//-----------------------------------------    	// INIT    	//-----------------------------------------    	    	if ( ! count( $get_cached ) )    	{			$next_month = $this->get_next_month( $month, $year );			$numberdays = date('j', mktime(0, 0, 0, $next_month['month_id'], 1, $next_month['year_id'] ) );			$timenow    = gmmktime( 0, 0, 1   , $month                 , 1, $year) - (12 * 3600);			$timethen   = gmmktime( 23, 59, 59, $next_month['month_id'], $numberdays, $next_month['year_id']) + (12 * 3600);			$getcached  = 0;        }        else        {       		$timenow    = $get_cached['timenow'];       		$timethen   = $get_cached['timethen'];       		list( $month, $day, $year ) = explode( ',', gmdate('n,j,Y', $get_cached['timenow']) );       		$getcached  = 1;		}				//-----------------------------------------        // Get the events        //-----------------------------------------                if ( ! is_array( $this->event_cache[ $month ] ) )		{			//-----------------------------------------			// Get for cache			//-----------------------------------------						if ( $getcached )			{				$extra = $get_cached['cal_id'] ? "event_calendar_id=".intval($get_cached['cal_id'])." AND " : '';				$this->ipsclass->DB->simple_construct( array( 'select' => '*',															  'from'   => 'cal_events',															  'where'  => "$extra event_approved=1																		   AND ( (event_unix_to >= $timenow AND event_unix_from <= $timethen )																			  OR ( event_unix_to=0 AND event_unix_from >= $timenow AND event_unix_from <= $timethen ) )" ) );				$this->ipsclass->DB->simple_exec();			}			else			{				//-----------------------------------------				// Get for display				//-----------------------------------------				$approved = $this->can_moderate ? "event_approved IN (0,1)" : "event_approved=1";								$this->ipsclass->DB->simple_construct( array( 'select' => '*'

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?