Please make sure IN_MYBB is defined."); } $page->add_breadcrumb_item($lang->calendars, "index.php?module=config-calendars"); if($mybb->input['action'] == "add" || $mybb->input['action'] == "permissions" || !$mybb->input['action']) { $sub_tabs['manage_calendars'] = array( 'title' => $lang->manage_calendars, 'link' => "index.php?module=config-calendars", 'description' => $lang->manage_calendars_desc ); $sub_tabs['add_calendar'] = array( 'title' => $lang->add_calendar, 'link' => "index.php?module=config-calendars&action=add", 'description' => $lang->add_calendar_desc ); } $plugins->run_hooks("admin_config_calendars_begin"); if($mybb->input['action'] == "add") { $plugins->run_hooks("admin_config_calendars_add"); if($mybb->request_method == "post") { $plugins->run_hooks("admin_config_calendars_add_commit"); if(!trim($mybb->input['name'])) { $errors[] = $lang->error_missing_name; } if(!isset($mybb->input['disporder'])) { $errors[] = $lang->error_missing_order; } if(!$errors) { $calendar = array( "name" => $db->escape_string($mybb->input['name']), "disporder" => $mybb->get_input('disporder', MyBB::INPUT_INT), "startofweek" => $mybb->get_input('startofweek', MyBB::INPUT_INT), "eventlimit" => $mybb->get_input('eventlimit', MyBB::INPUT_INT), "showbirthdays" => $mybb->get_input('showbirthdays', MyBB::INPUT_INT), "moderation" => $mybb->get_input('moderation', MyBB::INPUT_INT), "allowhtml" => $mybb->get_input('allowhtml', MyBB::INPUT_INT), "allowmycode" => $mybb->get_input('allowmycode', MyBB::INPUT_INT), "allowimgcode" => $mybb->get_input('allowimgcode', MyBB::INPUT_INT), "allowvideocode" => $mybb->get_input('allowvideocode', MyBB::INPUT_INT), "allowsmilies" => $mybb->get_input('allowsmilies', MyBB::INPUT_INT) ); $plugins->run_hooks("admin_config_calendars_add_commit_start"); $cid = $db->insert_query("calendars", $calendar); $plugins->run_hooks("admin_config_calendars_add_commit_end"); // Log admin action log_admin_action($cid, $mybb->input['name']); flash_message($lang->success_calendar_created, 'success'); admin_redirect("index.php?module=config-calendars"); } } else { $mybb->input = array_merge($mybb->input, array( "allowhtml" => 0, "eventlimit" => 4, "disporder" => 1, "moderation" => 0 ) ); } $page->add_breadcrumb_item($lang->add_calendar); $page->output_header($lang->calendars." - ".$lang->add_calendar); $page->output_nav_tabs($sub_tabs, 'add_calendar'); $form = new Form("index.php?module=config-calendars&action=add", "post"); if($errors) { $page->output_inline_error($errors); } $form_container = new FormContainer($lang->add_calendar); $form_container->output_row($lang->name." *", "", $form->generate_text_box('name', $mybb->get_input('name'), array('id' => 'name')), 'name'); $form_container->output_row($lang->display_order, $lang->display_order_desc, $form->generate_numeric_field('disporder', $mybb->get_input('disporder'), array('id' => 'disporder', 'min' => 0)), 'disporder'); $select_list = array($lang->sunday, $lang->monday, $lang->tuesday, $lang->wednesday, $lang->thursday, $lang->friday, $lang->saturday); $form_container->output_row($lang->week_start, $lang->week_start_desc, $form->generate_select_box('startofweek', $select_list, $mybb->get_input('startofweek'), array('id' => 'startofweek')), 'startofweek'); $form_container->output_row($lang->event_limit, $lang->event_limit_desc, $form->generate_numeric_field('eventlimit', $mybb->get_input('eventlimit'), array('id' => 'eventlimit', 'min' => 0)), 'eventlimit'); $form_container->output_row($lang->show_birthdays, $lang->show_birthdays_desc, $form->generate_yes_no_radio('showbirthdays', $mybb->get_input('showbirthdays'), true)); $form_container->output_row($lang->moderate_events, $lang->moderate_events_desc, $form->generate_yes_no_radio('moderation', $mybb->get_input('moderation'), true)); $form_container->output_row($lang->allow_html, "", $form->generate_yes_no_radio('allowhtml', $mybb->get_input('allowhtml'))); $form_container->output_row($lang->allow_mycode, "", $form->generate_yes_no_radio('allowmycode', $mybb->get_input('allowmycode'))); $form_container->output_row($lang->allow_img, "", $form->generate_yes_no_radio('allowimgcode', $mybb->get_input('allowimgcode'))); $form_container->output_row($lang->allow_video, "", $form->generate_yes_no_radio('allowvideocode', $mybb->get_input('allowvideocode'))); $form_container->output_row($lang->allow_smilies, "", $form->generate_yes_no_radio('allowsmilies', $mybb->get_input('allowsmilies'))); $form_container->end(); $buttons[] = $form->generate_submit_button($lang->save_calendar); $form->output_submit_wrapper($buttons); $form->end(); $page->output_footer(); } if($mybb->input['action'] == "permissions") { $usergroups = array(); $query = $db->simple_select("calendars", "*", "cid='".$mybb->get_input('cid', MyBB::INPUT_INT)."'"); $calendar = $db->fetch_array($query); // Does the calendar not exist? if(!$calendar) { flash_message($lang->error_invalid_calendar, 'error'); admin_redirect("index.php?module=config-calendars"); } $plugins->run_hooks("admin_config_calendars_permissions"); $query = $db->simple_select("usergroups", "*", "", array("order" => "name")); while($usergroup = $db->fetch_array($query)) { $usergroups[$usergroup['gid']] = $usergroup; } $existing_permissions = array(); $query = $db->simple_select("calendarpermissions", "*", "cid='{$calendar['cid']}'"); while($existing = $db->fetch_array($query)) { $existing_permissions[$existing['gid']] = $existing; } if($mybb->request_method == "post") { foreach(array_keys($usergroups) as $group_id) { if(isset($mybb->input['permissions'][$group_id])) { $permissions = $mybb->input['permissions'][$group_id]; } else { $permissions = array(); } $db->delete_query("calendarpermissions", "cid='{$calendar['cid']}' AND gid='".(int)$group_id."'"); if(empty($mybb->input['default_permissions'][$group_id])) { foreach(array('canviewcalendar','canaddevents','canbypasseventmod','canmoderateevents') as $calendar_permission) { if(!empty($permissions[$calendar_permission])) { $permissions_array[$calendar_permission] = 1; } else { $permissions_array[$calendar_permission] = 0; } } $permissions_array['gid'] = (int)$group_id; $permissions_array['cid'] = $calendar['cid']; $db->insert_query("calendarpermissions", $permissions_array); } } $plugins->run_hooks("admin_config_calendars_permissions_commit"); // Log admin action log_admin_action($calendar['cid'], $calendar['name']); flash_message($lang->success_calendar_permissions_updated, 'success'); admin_redirect("index.php?module=config-calendars"); } $calendar['name'] = htmlspecialchars_uni($calendar['name']); $page->add_breadcrumb_item($calendar['name'], "index.php?module=config-calendars&action=edit&cid={$calendar['cid']}"); $page->add_breadcrumb_item($lang->permissions); $page->output_header($lang->calendars." - ".$lang->edit_permissions); $form = new Form("index.php?module=config-calendars&action=permissions", "post"); echo $form->generate_hidden_field("cid", $calendar['cid']); $table = new Table; $table->construct_header($lang->permissions_group); $table->construct_header($lang->permissions_view, array("class" => "align_center", "width" => "10%")); $table->construct_header($lang->permissions_post_events, array("class" => "align_center", "width" => "10%")); $table->construct_header($lang->permissions_bypass_moderation, array("class" => "align_center", "width" => "10%")); $table->construct_header($lang->permissions_moderator, array("class" => "align_center", "width" => "10%")); $table->construct_header($lang->permissions_all, array("class" => "align_center", "width" => "10%")); foreach($usergroups as $usergroup) { if(!empty($existing_permissions[$usergroup['gid']])) { $perms = $existing_permissions[$usergroup['gid']]; $default_checked = false; } else { $perms = $usergroup; $default_checked = true; } $perm_check = $all_check = ""; $all_checked = true; foreach(array('canviewcalendar','canaddevents','canbypasseventmod','canmoderateevents') as $calendar_permission) { if($usergroup[$calendar_permission] == 1) { $value = "this.checked"; } else { $value = "false"; } if($perms[$calendar_permission] != 1) { $all_checked = false; } if($perms[$calendar_permission] == 1) { $perms_checked[$calendar_permission] = 1; } else { $perms_checked[$calendar_permission] = 0; } $all_check .= "\$('#permissions_{$usergroup['gid']}_{$calendar_permission}').prop('checked', this.checked);\n"; $perm_check .= "\$('#permissions_{$usergroup['gid']}_{$calendar_permission}').prop('checked', $value);\n"; } $default_click = "if(\$(this).is(':checked')) { $perm_check }"; $reset_default = "if(!\$(this).is(':checked')) { \$('#permissions_{$usergroup['gid']}_all').prop('checked', false); }\n"; $usergroup['title'] = htmlspecialchars_uni($usergroup['title']); $table->construct_cell("{$usergroup['title']}
".$form->generate_check_box("default_permissions[{$usergroup['gid']}];", 1, "", array("id" => "default_permissions_{$usergroup['gid']}", "checked" => $default_checked, "onclick" => $default_click))." "); $table->construct_cell($form->generate_check_box("permissions[{$usergroup['gid']}][canviewcalendar]", 1, "", array("id" => "permissions_{$usergroup['gid']}_canviewcalendar", "checked" => $perms_checked['canviewcalendar'], "onclick" => $reset_default)), array('class' => 'align_center')); $table->construct_cell($form->generate_check_box("permissions[{$usergroup['gid']}][canaddevents]", 1, "", array("id" => "permissions_{$usergroup['gid']}_canaddevents", "checked" => $perms_checked['canaddevents'], "onclick" => $reset_default)), array('class' => 'align_center')); $table->construct_cell($form->generate_check_box("permissions[{$usergroup['gid']}][canbypasseventmod]", 1, "", array("id" => "permissions_{$usergroup['gid']}_canbypasseventmod", "checked" => $perms_checked['canbypasseventmod'], "onclick" => $reset_default)), array('class' => 'align_center')); $table->construct_cell($form->generate_check_box("permissions[{$usergroup['gid']}][canmoderateevents]", 1, "", array("id" => "permissions_{$usergroup['gid']}_canmoderateevents", "checked" => $perms_checked['canmoderateevents'], "onclick" => $reset_default)), array('class' => 'align_center')); $table->construct_cell($form->generate_check_box("permissions[{$usergroup['gid']}][all]", 1, "", array("id" => "permissions_{$usergroup['gid']}_all", "checked" => $all_checked, "onclick" => $all_check)), array('class' => 'align_center')); $table->construct_row(); } $table->output("{$lang->calendar_permissions_for} {$calendar['name']}"); $buttons[] = $form->generate_submit_button($lang->save_permissions); $form->output_submit_wrapper($buttons); $form->end(); $page->output_footer(); } if($mybb->input['action'] == "edit") { $query = $db->simple_select("calendars", "*", "cid='".$mybb->get_input('cid', MyBB::INPUT_INT)."'"); $calendar = $db->fetch_array($query); // Does the calendar not exist? if(!$calendar) { flash_message($lang->error_invalid_calendar, 'error'); admin_redirect("index.php?module=config-calendars"); } $plugins->run_hooks("admin_config_calendars_edit"); if($mybb->request_method == "post") { if(!trim($mybb->input['name'])) { $errors[] = $lang->error_missing_name; } if(!isset($mybb->input['disporder'])) { $errors[] = $lang->error_missing_order; } if(!$errors) { $updated_calendar = array( "name" => $db->escape_string($mybb->input['name']), "disporder" => $mybb->get_input('disporder', MyBB::INPUT_INT), "startofweek" => $mybb->get_input('startofweek', MyBB::INPUT_INT), "eventlimit" => $mybb->get_input('eventlimit', MyBB::INPUT_INT), "showbirthdays" => $mybb->get_input('showbirthdays', MyBB::INPUT_INT), "moderation" => $mybb->get_input('moderation', MyBB::INPUT_INT), "allowhtml" => $mybb->get_input('allowhtml', MyBB::INPUT_INT), "allowmycode" => $mybb->get_input('allowmycode', MyBB::INPUT_INT), "allowimgcode" => $mybb->get_input('allowimgcode', MyBB::INPUT_INT), "allowvideocode" => $mybb->get_input('allowvideocode', MyBB::INPUT_INT), "allowsmilies" => $mybb->get_input('allowsmilies', MyBB::INPUT_INT) ); $plugins->run_hooks("admin_config_calendars_edit_commit"); $db->update_query("calendars", $updated_calendar, "cid='{$calendar['cid']}'"); // Log admin action log_admin_action($calendar['cid'], $mybb->input['name']); flash_message($lang->success_calendar_updated, 'success'); admin_redirect("index.php?module=config-calendars"); } } $page->add_breadcrumb_item($lang->edit_calendar); $page->output_header($lang->calendars." - ".$lang->edit_calendar); $sub_tabs['edit_calendar'] = array( 'title' => $lang->edit_calendar, 'link' => "index.php?module=config-calendars&action=edit", 'description' => $lang->edit_calendar_desc ); $page->output_nav_tabs($sub_tabs, 'edit_calendar'); $form = new Form("index.php?module=config-calendars&action=edit", "post"); echo $form->generate_hidden_field("cid", $calendar['cid']); if($errors) { $page->output_inline_error($errors); } else { $mybb->input = $calendar; } $form_container = new FormContainer($lang->edit_calendar); $form_container->output_row($lang->name." *", "", $form->generate_text_box('name', $mybb->input['name'], array('id' => 'name')), 'name'); $form_container->output_row($lang->display_order." *", $lang->display_order_desc, $form->generate_numeric_field('disporder', $mybb->input['disporder'], array('id' => 'disporder', 'min' => 0)), 'disporder'); $select_list = array($lang->sunday, $lang->monday, $lang->tuesday, $lang->wednesday, $lang->thursday, $lang->friday, $lang->saturday); $form_container->output_row($lang->week_start, $lang->week_start_desc, $form->generate_select_box('startofweek', $select_list, $mybb->input['startofweek'], array('id' => 'startofweek')), 'startofweek'); $form_container->output_row($lang->event_limit, $lang->event_limit_desc, $form->generate_numeric_field('eventlimit', $mybb->input['eventlimit'], array('id' => 'eventlimit', 'min' => 0)), 'eventlimit'); $form_container->output_row($lang->show_birthdays, $lang->show_birthdays_desc, $form->generate_yes_no_radio('showbirthdays', $mybb->input['showbirthdays'], true)); $form_container->output_row($lang->moderate_events, $lang->moderate_events_desc, $form->generate_yes_no_radio('moderation', $mybb->input['moderation'], true)); $form_container->output_row($lang->allow_html, "", $form->generate_yes_no_radio('allowhtml', $mybb->input['allowhtml'])); $form_container->output_row($lang->allow_mycode, "", $form->generate_yes_no_radio('allowmycode', $mybb->input['allowmycode'])); $form_container->output_row($lang->allow_img, "", $form->generate_yes_no_radio('allowimgcode', $mybb->input['allowimgcode'])); $form_container->output_row($lang->allow_video, "", $form->generate_yes_no_radio('allowvideocode', $mybb->input['allowvideocode'])); $form_container->output_row($lang->allow_smilies, "", $form->generate_yes_no_radio('allowsmilies', $mybb->input['allowsmilies'])); $form_container->end(); $buttons[] = $form->generate_submit_button($lang->save_calendar); $form->output_submit_wrapper($buttons); $form->end(); $page->output_footer(); } if($mybb->input['action'] == "delete") { $query = $db->simple_select("calendars", "*", "cid='".$mybb->get_input('cid', MyBB::INPUT_INT)."'"); $calendar = $db->fetch_array($query); // Does the calendar not exist? if(!$calendar) { flash_message($lang->error_invalid_calendar, 'error'); admin_redirect("index.php?module=config-calendars"); } $plugins->run_hooks("admin_config_calendars_delete"); // User clicked no if($mybb->get_input('no')) { admin_redirect("index.php?module=config-calendars"); } if($mybb->request_method == "post") { // Delete the calendar $db->delete_query("calendars", "cid='{$calendar['cid']}'"); $db->delete_query("calendarpermissions", "cid='{$calendar['cid']}'"); $db->delete_query("events", "cid='{$calendar['cid']}'"); $plugins->run_hooks("admin_config_calendars_delete_commit"); // Log admin action log_admin_action($calendar['cid'], $calendar['name']); flash_message($lang->success_calendar_deleted, 'success'); admin_redirect("index.php?module=config-calendars"); } else { $page->output_confirm_action("index.php?module=config-calendars&action=delete&cid={$calendar['cid']}", $lang->confirm_calendar_deletion); } } if($mybb->input['action'] == "update_order" && $mybb->request_method == "post") { if(!is_array($mybb->input['disporder'])) { admin_redirect("index.php?module=config-calendars"); } $plugins->run_hooks("admin_config_calendars_update_order"); foreach($mybb->input['disporder'] as $cid => $order) { $update_query = array( "disporder" => (int)$order ); $db->update_query("calendars", $update_query, "cid='".(int)$cid."'"); } $plugins->run_hooks("admin_config_calendars_update_order_commit"); // Log admin action log_admin_action(); flash_message($lang->success_calendar_orders_updated, 'success'); admin_redirect("index.php?module=config-calendars"); } if(!$mybb->input['action']) { $page->output_header($lang->manage_calendars); $page->output_nav_tabs($sub_tabs, 'manage_calendars'); $form = new Form("index.php?module=config-calendars&action=update_order", "post"); $table = new Table; $table->construct_header($lang->calendar); $table->construct_header($lang->order, array('width' => '5%', 'class' => 'align_center')); $table->construct_header($lang->controls, array("class" => "align_center", "colspan" => 3, "width" => 300)); $query = $db->simple_select("calendars", "*", "", array('order_by' => 'disporder')); while($calendar = $db->fetch_array($query)) { $calendar['name'] = htmlspecialchars_uni($calendar['name']); $table->construct_cell("{$calendar['name']}"); $table->construct_cell($form->generate_numeric_field("disporder[{$calendar['cid']}]", $calendar['disporder'], array('id' => 'disporder', 'style' => 'width: 80%', 'class' => 'align_center', 'min' => 0))); $table->construct_cell("{$lang->edit}", array("width" => 100, "class" => "align_center")); $table->construct_cell("{$lang->permissions}", array("width" => 100, "class" => "align_center")); $table->construct_cell("post_code}\" onclick=\"return AdminCP.deleteConfirmation(this, '{$lang->confirm_calendar_deletion}')\">{$lang->delete}", array("width" => 100, "class" => "align_center")); $table->construct_row(); } $no_results = false; if($table->num_rows() == 0) { $table->construct_cell($lang->no_calendars, array('colspan' => 5)); $table->construct_row(); $no_results = true; } $table->output($lang->manage_calendars); if(!$no_results) { $buttons[] = $form->generate_submit_button($lang->save_calendar_orders); $form->output_submit_wrapper($buttons); } $form->end(); $page->output_footer(); }