[ Index ] |
PHP Cross Reference of MyBB 1.8.38 |
[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 // Disallow direct access to this file for security reasons 12 if(!defined("IN_MYBB")) 13 { 14 die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined."); 15 } 16 17 $page->add_breadcrumb_item($lang->custom_profile_fields, "index.php?module=config-profile_fields"); 18 19 $plugins->run_hooks("admin_config_profile_fields_begin"); 20 21 if($mybb->input['action'] == "add") 22 { 23 $plugins->run_hooks("admin_config_profile_fields_add"); 24 25 if($mybb->request_method == "post") 26 { 27 if(!trim($mybb->input['name'])) 28 { 29 $errors[] = $lang->error_missing_name; 30 } 31 32 if(!trim($mybb->input['description'])) 33 { 34 $errors[] = $lang->error_missing_description; 35 } 36 37 if(!trim($mybb->input['fieldtype'])) 38 { 39 $errors[] = $lang->error_missing_fieldtype; 40 } 41 42 if(!$errors) 43 { 44 $type = $mybb->input['fieldtype']; 45 $options = preg_replace("#(\r\n|\r|\n)#s", "\n", trim($mybb->input['options'])); 46 if($type != "text" && $type != "textarea") 47 { 48 $thing = "$type\n$options"; 49 } 50 else 51 { 52 $thing = $type; 53 } 54 55 foreach(array('viewableby', 'editableby') as $key) 56 { 57 if($mybb->input[$key] == 'all') 58 { 59 $mybb->input[$key] = -1; 60 } 61 elseif($mybb->input[$key] == 'custom') 62 { 63 if(isset($mybb->input['select'][$key]) && is_array($mybb->input['select'][$key])) 64 { 65 foreach($mybb->input['select'][$key] as &$val) 66 { 67 $val = (int)$val; 68 } 69 unset($val); 70 71 $mybb->input[$key] = implode(',', (array)$mybb->input['select'][$key]); 72 } 73 else 74 { 75 $mybb->input[$key] = ''; 76 } 77 } 78 else 79 { 80 $mybb->input[$key] = ''; 81 } 82 } 83 84 $new_profile_field = array( 85 "name" => $db->escape_string($mybb->input['name']), 86 "description" => $db->escape_string($mybb->input['description']), 87 "disporder" => $mybb->get_input('disporder', MyBB::INPUT_INT), 88 "type" => $db->escape_string($thing), 89 "regex" => $db->escape_string($mybb->input['regex']), 90 "length" => $mybb->get_input('length', MyBB::INPUT_INT), 91 "maxlength" => $mybb->get_input('maxlength', MyBB::INPUT_INT), 92 "required" => $mybb->get_input('required', MyBB::INPUT_INT), 93 "registration" => $mybb->get_input('registration', MyBB::INPUT_INT), 94 "profile" => $mybb->get_input('profile', MyBB::INPUT_INT), 95 "viewableby" => $db->escape_string($mybb->input['viewableby']), 96 "editableby" => $db->escape_string($mybb->input['editableby']), 97 "postbit" => $mybb->get_input('postbit', MyBB::INPUT_INT), 98 "postnum" => $mybb->get_input('postnum', MyBB::INPUT_INT), 99 "allowhtml" => $mybb->get_input('allowhtml', MyBB::INPUT_INT), 100 "allowmycode" => $mybb->get_input('allowmycode', MyBB::INPUT_INT), 101 "allowsmilies" => $mybb->get_input('allowsmilies', MyBB::INPUT_INT), 102 "allowimgcode" => $mybb->get_input('allowimgcode', MyBB::INPUT_INT), 103 "allowvideocode" => $mybb->get_input('allowvideocode', MyBB::INPUT_INT) 104 ); 105 106 $fid = $db->insert_query("profilefields", $new_profile_field); 107 108 $db->write_query("ALTER TABLE ".TABLE_PREFIX."userfields ADD fid{$fid} TEXT"); 109 110 $plugins->run_hooks("admin_config_profile_fields_add_commit"); 111 112 $cache->update_profilefields(); 113 114 // Log admin action 115 log_admin_action($fid, $mybb->input['name']); 116 117 flash_message($lang->success_profile_field_added, 'success'); 118 admin_redirect("index.php?module=config-profile_fields"); 119 } 120 } 121 122 $page->add_breadcrumb_item($lang->add_new_profile_field); 123 $page->output_header($lang->custom_profile_fields." - ".$lang->add_new_profile_field); 124 125 $sub_tabs['custom_profile_fields'] = array( 126 'title' => $lang->custom_profile_fields, 127 'link' => "index.php?module=config-profile_fields" 128 ); 129 130 $sub_tabs['add_profile_field'] = array( 131 'title' => $lang->add_new_profile_field, 132 'link' => "index.php?module=config-profile_fields&action=add", 133 'description' => $lang->add_new_profile_field_desc 134 ); 135 136 $page->output_nav_tabs($sub_tabs, 'add_profile_field'); 137 $form = new Form("index.php?module=config-profile_fields&action=add", "post", "add"); 138 139 if($errors) 140 { 141 switch($mybb->input['viewableby']) 142 { 143 case 'all': 144 $mybb->input['viewableby'] = -1; 145 break; 146 case 'custom': 147 $mybb->input['viewableby'] = implode(',', (array)$mybb->input['select']['viewableby']); 148 break; 149 default: 150 $mybb->input['viewableby'] = ''; 151 break; 152 } 153 154 switch($mybb->input['editableby']) 155 { 156 case 'all': 157 $mybb->input['editableby'] = -1; 158 break; 159 case 'custom': 160 $mybb->input['editableby'] = implode(',', (array)$mybb->input['select']['editableby']); 161 break; 162 default: 163 $mybb->input['editableby'] = ''; 164 break; 165 } 166 167 $page->output_inline_error($errors); 168 } 169 else 170 { 171 $mybb->input['fieldtype'] = 'textbox'; 172 $mybb->input['required'] = 0; 173 $mybb->input['registration'] = 0; 174 $mybb->input['editable'] = 1; 175 $mybb->input['hidden'] = 0; 176 $mybb->input['postbit'] = 0; 177 } 178 179 if(empty($mybb->input['viewableby'])) 180 { 181 $mybb->input['viewableby'] = ''; 182 } 183 184 if(empty($mybb->input['editableby'])) 185 { 186 $mybb->input['editableby'] = ''; 187 } 188 189 $form_container = new FormContainer($lang->add_new_profile_field); 190 $form_container->output_row($lang->title." <em>*</em>", "", $form->generate_text_box('name', $mybb->get_input('name'), array('id' => 'name')), 'name'); 191 $form_container->output_row($lang->short_description." <em>*</em>", "", $form->generate_text_box('description', $mybb->get_input('description'), array('id' => 'description')), 'description'); 192 $select_list = array( 193 "text" => $lang->text, 194 "textarea" => $lang->textarea, 195 "select" => $lang->select, 196 "multiselect" => $lang->multiselect, 197 "radio" => $lang->radio, 198 "checkbox" => $lang->checkbox 199 ); 200 $form_container->output_row($lang->field_type." <em>*</em>", $lang->field_type_desc, $form->generate_select_box('fieldtype', $select_list, $mybb->get_input('fieldtype'), array('id' => 'fieldtype')), 'fieldtype'); 201 $form_container->output_row($lang->field_regex, $lang->field_regex_desc, $form->generate_text_box('regex', $mybb->get_input('regex'), array('id' => 'regex')), 'regex', array(), array('id' => 'row_regex')); 202 $form_container->output_row($lang->maximum_length, $lang->maximum_length_desc, $form->generate_numeric_field('maxlength', $mybb->get_input('maxlength'), array('id' => 'maxlength', 'min' => 0)), 'maxlength', array(), array('id' => 'row_maxlength')); 203 $form_container->output_row($lang->field_length, $lang->field_length_desc, $form->generate_numeric_field('length', $mybb->get_input('length'), array('id' => 'length', 'min' => 0)), 'length', array(), array('id' => 'row_fieldlength')); 204 $form_container->output_row($lang->selectable_options, $lang->selectable_options_desc, $form->generate_text_area('options', $mybb->get_input('options'), array('id' => 'options')), 'options', array(), array('id' => 'row_options')); 205 $form_container->output_row($lang->min_posts_enabled, $lang->min_posts_enabled_desc, $form->generate_numeric_field('postnum', $mybb->get_input('postnum'), array('id' => 'postnum', 'min' => 0)), 'postnum'); 206 $form_container->output_row($lang->display_order." <em>*</em>", $lang->display_order_desc, $form->generate_numeric_field('disporder', $mybb->get_input('disporder'), array('id' => 'disporder', 'min' => 0)), 'disporder'); 207 $form_container->output_row($lang->required." <em>*</em>", $lang->required_desc, $form->generate_yes_no_radio('required', $mybb->get_input('required'))); 208 $form_container->output_row($lang->show_on_registration." <em>*</em>", $lang->show_on_registration_desc, $form->generate_yes_no_radio('registration', $mybb->get_input('registration'))); 209 $form_container->output_row($lang->display_on_profile." <em>*</em>", $lang->display_on_profile_desc, $form->generate_yes_no_radio('profile', $mybb->get_input('profile'))); 210 $form_container->output_row($lang->display_on_postbit." <em>*</em>", $lang->display_on_postbit_desc, $form->generate_yes_no_radio('postbit', $mybb->get_input('postbit'))); 211 212 $selected_values = ''; 213 if($mybb->input['viewableby'] != '' && $mybb->input['viewableby'] != -1) 214 { 215 $selected_values = explode(',', $mybb->get_input('viewableby')); 216 217 foreach($selected_values as &$value) 218 { 219 $value = (int)$value; 220 } 221 unset($value); 222 } 223 224 $group_checked = array('all' => '', 'custom' => '', 'none' => ''); 225 if($mybb->input['viewableby'] == -1) 226 { 227 $group_checked['all'] = 'checked="checked"'; 228 } 229 elseif($mybb->input['viewableby'] != '') 230 { 231 $group_checked['custom'] = 'checked="checked"'; 232 } 233 else 234 { 235 $group_checked['none'] = 'checked="checked"'; 236 } 237 238 print_selection_javascript(); 239 240 $select_code = " 241 <dl style=\"margin-top: 0; margin-bottom: 0; width: 100%\"> 242 <dt><label style=\"display: block;\"><input type=\"radio\" name=\"viewableby\" value=\"all\" {$group_checked['all']} class=\"viewableby_forums_groups_check\" onclick=\"checkAction('viewableby');\" style=\"vertical-align: middle;\" /> <strong>{$lang->all_groups}</strong></label></dt> 243 <dt><label style=\"display: block;\"><input type=\"radio\" name=\"viewableby\" value=\"custom\" {$group_checked['custom']} class=\"viewableby_forums_groups_check\" onclick=\"checkAction('viewableby');\" style=\"vertical-align: middle;\" /> <strong>{$lang->select_groups}</strong></label></dt> 244 <dd style=\"margin-top: 4px;\" id=\"viewableby_forums_groups_custom\" class=\"viewableby_forums_groups\"> 245 <table cellpadding=\"4\"> 246 <tr> 247 <td valign=\"top\"><small>{$lang->groups_colon}</small></td> 248 <td>".$form->generate_group_select('select[viewableby][]', $selected_values, array('id' => 'viewableby', 'multiple' => true, 'size' => 5))."</td> 249 </tr> 250 </table> 251 </dd> 252 <dt><label style=\"display: block;\"><input type=\"radio\" name=\"viewableby\" value=\"none\" {$group_checked['none']} class=\"viewableby_forums_groups_check\" onclick=\"checkAction('viewableby');\" style=\"vertical-align: middle;\" /> <strong>{$lang->none}</strong></label></dt> 253 </dl> 254 <script type=\"text/javascript\"> 255 checkAction('viewableby'); 256 </script>"; 257 $form_container->output_row($lang->viewableby, $lang->viewableby_desc, $select_code, '', array(), array('id' => 'row_viewableby')); 258 259 $selected_values = ''; 260 if($mybb->input['editableby'] != '' && $mybb->input['editableby'] != -1) 261 { 262 $selected_values = explode(',', $mybb->get_input('editableby')); 263 264 foreach($selected_values as &$value) 265 { 266 $value = (int)$value; 267 } 268 unset($value); 269 } 270 271 $group_checked = array('all' => '', 'custom' => '', 'none' => ''); 272 if($mybb->input['editableby'] == -1) 273 { 274 $group_checked['all'] = 'checked="checked"'; 275 } 276 elseif($mybb->input['editableby'] != '') 277 { 278 $group_checked['custom'] = 'checked="checked"'; 279 } 280 else 281 { 282 $group_checked['none'] = 'checked="checked"'; 283 } 284 285 print_selection_javascript(); 286 287 $select_code = " 288 <dl style=\"margin-top: 0; margin-bottom: 0; width: 100%\"> 289 <dt><label style=\"display: block;\"><input type=\"radio\" name=\"editableby\" value=\"all\" {$group_checked['all']} class=\"editableby_forums_groups_check\" onclick=\"checkAction('editableby');\" style=\"vertical-align: middle;\" /> <strong>{$lang->all_groups}</strong></label></dt> 290 <dt><label style=\"display: block;\"><input type=\"radio\" name=\"editableby\" value=\"custom\" {$group_checked['custom']} class=\"editableby_forums_groups_check\" onclick=\"checkAction('editableby');\" style=\"vertical-align: middle;\" /> <strong>{$lang->select_groups}</strong></label></dt> 291 <dd style=\"margin-top: 4px;\" id=\"editableby_forums_groups_custom\" class=\"editableby_forums_groups\"> 292 <table cellpadding=\"4\"> 293 <tr> 294 <td valign=\"top\"><small>{$lang->groups_colon}</small></td> 295 <td>".$form->generate_group_select('select[editableby][]', $selected_values, array('id' => 'editableby', 'multiple' => true, 'size' => 5))."</td> 296 </tr> 297 </table> 298 </dd> 299 <dt><label style=\"display: block;\"><input type=\"radio\" name=\"editableby\" value=\"none\" {$group_checked['none']} class=\"editableby_forums_groups_check\" onclick=\"checkAction('editableby');\" style=\"vertical-align: middle;\" /> <strong>{$lang->none}</strong></label></dt> 300 </dl> 301 <script type=\"text/javascript\"> 302 checkAction('editableby'); 303 </script>"; 304 $form_container->output_row($lang->editableby, $lang->editableby_desc, $select_code, '', array(), array('id' => 'row_editableby')); 305 306 $parser_options = array( 307 $form->generate_check_box('allowhtml', 1, $lang->parse_allowhtml, array('checked' => $mybb->get_input('allowhtml'), 'id' => 'allowhtml')), 308 $form->generate_check_box('allowmycode', 1, $lang->parse_allowmycode, array('checked' => $mybb->get_input('allowmycode'), 'id' => 'allowmycode')), 309 $form->generate_check_box('allowsmilies', 1, $lang->parse_allowsmilies, array('checked' => $mybb->get_input('allowsmilies'), 'id' => 'allowsmilies')), 310 $form->generate_check_box('allowimgcode', 1, $lang->parse_allowimgcode, array('checked' => $mybb->get_input('allowimgcode'), 'id' => 'allowimgcode')), 311 $form->generate_check_box('allowvideocode', 1, $lang->parse_allowvideocode, array('checked' => $mybb->get_input('allowvideocode'), 'id' => 'allowvideocode')) 312 ); 313 $form_container->output_row($lang->parser_options, '', implode('<br />', $parser_options), '', array(), array('id' => 'row_parser_options')); 314 $form_container->end(); 315 316 $buttons[] = $form->generate_submit_button($lang->save_profile_field); 317 318 $form->output_submit_wrapper($buttons); 319 $form->end(); 320 321 echo '<script type="text/javascript" src="./jscripts/peeker.js?ver=1821"></script> 322 <script type="text/javascript"> 323 $(function() { 324 new Peeker($("#fieldtype"), $("#row_maxlength, #row_regex, #row_parser_options"), /text|textarea/, false); 325 new Peeker($("#fieldtype"), $("#row_fieldlength"), /select|multiselect/, false); 326 new Peeker($("#fieldtype"), $("#row_options"), /select|radio|checkbox/, false); 327 // Add a star to the extra row since the "extra" is required if the box is shown 328 add_star("row_maxlength"); 329 add_star("row_fieldlength"); 330 add_star("row_options"); 331 }); 332 </script>'; 333 334 $page->output_footer(); 335 } 336 337 if($mybb->input['action'] == "edit") 338 { 339 $query = $db->simple_select("profilefields", "*", "fid = '".$mybb->get_input('fid', MyBB::INPUT_INT)."'"); 340 $profile_field = $db->fetch_array($query); 341 342 if(!$profile_field['fid']) 343 { 344 flash_message($lang->error_invalid_fid, 'error'); 345 admin_redirect("index.php?module=config-profile_fields"); 346 } 347 348 $plugins->run_hooks("admin_config_profile_fields_edit"); 349 350 if($mybb->request_method == "post") 351 { 352 if(!trim($mybb->input['name'])) 353 { 354 $errors[] = $lang->error_missing_name; 355 } 356 357 if(!trim($mybb->input['description'])) 358 { 359 $errors[] = $lang->error_missing_description; 360 } 361 362 if(!trim($mybb->input['fieldtype'])) 363 { 364 $errors[] = $lang->error_missing_fieldtype; 365 } 366 367 $type = $mybb->input['fieldtype']; 368 $options = preg_replace("#(\r\n|\r|\n)#s", "\n", trim($mybb->input['options'])); 369 if($type != "text" && $type != "textarea") 370 { 371 $type = "$type\n$options"; 372 } 373 374 if(!$errors) 375 { 376 foreach(array('viewableby', 'editableby') as $key) 377 { 378 if($mybb->input[$key] == 'all') 379 { 380 $mybb->input[$key] = -1; 381 } 382 elseif($mybb->input[$key] == 'custom') 383 { 384 if(isset($mybb->input['select'][$key]) && is_array($mybb->input['select'][$key])) 385 { 386 foreach($mybb->input['select'][$key] as &$val) 387 { 388 $val = (int)$val; 389 } 390 unset($val); 391 392 $mybb->input[$key] = implode(',', $mybb->input['select'][$key]); 393 } 394 else 395 { 396 $mybb->input[$key] = ''; 397 } 398 } 399 else 400 { 401 $mybb->input[$key] = ''; 402 } 403 } 404 405 $updated_profile_field = array( 406 "name" => $db->escape_string($mybb->input['name']), 407 "description" => $db->escape_string($mybb->input['description']), 408 "disporder" => $mybb->get_input('disporder', MyBB::INPUT_INT), 409 "type" => $db->escape_string($type), 410 "regex" => $db->escape_string($mybb->input['regex']), 411 "length" => $mybb->get_input('length', MyBB::INPUT_INT), 412 "maxlength" => $mybb->get_input('maxlength', MyBB::INPUT_INT), 413 "required" => $mybb->get_input('required', MyBB::INPUT_INT), 414 "registration" => $mybb->get_input('registration', MyBB::INPUT_INT), 415 "profile" => $mybb->get_input('profile', MyBB::INPUT_INT), 416 "viewableby" => $db->escape_string($mybb->input['viewableby']), 417 "editableby" => $db->escape_string($mybb->input['editableby']), 418 "postbit" => $mybb->get_input('postbit', MyBB::INPUT_INT), 419 "postnum" => $mybb->get_input('postnum', MyBB::INPUT_INT), 420 "allowhtml" => $mybb->get_input('allowhtml', MyBB::INPUT_INT), 421 "allowmycode" => $mybb->get_input('allowmycode', MyBB::INPUT_INT), 422 "allowsmilies" => $mybb->get_input('allowsmilies', MyBB::INPUT_INT), 423 "allowimgcode" => $mybb->get_input('allowimgcode', MyBB::INPUT_INT), 424 "allowvideocode" => $mybb->get_input('allowvideocode', MyBB::INPUT_INT) 425 ); 426 427 $plugins->run_hooks("admin_config_profile_fields_edit_commit"); 428 429 $db->update_query("profilefields", $updated_profile_field, "fid='{$profile_field['fid']}'"); 430 431 $cache->update_profilefields(); 432 433 // Log admin action 434 log_admin_action($profile_field['fid'], $mybb->input['name']); 435 436 flash_message($lang->success_profile_field_saved, 'success'); 437 admin_redirect("index.php?module=config-profile_fields"); 438 } 439 } 440 441 $page->add_breadcrumb_item($lang->edit_profile_field); 442 $page->output_header($lang->custom_profile_fields." - ".$lang->edit_profile_field); 443 444 $sub_tabs['edit_profile_field'] = array( 445 'title' => $lang->edit_profile_field, 446 'link' => "index.php?module=config-profile_fields&action=edit&fid={$profile_field['fid']}", 447 'description' => $lang->edit_profile_field_desc 448 ); 449 450 $page->output_nav_tabs($sub_tabs, 'edit_profile_field'); 451 $form = new Form("index.php?module=config-profile_fields&action=edit", "post", "edit"); 452 453 454 echo $form->generate_hidden_field("fid", $profile_field['fid']); 455 456 if($errors) 457 { 458 switch($mybb->input['viewableby']) 459 { 460 case 'all': 461 $mybb->input['viewableby'] = -1; 462 break; 463 case 'custom': 464 $mybb->input['viewableby'] = implode(',', (array)$mybb->input['select']['viewableby']); 465 break; 466 default: 467 $mybb->input['viewableby'] = ''; 468 break; 469 } 470 471 switch($mybb->input['editableby']) 472 { 473 case 'all': 474 $mybb->input['editableby'] = -1; 475 break; 476 case 'custom': 477 $mybb->input['editableby'] = implode(',', (array)$mybb->input['select']['editableby']); 478 break; 479 default: 480 $mybb->input['editableby'] = ''; 481 break; 482 } 483 484 $page->output_inline_error($errors); 485 } 486 else 487 { 488 $type = explode("\n", $profile_field['type'], "2"); 489 490 $mybb->input = $profile_field; 491 $mybb->input['fieldtype'] = $type[0]; 492 $mybb->input['options'] = isset($type[1]) ? $type[1] : null; 493 } 494 495 if(empty($mybb->input['viewableby'])) 496 { 497 $mybb->input['viewableby'] = ''; 498 } 499 500 if(empty($mybb->input['editableby'])) 501 { 502 $mybb->input['editableby'] = ''; 503 } 504 505 $form_container = new FormContainer($lang->edit_profile_field); 506 $form_container->output_row($lang->title." <em>*</em>", "", $form->generate_text_box('name', $mybb->input['name'], array('id' => 'name')), 'name'); 507 $form_container->output_row($lang->short_description." <em>*</em>", "", $form->generate_text_box('description', $mybb->input['description'], array('id' => 'description')), 'description'); 508 $select_list = array( 509 "text" => $lang->text, 510 "textarea" => $lang->textarea, 511 "select" => $lang->select, 512 "multiselect" => $lang->multiselect, 513 "radio" => $lang->radio, 514 "checkbox" => $lang->checkbox 515 ); 516 $form_container->output_row($lang->field_type." <em>*</em>", $lang->field_type_desc, $form->generate_select_box('fieldtype', $select_list, $mybb->input['fieldtype'], array('id' => 'fieldtype')), 'fieldtype'); 517 $form_container->output_row($lang->field_regex, $lang->field_regex_desc, $form->generate_text_box('regex', $mybb->input['regex'], array('id' => 'regex')), 'regex', array(), array('id' => 'row_regex')); 518 $form_container->output_row($lang->maximum_length, $lang->maximum_length_desc, $form->generate_numeric_field('maxlength', $mybb->input['maxlength'], array('id' => 'maxlength', 'min' => 0)), 'maxlength', array(), array('id' => 'row_maxlength')); 519 $form_container->output_row($lang->field_length, $lang->field_length_desc, $form->generate_numeric_field('length', $mybb->input['length'], array('id' => 'length', 'min' => 0)), 'length', array(), array('id' => 'row_fieldlength')); 520 $form_container->output_row($lang->selectable_options, $lang->selectable_options_desc, $form->generate_text_area('options', $mybb->input['options'], array('id' => 'options')), 'options', array(), array('id' => 'row_options')); 521 $form_container->output_row($lang->min_posts_enabled, $lang->min_posts_enabled_desc, $form->generate_numeric_field('postnum', $mybb->input['postnum'], array('id' => 'postnum', 'min' => 0)), 'postnum'); 522 $form_container->output_row($lang->display_order." <em>*</em>", $lang->display_order_desc, $form->generate_numeric_field('disporder', $mybb->input['disporder'], array('id' => 'disporder', 'min' => 0)), 'disporder'); 523 $form_container->output_row($lang->required." <em>*</em>", $lang->required_desc, $form->generate_yes_no_radio('required', $mybb->input['required'])); 524 $form_container->output_row($lang->show_on_registration." <em>*</em>", $lang->show_on_registration_desc, $form->generate_yes_no_radio('registration', $mybb->input['registration'])); 525 $form_container->output_row($lang->display_on_profile." <em>*</em>", $lang->display_on_profile_desc, $form->generate_yes_no_radio('profile', $mybb->input['profile'])); 526 $form_container->output_row($lang->display_on_postbit." <em>*</em>", $lang->display_on_postbit_desc, $form->generate_yes_no_radio('postbit', $mybb->input['postbit'])); 527 528 $selected_values = ''; 529 if($mybb->input['viewableby'] != '' && $mybb->input['viewableby'] != -1) 530 { 531 $selected_values = explode(',', $mybb->get_input('viewableby')); 532 533 foreach($selected_values as &$value) 534 { 535 $value = (int)$value; 536 } 537 unset($value); 538 } 539 540 $group_checked = array('all' => '', 'custom' => '', 'none' => ''); 541 if($mybb->input['viewableby'] == -1) 542 { 543 $group_checked['all'] = 'checked="checked"'; 544 } 545 elseif($mybb->input['viewableby'] != '') 546 { 547 $group_checked['custom'] = 'checked="checked"'; 548 } 549 else 550 { 551 $group_checked['none'] = 'checked="checked"'; 552 } 553 554 print_selection_javascript(); 555 556 $select_code = " 557 <dl style=\"margin-top: 0; margin-bottom: 0; width: 100%\"> 558 <dt><label style=\"display: block;\"><input type=\"radio\" name=\"viewableby\" value=\"all\" {$group_checked['all']} class=\"viewableby_forums_groups_check\" onclick=\"checkAction('viewableby');\" style=\"vertical-align: middle;\" /> <strong>{$lang->all_groups}</strong></label></dt> 559 <dt><label style=\"display: block;\"><input type=\"radio\" name=\"viewableby\" value=\"custom\" {$group_checked['custom']} class=\"viewableby_forums_groups_check\" onclick=\"checkAction('viewableby');\" style=\"vertical-align: middle;\" /> <strong>{$lang->select_groups}</strong></label></dt> 560 <dd style=\"margin-top: 4px;\" id=\"viewableby_forums_groups_custom\" class=\"viewableby_forums_groups\"> 561 <table cellpadding=\"4\"> 562 <tr> 563 <td valign=\"top\"><small>{$lang->groups_colon}</small></td> 564 <td>".$form->generate_group_select('select[viewableby][]', $selected_values, array('id' => 'viewableby', 'multiple' => true, 'size' => 5))."</td> 565 </tr> 566 </table> 567 </dd> 568 <dt><label style=\"display: block;\"><input type=\"radio\" name=\"viewableby\" value=\"none\" {$group_checked['none']} class=\"viewableby_forums_groups_check\" onclick=\"checkAction('viewableby');\" style=\"vertical-align: middle;\" /> <strong>{$lang->none}</strong></label></dt> 569 </dl> 570 <script type=\"text/javascript\"> 571 checkAction('viewableby'); 572 </script>"; 573 $form_container->output_row($lang->viewableby, $lang->viewableby_desc, $select_code, '', array(), array('id' => 'row_viewableby')); 574 575 $selected_values = ''; 576 if($mybb->input['editableby'] != '' && $mybb->input['editableby'] != -1) 577 { 578 $selected_values = explode(',', $mybb->get_input('editableby')); 579 580 foreach($selected_values as &$value) 581 { 582 $value = (int)$value; 583 } 584 unset($value); 585 } 586 587 $group_checked = array('all' => '', 'custom' => '', 'none' => ''); 588 if($mybb->input['editableby'] == -1) 589 { 590 $group_checked['all'] = 'checked="checked"'; 591 } 592 elseif($mybb->input['editableby'] != '') 593 { 594 $group_checked['custom'] = 'checked="checked"'; 595 } 596 else 597 { 598 $group_checked['none'] = 'checked="checked"'; 599 } 600 601 print_selection_javascript(); 602 603 $select_code = " 604 <dl style=\"margin-top: 0; margin-bottom: 0; width: 100%\"> 605 <dt><label style=\"display: block;\"><input type=\"radio\" name=\"editableby\" value=\"all\" {$group_checked['all']} class=\"editableby_forums_groups_check\" onclick=\"checkAction('editableby');\" style=\"vertical-align: middle;\" /> <strong>{$lang->all_groups}</strong></label></dt> 606 <dt><label style=\"display: block;\"><input type=\"radio\" name=\"editableby\" value=\"custom\" {$group_checked['custom']} class=\"editableby_forums_groups_check\" onclick=\"checkAction('editableby');\" style=\"vertical-align: middle;\" /> <strong>{$lang->select_groups}</strong></label></dt> 607 <dd style=\"margin-top: 4px;\" id=\"editableby_forums_groups_custom\" class=\"editableby_forums_groups\"> 608 <table cellpadding=\"4\"> 609 <tr> 610 <td valign=\"top\"><small>{$lang->groups_colon}</small></td> 611 <td>".$form->generate_group_select('select[editableby][]', $selected_values, array('id' => 'editableby', 'multiple' => true, 'size' => 5))."</td> 612 </tr> 613 </table> 614 </dd> 615 <dt><label style=\"display: block;\"><input type=\"radio\" name=\"editableby\" value=\"none\" {$group_checked['none']} class=\"editableby_forums_groups_check\" onclick=\"checkAction('editableby');\" style=\"vertical-align: middle;\" /> <strong>{$lang->none}</strong></label></dt> 616 </dl> 617 <script type=\"text/javascript\"> 618 checkAction('editableby'); 619 </script>"; 620 $form_container->output_row($lang->editableby, $lang->editableby_desc, $select_code, '', array(), array('id' => 'row_editableby')); 621 622 $parser_options = array( 623 $form->generate_check_box('allowhtml', 1, $lang->parse_allowhtml, array('checked' => $mybb->input['allowhtml'], 'id' => 'allowhtml')), 624 $form->generate_check_box('allowmycode', 1, $lang->parse_allowmycode, array('checked' => $mybb->input['allowmycode'], 'id' => 'allowmycode')), 625 $form->generate_check_box('allowsmilies', 1, $lang->parse_allowsmilies, array('checked' => $mybb->input['allowsmilies'], 'id' => 'allowsmilies')), 626 $form->generate_check_box('allowimgcode', 1, $lang->parse_allowimgcode, array('checked' => $mybb->input['allowimgcode'], 'id' => 'allowimgcode')), 627 $form->generate_check_box('allowvideocode', 1, $lang->parse_allowvideocode, array('checked' => $mybb->input['allowvideocode'], 'id' => 'allowvideocode')) 628 ); 629 $form_container->output_row($lang->parser_options, '', implode('<br />', $parser_options), '', array(), array('id' => 'row_parser_options')); 630 $form_container->end(); 631 632 $buttons[] = $form->generate_submit_button($lang->save_profile_field); 633 634 $form->output_submit_wrapper($buttons); 635 $form->end(); 636 637 echo '<script type="text/javascript" src="./jscripts/peeker.js?ver=1821"></script> 638 <script type="text/javascript"> 639 $(function() { 640 new Peeker($("#fieldtype"), $("#row_maxlength, #row_regex, #row_parser_options"), /text|textarea/); 641 new Peeker($("#fieldtype"), $("#row_fieldlength"), /select|multiselect/); 642 new Peeker($("#fieldtype"), $("#row_options"), /select|radio|checkbox/); 643 // Add a star to the extra row since the "extra" is required if the box is shown 644 add_star("row_maxlength"); 645 add_star("row_fieldlength"); 646 add_star("row_options"); 647 }); 648 </script>'; 649 650 $page->output_footer(); 651 } 652 653 if($mybb->input['action'] == "delete") 654 { 655 $query = $db->simple_select("profilefields", "*", "fid='".$mybb->get_input('fid', MyBB::INPUT_INT)."'"); 656 $profile_field = $db->fetch_array($query); 657 658 // Does the profile field not exist? 659 if(!$profile_field['fid']) 660 { 661 flash_message($lang->error_invalid_fid, 'error'); 662 admin_redirect("index.php?module=config-profile_fields"); 663 } 664 665 // User clicked no 666 if($mybb->get_input('no')) 667 { 668 admin_redirect("index.php?module=config-profile_fields"); 669 } 670 671 $plugins->run_hooks("admin_config_profile_fields_delete"); 672 673 if($mybb->request_method == "post") 674 { 675 // Delete the profile field 676 $db->delete_query("profilefields", "fid='{$profile_field['fid']}'"); 677 $db->write_query("ALTER TABLE ".TABLE_PREFIX."userfields DROP fid{$profile_field['fid']}"); 678 679 $plugins->run_hooks("admin_config_profile_fields_delete_commit"); 680 681 $cache->update_profilefields(); 682 683 // Log admin action 684 log_admin_action($profile_field['fid'], $profile_field['name']); 685 686 flash_message($lang->success_profile_field_deleted, 'success'); 687 admin_redirect("index.php?module=config-profile_fields"); 688 } 689 else 690 { 691 $page->output_confirm_action("index.php?module=config-profile_fields&action=delete&fid={$profile_field['fid']}", $lang->confirm_profile_field_deletion); 692 } 693 } 694 695 if(!$mybb->input['action']) 696 { 697 $plugins->run_hooks("admin_config_profile_fields_start"); 698 699 $page->output_header($lang->custom_profile_fields); 700 701 $sub_tabs['custom_profile_fields'] = array( 702 'title' => $lang->custom_profile_fields, 703 'link' => "index.php?module=config-profile_fields", 704 'description' => $lang->custom_profile_fields_desc 705 ); 706 707 $sub_tabs['add_profile_field'] = array( 708 'title' => $lang->add_new_profile_field, 709 'link' => "index.php?module=config-profile_fields&action=add", 710 ); 711 712 713 $page->output_nav_tabs($sub_tabs, 'custom_profile_fields'); 714 715 $table = new Table; 716 $table->construct_header($lang->name); 717 $table->construct_header($lang->required, array("class" => "align_center")); 718 $table->construct_header($lang->registration, array("class" => "align_center")); 719 $table->construct_header($lang->editable, array("class" => "align_center")); 720 $table->construct_header($lang->profile, array("class" => "align_center")); 721 $table->construct_header($lang->postbit, array("class" => "align_center")); 722 $table->construct_header($lang->controls, array("class" => "align_center")); 723 724 $query = $db->simple_select("profilefields", "*", "", array('order_by' => 'disporder')); 725 while($field = $db->fetch_array($query)) 726 { 727 if($field['required']) 728 { 729 $required = $lang->yes; 730 } 731 else 732 { 733 $required = $lang->no; 734 } 735 736 if($field['registration']) 737 { 738 $registration = $lang->yes; 739 } 740 else 741 { 742 $registration = $lang->no; 743 } 744 745 if($field['editableby'] == '') 746 { 747 $editable = $lang->no; 748 } 749 else 750 { 751 $editable = $lang->yes; 752 } 753 754 if($field['profile']) 755 { 756 $profile = $lang->yes; 757 } 758 else 759 { 760 $profile = $lang->no; 761 } 762 763 if($field['postbit']) 764 { 765 $postbit = $lang->yes; 766 } 767 else 768 { 769 $postbit = $lang->no; 770 } 771 772 $table->construct_cell("<strong><a href=\"index.php?module=config-profile_fields&action=edit&fid={$field['fid']}\">".htmlspecialchars_uni($field['name'])."</a></strong><br /><small>".htmlspecialchars_uni($field['description'])."</small>", array('width' => '35%')); 773 $table->construct_cell($required, array("class" => "align_center", 'width' => '10%')); 774 $table->construct_cell($registration, array("class" => "align_center", 'width' => '10%')); 775 $table->construct_cell($editable, array("class" => "align_center", 'width' => '10%')); 776 $table->construct_cell($profile, array("class" => "align_center", 'width' => '10%')); 777 $table->construct_cell($postbit, array("class" => "align_center", 'width' => '10%')); 778 779 $popup = new PopupMenu("field_{$field['fid']}", $lang->options); 780 $popup->add_item($lang->edit_field, "index.php?module=config-profile_fields&action=edit&fid={$field['fid']}"); 781 $popup->add_item($lang->delete_field, "index.php?module=config-profile_fields&action=delete&fid={$field['fid']}&my_post_key={$mybb->post_code}", "return AdminCP.deleteConfirmation(this, '{$lang->confirm_profile_field_deletion}')"); 782 $table->construct_cell($popup->fetch(), array("class" => "align_center", 'width' => '20%')); 783 $table->construct_row(); 784 } 785 786 if($table->num_rows() == 0) 787 { 788 $table->construct_cell($lang->no_profile_fields, array('colspan' => 7)); 789 $table->construct_row(); 790 } 791 792 $table->output($lang->custom_profile_fields); 793 794 $page->output_footer(); 795 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
2005 - 2021 © MyBB.de | Alle Rechte vorbehalten! | Sponsor: netcup | Cross-referenced by PHPXref |