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 + -
显示快捷键?