| [ Index ] |
PHP Cross Reference of MyBB 1.8.40 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * MyBB 1.8 4 * Copyright 2014 MyBB Group, All Rights Reserved 5 * 6 * Website: http://www.mybb.com 7 * License: http://www.mybb.com/about/license 8 * 9 */ 10 11 define("IN_MYBB", 1); 12 define('THIS_SCRIPT', 'calendar.php'); 13 14 $templatelist = "calendar_weekdayheader,calendar_weekrow_day,calendar_weekrow,calendar,calendar_addevent,calendar_year,calendar_day,calendar_select,calendar_repeats,calendar_weekview_day_event_time,calendar_weekview_nextlink"; 15 $templatelist .= ",calendar_weekview_day,calendar_weekview_day_event,calendar_mini_weekdayheader,calendar_mini_weekrow_day,calendar_mini_weekrow,calendar_mini,calendar_mini_weekrow_day_link,calendar_weekview_prevlink"; 16 $templatelist .= ",calendar_event_editbutton,calendar_event_modoptions,calendar_dayview_event,calendar_dayview,codebuttons,calendar_weekrow_day_events,calendar_weekview_month,calendar_addeventlink,calendar_weekview"; 17 $templatelist .= ",calendar_jump,calendar_jump_option,calendar_editevent,calendar_dayview_birthdays_bday,calendar_dayview_birthdays,calendar_dayview_noevents,calendar_addevent_calendarselect_hidden,calendar_nextlink"; 18 $templatelist .= ",calendar_weekrow_day_birthdays,calendar_weekview_day_birthdays,calendar_year_sel,calendar_event_userstar,calendar_addevent_calendarselect,calendar_eventbit,calendar_event,calendar_move,calendar_prevlink"; 19 20 require_once "./global.php"; 21 require_once MYBB_ROOT."inc/functions_calendar.php"; 22 require_once MYBB_ROOT."inc/functions_post.php"; 23 require_once MYBB_ROOT."inc/functions_time.php"; 24 require_once MYBB_ROOT."inc/class_parser.php"; 25 $parser = new postParser; 26 27 // Load global language phrases 28 $lang->load("calendar"); 29 30 if($mybb->settings['enablecalendar'] == 0) 31 { 32 error($lang->calendar_disabled); 33 } 34 35 if($mybb->usergroup['canviewcalendar'] == 0) 36 { 37 error_no_permission(); 38 } 39 40 $monthnames = array( 41 "offset", 42 $lang->alt_month_1, 43 $lang->alt_month_2, 44 $lang->alt_month_3, 45 $lang->alt_month_4, 46 $lang->alt_month_5, 47 $lang->alt_month_6, 48 $lang->alt_month_7, 49 $lang->alt_month_8, 50 $lang->alt_month_9, 51 $lang->alt_month_10, 52 $lang->alt_month_11, 53 $lang->alt_month_12 54 ); 55 56 $plugins->run_hooks("calendar_start"); 57 58 // Make navigation 59 add_breadcrumb($lang->nav_calendar, "calendar.php"); 60 61 $mybb->input['calendar'] = $mybb->get_input('calendar', MyBB::INPUT_INT); 62 $calendars = cache_calendars(); 63 64 $calendar_jump = ''; 65 if(count($calendars) > 1) 66 { 67 $calendar_jump = build_calendar_jump($mybb->input['calendar']); 68 } 69 70 $mybb->input['action'] = $mybb->get_input('action'); 71 // Add an event 72 if($mybb->input['action'] == "do_addevent" && $mybb->request_method == "post") 73 { 74 $query = $db->simple_select("calendars", "*", "cid='{$mybb->input['calendar']}'"); 75 $calendar = $db->fetch_array($query); 76 77 // Invalid calendar? 78 if(!$calendar) 79 { 80 error($lang->invalid_calendar); 81 } 82 83 // Do we have permission to view this calendar or post events? 84 $calendar_permissions = get_calendar_permissions($calendar['cid']); 85 if($calendar_permissions['canviewcalendar'] != 1 || $calendar_permissions['canaddevents'] != 1) 86 { 87 error_no_permission(); 88 } 89 90 // Verify incoming POST request 91 verify_post_check($mybb->get_input('my_post_key')); 92 93 $plugins->run_hooks("calendar_do_addevent_start"); 94 95 // Set up event handler. 96 require_once MYBB_ROOT."inc/datahandler.php"; 97 require_once MYBB_ROOT."inc/datahandlers/event.php"; 98 $eventhandler = new EventDataHandler("insert"); 99 100 $mybb->input['type'] = $mybb->get_input('type'); 101 102 // Prepare an array for the eventhandler. 103 $event = array( 104 "cid" => $calendar['cid'], 105 "uid" => $mybb->user['uid'], 106 "name" => $mybb->get_input('name'), 107 "description" => $mybb->get_input('description'), 108 "private" => $mybb->get_input('private', MyBB::INPUT_INT), 109 "type" => $mybb->input['type'] 110 ); 111 112 // Now we add in our date/time info depending on the type of event 113 if($mybb->input['type'] == "single") 114 { 115 $event['start_date'] = array( 116 "day" => $mybb->get_input('single_day', MyBB::INPUT_INT), 117 "month" => $mybb->get_input('single_month', MyBB::INPUT_INT), 118 "year" => $mybb->get_input('single_year', MyBB::INPUT_INT) 119 ); 120 $event['repeats'] = ''; 121 } 122 else if($mybb->input['type'] == "ranged") 123 { 124 $event['start_date'] = array( 125 "day" => $mybb->get_input('start_day', MyBB::INPUT_INT), 126 "month" => $mybb->get_input('start_month', MyBB::INPUT_INT), 127 "year" => $mybb->get_input('start_year', MyBB::INPUT_INT), 128 "time" => $mybb->get_input('start_time') 129 ); 130 $event['end_date'] = array( 131 "day" => $mybb->get_input('end_day', MyBB::INPUT_INT), 132 "month" => $mybb->get_input('end_month', MyBB::INPUT_INT), 133 "year" => $mybb->get_input('end_year', MyBB::INPUT_INT), 134 "time" => $mybb->get_input('end_time') 135 ); 136 $event['timezone'] = $mybb->get_input('timezone'); 137 $event['ignoretimezone'] = $mybb->get_input('ignoretimezone', MyBB::INPUT_INT); 138 $repeats = array(); 139 switch($mybb->input['repeats']) 140 { 141 case 1: 142 $repeats['repeats'] = 1; 143 $repeats['days'] = $mybb->get_input('repeats_1_days', MyBB::INPUT_INT); 144 break; 145 case 2: 146 $repeats['repeats'] = 2; 147 break; 148 case 3: 149 $repeats['repeats'] = 3; 150 $repeats['weeks'] = $mybb->get_input('repeats_3_weeks', MyBB::INPUT_INT); 151 $mybb->input['repeats_3_days'] = $mybb->get_input('repeats_3_days', MyBB::INPUT_ARRAY); 152 ksort($mybb->input['repeats_3_days']); 153 $days = array(); 154 foreach($mybb->input['repeats_3_days'] as $weekday => $value) 155 { 156 if($value != 1) 157 { 158 continue; 159 } 160 $days[] = $weekday; 161 } 162 $repeats['days'] = $days; 163 break; 164 case 4: 165 $repeats['repeats'] = 4; 166 if($mybb->get_input('repeats_4_type', MyBB::INPUT_INT) == 1) 167 { 168 $repeats['day'] = $mybb->get_input('repeats_4_day', MyBB::INPUT_INT); 169 $repeats['months'] = $mybb->get_input('repeats_4_months', MyBB::INPUT_INT); 170 } 171 else 172 { 173 $repeats['months'] = $mybb->get_input('repeats_4_months2', MyBB::INPUT_INT); 174 $repeats['occurance'] = $mybb->get_input('repeats_4_occurance'); 175 $repeats['weekday'] = $mybb->get_input('repeats_4_weekday', MyBB::INPUT_INT); 176 } 177 break; 178 case 5: 179 $repeats['repeats'] = 5; 180 if($mybb->get_input('repeats_5_type', MyBB::INPUT_INT) == 1) 181 { 182 $repeats['day'] = $mybb->get_input('repeats_5_day', MyBB::INPUT_INT); 183 $repeats['month'] = $mybb->get_input('repeats_5_month', MyBB::INPUT_INT); 184 $repeats['years'] = $mybb->get_input('repeats_5_years', MyBB::INPUT_INT); 185 } 186 else 187 { 188 $repeats['occurance'] = $mybb->get_input('repeats_5_occurance'); 189 $repeats['weekday'] = $mybb->get_input('repeats_5_weekday', MyBB::INPUT_INT); 190 $repeats['month'] = $mybb->get_input('repeats_5_month2', MyBB::INPUT_INT); 191 $repeats['years'] = $mybb->get_input('repeats_5_years', MyBB::INPUT_INT); 192 } 193 break; 194 default: 195 $repeats['repeats'] = 0; 196 } 197 $event['repeats'] = $repeats; 198 } 199 200 $eventhandler->set_data($event); 201 202 // Now let the eventhandler do all the hard work. 203 if(!$eventhandler->validate_event()) 204 { 205 $event_errors = $eventhandler->get_friendly_errors(); 206 $event_errors = inline_error($event_errors); 207 $mybb->input['action'] = "addevent"; 208 } 209 else 210 { 211 $details = $eventhandler->insert_event(); 212 $plugins->run_hooks("calendar_do_addevent_end"); 213 if($details['visible'] == 1) 214 { 215 redirect(get_event_link($details['eid']), $lang->redirect_eventadded); 216 } 217 else 218 { 219 redirect(get_calendar_link($event['cid']), $lang->redirect_eventadded_moderation); 220 } 221 } 222 } 223 224 if($mybb->input['action'] == "addevent") 225 { 226 $query = $db->simple_select("calendars", "*", "cid='".$mybb->input['calendar']."'"); 227 $calendar = $db->fetch_array($query); 228 229 // Invalid calendar? 230 if(!$calendar) 231 { 232 error($lang->invalid_calendar); 233 } 234 235 // Do we have permission to view this calendar or post events? 236 $calendar_permissions = get_calendar_permissions($calendar['cid']); 237 if($calendar_permissions['canviewcalendar'] != 1 || $calendar_permissions['canaddevents'] != 1) 238 { 239 error_no_permission(); 240 } 241 242 add_breadcrumb(htmlspecialchars_uni($calendar['name']), get_calendar_link($calendar['cid'])); 243 add_breadcrumb($lang->nav_addevent); 244 245 $plugins->run_hooks("calendar_addevent_start"); 246 247 // If MyCode is on for this forum and the MyCode editor is enabled inthe Admin CP, draw the code buttons and smilie inserter. 248 if($mybb->settings['bbcodeinserter'] != 0 && (!$mybb->user['uid'] || $mybb->user['showcodebuttons'] != 0) && $calendar['allowmycode'] == 1) 249 { 250 $codebuttons = build_mycode_inserter("message", $calendar['allowsmilies']); 251 if($calendar['allowsmilies'] == 1) 252 { 253 $smilieinserter = build_clickable_smilies(); 254 } 255 } 256 257 // Previous selections 258 $name = $description = ''; 259 if(isset($mybb->input['name'])) 260 { 261 $name = htmlspecialchars_uni($mybb->get_input('name')); 262 } 263 264 if(isset($mybb->input['description'])) 265 { 266 $description = htmlspecialchars_uni($mybb->get_input('description')); 267 } 268 269 $single_month = $start_month = $end_month = $repeats_sel = $repeats_3_days = $repeats_4_occurance = $repeats_4_weekday = $repeats_5_month = $repeats_5_occurance = $repeats_5_weekday = $repeats_5_month2 = array(); 270 foreach(range(1, 12) as $number) 271 { 272 $single_month[$number] = $start_month[$number] = $end_month[$number] = $repeats_5_month[$number] = $repeats_5_month2[$number] = ''; 273 } 274 foreach(range(1, 5) as $number) 275 { 276 $repeats_sel[$number] = ''; 277 } 278 foreach(range(0, 6) as $number) 279 { 280 $repeats_3_days[$number] = $repeats_4_weekday[$number] = $repeats_5_weekday[$number] = ''; 281 } 282 foreach(range(1, 4) as $number) 283 { 284 $repeats_4_occurance[$number] = $repeats_5_occurance[$number] = ''; 285 } 286 $repeats_4_occurance['last'] = $repeats_5_occurance['last'] = ''; 287 $repeats_4_type = array(1 => '', 2 => ''); 288 $repeats_5_type = array(1 => '', 2 => ''); 289 290 if($mybb->request_method == "post") 291 { 292 $single_day = $mybb->get_input('single_day', MyBB::INPUT_INT); 293 $single_month[$mybb->get_input('single_month', MyBB::INPUT_INT)] = " selected=\"selected\""; 294 $single_year = $mybb->get_input('single_year', MyBB::INPUT_INT); 295 $start_day = $mybb->get_input('start_day', MyBB::INPUT_INT); 296 $start_month[$mybb->get_input('start_month', MyBB::INPUT_INT)] = " selected=\"selected\""; 297 $start_year = $mybb->get_input('start_year', MyBB::INPUT_INT); 298 $start_time = htmlspecialchars_uni($mybb->get_input('start_time')); 299 $end_day = $mybb->get_input('end_day', MyBB::INPUT_INT); 300 $end_month[$mybb->get_input('end_month', MyBB::INPUT_INT)] = " selected=\"selected\""; 301 $end_year = $mybb->get_input('end_year', MyBB::INPUT_INT); 302 $end_time = htmlspecialchars_uni($mybb->get_input('end_time')); 303 if($mybb->get_input('type') == "single") 304 { 305 $type_single = "checked=\"checked\""; 306 $type_ranged = ''; 307 $type = "single"; 308 } 309 else 310 { 311 $type_ranged = "checked=\"checked\""; 312 $type_single = ''; 313 $type = "ranged"; 314 } 315 if(!empty($mybb->input['repeats'])) 316 { 317 $repeats_sel[$mybb->get_input('repeats', MyBB::INPUT_INT)] = " selected=\"selected\""; 318 } 319 $repeats_1_days = $mybb->get_input('repeats_1_days', MyBB::INPUT_INT); 320 $repeats_3_weeks = $mybb->get_input('repeats_3_weeks', MyBB::INPUT_INT); 321 foreach($mybb->get_input('repeats_3_days', MyBB::INPUT_ARRAY) as $day => $val) 322 { 323 if($val != 1) 324 { 325 continue; 326 } 327 $day = (int)$day; 328 $repeats_3_days[$day] = " checked=\"checked\""; 329 } 330 $repeats_4_type = array(); 331 if($mybb->get_input('repeats_4_type', MyBB::INPUT_INT) == 1) 332 { 333 $repeats_4_type[1] = "checked=\"checked\""; 334 $repeats_4_type[2] = ''; 335 } 336 else 337 { 338 $repeats_4_type[2] = "checked=\"checked\""; 339 $repeats_4_type[1] = ''; 340 } 341 $repeats_4_day = $mybb->get_input('repeats_4_day', MyBB::INPUT_INT); 342 $repeats_4_months = $mybb->get_input('repeats_4_months', MyBB::INPUT_INT); 343 $repeats_4_occurance[$mybb->get_input('repeats_4_occurance')] = "selected=\"selected\""; 344 $repeats_4_weekday[$mybb->get_input('repeats_4_weekday', MyBB::INPUT_INT)] = "selected=\"selected\""; 345 $repeats_4_months2 = $mybb->get_input('repeats_4_months2', MyBB::INPUT_INT); 346 if($mybb->get_input('repeats_5_type', MyBB::INPUT_INT) == 1) 347 { 348 $repeats_5_type[1] = "checked=\"checked\""; 349 } 350 else 351 { 352 $repeats_5_type[2] = "checked=\"checked\""; 353 } 354 $repeats_5_day = $mybb->get_input('repeats_5_day', MyBB::INPUT_INT); 355 $repeats_5_month[$mybb->get_input('repeats_5_month', MyBB::INPUT_INT)] = "selected=\"selected\""; 356 $repeats_5_years = $mybb->get_input('repeats_5_years', MyBB::INPUT_INT); 357 $repeats_5_occurance[$mybb->get_input('repeats_5_occurance')] = "selected=\"selected\""; 358 $repeats_5_weekday[$mybb->get_input('repeats_5_weekday', MyBB::INPUT_INT)] = "selected=\"selected\""; 359 $repeats_5_month2[$mybb->get_input('repeats_5_month2', MyBB::INPUT_INT)] = "selected=\"selected\""; 360 $repeats_5_years2 = $mybb->get_input('repeats_5_years2', MyBB::INPUT_INT); 361 362 $timezone = $mybb->get_input('timezone', MyBB::INPUT_INT); 363 } 364 else 365 { 366 if(!empty($mybb->input['day'])) 367 { 368 $single_day = $start_day = $end_day = $mybb->get_input('day', MyBB::INPUT_INT); 369 } 370 else 371 { 372 $single_day = $start_day = $end_day = my_date("j"); 373 } 374 if(!empty($mybb->input['month'])) 375 { 376 $month = $mybb->get_input('month', MyBB::INPUT_INT); 377 } 378 else 379 { 380 $month = my_date("n"); 381 } 382 $single_month[$month] = $start_month[$month] = $end_month[$month] = "selected=\"selected\""; 383 if(!empty($mybb->input['year'])) 384 { 385 $single_year = $start_year = $end_year = $mybb->get_input('year', MyBB::INPUT_INT); 386 } 387 else 388 { 389 $single_year = $start_year = $end_year = my_date("Y"); 390 } 391 $start_time = $end_time = ""; 392 $type_single = "checked=\"checked\""; 393 $type_ranged = ''; 394 $type = "single"; 395 $repeats_1_days = 1; 396 $repeats_3_weeks = 1; 397 $repeats_4_type[1] = "checked=\"checked\""; 398 $repeats_4_day = 1; 399 $repeats_4_months = 1; 400 $repeats_4_occurance[1] = "selected=\"selected\""; 401 $repeats_4_weekday[0] = "selected=\"selected\""; 402 $repeats_4_months2 = 1; 403 $repeats_5_type[1] = "checked=\"checked\""; 404 $repeats_5_day = 1; 405 $repeats_5_month[1] = "selected=\"selected\""; 406 $repeats_5_years = 1; 407 $repeats_5_occurance[1] = "selected=\"selected\""; 408 $repeats_5_weekday[0] = "selected=\"selected\""; 409 $repeats_5_month2[1] = "selected=\"selected\""; 410 $repeats_5_years2 = 1; 411 $timezone = $mybb->user['timezone']; 412 } 413 414 $single_years = $start_years = $end_years = ''; 415 416 // Construct option list for years 417 for($year = my_date('Y'); $year < (my_date('Y') + 5); ++$year) 418 { 419 if($year == $single_year) 420 { 421 $selected = "selected=\"selected\""; 422 eval("\$single_years .= \"".$templates->get("calendar_year")."\";"); 423 } 424 else 425 { 426 $selected = ""; 427 eval("\$single_years .= \"".$templates->get("calendar_year")."\";"); 428 } 429 430 if($year == $start_year) 431 { 432 $selected = "selected=\"selected\""; 433 eval("\$start_years .= \"".$templates->get("calendar_year")."\";"); 434 } 435 else 436 { 437 $selected = ""; 438 eval("\$start_years .= \"".$templates->get("calendar_year")."\";"); 439 } 440 441 if($year == $end_year) 442 { 443 $selected = "selected=\"selected\""; 444 eval("\$end_years .= \"".$templates->get("calendar_year")."\";"); 445 } 446 else 447 { 448 $selected = ""; 449 eval("\$end_years .= \"".$templates->get("calendar_year")."\";"); 450 } 451 } 452 453 $single_days = $start_days = $end_days = ''; 454 455 // Construct option list for days 456 for($day = 1; $day <= 31; ++$day) 457 { 458 if($day == $single_day) 459 { 460 $selected = "selected=\"selected\""; 461 eval("\$single_days .= \"".$templates->get("calendar_day")."\";"); 462 } 463 else 464 { 465 $selected = ""; 466 eval("\$single_days .= \"".$templates->get("calendar_day")."\";"); 467 } 468 469 if($day == $start_day) 470 { 471 $selected = "selected=\"selected\""; 472 eval("\$start_days .= \"".$templates->get("calendar_day")."\";"); 473 } 474 else 475 { 476 $selected = ""; 477 eval("\$start_days .= \"".$templates->get("calendar_day")."\";"); 478 } 479 480 if($day == $end_day) 481 { 482 $selected = "selected=\"selected\""; 483 eval("\$end_days .= \"".$templates->get("calendar_day")."\";"); 484 } 485 else 486 { 487 $selected = ""; 488 eval("\$end_days .= \"".$templates->get("calendar_day")."\";"); 489 } 490 } 491 492 $timezones = build_timezone_select("timezone", $timezone); 493 494 if($mybb->get_input('ignoretimezone', MyBB::INPUT_INT) == 1) 495 { 496 $ignore_timezone = "checked=\"checked\""; 497 } 498 else 499 { 500 $ignore_timezone = ''; 501 } 502 503 if($mybb->get_input('private', MyBB::INPUT_INT) == 1) 504 { 505 $privatecheck = " checked=\"checked\""; 506 } 507 else 508 { 509 $privatecheck = ''; 510 } 511 512 $select_calendar = $calendar_select = ''; 513 $calendarcount = 0; 514 515 // Build calendar select 516 $calendar_permissions = get_calendar_permissions(); 517 $query = $db->simple_select("calendars", "*", "", array("order_by" => "name", "order_dir" => "asc")); 518 while($calendar_option = $db->fetch_array($query)) 519 { 520 if($calendar_permissions[$calendar_option['cid']]['canviewcalendar'] == 1) 521 { 522 $calendar_option['name'] = htmlspecialchars_uni($calendar_option['name']); 523 if($calendar_option['cid'] == $mybb->input['calendar']) 524 { 525 $selected = " selected=\"selected\""; 526 } 527 else 528 { 529 $selected = ""; 530 } 531 532 ++$calendarcount; 533 eval("\$select_calendar .= \"".$templates->get("calendar_select")."\";"); 534 } 535 } 536 537 if($calendarcount > 1) 538 { 539 eval("\$calendar_select .= \"".$templates->get("calendar_addevent_calendarselect")."\";"); 540 } 541 else 542 { 543 eval("\$calendar_select .= \"".$templates->get("calendar_addevent_calendarselect_hidden")."\";"); 544 } 545 546 if(!isset($event_errors)) 547 { 548 $event_errors = ''; 549 } 550 551 $plugins->run_hooks("calendar_addevent_end"); 552 553 eval("\$addevent = \"".$templates->get("calendar_addevent")."\";"); 554 output_page($addevent); 555 } 556 557 // Delete an event 558 if($mybb->input['action'] == "do_deleteevent" && $mybb->request_method == "post") 559 { 560 $query = $db->simple_select("events", "*", "eid='{$mybb->input['eid']}'"); 561 $event = $db->fetch_array($query); 562 563 if(!$event || ($event['private'] == 1 && $event['uid'] != $mybb->user['uid'])) 564 { 565 error($lang->error_invalidevent); 566 } 567 568 $query = $db->simple_select("calendars", "*", "cid='{$event['cid']}'"); 569 $calendar = $db->fetch_array($query); 570 571 // Invalid calendar? 572 if(!$calendar) 573 { 574 error($lang->invalid_calendar); 575 } 576 577 // Do we have permission to view this calendar or post events? 578 $calendar_permissions = get_calendar_permissions($calendar['cid']); 579 if($calendar_permissions['canviewcalendar'] != 1 || $calendar_permissions['canaddevents'] != 1) 580 { 581 error_no_permission(); 582 } 583 584 if(($event['uid'] != $mybb->user['uid'] || $mybb->user['uid'] == 0) && $calendar_permissions['canmoderateevents'] != 1) 585 { 586 error_no_permission(); 587 } 588 589 // Verify incoming POST request 590 verify_post_check($mybb->get_input('my_post_key')); 591 592 $plugins->run_hooks("calendar_do_deleteevent_start"); 593 594 // Is the checkbox set? 595 if($mybb->get_input('delete', MyBB::INPUT_INT) == 1) 596 { 597 $db->delete_query("events", "eid='{$event['eid']}'"); 598 $plugins->run_hooks("calendar_do_deleteevent_end"); 599 600 // Redirect back to the main calendar view. 601 redirect("calendar.php", $lang->redirect_eventdeleted); 602 } 603 else 604 { 605 error($lang->delete_no_checkbox); 606 } 607 } 608 609 // Edit an event 610 if($mybb->input['action'] == "do_editevent" && $mybb->request_method == "post") 611 { 612 $query = $db->simple_select("events", "*", "eid='{$mybb->input['eid']}'"); 613 $event = $db->fetch_array($query); 614 615 if(!$event || ($event['private'] == 1 && $event['uid'] != $mybb->user['uid'])) 616 { 617 error($lang->error_invalidevent); 618 } 619 620 $query = $db->simple_select("calendars", "*", "cid='{$event['cid']}'"); 621 $calendar = $db->fetch_array($query); 622 623 // Invalid calendar? 624 if(!$calendar) 625 { 626 error($lang->invalid_calendar); 627 } 628 629 // Do we have permission to view this calendar or post events? 630 $calendar_permissions = get_calendar_permissions($calendar['cid']); 631 if($calendar_permissions['canviewcalendar'] != 1 || $calendar_permissions['canaddevents'] != 1) 632 { 633 error_no_permission(); 634 } 635 636 if(($event['uid'] != $mybb->user['uid'] || $mybb->user['uid'] == 0) && $calendar_permissions['canmoderateevents'] != 1) 637 { 638 error_no_permission(); 639 } 640 641 // Verify incoming POST request 642 verify_post_check($mybb->get_input('my_post_key')); 643 644 $plugins->run_hooks("calendar_do_editevent_start"); 645 646 // Set up event handler. 647 require_once MYBB_ROOT."inc/datahandler.php"; 648 require_once MYBB_ROOT."inc/datahandlers/event.php"; 649 $eventhandler = new EventDataHandler("update"); 650 $mybb->input['type'] = $mybb->get_input('type'); 651 652 // Prepare an array for the eventhandler. 653 $event = array( 654 "eid" => $event['eid'], 655 "name" => $mybb->get_input('name'), 656 "description" => $mybb->get_input('description'), 657 "private" => $mybb->get_input('private', MyBB::INPUT_INT), 658 "type" => $mybb->input['type'] 659 ); 660 661 // Now we add in our date/time info depending on the type of event 662 if($mybb->input['type'] == "single") 663 { 664 $event['start_date'] = array( 665 "day" => $mybb->get_input('single_day', MyBB::INPUT_INT), 666 "month" => $mybb->get_input('single_month', MyBB::INPUT_INT), 667 "year" => $mybb->get_input('single_year', MyBB::INPUT_INT) 668 ); 669 $event['repeats'] = ''; 670 } 671 else if($mybb->input['type'] == "ranged") 672 { 673 $event['start_date'] = array( 674 "day" => $mybb->get_input('start_day', MyBB::INPUT_INT), 675 "month" => $mybb->get_input('start_month', MyBB::INPUT_INT), 676 "year" => $mybb->get_input('start_year', MyBB::INPUT_INT), 677 "time" => $mybb->get_input('start_time') 678 ); 679 $event['end_date'] = array( 680 "day" => $mybb->get_input('end_day', MyBB::INPUT_INT), 681 "month" => $mybb->get_input('end_month', MyBB::INPUT_INT), 682 "year" => $mybb->get_input('end_year', MyBB::INPUT_INT), 683 "time" => $mybb->get_input('end_time') 684 ); 685 $event['timezone'] = $mybb->get_input('timezone'); 686 $event['ignoretimezone'] = $mybb->get_input('ignoretimezone', MyBB::INPUT_INT); 687 $repeats = array(); 688 switch($mybb->input['repeats']) 689 { 690 case 1: 691 $repeats['repeats'] = 1; 692 $repeats['days'] = $mybb->get_input('repeats_1_days', MyBB::INPUT_INT); 693 break; 694 case 2: 695 $repeats['repeats'] = 2; 696 break; 697 case 3: 698 $repeats['repeats'] = 3; 699 $repeats['weeks'] = $mybb->get_input('repeats_3_weeks', MyBB::INPUT_INT); 700 $mybb->input['repeats_3_days'] = $mybb->get_input('repeats_3_days', MyBB::INPUT_ARRAY); 701 ksort($mybb->input['repeats_3_days']); 702 $days = array(); 703 foreach($mybb->input['repeats_3_days'] as $weekday => $value) 704 { 705 if($value != 1) 706 { 707 continue; 708 } 709 $days[] = $weekday; 710 } 711 $repeats['days'] = $days; 712 break; 713 case 4: 714 $repeats['repeats'] = 4; 715 if($mybb->get_input('repeats_4_type', MyBB::INPUT_INT) == 1) 716 { 717 $repeats['day'] = $mybb->get_input('repeats_4_day', MyBB::INPUT_INT); 718 $repeats['months'] = $mybb->get_input('repeats_4_months', MyBB::INPUT_INT); 719 } 720 else 721 { 722 $repeats['months'] = $mybb->get_input('repeats_4_months2', MyBB::INPUT_INT); 723 $repeats['occurance'] = $mybb->get_input('repeats_4_occurance'); 724 $repeats['weekday'] = $mybb->get_input('repeats_4_weekday', MyBB::INPUT_INT); 725 } 726 break; 727 case 5: 728 $repeats['repeats'] = 5; 729 if($mybb->get_input('repeats_5_type', MyBB::INPUT_INT) == 1) 730 { 731 $repeats['day'] = $mybb->get_input('repeats_5_day', MyBB::INPUT_INT); 732 $repeats['month'] = $mybb->get_input('repeats_5_month', MyBB::INPUT_INT); 733 $repeats['years'] = $mybb->get_input('repeats_5_years', MyBB::INPUT_INT); 734 } 735 else 736 { 737 $repeats['occurance'] = $mybb->get_input('repeats_5_occurance'); 738 $repeats['weekday'] = $mybb->get_input('repeats_5_weekday', MyBB::INPUT_INT); 739 $repeats['month'] = $mybb->get_input('repeats_5_month2', MyBB::INPUT_INT); 740 $repeats['years'] = $mybb->get_input('repeats_5_years', MyBB::INPUT_INT); 741 } 742 break; 743 default: 744 $repeats['repeats'] = 0; 745 } 746 $event['repeats'] = $repeats; 747 } 748 749 $eventhandler->set_data($event); 750 751 // Now let the eventhandler do all the hard work. 752 if(!$eventhandler->validate_event()) 753 { 754 $event_errors = $eventhandler->get_friendly_errors(); 755 $event_errors = inline_error($event_errors); 756 $mybb->input['action'] = "editevent"; 757 } 758 else 759 { 760 $details = $eventhandler->update_event(); 761 $plugins->run_hooks("calendar_do_editevent_end"); 762 redirect(get_event_link($event['eid']), $lang->redirect_eventupdated); 763 } 764 } 765 766 if($mybb->input['action'] == "editevent") 767 { 768 // Event already fetched in do_editevent? 769 if(!isset($event)) 770 { 771 $query = $db->simple_select("events", "*", "eid='{$mybb->input['eid']}'"); 772 $event = $db->fetch_array($query); 773 774 if(!$event || ($event['private'] == 1 && $event['uid'] != $mybb->user['uid'])) 775 { 776 error($lang->error_invalidevent); 777 } 778 779 $query = $db->simple_select("calendars", "*", "cid='{$event['cid']}'"); 780 $calendar = $db->fetch_array($query); 781 782 // Invalid calendar? 783 if(!$calendar) 784 { 785 error($lang->invalid_calendar); 786 } 787 788 // Do we have permission to view this calendar or post events? 789 $calendar_permissions = get_calendar_permissions($calendar['cid']); 790 if($calendar_permissions['canviewcalendar'] != 1 || $calendar_permissions['canaddevents'] != 1) 791 { 792 error_no_permission(); 793 } 794 795 if(($event['uid'] != $mybb->user['uid'] || $mybb->user['uid'] == 0) && $calendar_permissions['canmoderateevents'] != 1) 796 { 797 error_no_permission(); 798 } 799 } 800 801 $event['name'] = htmlspecialchars_uni($event['name']); 802 $event['timezone'] = isset($event['timezone']) ? (float) $event['timezone'] : 0; 803 804 add_breadcrumb(htmlspecialchars_uni($calendar['name']), get_calendar_link($calendar['cid'])); 805 add_breadcrumb($event['name'], get_event_link($event['eid'])); 806 add_breadcrumb($lang->nav_editevent); 807 808 $plugins->run_hooks("calendar_editevent_start"); 809 810 // If MyCode is on for this forum and the MyCode editor is enabled inthe Admin CP, draw the code buttons and smilie inserter. 811 if($mybb->settings['bbcodeinserter'] != 0 && (!$mybb->user['uid'] || $mybb->user['showcodebuttons'] != 0) && $calendar['allowmycode'] == 1) 812 { 813 $codebuttons = build_mycode_inserter("message", $calendar['allowsmilies']); 814 if($calendar['allowsmilies'] == 1) 815 { 816 $smilieinserter = build_clickable_smilies(); 817 } 818 } 819 820 $single_month = $start_month = $end_month = $repeats_sel = $repeats_3_days = $repeats_4_occurance = $repeats_4_weekday = $repeats_5_month = $repeats_5_occurance = $repeats_5_weekday = $repeats_5_month2 = array(); 821 foreach(range(1, 12) as $number) 822 { 823 $single_month[$number] = $start_month[$number] = $end_month[$number] = $repeats_5_month[$number] = $repeats_5_month2[$number] = ''; 824 } 825 foreach(range(1, 5) as $number) 826 { 827 $repeats_sel[$number] = ''; 828 } 829 foreach(range(0, 6) as $number) 830 { 831 $repeats_3_days[$number] = $repeats_4_weekday[$number] = $repeats_5_weekday[$number] = ''; 832 } 833 foreach(range(1, 4) as $number) 834 { 835 $repeats_4_occurance[$number] = $repeats_5_occurance[$number] = ''; 836 } 837 $repeats_4_occurance['last'] = $repeats_5_occurance['last'] = ''; 838 $repeats_4_type = array(1 => '', 2 => ''); 839 $repeats_5_type = array(1 => '', 2 => ''); 840 841 // Previous selections 842 if(isset($event_errors)) 843 { 844 $name = htmlspecialchars_uni($mybb->get_input('name')); 845 $description = htmlspecialchars_uni($mybb->get_input('description')); 846 $single_day = $mybb->get_input('single_day', MyBB::INPUT_INT); 847 $single_month[$mybb->get_input('single_month', MyBB::INPUT_INT)] = " selected=\"selected\""; 848 $single_year = $mybb->get_input('single_year', MyBB::INPUT_INT); 849 $start_day = $mybb->get_input('start_day', MyBB::INPUT_INT); 850 $start_month[$mybb->get_input('start_month', MyBB::INPUT_INT)] = " selected=\"selected\""; 851 $start_year = $mybb->get_input('start_year', MyBB::INPUT_INT); 852 $start_time = htmlspecialchars_uni($mybb->get_input('start_time')); 853 $end_day = $mybb->get_input('end_day', MyBB::INPUT_INT); 854 $end_month[$mybb->get_input('end_month', MyBB::INPUT_INT)] = " selected=\"selected\""; 855 $end_year = $mybb->get_input('end_year', MyBB::INPUT_INT); 856 $end_time = htmlspecialchars_uni($mybb->get_input('end_time')); 857 if($mybb->get_input('type') == "single") 858 { 859 $type_single = "checked=\"checked\""; 860 $type_ranged = ''; 861 $type = "single"; 862 } 863 else 864 { 865 $type_ranged = "checked=\"checked\""; 866 $type_single = ''; 867 $type = "ranged"; 868 } 869 if(!empty($mybb->input['repeats'])) 870 { 871 $repeats_sel[$mybb->get_input('repeats', MyBB::INPUT_INT)] = " selected=\"selected\""; 872 } 873 $repeats_1_days = $mybb->get_input('repeats_1_days', MyBB::INPUT_INT); 874 $repeats_3_weeks = $mybb->get_input('repeats_3_weeks', MyBB::INPUT_INT); 875 foreach($mybb->get_input('repeats_3_days', MyBB::INPUT_ARRAY) as $day => $val) 876 { 877 if($val != 1) 878 { 879 continue; 880 } 881 $day = (int)$day; 882 $repeats_3_days[$day] = " checked=\"checked\""; 883 } 884 $repeats_4_type = array(); 885 if($mybb->get_input('repeats_4_type', MyBB::INPUT_INT) == 1) 886 { 887 $repeats_4_type[1] = "checked=\"checked\""; 888 $repeats_4_type[2] = ''; 889 } 890 else 891 { 892 $repeats_4_type[2] = "checked=\"checked\""; 893 $repeats_4_type[1] = ''; 894 } 895 $repeats_4_day = $mybb->get_input('repeats_4_day', MyBB::INPUT_INT); 896 $repeats_4_months = $mybb->get_input('repeats_4_months', MyBB::INPUT_INT); 897 $repeats_4_occurance[$mybb->get_input('repeats_4_occurance')] = "selected=\"selected\""; 898 $repeats_4_weekday[$mybb->get_input('repeats_4_weekday', MyBB::INPUT_INT)] = "selected=\"selected\""; 899 $repeats_4_months2 = $mybb->get_input('repeats_4_months2', MyBB::INPUT_INT); 900 if($mybb->get_input('repeats_5_type', MyBB::INPUT_INT) == 1) 901 { 902 $repeats_5_type[1] = "checked=\"checked\""; 903 } 904 else 905 { 906 $repeats_5_type[2] = "checked=\"checked\""; 907 } 908 $repeats_5_day = $mybb->get_input('repeats_5_day', MyBB::INPUT_INT); 909 $repeats_5_month[$mybb->get_input('repeats_5_month', MyBB::INPUT_INT)] = "selected=\"selected\""; 910 $repeats_5_years = $mybb->get_input('repeats_5_years', MyBB::INPUT_INT); 911 $repeats_5_occurance[$mybb->get_input('repeats_5_occurance')] = "selected=\"selected\""; 912 $repeats_5_weekday[$mybb->get_input('repeats_5_weekday', MyBB::INPUT_INT)] = "selected=\"selected\""; 913 $repeats_5_month2[$mybb->get_input('repeats_5_month2', MyBB::INPUT_INT)] = "selected=\"selected\""; 914 $repeats_5_years2 = $mybb->get_input('repeats_5_years2', MyBB::INPUT_INT); 915 916 if($mybb->get_input('private', MyBB::INPUT_INT) == 1) 917 { 918 $privatecheck = " checked=\"checked\""; 919 } 920 else 921 { 922 $privatecheck = ''; 923 } 924 925 if($mybb->get_input('ignoretimezone', MyBB::INPUT_INT) == 1) 926 { 927 $ignore_timezone = "checked=\"checked\""; 928 } 929 else 930 { 931 $ignore_timezone = ''; 932 } 933 934 $timezone = $mybb->get_input('timezone'); 935 } 936 else 937 { 938 $event_errors = ''; 939 $mybb->input['calendar'] = $event['cid']; 940 $name = $event['name']; 941 $description = htmlspecialchars_uni($event['description']); 942 if($event['private'] == 1) 943 { 944 $privatecheck = " checked=\"checked\""; 945 } 946 else 947 { 948 $privatecheck = ''; 949 } 950 $start_date = explode("-", gmdate("j-n-Y", $event['starttime']+$event['timezone']*3600)); 951 $single_day = $start_date[0]; 952 $single_month[$start_date[1]] = " selected=\"selected\""; 953 $single_year = $start_date[2]; 954 $start_day = $start_date[0]; 955 $start_month[$start_date[1]] = " selected=\"selected\""; 956 $start_year = $start_date[2]; 957 if($event['usingtime']) 958 { 959 $start_time = gmdate($mybb->settings['timeformat'], $event['starttime']+$event['timezone']*3600); 960 } 961 else 962 { 963 $start_time = ''; 964 } 965 if($event['endtime']) 966 { 967 $end_date = explode("-", gmdate("j-n-Y", $event['endtime']+$event['timezone']*3600)); 968 $end_day = $end_date[0]; 969 $end_month[$end_date[1]] = " selected=\"selected\""; 970 $end_year = $end_date[2]; 971 if($event['usingtime']) 972 { 973 $end_time = gmdate($mybb->settings['timeformat'], $event['endtime']+$event['timezone']*3600); 974 } 975 else 976 { 977 $end_time = ''; 978 } 979 $type_ranged = "checked=\"checked\""; 980 $type_single = ''; 981 $type = "ranged"; 982 $repeats = my_unserialize($event['repeats']); 983 if($repeats['repeats'] >= 0) 984 { 985 $repeats_sel[$repeats['repeats']] = " selected=\"selected\""; 986 switch($repeats['repeats']) 987 { 988 case 1: 989 $repeats_1_days = $repeats['days']; 990 $repeats_3_weeks = 1; 991 $repeats_4_type[1] = "checked=\"checked\""; 992 $repeats_4_day = 1; 993 $repeats_4_months = 1; 994 $repeats_4_months2 = 1; 995 $repeats_5_type[1] = "checked=\"checked\""; 996 $repeats_5_day = 1; 997 $repeats_5_years = $repeats_5_years2 = 1; 998 break; 999 case 3: 1000 $repeats_1_days = 1; 1001 $repeats_3_weeks = $repeats['weeks']; 1002 if(is_array($repeats['days'])) 1003 { 1004 foreach($repeats['days'] as $weekday) 1005 { 1006 $repeats_3_days[$weekday] = " checked=\"checked\""; 1007 } 1008 } 1009 $repeats_4_type[1] = "checked=\"checked\""; 1010 $repeats_4_day = 1; 1011 $repeats_4_months = 1; 1012 $repeats_4_months2 = 1; 1013 $repeats_5_type[1] = "checked=\"checked\""; 1014 $repeats_5_day = 1; 1015 $repeats_5_years = $repeats_5_years2 = 1; 1016 break; 1017 case 4: 1018 $repeats_1_days = 1; 1019 $repeats_3_weeks = 1; 1020 if($repeats['day']) 1021 { 1022 $repeats_4_type[1] = "checked=\"checked\""; 1023 $repeats_4_day = $repeats['day']; 1024 $repeats_4_months = $repeats_4_months2 = $repeats['months']; 1025 } 1026 else 1027 { 1028 $repeats_4_type[2] = "checked=\"checked\""; 1029 $repeats_4_day = 1; 1030 $repeats_4_months2 = $repeats_4_months = $repeats['months']; 1031 $repeats_4_occurance[$repeats['occurance']] = "selected=\"selected\""; 1032 $repeats_4_weekday[$repeats['weekday']] = "selected=\"selected\""; 1033 } 1034 $repeats_5_type[1] = "checked=\"checked\""; 1035 $repeats_5_day = 1; 1036 $repeats_5_years = $repeats_5_years2 = 1; 1037 break; 1038 case 5: 1039 $repeats_1_days = 1; 1040 $repeats_3_weeks = 1; 1041 $repeats_4_type[1] = "checked=\"checked\""; 1042 $repeats_4_day = 1; 1043 $repeats_4_months = 1; 1044 $repeats_4_months2 = 1; 1045 if($repeats['day']) 1046 { 1047 $repeats_5_type[1] = "checked=\"checked\""; 1048 $repeats_5_day = $repeats['day']; 1049 $repeats_5_month[$repeats['month']] = $repeats_5_month2[$repeats['month']] = "selected=\"selected\""; 1050 $repeats_5_years = $repeats_5_years2 = $repeats['years']; 1051 } 1052 else 1053 { 1054 $repeats_5_type[2] = "checked=\"checked\""; 1055 $repeats_5_occurance[$repeats['occurance']] = "selected=\"selected\""; 1056 $repeats_5_weekday[$repeats['weekday']] = "selected=\"selected\""; 1057 $repeats_5_month[$repeats['month']] = $repeats_5_month2[$repeats['month']] = "selected=\"selected\""; 1058 $repeats_5_years = $repeats_5_years2 = $repeats['years']; 1059 } 1060 break; 1061 } 1062 } 1063 if($event['ignoretimezone']) 1064 { 1065 $timezone = 0; 1066 $ignore_timezone = "checked=\"checked\""; 1067 } 1068 else 1069 { 1070 $timezone = $event['timezone']; 1071 $ignore_timezone = ''; 1072 } 1073 } 1074 else 1075 { 1076 $type_single = "checked=\"checked\""; 1077 $type_ranged = $ignore_timezone = $repeats_1_days = $repeats_3_weeks = $repeats_4_day = $repeats_4_months = $repeats_4_months2 = $repeats_5_day = $repeats_5_years = $timezone = $end_time = ''; 1078 $type = "single"; 1079 // set some defaults if the user wants to make a ranged event 1080 $end_day = $start_day; 1081 $end_month = $start_month; 1082 $end_year = $start_year; 1083 } 1084 } 1085 1086 $single_years = $start_years = $end_years = ''; 1087 1088 // Construct option list for years 1089 for($year = my_date('Y'); $year < (my_date('Y') + 5); ++$year) 1090 { 1091 if($year == $single_year) 1092 { 1093 $selected = "selected=\"selected\""; 1094 eval("\$single_years .= \"".$templates->get("calendar_year")."\";"); 1095 } 1096 else 1097 { 1098 $selected = ""; 1099 eval("\$single_years .= \"".$templates->get("calendar_year")."\";"); 1100 } 1101 1102 if($year == $start_year) 1103 { 1104 $selected = "selected=\"selected\""; 1105 eval("\$start_years .= \"".$templates->get("calendar_year")."\";"); 1106 } 1107 else 1108 { 1109 $selected = ""; 1110 eval("\$start_years .= \"".$templates->get("calendar_year")."\";"); 1111 } 1112 1113 if($year == $end_year) 1114 { 1115 $selected = "selected=\"selected\""; 1116 eval("\$end_years .= \"".$templates->get("calendar_year")."\";"); 1117 } 1118 else 1119 { 1120 $selected = ""; 1121 eval("\$end_years .= \"".$templates->get("calendar_year")."\";"); 1122 } 1123 } 1124 1125 $single_days = $start_days = $end_days = ''; 1126 1127 // Construct option list for days 1128 for($day = 1; $day <= 31; ++$day) 1129 { 1130 if($day == $single_day) 1131 { 1132 $selected = "selected=\"selected\""; 1133 eval("\$single_days .= \"".$templates->get("calendar_day")."\";"); 1134 } 1135 else 1136 { 1137 $selected = ""; 1138 eval("\$single_days .= \"".$templates->get("calendar_day")."\";"); 1139 } 1140 1141 if($day == $start_day) 1142 { 1143 $selected = "selected=\"selected\""; 1144 eval("\$start_days .= \"".$templates->get("calendar_day")."\";"); 1145 } 1146 else 1147 { 1148 $selected = ""; 1149 eval("\$start_days .= \"".$templates->get("calendar_day")."\";"); 1150 } 1151 1152 if($day == $end_day) 1153 { 1154 $selected = "selected=\"selected\""; 1155 eval("\$end_days .= \"".$templates->get("calendar_day")."\";"); 1156 } 1157 else 1158 { 1159 $selected = ""; 1160 eval("\$end_days .= \"".$templates->get("calendar_day")."\";"); 1161 } 1162 } 1163 1164 $timezones = build_timezone_select("timezone", $timezone); 1165 1166 $plugins->run_hooks("calendar_editevent_end"); 1167 1168 eval("\$editevent = \"".$templates->get("calendar_editevent")."\";"); 1169 output_page($editevent); 1170 } 1171 1172 // Move an event to another calendar 1173 if($mybb->input['action'] == "move") 1174 { 1175 $query = $db->simple_select("events", "*", "eid='{$mybb->input['eid']}'"); 1176 $event = $db->fetch_array($query); 1177 1178 if(!$event || ($event['private'] == 1 && $event['uid'] != $mybb->user['uid'])) 1179 { 1180 error($lang->error_invalidevent); 1181 } 1182 1183 $query = $db->simple_select("calendars", "*", "cid='{$event['cid']}'"); 1184 $calendar = $db->fetch_array($query); 1185 1186 // Invalid calendar? 1187 if(!$calendar) 1188 { 1189 error($lang->invalid_calendar); 1190 } 1191 1192 // Do we have permission to view this calendar or post events? 1193 $calendar_permissions = get_calendar_permissions(); 1194 if($calendar_permissions[$calendar['cid']]['canviewcalendar'] != 1) 1195 { 1196 error_no_permission(); 1197 } 1198 1199 if($calendar_permissions[$calendar['cid']]['canmoderateevents'] != 1) 1200 { 1201 error_no_permission(); 1202 } 1203 1204 $event['name'] = htmlspecialchars_uni($event['name']); 1205 1206 add_breadcrumb(htmlspecialchars_uni($calendar['name']), get_calendar_link($calendar['cid'])); 1207 add_breadcrumb($event['name'], get_event_link($event['eid'])); 1208 add_breadcrumb($lang->nav_move_event); 1209 1210 $plugins->run_hooks("calendar_move_start"); 1211 1212 $calendar_select = $selected = ''; 1213 1214 // Build calendar select 1215 $query = $db->simple_select("calendars", "*", "", array("order_by" => "name", "order_dir" => "asc")); 1216 while($calendar_option = $db->fetch_array($query)) 1217 { 1218 if($calendar_permissions[$calendar_option['cid']]['canviewcalendar'] == 1 && $calendar_permissions[$calendar_option['cid']]['canmoderateevents'] == 1) 1219 { 1220 $calendar_option['name'] = htmlspecialchars_uni($calendar_option['name']); 1221 eval("\$calendar_select .= \"".$templates->get("calendar_select")."\";"); 1222 } 1223 } 1224 1225 $plugins->run_hooks("calendar_move_end"); 1226 1227 eval("\$moveevent = \"".$templates->get("calendar_move")."\";"); 1228 output_page($moveevent); 1229 } 1230 1231 // Actually move the event 1232 if($mybb->input['action'] == "do_move" && $mybb->request_method == "post") 1233 { 1234 // Verify incoming POST request 1235 verify_post_check($mybb->get_input('my_post_key')); 1236 1237 $query = $db->simple_select("events", "*", "eid='{$mybb->input['eid']}'"); 1238 $event = $db->fetch_array($query); 1239 1240 if(!$event || ($event['private'] == 1 && $event['uid'] != $mybb->user['uid'])) 1241 { 1242 error($lang->error_invalidevent); 1243 } 1244 1245 $query = $db->simple_select("calendars", "*", "cid='{$event['cid']}'"); 1246 $calendar = $db->fetch_array($query); 1247 1248 // Invalid calendar? 1249 if(!$calendar) 1250 { 1251 error($lang->invalid_calendar); 1252 } 1253 1254 // Do we have permission to view this calendar? 1255 $calendar_permissions = get_calendar_permissions(); 1256 if($calendar_permissions[$calendar['cid']]['canviewcalendar'] != 1) 1257 { 1258 error_no_permission(); 1259 } 1260 1261 if($calendar_permissions[$calendar['cid']]['canmoderateevents'] != 1) 1262 { 1263 error_no_permission(); 1264 } 1265 1266 $query = $db->simple_select("calendars", "*", "cid='".$mybb->get_input('new_calendar', MyBB::INPUT_INT)."'"); 1267 $new_calendar = $db->fetch_array($query); 1268 1269 if(!$new_calendar) 1270 { 1271 error($lang->invalid_calendar); 1272 } 1273 1274 if($calendar_permissions[$mybb->input['new_calendar']]['canviewcalendar'] != 1) 1275 { 1276 error_no_permission(); 1277 } 1278 1279 if($calendar_permissions[$new_calendar['cid']]['canmoderateevents'] != 1) 1280 { 1281 error_no_permission(); 1282 } 1283 1284 $updated_event = array( 1285 "cid" => $new_calendar['cid'] 1286 ); 1287 1288 $plugins->run_hooks("calendar_do_move_start"); 1289 1290 $db->update_query("events", $updated_event, "eid='{$event['eid']}'"); 1291 1292 $plugins->run_hooks("calendar_do_move_end"); 1293 1294 redirect(get_event_link($event['eid']), $lang->redirect_eventmoved); 1295 } 1296 1297 // Approve an event 1298 if($mybb->input['action'] == "approve") 1299 { 1300 // Verify incoming POST request 1301 verify_post_check($mybb->get_input('my_post_key')); 1302 1303 $query = $db->simple_select("events", "*", "eid='{$mybb->input['eid']}'"); 1304 $event = $db->fetch_array($query); 1305 1306 if(!$event || ($event['private'] == 1 && $event['uid'] != $mybb->user['uid'])) 1307 { 1308 error($lang->error_invalidevent); 1309 } 1310 1311 $query = $db->simple_select("calendars", "*", "cid='{$event['cid']}'"); 1312 $calendar = $db->fetch_array($query); 1313 1314 // Invalid calendar? 1315 if(!$calendar) 1316 { 1317 error($lang->invalid_calendar); 1318 } 1319 1320 // Do we have permission to view this calendar? 1321 $calendar_permissions = get_calendar_permissions($calendar['cid']); 1322 if($calendar_permissions['canviewcalendar'] != 1) 1323 { 1324 error_no_permission(); 1325 } 1326 1327 if($calendar_permissions['canmoderateevents'] != 1) 1328 { 1329 error_no_permission(); 1330 } 1331 1332 $updated_event = array( 1333 "visible" => 1 1334 ); 1335 1336 $plugins->run_hooks("calendar_approve_start"); 1337 1338 $db->update_query("events", $updated_event, "eid='{$event['eid']}'"); 1339 1340 $plugins->run_hooks("calendar_approve_end"); 1341 1342 redirect(get_event_link($event['eid']), $lang->redirect_eventapproved); 1343 } 1344 1345 // Unapprove an event 1346 if($mybb->input['action'] == "unapprove") 1347 { 1348 // Verify incoming POST request 1349 verify_post_check($mybb->get_input('my_post_key')); 1350 1351 $query = $db->simple_select("events", "*", "eid='{$mybb->input['eid']}'"); 1352 $event = $db->fetch_array($query); 1353 1354 if(!$event || ($event['private'] == 1 && $event['uid'] != $mybb->user['uid'])) 1355 { 1356 error($lang->error_invalidevent); 1357 } 1358 1359 $query = $db->simple_select("calendars", "*", "cid='{$event['cid']}'"); 1360 $calendar = $db->fetch_array($query); 1361 1362 // Invalid calendar? 1363 if(!$calendar) 1364 { 1365 error($lang->invalid_calendar); 1366 } 1367 1368 // Do we have permission to view this calendar? 1369 $calendar_permissions = get_calendar_permissions($calendar['cid']); 1370 if($calendar_permissions['canviewcalendar'] != 1) 1371 { 1372 error_no_permission(); 1373 } 1374 1375 if($calendar_permissions['canmoderateevents'] != 1) 1376 { 1377 error_no_permission(); 1378 } 1379 1380 $updated_event = array( 1381 "visible" => 0 1382 ); 1383 1384 $plugins->run_hooks("calendar_unapprove_start"); 1385 1386 $db->update_query("events", $updated_event, "eid='{$event['eid']}'"); 1387 1388 $plugins->run_hooks("calendar_unapprove_end"); 1389 1390 redirect(get_event_link($event['eid']), $lang->redirect_eventunapproved); 1391 } 1392 1393 // Showing specific event 1394 if($mybb->input['action'] == "event") 1395 { 1396 $query = $db->query(" 1397 SELECT u.*, e.* 1398 FROM ".TABLE_PREFIX."events e 1399 LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=e.uid) 1400 WHERE e.eid='{$mybb->input['eid']}' 1401 "); 1402 $event = $db->fetch_array($query); 1403 1404 if(!$event || ($event['private'] == 1 && $event['uid'] != $mybb->user['uid'])) 1405 { 1406 error($lang->error_invalidevent); 1407 } 1408 1409 $query = $db->simple_select("calendars", "*", "cid='{$event['cid']}'"); 1410 $calendar = $db->fetch_array($query); 1411 1412 // Invalid calendar? 1413 if(!$calendar) 1414 { 1415 error($lang->invalid_calendar); 1416 } 1417 1418 // Do we have permission to view this calendar? 1419 $calendar_permissions = get_calendar_permissions($calendar['cid']); 1420 if($calendar_permissions['canviewcalendar'] != 1 || ($calendar_permissions['canmoderateevents'] != 1 && $event['visible'] == 0)) 1421 { 1422 error_no_permission(); 1423 } 1424 1425 $event['name'] = htmlspecialchars_uni($event['name']); 1426 1427 add_breadcrumb(htmlspecialchars_uni($calendar['name']), get_calendar_link($calendar['cid'])); 1428 add_breadcrumb($event['name'], get_event_link($event['eid'])); 1429 1430 $plugins->run_hooks("calendar_event_start"); 1431 1432 $event_parser_options = array( 1433 "allow_html" => $calendar['allowhtml'], 1434 "allow_mycode" => $calendar['allowmycode'], 1435 "allow_smilies" => $calendar['allowsmilies'], 1436 "allow_imgcode" => $calendar['allowimgcode'], 1437 "allow_videocode" => $calendar['allowvideocode'] 1438 ); 1439 1440 if($mybb->user['uid'] != 0 && $mybb->user['showimages'] != 1 || $mybb->settings['guestimages'] != 1 && $mybb->user['uid'] == 0) 1441 { 1442 $event_parser_options['allow_imgcode'] = 0; 1443 } 1444 1445 if($mybb->user['uid'] != 0 && $mybb->user['showvideos'] != 1 || $mybb->settings['guestvideos'] != 1 && $mybb->user['uid'] == 0) 1446 { 1447 $event_parser_options['allow_videocode'] = 0; 1448 } 1449 1450 $event['description'] = $parser->parse_message($event['description'], $event_parser_options); 1451 1452 // Get the usergroup 1453 if($event['usergroup']) 1454 { 1455 $user_usergroup = usergroup_permissions($event['usergroup']); 1456 } 1457 else 1458 { 1459 $user_usergroup = usergroup_permissions(1); 1460 } 1461 1462 $displaygroupfields = array("title", "description", "namestyle", "usertitle", "stars", "starimage", "image"); 1463 1464 if(!$event['displaygroup']) 1465 { 1466 $event['displaygroup'] = $event['usergroup']; 1467 } 1468 1469 $display_group = usergroup_displaygroup($event['displaygroup']); 1470 if(is_array($display_group)) 1471 { 1472 $user_usergroup = array_merge($user_usergroup, $display_group); 1473 } 1474 1475 $titles_cache = $cache->read("usertitles"); 1476 1477 // Event made by registered user 1478 if($event['uid'] > 0 && $event['username']) 1479 { 1480 $event['username'] = htmlspecialchars_uni($event['username']); 1481 $event['profilelink'] = build_profile_link(format_name($event['username'], $event['usergroup'], $event['displaygroup']), $event['uid']); 1482 1483 if(trim($event['usertitle']) != "") 1484 { 1485 // Do nothing, no need for an extra variable.. 1486 } 1487 elseif($user_usergroup['usertitle'] != "") 1488 { 1489 $event['usertitle'] = $user_usergroup['usertitle']; 1490 } 1491 elseif(is_array($titles_cache) && !$user_usergroup['usertitle']) 1492 { 1493 reset($titles_cache); 1494 foreach($titles_cache as $title) 1495 { 1496 if($event['postnum'] >= $title['posts']) 1497 { 1498 $event['usertitle'] = $title['title']; 1499 $event['stars'] = $title['stars']; 1500 $event['starimage'] = $title['starimage']; 1501 break; 1502 } 1503 } 1504 } 1505 1506 if($user_usergroup['stars']) 1507 { 1508 $event['stars'] = $user_usergroup['stars']; 1509 } 1510 1511 if(empty($event['starimage'])) 1512 { 1513 $event['starimage'] = $user_usergroup['starimage']; 1514 } 1515 $event['starimage'] = str_replace("{theme}", $theme['imgdir'], $event['starimage']); 1516 1517 $event['userstars'] = ''; 1518 for($i = 0; $i < $event['stars']; ++$i) 1519 { 1520 eval("\$event['userstars'] .= \"".$templates->get("calendar_event_userstar", 1, 0)."\";"); 1521 } 1522 1523 if($event['userstars'] && $event['starimage'] && $event['stars']) 1524 { 1525 $event['userstars'] .= "<br />"; 1526 } 1527 } 1528 // Created by a guest or an unknown user 1529 else 1530 { 1531 if(!$event['username']) 1532 { 1533 $event['username'] = $lang->guest; 1534 } 1535 1536 $event['username'] = htmlspecialchars_uni($event['username']); 1537 $event['profilelink'] = format_name($event['username'], 1); 1538 1539 if($user_usergroup['usertitle']) 1540 { 1541 $event['usertitle'] = $user_usergroup['usertitle']; 1542 } 1543 else 1544 { 1545 $event['usertitle'] = $lang->guest; 1546 } 1547 $event['userstars'] = ''; 1548 } 1549 1550 $event['usertitle'] = htmlspecialchars_uni($event['usertitle']); 1551 1552 if($event['ignoretimezone'] == 0) 1553 { 1554 $offset = (float)$event['timezone']; 1555 } 1556 else 1557 { 1558 $offset = (float)$mybb->user['timezone']; 1559 } 1560 1561 $event['starttime_user'] = $event['starttime']+$offset*3600; 1562 1563 // Events over more than one day 1564 $time_period = ''; 1565 if($event['endtime'] > 0 && $event['endtime'] != $event['starttime']) 1566 { 1567 $event['endtime_user'] = $event['endtime']+$offset*3600; 1568 $start_day = adodb_gmmktime(0, 0, 0, gmdate("n", $event['starttime_user']), gmdate("j", $event['starttime_user']), gmdate("Y", $event['starttime_user'])); 1569 $end_day = adodb_gmmktime(0, 0, 0, gmdate("n", $event['endtime_user']), gmdate("j", $event['endtime_user']), gmdate("Y", $event['endtime_user'])); 1570 $start_time = gmdate("Hi", $event['starttime_user']); 1571 $end_time = gmdate("Hi", $event['endtime_user']); 1572 1573 $event['repeats'] = my_unserialize($event['repeats']); 1574 1575 // Event only runs over one day 1576 if($start_day == $end_day && $event['repeats']['repeats'] == 0) 1577 { 1578 $time_period = gmdate($mybb->settings['dateformat'], $event['starttime_user']); 1579 // Event runs all day 1580 if($start_time != 0000 && $end_time != 2359) 1581 { 1582 $time_period .= $lang->comma.gmdate($mybb->settings['timeformat'], $event['starttime_user'])." - ".gmdate($mybb->settings['timeformat'], $event['endtime_user']); 1583 } 1584 else 1585 { 1586 $time_period .= $lang->comma.$lang->all_day; 1587 } 1588 } 1589 else 1590 { 1591 $time_period = gmdate($mybb->settings['dateformat'], $event['starttime_user']).", ".gmdate($mybb->settings['timeformat'], $event['starttime_user']); 1592 $time_period .= " - "; 1593 $time_period .= gmdate($mybb->settings['dateformat'], $event['endtime_user']).", ".gmdate($mybb->settings['timeformat'], $event['endtime_user']); 1594 } 1595 } 1596 else 1597 { 1598 $time_period = gmdate($mybb->settings['dateformat'], $event['starttime_user']); 1599 } 1600 1601 $repeats = fetch_friendly_repetition($event); 1602 if($repeats) 1603 { 1604 eval("\$repeats = \"".$templates->get("calendar_repeats")."\";"); 1605 } 1606 1607 $event_class = ''; 1608 if($calendar_permissions['canmoderateevents'] == 1 || ($mybb->user['uid'] > 0 && $mybb->user['uid'] == $event['uid'])) 1609 { 1610 eval("\$edit_event = \"".$templates->get("calendar_event_editbutton")."\";"); 1611 if($calendar_permissions['canmoderateevents'] == 1) 1612 { 1613 if($event['visible'] == 1) 1614 { 1615 $approve = $lang->unapprove_event; 1616 $approve_value = "unapprove"; 1617 } 1618 else 1619 { 1620 $approve = $lang->approve_event; 1621 $approve_value = "approve"; 1622 } 1623 eval("\$moderator_options = \"".$templates->get("calendar_event_modoptions")."\";"); 1624 } 1625 1626 if($event['visible'] == 0) 1627 { 1628 $event_class = " trow_shaded"; 1629 } 1630 } 1631 1632 $month = my_date("n"); 1633 1634 $yearsel = ''; 1635 for($year_sel = my_date("Y"); $year_sel < (my_date("Y") + 5); ++$year_sel) 1636 { 1637 eval("\$yearsel .= \"".$templates->get("calendar_year_sel")."\";"); 1638 } 1639 1640 $addevent = ''; 1641 if($mybb->usergroup['canaddevents'] == 1) 1642 { 1643 eval("\$addevent = \"".$templates->get("calendar_addeventlink")."\";"); 1644 } 1645 1646 // Now output the page 1647 $plugins->run_hooks("calendar_event_end"); 1648 eval("\$event = \"".$templates->get("calendar_event")."\";"); 1649 output_page($event); 1650 } 1651 1652 // View all events on a specific day. 1653 if($mybb->input['action'] == "dayview") 1654 { 1655 // Showing a particular calendar 1656 if($mybb->input['calendar']) 1657 { 1658 $query = $db->simple_select("calendars", "*", "cid='{$mybb->input['calendar']}'"); 1659 $calendar = $db->fetch_array($query); 1660 } 1661 // Showing the default calendar 1662 else 1663 { 1664 $query = $db->simple_select("calendars", "*", "disporder='1'"); 1665 $calendar = $db->fetch_array($query); 1666 } 1667 1668 // Invalid calendar? 1669 if(!$calendar) 1670 { 1671 error($lang->invalid_calendar); 1672 } 1673 1674 // Do we have permission to view this calendar? 1675 $calendar_permissions = get_calendar_permissions($calendar['cid']); 1676 if($calendar_permissions['canviewcalendar'] != 1) 1677 { 1678 error_no_permission(); 1679 } 1680 1681 // Incoming year? 1682 if(isset($mybb->input['year']) && $mybb->get_input('year', MyBB::INPUT_INT) <= my_date("Y")+5 && $mybb->get_input('year', MyBB::INPUT_INT) >= 1901) 1683 { 1684 $year = $mybb->get_input('year', MyBB::INPUT_INT); 1685 } 1686 else 1687 { 1688 $year = my_date("Y"); 1689 } 1690 1691 // Then the month 1692 $mybb->input['month'] = $mybb->get_input('month', MyBB::INPUT_INT); 1693 if($mybb->input['month'] >= 1 && $mybb->input['month'] <= 12) 1694 { 1695 $month = $mybb->input['month']; 1696 } 1697 else 1698 { 1699 $month = my_date("n"); 1700 } 1701 1702 // And day? 1703 $mybb->input['day'] = $mybb->get_input('day', MyBB::INPUT_INT); 1704 if($mybb->input['day'] && $mybb->input['day'] <= gmdate("t", adodb_gmmktime(0, 0, 0, $month, 1, $year))) 1705 { 1706 $day = $mybb->input['day']; 1707 } 1708 else 1709 { 1710 $day = my_date("j"); 1711 } 1712 1713 add_breadcrumb(htmlspecialchars_uni($calendar['name']), get_calendar_link($calendar['cid'])); 1714 add_breadcrumb("$day $monthnames[$month] $year", get_calendar_link($calendar['cid'], $year, $month, $day)); 1715 1716 $plugins->run_hooks("calendar_dayview_start"); 1717 1718 // Load Birthdays for this day 1719 $birthday_list = $birthdays = ''; 1720 if($calendar['showbirthdays']) 1721 { 1722 $birthdays2 = get_birthdays($month, $day); 1723 $bdayhidden = 0; 1724 if(is_array($birthdays2)) 1725 { 1726 foreach($birthdays2 as $birthday) 1727 { 1728 if($birthday['birthdayprivacy'] == 'all') 1729 { 1730 $bday = explode("-", $birthday['birthday']); 1731 if($bday[2] && $bday[2] < $year) 1732 { 1733 $age = $year - $bday[2]; 1734 $age = " (".$lang->sprintf($lang->years_old, $age).")"; 1735 } 1736 else 1737 { 1738 $age = ''; 1739 } 1740 1741 $birthday['username'] = format_name(htmlspecialchars_uni($birthday['username']), $birthday['usergroup'], $birthday['displaygroup']); 1742 $birthday['profilelink'] = build_profile_link($birthday['username'], $birthday['uid']); 1743 eval("\$birthday_list .= \"".$templates->get("calendar_dayview_birthdays_bday", 1, 0)."\";"); 1744 $comma = $lang->comma; 1745 } 1746 else 1747 { 1748 ++$bdayhidden; 1749 } 1750 } 1751 } 1752 if($bdayhidden > 0) 1753 { 1754 if($birthday_list) 1755 { 1756 $birthday_list .= " - "; 1757 } 1758 $birthday_list .= "{$bdayhidden} {$lang->birthdayhidden}"; 1759 } 1760 if($birthday_list) 1761 { 1762 $bdaydate = my_date($mybb->settings['dateformat'], adodb_gmmktime(0, 0, 0, $month, $day, $year), 0, 0); 1763 $lang->birthdays_on_day = $lang->sprintf($lang->birthdays_on_day, $bdaydate); 1764 eval("\$birthdays = \"".$templates->get("calendar_dayview_birthdays", 1, 0)."\";"); 1765 } 1766 } 1767 1768 // So now we fetch events for this month 1769 $start_timestamp = adodb_gmmktime(0, 0, 0, $month, $day, $year); 1770 $end_timestamp = adodb_gmmktime(23, 59, 59, $month, $day, $year); 1771 1772 $events_cache = get_events($calendar, $start_timestamp, $end_timestamp, $calendar_permissions['canmoderateevents']); 1773 1774 $events = ''; 1775 if(isset($events_cache["$day-$month-$year"]) && is_array($events_cache["$day-$month-$year"])) 1776 { 1777 foreach($events_cache["$day-$month-$year"] as $event) 1778 { 1779 $event['name'] = htmlspecialchars_uni($event['name']); 1780 1781 $event_parser_options = array( 1782 "allow_html" => $calendar['allowhtml'], 1783 "allow_mycode" => $calendar['allowmycode'], 1784 "allow_smilies" => $calendar['allowsmilies'], 1785 "allow_imgcode" => $calendar['allowimgcode'], 1786 "allow_videocode" => $calendar['allowvideocode'] 1787 ); 1788 1789 if($mybb->user['uid'] != 0 && $mybb->user['showimages'] != 1 || $mybb->settings['guestimages'] != 1 && $mybb->user['uid'] == 0) 1790 { 1791 $event_parser_options['allow_imgcode'] = 0; 1792 } 1793 1794 if($mybb->user['uid'] != 0 && $mybb->user['showvideos'] != 1 || $mybb->settings['guestvideos'] != 1 && $mybb->user['uid'] == 0) 1795 { 1796 $event_parser_options['allow_videocode'] = 0; 1797 } 1798 1799 $event['description'] = $parser->parse_message($event['description'], $event_parser_options); 1800 1801 // Get the usergroup 1802 if($event['usergroup']) 1803 { 1804 $user_usergroup = usergroup_permissions($event['usergroup']); 1805 } 1806 else 1807 { 1808 $user_usergroup = usergroup_permissions(1); 1809 } 1810 1811 $displaygroupfields = array("title", "description", "namestyle", "usertitle", "stars", "starimage", "image"); 1812 1813 if(!$event['displaygroup']) 1814 { 1815 $event['displaygroup'] = $event['usergroup']; 1816 } 1817 1818 $display_group = usergroup_displaygroup($event['displaygroup']); 1819 if(is_array($display_group)) 1820 { 1821 $user_usergroup = array_merge($user_usergroup, $display_group); 1822 } 1823 1824 $titles_cache = $cache->read("usertitles"); 1825 1826 // Event made by registered user 1827 if($event['uid'] > 0 && $event['username']) 1828 { 1829 $event['username'] = htmlspecialchars_uni($event['username']); 1830 $event['profilelink'] = build_profile_link(format_name($event['username'], $event['usergroup'], $event['displaygroup']), $event['uid']); 1831 1832 if(trim($event['usertitle']) != "") 1833 { 1834 // Do nothing, no need for an extra variable.. 1835 } 1836 elseif($user_usergroup['usertitle'] != "") 1837 { 1838 $event['usertitle'] = $user_usergroup['usertitle']; 1839 } 1840 elseif(is_array($titles_cache) && !$user_usergroup['usertitle']) 1841 { 1842 reset($titles_cache); 1843 foreach($titles_cache as $title) 1844 { 1845 if($event['postnum'] >= $title['posts']) 1846 { 1847 $event['usertitle'] = $title['title']; 1848 $event['stars'] = $title['stars']; 1849 $event['starimage'] = $title['starimage']; 1850 break; 1851 } 1852 } 1853 } 1854 1855 if($user_usergroup['stars']) 1856 { 1857 $event['stars'] = $user_usergroup['stars']; 1858 } 1859 1860 if(empty($event['starimage'])) 1861 { 1862 $event['starimage'] = $user_usergroup['starimage']; 1863 } 1864 1865 $event['userstars'] = ''; 1866 for($i = 0; $i < $event['stars']; ++$i) 1867 { 1868 eval("\$event['userstars'] .= \"".$templates->get("calendar_event_userstar", 1, 0)."\";"); 1869 } 1870 1871 if($event['userstars'] && $event['starimage'] && $event['stars']) 1872 { 1873 $event['userstars'] .= "<br />"; 1874 } 1875 } 1876 // Created by a guest or an unknown user 1877 else 1878 { 1879 if(!$event['username']) 1880 { 1881 $event['username'] = $lang->guest; 1882 } 1883 1884 $event['username'] = htmlspecialchars_uni($event['username']); 1885 $event['profilelink'] = format_name($event['username'], 1); 1886 1887 if($user_usergroup['usertitle']) 1888 { 1889 $event['usertitle'] = $user_usergroup['usertitle']; 1890 } 1891 else 1892 { 1893 $event['usertitle'] = $lang->guest; 1894 } 1895 $event['userstars'] = ''; 1896 } 1897 1898 $event['usertitle'] = htmlspecialchars_uni($event['usertitle']); 1899 1900 if($event['ignoretimezone'] == 0) 1901 { 1902 $offset = (float)$event['timezone']; 1903 } 1904 else 1905 { 1906 $offset = (float)$mybb->user['timezone']; 1907 } 1908 1909 $event['starttime_user'] = $event['starttime']+$offset*3600; 1910 1911 // Events over more than one day 1912 $time_period = ''; 1913 if($event['endtime'] > 0 && $event['endtime'] != $event['starttime']) 1914 { 1915 $event['endtime_user'] = $event['endtime']+$offset*3600; 1916 $start_day = adodb_gmmktime(0, 0, 0, gmdate("n", $event['starttime_user']), gmdate("j", $event['starttime_user']), gmdate("Y", $event['starttime_user'])); 1917 $end_day = adodb_gmmktime(0, 0, 0, gmdate("n", $event['endtime_user']), gmdate("j", $event['endtime_user']), gmdate("Y", $event['endtime_user'])); 1918 $start_time = gmdate("Hi", $event['starttime_user']); 1919 $end_time = gmdate("Hi", $event['endtime_user']); 1920 1921 // Event only runs over one day 1922 if($start_day == $end_day && $event['repeats']['repeats'] == 0) 1923 { 1924 $time_period = gmdate($mybb->settings['dateformat'], $event['starttime_user']); 1925 // Event runs all day 1926 if($start_time != 0000 && $end_time != 2359) 1927 { 1928 $time_period .= $lang->comma.gmdate($mybb->settings['timeformat'], $event['starttime_user'])." - ".gmdate($mybb->settings['timeformat'], $event['endtime_user']); 1929 } 1930 else 1931 { 1932 $time_period .= $lang->comma.$lang->all_day; 1933 } 1934 } 1935 else 1936 { 1937 $time_period = gmdate($mybb->settings['dateformat'], $event['starttime_user']).", ".gmdate($mybb->settings['timeformat'], $event['starttime_user']); 1938 $time_period .= " - "; 1939 $time_period .= gmdate($mybb->settings['dateformat'], $event['endtime_user']).", ".gmdate($mybb->settings['timeformat'], $event['endtime_user']); 1940 } 1941 } 1942 else 1943 { 1944 $time_period = gmdate($mybb->settings['dateformat'], $event['starttime_user']); 1945 } 1946 1947 $repeats = fetch_friendly_repetition($event); 1948 if($repeats) 1949 { 1950 eval("\$repeats = \"".$templates->get("calendar_repeats")."\";"); 1951 } 1952 1953 $edit_event = $moderator_options = $event_class = ""; 1954 if($calendar_permissions['canmoderateevents'] == 1 || ($mybb->user['uid'] > 0 && $mybb->user['uid'] == $event['uid'])) 1955 { 1956 eval("\$edit_event = \"".$templates->get("calendar_event_editbutton")."\";"); 1957 if($calendar_permissions['canmoderateevents'] == 1) 1958 { 1959 if($event['visible'] == 1) 1960 { 1961 $approve = $lang->unapprove_event; 1962 $approve_value = "unapprove"; 1963 } 1964 else 1965 { 1966 $approve = $lang->approve_event; 1967 $approve_value = "approve"; 1968 } 1969 eval("\$moderator_options = \"".$templates->get("calendar_event_modoptions")."\";"); 1970 } 1971 if($event['visible'] == 0) 1972 { 1973 $event_class = " trow_shaded"; 1974 } 1975 } 1976 eval("\$events .= \"".$templates->get("calendar_dayview_event")."\";"); 1977 } 1978 } 1979 1980 $yearsel = ''; 1981 for($year_sel = my_date("Y"); $year_sel < (my_date("Y") + 5); ++$year_sel) 1982 { 1983 eval("\$yearsel .= \"".$templates->get("calendar_year_sel")."\";"); 1984 } 1985 1986 $addevent = ''; 1987 if($mybb->usergroup['canaddevents'] == 1) 1988 { 1989 eval("\$addevent = \"".$templates->get("calendar_addeventlink")."\";"); 1990 } 1991 1992 if(!$events) 1993 { 1994 $lang->no_events = $lang->sprintf($lang->no_events, $calendar['cid'], $day, $month, $year); 1995 eval("\$events = \"".$templates->get("calendar_dayview_noevents")."\";"); 1996 } 1997 1998 // Now output the page 1999 $plugins->run_hooks("calendar_dayview_end"); 2000 2001 eval("\$day_view = \"".$templates->get("calendar_dayview")."\";"); 2002 output_page($day_view); 2003 } 2004 2005 // View all events for a specific week 2006 if($mybb->input['action'] == "weekview") 2007 { 2008 // Showing a particular calendar 2009 if($mybb->input['calendar']) 2010 { 2011 $query = $db->simple_select("calendars", "*", "cid='{$mybb->input['calendar']}'"); 2012 $calendar = $db->fetch_array($query); 2013 } 2014 // Showing the default calendar 2015 else 2016 { 2017 $query = $db->simple_select("calendars", "*", "disporder='1'"); 2018 $calendar = $db->fetch_array($query); 2019 } 2020 2021 // Invalid calendar? 2022 if(!$calendar) 2023 { 2024 error($lang->invalid_calendar); 2025 } 2026 2027 // Do we have permission to view this calendar? 2028 $calendar_permissions = get_calendar_permissions($calendar['cid']); 2029 if($calendar_permissions['canviewcalendar'] != 1) 2030 { 2031 error_no_permission(); 2032 } 2033 2034 $weekdays = fetch_weekday_structure($calendar['startofweek']); 2035 2036 $yearsel = ''; 2037 for($year_sel = my_date("Y"); $year_sel < (my_date("Y") + 5); ++$year_sel) 2038 { 2039 eval("\$yearsel .= \"".$templates->get("calendar_year_sel")."\";"); 2040 } 2041 2042 // No incoming week, show THIS week 2043 if(empty($mybb->input['week'])) 2044 { 2045 list($day, $month, $year) = explode("-", my_date("j-n-Y")); 2046 $php_weekday = gmdate("w", adodb_gmmktime(0, 0, 0, $month, $day, $year)); 2047 $my_weekday = array_search($php_weekday, $weekdays); 2048 // So now we have the start day of this week to show 2049 $start_day = $day-$my_weekday; 2050 $mybb->input['week'] = adodb_gmmktime(0, 0, 0, $month, $start_day, $year); 2051 } 2052 else 2053 { 2054 $mybb->input['week'] = (int)str_replace("n", "-", $mybb->get_input('week')); 2055 // Nothing before 1901 please ;) 2056 if($mybb->input['week'] < -2177625600) 2057 { 2058 $mybb->input['week'] = -2177625600; 2059 } 2060 } 2061 2062 // This is where we've come from and where we're headed 2063 $week_from = explode("-", gmdate("j-n-Y", $mybb->input['week'])); 2064 $week_from_one = $week_from[1]; 2065 $friendly_week_from = gmdate($mybb->settings['dateformat'], $mybb->input['week']); 2066 $week_to_stamp = adodb_gmmktime(0, 0, 0, $week_from[1], $week_from[0]+6, $week_from[2]); 2067 $week_to = explode("-", gmdate("j-n-Y-t", $week_to_stamp)); 2068 $friendly_week_to = gmdate($mybb->settings['dateformat'], $week_to_stamp); 2069 2070 add_breadcrumb(htmlspecialchars_uni($calendar['name']), get_calendar_link($calendar['cid'])); 2071 add_breadcrumb("{$monthnames[$week_from[1]]} {$week_from[2]}", get_calendar_link($calendar['cid'], $week_from[2], $week_from[1])); 2072 add_breadcrumb($lang->weekly_overview); 2073 2074 $plugins->run_hooks("calendar_weekview_start"); 2075 2076 // Establish if we have a month ending in this week 2077 if($week_from[1] != $week_to[1]) 2078 { 2079 $different_months = true; 2080 $week_months = array(array($week_from[1], $week_from[2]), array($week_to[1], $week_to[2])); 2081 $bday_months = array($week_from[1], $week_to[1]); 2082 } 2083 else 2084 { 2085 $week_months = array(array($week_from[1], $week_from[2])); 2086 $bday_months = array($week_from[1]); 2087 } 2088 2089 // Load Birthdays for this month 2090 if($calendar['showbirthdays'] == 1) 2091 { 2092 $birthdays = get_birthdays($bday_months); 2093 } 2094 2095 // We load events for the entire month date range - for our mini calendars too 2096 $events_from = adodb_gmmktime(0, 0, 0, $week_from[1], 1, $week_from[2]); 2097 $events_to = adodb_gmmktime(0, 0, 0, $week_to[1], $week_to[3], $week_to[2]); 2098 2099 $events_cache = get_events($calendar, $events_from, $events_to, $calendar_permissions['canmoderateevents']); 2100 2101 $today = my_date("dnY"); 2102 2103 $prev_week = $mybb->input['week'] - 604800; 2104 2105 $prev_week_link = ''; 2106 if(my_date("Y", $prev_week) >= 1901) 2107 { 2108 $prev_link = get_calendar_week_link($calendar['cid'], $prev_week); 2109 2110 eval("\$prev_week_link = \"".$templates->get("calendar_weekview_prevlink")."\";"); 2111 } 2112 2113 $next_week = $mybb->input['week'] + 604800; 2114 2115 $next_week_link = ''; 2116 if(my_date("Y", $next_week)+1 <= my_date("Y")+5) 2117 { 2118 $next_link = get_calendar_week_link($calendar['cid'], $next_week); 2119 2120 eval("\$next_week_link = \"".$templates->get("calendar_weekview_nextlink")."\";"); 2121 } 2122 2123 $sep = ''; 2124 if(!empty($prev_week_link) && !empty($next_week_link)) 2125 { 2126 $sep = " | "; 2127 } 2128 2129 $weekday_date = $mybb->input['week']; 2130 2131 while($weekday_date <= $week_to_stamp) 2132 { 2133 $weekday = gmdate("w", $weekday_date); 2134 $weekday_name = fetch_weekday_name($weekday); 2135 $weekday_month = gmdate("n", $weekday_date); 2136 $weekday_year = gmdate("Y", $weekday_date); 2137 $weekday_day = gmdate("j", $weekday_date); 2138 2139 // Special shading for today 2140 $day_shaded = ''; 2141 if(gmdate("dnY", $weekday_date) == $today) 2142 { 2143 $day_shaded = ' trow_shaded'; 2144 } 2145 2146 $day_events = ''; 2147 2148 // Any events on this specific day? 2149 if(is_array($events_cache) && array_key_exists("{$weekday_day}-{$weekday_month}-{$weekday_year}", $events_cache)) 2150 { 2151 foreach($events_cache["$weekday_day-$weekday_month-$weekday_year"] as $event) 2152 { 2153 $event['eventlink'] = get_event_link($event['eid']); 2154 $event['name'] = htmlspecialchars_uni($event['name']); 2155 $event['fullname'] = $event['name']; 2156 if(my_strlen($event['name']) > 50) 2157 { 2158 $event['name'] = my_substr($event['name'], 0, 50) . "..."; 2159 } 2160 // Events over more than one day 2161 $time_period = ''; 2162 if($event['endtime'] > 0 && $event['endtime'] != $event['starttime']) 2163 { 2164 $start_day = adodb_gmmktime(0, 0, 0, gmdate("n", $event['starttime_user']), gmdate("j", $event['starttime_user']), gmdate("Y", $event['starttime_user'])); 2165 $end_day = adodb_gmmktime(0, 0, 0, gmdate("n", $event['endtime_user']), gmdate("j", $event['endtime_user']), gmdate("Y", $event['endtime_user'])); 2166 $start_time = gmdate("Hi", $event['starttime_user']); 2167 $end_time = gmdate("Hi", $event['endtime_user']); 2168 // Event only runs over one day 2169 if($start_day == $end_day || $event['repeats'] > 0) 2170 { 2171 // Event runs all day 2172 if($start_time == 0000 && $end_time == 2359) 2173 { 2174 $time_period = $lang->all_day; 2175 } 2176 else 2177 { 2178 $time_period = gmdate($mybb->settings['timeformat'], $event['starttime_user'])." - ".gmdate($mybb->settings['timeformat'], $event['endtime_user']); 2179 } 2180 } 2181 // Event starts on this day 2182 else if($start_day == $weekday_date) 2183 { 2184 // Event runs all day 2185 if($start_time == 0000) 2186 { 2187 $time_period = $lang->all_day; 2188 } 2189 else 2190 { 2191 $time_period = $lang->starts.gmdate($mybb->settings['timeformat'], $event['starttime_user']); 2192 } 2193 } 2194 // Event finishes on this day 2195 else if($end_day == $weekday_date) 2196 { 2197 // Event runs all day 2198 if($end_time == 2359) 2199 { 2200 $time_period = $lang->all_day; 2201 } 2202 else 2203 { 2204 $time_period = $lang->finishes.gmdate($mybb->settings['timeformat'], $event['endtime_user']); 2205 } 2206 } 2207 // Event is in the middle 2208 else 2209 { 2210 $time_period = $lang->all_day; 2211 } 2212 } 2213 $event_time = ''; 2214 if($time_period) 2215 { 2216 eval("\$event_time = \"".$templates->get("calendar_weekview_day_event_time")."\";"); 2217 } 2218 if($event['private'] == 1) 2219 { 2220 $event_class = " private_event"; 2221 } 2222 else 2223 { 2224 $event_class = " public_event"; 2225 } 2226 if($event['visible'] == 0) 2227 { 2228 $event_class .= " trow_shaded"; 2229 } 2230 eval("\$day_events .= \"".$templates->get("calendar_weekview_day_event")."\";"); 2231 } 2232 } 2233 2234 // Birthdays on this day? 2235 $day_birthdays = $calendar_link = $birthday_lang = ''; 2236 if($calendar['showbirthdays'] && is_array($birthdays) && array_key_exists("{$weekday_day}-{$weekday_month}", $birthdays)) 2237 { 2238 $bday_count = count($birthdays["$weekday_day-$weekday_month"]); 2239 if($bday_count > 1) 2240 { 2241 $birthday_lang = $lang->birthdays; 2242 } 2243 else 2244 { 2245 $birthday_lang = $lang->birthday; 2246 } 2247 2248 $calendar_link = get_calendar_link($calendar['cid'], $weekday_year, $weekday_month, $weekday_day); 2249 eval("\$day_birthdays = \"".$templates->get("calendar_weekview_day_birthdays")."\";"); 2250 } 2251 2252 $day_link = get_calendar_link($calendar['cid'], $weekday_year, $weekday_month, $weekday_day); 2253 if(!isset($day_bits[$weekday_month])) 2254 { 2255 $day_bits[$weekday_month] = ''; 2256 } 2257 eval("\$day_bits[$weekday_month] .= \"".$templates->get("calendar_weekview_day")."\";"); 2258 $day_events = $day_birthdays = ""; 2259 $weekday_date = adodb_gmmktime(0, 0, 0, $weekday_month, $weekday_day+1, $weekday_year); 2260 } 2261 2262 // Now we build our month headers 2263 $mini_calendars = $weekday_bits = ''; 2264 foreach($week_months as $month) 2265 { 2266 $weekday_month = $monthnames[$month[0]]; 2267 $weekday_year = $month[1]; 2268 2269 // Fetch mini calendar for each month in this week 2270 $mini_calendars .= build_mini_calendar($calendar, $month[0], $weekday_year, $events_cache)."<br />"; 2271 2272 // Fetch out the days for this month 2273 $days = $day_bits[$month[0]]; 2274 2275 eval("\$weekday_bits .= \"".$templates->get("calendar_weekview_month")."\";"); 2276 } 2277 2278 $addevent = ''; 2279 if($mybb->usergroup['canaddevents'] == 1) 2280 { 2281 eval("\$addevent = \"".$templates->get("calendar_addeventlink")."\";"); 2282 } 2283 2284 // Now output the page 2285 $plugins->run_hooks("calendar_weekview_end"); 2286 2287 eval("\$weekview = \"".$templates->get("calendar_weekview")."\";"); 2288 output_page($weekview); 2289 } 2290 2291 // Showing a calendar 2292 if(!$mybb->input['action']) 2293 { 2294 // Showing a particular calendar 2295 if($mybb->input['calendar']) 2296 { 2297 $query = $db->simple_select("calendars", "*", "cid='{$mybb->input['calendar']}'"); 2298 $calendar = $db->fetch_array($query); 2299 } 2300 // Showing the default calendar 2301 else 2302 { 2303 $query = $db->simple_select("calendars", "*", "", array('order_by' => 'disporder', 'limit' => 1)); 2304 $calendar = $db->fetch_array($query); 2305 } 2306 2307 // Invalid calendar? 2308 if(!$calendar) 2309 { 2310 error($lang->invalid_calendar); 2311 } 2312 2313 // Do we have permission to view this calendar? 2314 $calendar_permissions = get_calendar_permissions($calendar['cid']); 2315 2316 if($calendar_permissions['canviewcalendar'] != 1) 2317 { 2318 error_no_permission(); 2319 } 2320 2321 $plugins->run_hooks("calendar_main_view"); 2322 2323 // Incoming year? 2324 if(isset($mybb->input['year']) && $mybb->get_input('year', MyBB::INPUT_INT) <= my_date("Y")+5 && $mybb->get_input('year', MyBB::INPUT_INT) >= 1901) 2325 { 2326 $year = $mybb->get_input('year', MyBB::INPUT_INT); 2327 } 2328 else 2329 { 2330 $year = my_date("Y"); 2331 } 2332 2333 // Then the month 2334 $mybb->input['month'] = $mybb->get_input('month', MyBB::INPUT_INT); 2335 if($mybb->input['month'] >= 1 && $mybb->input['month'] <= 12) 2336 { 2337 $month = $mybb->input['month']; 2338 } 2339 else 2340 { 2341 $month = my_date("n"); 2342 } 2343 2344 add_breadcrumb(htmlspecialchars_uni($calendar['name']), get_calendar_link($calendar['cid'])); 2345 add_breadcrumb("$monthnames[$month] $year", get_calendar_link($calendar['cid'], $year, $month)); 2346 2347 $prev_month = get_prev_month($month, $year); 2348 2349 $prev_month_link = ''; 2350 if($prev_month['year'] >= 1901) 2351 { 2352 $prev_link = get_calendar_link($calendar['cid'], $prev_month['year'], $prev_month['month']); 2353 2354 eval("\$prev_month_link = \"".$templates->get("calendar_prevlink")."\";"); 2355 } 2356 2357 $next_month = get_next_month($month, $year); 2358 2359 $next_month_link = ''; 2360 if($next_month['year'] <= my_date("Y")+5) 2361 { 2362 $next_link = get_calendar_link($calendar['cid'], $next_month['year'], $next_month['month']); 2363 2364 eval("\$next_month_link = \"".$templates->get("calendar_nextlink")."\";"); 2365 } 2366 2367 $sep = ''; 2368 if(!empty($prev_month_link) && !empty($next_month_link)) 2369 { 2370 $sep = " | "; 2371 } 2372 2373 // Start constructing the calendar 2374 2375 $weekdays = fetch_weekday_structure($calendar['startofweek']); 2376 2377 $month_start_weekday = gmdate("w", adodb_gmmktime(0, 0, 0, $month, $calendar['startofweek']+1, $year)); 2378 2379 $prev_month_days = gmdate("t", adodb_gmmktime(0, 0, 0, $prev_month['month'], 1, $prev_month['year'])); 2380 2381 // This is if we have days in the previous month to show 2382 if($month_start_weekday != $weekdays[0] || $calendar['startofweek'] != 0) 2383 { 2384 $prev_days = $day = gmdate("t", adodb_gmmktime(0, 0, 0, $prev_month['month'], 1, $prev_month['year'])); 2385 $day -= array_search(($month_start_weekday), $weekdays); 2386 $day += $calendar['startofweek']+1; 2387 if($day > $prev_month_days+1) 2388 { 2389 // Go one week back 2390 $day -= 7; 2391 } 2392 $calendar_month = $prev_month['month']; 2393 $calendar_year = $prev_month['year']; 2394 } 2395 else 2396 { 2397 $day = $calendar['startofweek']+1; 2398 $calendar_month = $month; 2399 $calendar_year = $year; 2400 } 2401 2402 // So now we fetch events for this month (nb, cache events for past month, current month and next month for mini calendars too) 2403 $start_timestamp = adodb_gmmktime(0, 0, 0, $calendar_month, $day, $calendar_year); 2404 $num_days = gmdate("t", adodb_gmmktime(0, 0, 0, $month, 1, $year)); 2405 2406 $month_end_weekday = gmdate("w", adodb_gmmktime(0, 0, 0, $month, $num_days, $year)); 2407 $next_days = 6-$month_end_weekday+$calendar['startofweek']; 2408 2409 // More than a week? Go one week back 2410 if($next_days >= 7) 2411 { 2412 $next_days -= 7; 2413 } 2414 if($next_days > 0) 2415 { 2416 $end_timestamp = adodb_gmmktime(23, 59, 59, $next_month['month'], $next_days, $next_month['year']); 2417 } 2418 else 2419 { 2420 // We don't need days from the next month 2421 $end_timestamp = adodb_gmmktime(23, 59, 59, $month, $num_days, $year); 2422 } 2423 2424 $events_cache = get_events($calendar, $start_timestamp, $end_timestamp, $calendar_permissions['canmoderateevents']); 2425 2426 // Fetch birthdays 2427 if($calendar['showbirthdays']) 2428 { 2429 $bday_months = array($month, $prev_month['month'], $next_month['month']); 2430 $birthdays = get_birthdays($bday_months); 2431 } 2432 2433 $today = my_date("dnY"); 2434 $weekday_headers = ''; 2435 2436 // Build weekday headers 2437 foreach($weekdays as $weekday) 2438 { 2439 $weekday_name = fetch_weekday_name($weekday); 2440 eval("\$weekday_headers .= \"".$templates->get("calendar_weekdayheader")."\";"); 2441 } 2442 2443 $in_month = 0; 2444 $day_bits = $calendar_rows = ''; 2445 for($row = 0; $row < 6; ++$row) // Iterate weeks (each week gets a row) 2446 { 2447 foreach($weekdays as $weekday_id => $weekday) 2448 { 2449 // Current month always starts on 1st row 2450 if($row == 0 && $day == $calendar['startofweek']+1) 2451 { 2452 $in_month = 1; 2453 $calendar_month = $month; 2454 $calendar_year = $year; 2455 } 2456 else if($calendar_month == $prev_month['month'] && $day > $prev_month_days) 2457 { 2458 $day = 1; 2459 $in_month = 1; 2460 $calendar_month = $month; 2461 $calendar_year = $year; 2462 } 2463 else if($day > $num_days && $calendar_month != $prev_month['month']) 2464 { 2465 $in_month = 0; 2466 $calendar_month = $next_month['month']; 2467 $calendar_year = $next_month['year']; 2468 $day = 1; 2469 if($calendar_month == $month) 2470 { 2471 $in_month = 1; 2472 } 2473 } 2474 2475 if($weekday_id == 0) 2476 { 2477 $week_stamp = adodb_gmmktime(0, 0, 0, $calendar_month, $day, $calendar_year); 2478 $week_link = get_calendar_week_link($calendar['cid'], $week_stamp); 2479 } 2480 2481 if($weekday_id == 0 && $calendar_month == $next_month['month']) 2482 { 2483 break; 2484 } 2485 2486 // Any events on this specific day? 2487 $day_events = $event_lang = ''; 2488 if(is_array($events_cache) && array_key_exists("{$day}-{$calendar_month}-{$calendar_year}", $events_cache)) 2489 { 2490 $total_events = count($events_cache["$day-$calendar_month-$calendar_year"]); 2491 if($total_events > $calendar['eventlimit'] && $calendar['eventlimit'] != 0) 2492 { 2493 if($total_events > 1) 2494 { 2495 $event_lang = $lang->events; 2496 } 2497 else 2498 { 2499 $event_lang = $lang->event; 2500 } 2501 2502 $calendar['link'] = get_calendar_link($calendar['cid'], $calendar_year, $calendar_month, $day); 2503 eval("\$day_events = \"".$templates->get("calendar_weekrow_day_events")."\";"); 2504 } 2505 else 2506 { 2507 foreach($events_cache["$day-$calendar_month-$calendar_year"] as $event) 2508 { 2509 $event['eventlink'] = get_event_link($event['eid']); 2510 $event['fullname'] = htmlspecialchars_uni($event['name']); 2511 if(my_strlen($event['name']) > 15) 2512 { 2513 $event['name'] = my_substr($event['name'], 0, 15) . "..."; 2514 } 2515 $event['name'] = htmlspecialchars_uni($event['name']); 2516 if($event['private'] == 1) 2517 { 2518 $event_class = " private_event"; 2519 } 2520 else 2521 { 2522 $event_class = " public_event"; 2523 } 2524 if($event['visible'] == 0) 2525 { 2526 $event_class .= " trow_shaded"; 2527 } 2528 eval("\$day_events .= \"".$templates->get("calendar_eventbit")."\";"); 2529 } 2530 } 2531 } 2532 2533 // Birthdays on this day? 2534 $day_birthdays = $birthday_lang = ''; 2535 if($calendar['showbirthdays'] && is_array($birthdays) && array_key_exists("$day-$calendar_month", $birthdays)) 2536 { 2537 $bday_count = count($birthdays["$day-$calendar_month"]); 2538 if($bday_count > 1) 2539 { 2540 $birthday_lang = $lang->birthdays; 2541 } 2542 else 2543 { 2544 $birthday_lang = $lang->birthday; 2545 } 2546 2547 $calendar['link'] = get_calendar_link($calendar['cid'], $calendar_year, $calendar_month, $day); 2548 eval("\$day_birthdays = \"".$templates->get("calendar_weekrow_day_birthdays")."\";"); 2549 } 2550 2551 $day_link = get_calendar_link($calendar['cid'], $calendar_year, $calendar_month, $day); 2552 2553 // Is the current day 2554 if($day.$calendar_month.$year == $today && $month == $calendar_month) 2555 { 2556 eval("\$day_bits .= \"".$templates->get("calendar_weekrow_currentday")."\";"); 2557 } 2558 // Not in this month 2559 else if($in_month == 0) 2560 { 2561 eval("\$day_bits .= \"".$templates->get("calendar_weekrow_day")."\";"); 2562 } 2563 // Just a normal day in this month 2564 else 2565 { 2566 eval("\$day_bits .= \"".$templates->get("calendar_weekrow_thismonth")."\";"); 2567 } 2568 $day_birthdays = $day_events = ""; 2569 ++$day; 2570 } 2571 if($day_bits) 2572 { 2573 eval("\$calendar_rows .= \"".$templates->get("calendar_weekrow")."\";"); 2574 } 2575 $day_bits = ""; 2576 } 2577 2578 $yearsel = ''; 2579 for($year_sel = my_date("Y"); $year_sel < (my_date("Y") + 5); ++$year_sel) 2580 { 2581 eval("\$yearsel .= \"".$templates->get("calendar_year_sel")."\";"); 2582 } 2583 2584 $addevent = ''; 2585 if($mybb->usergroup['canaddevents'] == 1) 2586 { 2587 eval("\$addevent = \"".$templates->get("calendar_addeventlink")."\";"); 2588 } 2589 2590 $plugins->run_hooks("calendar_end"); 2591 2592 eval("\$calendar = \"".$templates->get("calendar")."\";"); 2593 output_page($calendar); 2594 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| 2005 - 2021 © MyBB.de | Alle Rechte vorbehalten! | Sponsor: netcup | Cross-referenced by PHPXref |