| [ 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 /** 12 * Builds the "view management" interface allowing administrators to edit their custom designed "views" 13 * 14 * @param string $base_url The base URL to this instance of the view manager 15 * @param string $type The internal type identifier for this view 16 * @param array $fields Array of fields this view supports 17 * @param array $sort_options Array of possible sort options this view supports if any 18 * @param string $conditions_callback Optional callback function which generates list of "conditions" for this view 19 */ 20 function view_manager($base_url, $type, $fields, $sort_options=array(), $conditions_callback="") 21 { 22 global $mybb, $db, $page, $lang; 23 24 $sub_tabs['views'] = array( 25 'title' => $lang->views, 26 'link' => "{$base_url}&action=views", 27 'description' => $lang->views_desc 28 ); 29 30 $sub_tabs['create_view'] = array( 31 'title' => $lang->create_new_view, 32 'link' => "{$base_url}&action=views&do=add", 33 'description' => $lang->create_new_view_desc 34 ); 35 36 $page->add_breadcrumb_item($lang->view_manager, 'index.php?module=user-users&action=views'); 37 38 // Lang strings should be in global lang file 39 40 if($mybb->input['do'] == "set_default") 41 { 42 if(!verify_post_check($mybb->get_input('my_post_key'))) 43 { 44 flash_message($lang->invalid_post_verify_key2, 'error'); 45 admin_redirect($base_url."&action=views"); 46 } 47 48 $query = $db->simple_select("adminviews", "vid, uid, visibility", "vid='".$mybb->get_input('vid', MyBB::INPUT_INT)."'"); 49 $admin_view = $db->fetch_array($query); 50 51 if(!$admin_view['vid'] || $admin_view['visibility'] == 1 && $mybb->user['uid'] != $admin_view['uid']) 52 { 53 flash_message($lang->error_invalid_admin_view, 'error'); 54 admin_redirect($base_url."&action=views"); 55 } 56 set_default_view($type, $admin_view['vid']); 57 flash_message($lang->succuss_view_set_as_default, 'success'); 58 admin_redirect($base_url."&action=views"); 59 } 60 61 $errors = array(); 62 if($mybb->input['do'] == "add") 63 { 64 if($mybb->request_method == "post") 65 { 66 if(!trim($mybb->input['title'])) 67 { 68 $errors[] = $lang->error_missing_view_title; 69 } 70 if($mybb->input['fields_js']) 71 { 72 $mybb->input['fields'] = explode(",", $mybb->input['fields_js']); 73 } 74 if(!isset($mybb->input['fields']) || !is_array($mybb->input['fields']) || count($mybb->input['fields']) <= 0) 75 { 76 $errors[] = $lang->error_no_view_fields; 77 } 78 79 if($mybb->get_input('perpage', MyBB::INPUT_INT) <= 0) 80 { 81 $errors[] = $lang->error_invalid_view_perpage; 82 } 83 84 if(!in_array($mybb->input['sortby'], array_keys($sort_options))) 85 { 86 $errors[] = $lang->error_invalid_view_sortby; 87 } 88 89 if($mybb->input['sortorder'] != "asc" && $mybb->input['sortorder'] != "desc") 90 { 91 $errors[] = $lang->error_invalid_view_sortorder; 92 } 93 94 if($mybb->input['visibility'] == 0) 95 { 96 $mybb->input['visibility'] = 2; 97 } 98 99 if(empty($errors)) 100 { 101 $new_view = array( 102 "uid" => $mybb->user['uid'], 103 "title" => $db->escape_string($mybb->input['title']), 104 "type" => $type, 105 "visibility" => $mybb->get_input('visibility', MyBB::INPUT_INT), 106 "fields" => $db->escape_string(my_serialize($mybb->input['fields'])), 107 "conditions" => $db->escape_string(my_serialize($mybb->input['conditions'])), 108 "custom_profile_fields" => $db->escape_string(my_serialize($mybb->input['profile_fields'])), 109 "sortby" => $db->escape_string($mybb->input['sortby']), 110 "sortorder" => $db->escape_string($mybb->input['sortorder']), 111 "perpage" => $mybb->get_input('perpage', MyBB::INPUT_INT), 112 "view_type" => $db->escape_string($mybb->input['view_type']) 113 ); 114 115 $vid = $db->insert_query("adminviews", $new_view); 116 117 if($mybb->input['isdefault']) 118 { 119 set_default_view($type, $vid); 120 } 121 flash_message($lang->success_view_created, "success"); 122 admin_redirect($base_url."&vid={$vid}"); 123 } 124 } 125 else 126 { 127 $mybb->input = array_merge($mybb->input, array('perpage' => 20)); 128 } 129 130 // Write in our JS based field selector 131 $page->extra_header .= "<script src=\"jscripts/view_manager.js\" type=\"text/javascript\"></script>\n"; 132 133 $page->add_breadcrumb_item($lang->create_new_view); 134 $page->output_header($lang->create_new_view); 135 136 $form = new Form($base_url."&action=views&do=add", "post"); 137 138 $page->output_nav_tabs($sub_tabs, 'create_view'); 139 140 // If we have any error messages, show them 141 if(!empty($errors)) 142 { 143 $page->output_inline_error($errors); 144 } 145 146 $form_container = new FormContainer($lang->create_new_view); 147 $form_container->output_row($lang->title." <em>*</em>", "", $form->generate_text_box('title', $mybb->get_input('title'), array('id' => 'title')), 'title'); 148 149 $visibility_public_checked = $mybb->get_input('visibility') == 2; 150 $visibility_private_checked = !$visibility_public_checked; 151 152 $visibility_options = array( 153 $form->generate_radio_button("visibility", "1", "<strong>{$lang->private}</strong> - {$lang->private_desc}", array("checked" => $visibility_private_checked)), 154 $form->generate_radio_button("visibility", "2", "<strong>{$lang->public}</strong> - {$lang->public_desc}", array("checked" => $visibility_public_checked)) 155 ); 156 $form_container->output_row($lang->visibility, "", implode("<br />", $visibility_options)); 157 158 $form_container->output_row($lang->set_as_default_view, "", $form->generate_yes_no_radio("isdefault", $mybb->get_input('isdefault'), array('yes' => 1, 'no' => 0))); 159 160 if(count($sort_options) > 0) 161 { 162 $sort_directions = array( 163 "asc" => $lang->ascending, 164 "desc" => $lang->descending 165 ); 166 $form_container->output_row($lang->sort_results_by, "", $form->generate_select_box('sortby', $sort_options, $mybb->get_input('sortby'), array('id' => 'sortby'))." {$lang->in} ".$form->generate_select_box('sortorder', $sort_directions, $mybb->get_input('sortorder'), array('id' => 'sortorder')), 'sortby'); 167 } 168 169 $form_container->output_row($lang->results_per_page, "", $form->generate_numeric_field('perpage', $mybb->get_input('perpage'), array('id' => 'perpage', 'min' => 1)), 'perpage'); 170 171 if($type == "user") 172 { 173 $form_container->output_row($lang->display_results_as, "", $form->generate_radio_button('view_type', 'table', $lang->table, array('checked' => ($mybb->get_input('view_type') != "card" ? true : false)))."<br />".$form->generate_radio_button('view_type', 'card', $lang->business_card, array('checked' => ($mybb->get_input('view_type') == "card" ? true : false)))); 174 } 175 176 $form_container->end(); 177 178 $active = array(); 179 180 $field_select = "<div class=\"view_fields\">\n"; 181 $field_select .= "<div class=\"enabled\"><div class=\"fields_title\">{$lang->enabled}</div><ul id=\"fields_enabled\">\n"; 182 if(isset($mybb->input['fields']) && is_array($mybb->input['fields'])) 183 { 184 foreach($mybb->input['fields'] as $field) 185 { 186 if($fields[$field]) 187 { 188 $field_select .= "<li id=\"field-{$field}\">• {$fields[$field]['title']}</li>"; 189 $active[$field] = 1; 190 } 191 } 192 } 193 $field_select .= "</ul></div>\n"; 194 $field_select .= "<div class=\"disabled\"><div class=\"fields_title\">{$lang->disabled}</div><ul id=\"fields_disabled\">\n"; 195 foreach($fields as $key => $field) 196 { 197 if(!empty($active[$key])) 198 { 199 continue; 200 } 201 $field_select .= "<li id=\"field-{$key}\">• {$field['title']}</li>"; 202 } 203 $field_select .= "</div></ul>\n"; 204 $field_select .= $form->generate_hidden_field("fields_js", @implode(",", @array_keys($active)), array('id' => 'fields_js')); 205 $field_select = str_replace("'", "\\'", $field_select); 206 $field_select = str_replace("\n", "", $field_select); 207 208 $field_select = "<script type=\"text/javascript\"> 209 //<![CDATA[ 210 document.write('".str_replace("/", "\/", $field_select)."'); 211 //]]> 212 </script>\n"; 213 214 foreach($fields as $key => $field) 215 { 216 $field_options[$key] = $field['title']; 217 } 218 219 $field_select .= "<noscript>".$form->generate_select_box('fields[]', $field_options, $mybb->get_input('fields'), array('id' => 'fields', 'multiple' => true))."</noscript>\n"; 220 221 $form_container = new FormContainer($lang->fields_to_show); 222 $form_container->output_row($lang->fields_to_show_desc, '', $field_select); 223 $form_container->end(); 224 225 // Build the search conditions 226 if(function_exists($conditions_callback)) 227 { 228 $conditions_callback($mybb->input, $form); 229 } 230 231 $buttons[] = $form->generate_submit_button($lang->save_view); 232 $form->output_submit_wrapper($buttons); 233 234 $form->end(); 235 $page->output_footer(); 236 } 237 else if($mybb->input['do'] == "edit") 238 { 239 $query = $db->simple_select("adminviews", "*", "vid='".$mybb->get_input('vid', MyBB::INPUT_INT)."'"); 240 $admin_view = $db->fetch_array($query); 241 242 // Does the view not exist? 243 if(!$admin_view['vid'] || $admin_view['visibility'] == 1 && $mybb->user['uid'] != $admin_view['uid']) 244 { 245 flash_message($lang->error_invalid_admin_view, 'error'); 246 admin_redirect($base_url."&action=views"); 247 } 248 249 if($mybb->request_method == "post") 250 { 251 if(!trim($mybb->input['title'])) 252 { 253 $errors[] = $lang->error_missing_view_title; 254 } 255 if($mybb->input['fields_js']) 256 { 257 $mybb->input['fields'] = explode(",", $mybb->input['fields_js']); 258 } 259 260 if(!is_array($mybb->input['fields']) || count($mybb->input['fields']) <= 0) 261 { 262 $errors[] = $lang->error_no_view_fields; 263 } 264 265 if($mybb->get_input('perpage', MyBB::INPUT_INT) <= 0) 266 { 267 $errors[] = $lang->error_invalid_view_perpage; 268 } 269 270 if(!in_array($mybb->input['sortby'], array_keys($sort_options))) 271 { 272 $errors[] = $lang->error_invalid_view_sortby; 273 } 274 275 if($mybb->input['sortorder'] != "asc" && $mybb->input['sortorder'] != "desc") 276 { 277 $errors[] = $lang->error_invalid_view_sortorder; 278 } 279 280 if($mybb->input['visibility'] == 0) 281 { 282 $mybb->input['visibility'] = 2; 283 } 284 285 if(empty($errors)) 286 { 287 $updated_view = array( 288 "title" => $db->escape_string($mybb->input['title']), 289 "type" => $type, 290 "visibility" => $mybb->get_input('visibility', MyBB::INPUT_INT), 291 "fields" => $db->escape_string(my_serialize($mybb->input['fields'])), 292 "conditions" => $db->escape_string(my_serialize($mybb->input['conditions'])), 293 "custom_profile_fields" => $db->escape_string(my_serialize($mybb->input['profile_fields'])), 294 "sortby" => $db->escape_string($mybb->input['sortby']), 295 "sortorder" => $db->escape_string($mybb->input['sortorder']), 296 "perpage" => $mybb->get_input('perpage', MyBB::INPUT_INT), 297 "view_type" => $db->escape_string($mybb->input['view_type']) 298 ); 299 $db->update_query("adminviews", $updated_view, "vid='{$admin_view['vid']}'"); 300 301 if($mybb->input['isdefault']) 302 { 303 set_default_view($type, $admin_view['vid']); 304 } 305 306 flash_message($lang->success_view_updated, "success"); 307 admin_redirect($base_url."&vid={$admin_view['vid']}"); 308 } 309 } 310 311 // Write in our JS based field selector 312 $page->extra_header .= "<script src=\"jscripts/view_manager.js\" type=\"text/javascript\"></script>\n"; 313 314 $page->add_breadcrumb_item($lang->edit_view); 315 $page->output_header($lang->edit_view); 316 317 $form = new Form($base_url."&action=views&do=edit&vid={$admin_view['vid']}", "post"); 318 319 $sub_tabs = array(); 320 $sub_tabs['edit_view'] = array( 321 'title' => $lang->edit_view, 322 'link' => $base_url."&action=views&do=edit&vid={$admin_view['vid']}", 323 'description' => $lang->edit_view_desc 324 ); 325 326 $page->output_nav_tabs($sub_tabs, 'edit_view'); 327 328 // If we have any error messages, show them 329 if(!empty($errors)) 330 { 331 $page->output_inline_error($errors); 332 } 333 else 334 { 335 $admin_view['conditions'] = my_unserialize($admin_view['conditions']); 336 $admin_view['fields'] = my_unserialize($admin_view['fields']); 337 $admin_view['profile_fields'] = my_unserialize($admin_view['custom_profile_fields']); 338 $mybb->input = array_merge($mybb->input, $admin_view); 339 340 $mybb->input['isdefault'] = 0; 341 $default_view = fetch_default_view($type); 342 343 if($default_view == $admin_view['vid']) 344 { 345 $mybb->input['isdefault'] = 1; 346 } 347 } 348 349 $form_container = new FormContainer($lang->edit_view); 350 $form_container->output_row($lang->view." <em>*</em>", "", $form->generate_text_box('title', $mybb->input['title'], array('id' => 'title')), 'title'); 351 352 $visibility_public_checked = $mybb->input['visibility'] == 2; 353 $visibility_private_checked = !$visibility_public_checked; 354 355 $visibility_options = array( 356 $form->generate_radio_button("visibility", "1", "<strong>{$lang->private}</strong> - {$lang->private_desc}", array("checked" => $visibility_private_checked)), 357 $form->generate_radio_button("visibility", "2", "<strong>{$lang->public}</strong> - {$lang->public_desc}", array("checked" => $visibility_public_checked)) 358 ); 359 $form_container->output_row($lang->visibility, "", implode("<br />", $visibility_options)); 360 361 $form_container->output_row($lang->set_as_default_view, "", $form->generate_yes_no_radio("isdefault", $mybb->input['isdefault'], array('yes' => 1, 'no' => 0))); 362 363 if(is_array($sort_options) && count($sort_options) > 0) 364 { 365 $sort_directions = array( 366 "asc" => $lang->ascending, 367 "desc" => $lang->descending 368 ); 369 $form_container->output_row($lang->sort_results_by, "", $form->generate_select_box('sortby', $sort_options, $mybb->input['sortby'], array('id' => 'sortby'))." {$lang->in} ".$form->generate_select_box('sortorder', $sort_directions, $mybb->input['sortorder'], array('id' => 'sortorder')), 'sortby'); 370 } 371 372 $form_container->output_row($lang->results_per_page, "", $form->generate_numeric_field('perpage', $mybb->input['perpage'], array('id' => 'perpage', 'min' => 1)), 'perpage'); 373 374 if($type == "user") 375 { 376 $form_container->output_row($lang->display_results_as, "", $form->generate_radio_button('view_type', 'table', $lang->table, array('checked' => ($mybb->input['view_type'] != "card" ? true : false)))."<br />".$form->generate_radio_button('view_type', 'card', $lang->business_card, array('checked' => ($mybb->input['view_type'] == "card" ? true : false)))); 377 } 378 379 $form_container->end(); 380 381 $field_select = "<div class=\"view_fields\">\n"; 382 $field_select .= "<div class=\"enabled\"><div class=\"fields_title\">{$lang->enabled}</div><ul id=\"fields_enabled\">\n"; 383 if(is_array($mybb->input['fields'])) 384 { 385 foreach($mybb->input['fields'] as $field) 386 { 387 if($fields[$field]) 388 { 389 $field_select .= "<li id=\"field-{$field}\">• {$fields[$field]['title']}</li>"; 390 $active[$field] = 1; 391 } 392 } 393 } 394 $field_select .= "</ul></div>\n"; 395 $field_select .= "<div class=\"disabled\"><div class=\"fields_title\">{$lang->disabled}</div><ul id=\"fields_disabled\">\n"; 396 if(is_array($fields)) 397 { 398 foreach($fields as $key => $field) 399 { 400 if(!empty($active[$key])) 401 { 402 continue; 403 } 404 $field_select .= "<li id=\"field-{$key}\">• {$field['title']}</li>"; 405 } 406 } 407 $field_select .= "</div></ul>\n"; 408 $field_select .= $form->generate_hidden_field("fields_js", @implode(",", @array_keys($active)), array('id' => 'fields_js')); 409 $field_select = str_replace("'", "\\'", $field_select); 410 $field_select = str_replace("\n", "", $field_select); 411 412 $field_select = "<script type=\"text/javascript\"> 413 //<![CDATA[ 414 document.write('".str_replace("/", "\/", $field_select)."'); 415 //]]></script>\n"; 416 417 foreach($fields as $key => $field) 418 { 419 $field_options[$key] = $field['title']; 420 } 421 422 $field_select .= "<noscript>".$form->generate_select_box('fields[]', $field_options, $mybb->input['fields'], array('id' => 'fields', 'multiple' => true))."</noscript>\n"; 423 424 $form_container = new FormContainer($lang->fields_to_show); 425 $form_container->output_row($lang->fields_to_show_desc, '', $field_select); 426 $form_container->end(); 427 428 // Build the search conditions 429 if(function_exists($conditions_callback)) 430 { 431 $conditions_callback($mybb->input, $form); 432 } 433 434 $buttons[] = $form->generate_submit_button($lang->save_view); 435 $form->output_submit_wrapper($buttons); 436 437 $form->end(); 438 $page->output_footer(); 439 } 440 441 else if($mybb->input['do'] == "delete") 442 { 443 if($mybb->get_input('no')) 444 { 445 admin_redirect($base_url."&action=views"); 446 } 447 448 $query = $db->simple_select("adminviews", "COUNT(vid) as views"); 449 $views = $db->fetch_field($query, "views"); 450 451 if($views == 0) 452 { 453 flash_message($lang->error_cannot_delete_view, 'error'); 454 admin_redirect($base_url."&action=views"); 455 } 456 457 $vid = $mybb->get_input('vid', MyBB::INPUT_INT); 458 $query = $db->simple_select("adminviews", "vid, uid, visibility", "vid = '{$vid}'"); 459 $admin_view = $db->fetch_array($query); 460 461 if($vid == 1 || !$admin_view['vid'] || $admin_view['visibility'] == 1 && $mybb->user['uid'] != $admin_view['uid']) 462 { 463 flash_message($lang->error_invalid_view_delete, 'error'); 464 admin_redirect($base_url."&action=views"); 465 } 466 467 if($mybb->request_method == "post") 468 { 469 $db->delete_query("adminviews", "vid='{$admin_view['vid']}'"); 470 flash_message($lang->success_view_deleted, 'success'); 471 admin_redirect($base_url."&action=views"); 472 } 473 else 474 { 475 $page->output_confirm_action($base_url."&action=views&do=delete&vid={$admin_view['vid']}", $lang->confirm_view_deletion); 476 } 477 } 478 479 // Export views 480 else if($mybb->input['do'] == "export") 481 { 482 $xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?".">\n"; 483 $xml = "<adminviews version=\"".$mybb->version_code."\" exported=\"".TIME_NOW."\">\n"; 484 485 if($mybb->input['type']) 486 { 487 $type_where = "type='".$db->escape_string($mybb->input['type'])."'"; 488 } 489 490 $query = $db->simple_select("adminviews", "*", $type_where); 491 while($admin_view = $db->fetch_array($query)) 492 { 493 $fields = my_unserialize($admin_view['fields']); 494 $conditions = my_unserialize($admin_view['conditions']); 495 496 $admin_view['title'] = str_replace(']]>', ']]]]><![CDATA[>', $admin_view['title']); 497 $admin_view['sortby'] = str_replace(']]>', ']]]]><![CDATA[>', $admin_view['sortby']); 498 $admin_view['sortorder'] = str_replace(']]>', ']]]]><![CDATA[>', $admin_view['sortorder']); 499 $admin_view['view_type'] = str_replace(']]>', ']]]]><![CDATA[>', $admin_view['view_type']); 500 501 $xml .= "\t<view vid=\"{$admin_view['vid']}\" uid=\"{$admin_view['uid']}\" type=\"{$admin_view['type']}\" visibility=\"{$admin_view['visibility']}\">\n"; 502 $xml .= "\t\t<title><![CDATA[{$admin_view['title']}]]></title>\n"; 503 $xml .= "\t\t<fields>\n"; 504 foreach($fields as $field) 505 { 506 $xml .= "\t\t\t<field name=\"{$field}\" />\n"; 507 } 508 $xml .= "\t\t</fields>\n"; 509 $xml .= "\t\t<conditions>\n"; 510 foreach($conditions as $name => $condition) 511 { 512 if(!$conditions) continue; 513 if(is_array($condition)) 514 { 515 $condition = my_serialize($condition); 516 $is_serialized = " is_serialized=\"1\""; 517 } 518 $condition = str_replace(']]>', ']]]]><![CDATA[>', $condition); 519 $xml .= "\t\t\t<condition name=\"{$name}\"{$is_serialized}><![CDATA[{$condition}]]></condition>\n"; 520 } 521 $xml .= "\t\t</conditions>\n"; 522 $xml .= "\t\t<sortby><![CDATA[{$admin_view['sortby']}]]></sortby>\n"; 523 $xml .= "\t\t<sortorder><![CDATA[{$admin_view['sortorder']}]]></sortorder>\n"; 524 $xml .= "\t\t<perpage><![CDATA[{$admin_view['perpage']}]]></perpage>\n"; 525 $xml .= "\t\t<view_type><![CDATA[{$admin_view['view_type']}]]></view_type>\n"; 526 $xml .= "\t</view>\n"; 527 } 528 $xml .= "</adminviews>\n"; 529 $mybb->settings['bbname'] = urlencode($mybb->settings['bbname']); 530 header("Content-disposition: filename=".$mybb->settings['bbname']."-views.xml"); 531 header("Content-Length: ".my_strlen($xml)); 532 header("Content-type: unknown/unknown"); 533 header("Pragma: no-cache"); 534 header("Expires: 0"); 535 echo $xml; 536 exit; 537 } 538 539 // Generate a listing of all current views 540 else 541 { 542 $page->output_header($lang->view_manager); 543 544 $page->output_nav_tabs($sub_tabs, 'views'); 545 546 $table = new Table; 547 $table->construct_header($lang->view); 548 $table->construct_header($lang->controls, array("class" => "align_center", "width" => 150)); 549 550 $default_view = fetch_default_view($type); 551 552 $query = $db->simple_select("adminviews", "COUNT(vid) as views"); 553 $views = $db->fetch_field($query, "views"); 554 555 $query = $db->query(" 556 SELECT v.*, u.username 557 FROM ".TABLE_PREFIX."adminviews v 558 LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=v.uid) 559 WHERE v.visibility='2' OR (v.visibility='1' AND v.uid='{$mybb->user['uid']}') 560 ORDER BY title 561 "); 562 while($view = $db->fetch_array($query)) 563 { 564 $created = ""; 565 if($view['uid'] == 0) 566 { 567 $view_type = "default"; 568 $default_class = "grey"; 569 } 570 else if($view['visibility'] == 2) 571 { 572 $view_type = "group"; 573 if($view['username']) 574 { 575 $username = htmlspecialchars_uni($view['username']); 576 $created = "<br /><small>{$lang->created_by} {$username}</small>"; 577 } 578 } 579 else 580 { 581 $view_type = "user"; 582 } 583 584 $default_add = ''; 585 if($default_view == $view['vid']) 586 { 587 $default_add = " ({$lang->default})"; 588 } 589 590 $title_string = "view_title_{$view['vid']}"; 591 592 if(isset($lang->$title_string)) 593 { 594 $view['title'] = $lang->$title_string; 595 } 596 597 $table->construct_cell("<div class=\"float_right\"><img src=\"styles/{$page->style}/images/icons/{$view_type}.png\" title=\"".$lang->sprintf($lang->this_is_a_view, $view_type)."\" alt=\"{$view_type}\" /></div><div class=\"{$default_class}\"><strong><a href=\"{$base_url}&action=views&do=edit&vid={$view['vid']}\" >{$view['title']}</a></strong>{$default_add}{$created}</div>"); 598 599 $popup = new PopupMenu("view_{$view['vid']}", $lang->options); 600 $popup->add_item($lang->edit_view, "{$base_url}&action=views&do=edit&vid={$view['vid']}"); 601 if($view['vid'] != $default_view) 602 { 603 $popup->add_item($lang->set_as_default, "{$base_url}&action=views&do=set_default&vid={$view['vid']}&my_post_key={$mybb->post_code}"); 604 } 605 606 if($views > 1 && $view['vid'] != 1) 607 { 608 $popup->add_item($lang->delete_view, "{$base_url}&action=views&do=delete&vid={$view['vid']}&my_post_key={$mybb->post_code}", "return AdminCP.deleteConfirmation(this, '{$lang->confirm_view_deletion}')"); 609 } 610 $controls = $popup->fetch(); 611 $table->construct_cell($controls, array("class" => "align_center")); 612 $table->construct_row(); 613 } 614 615 $table->output($lang->view); 616 617 echo <<<LEGEND 618 <br /> 619 <fieldset> 620 <legend>{$lang->legend}</legend> 621 <img src="styles/{$page->style}/images/icons/default.png" alt="{$lang->default}" style="vertical-align: middle;" /> {$lang->default_view_desc}<br /> 622 <img src="styles/{$page->style}/images/icons/group.png" alt="{$lang->public}" style="vertical-align: middle;" /> {$lang->public_view_desc}<br /> 623 <img src="styles/{$page->style}/images/icons/user.png" alt="{$lang->private}" style="vertical-align: middle;" /> {$lang->private_view_desc}</fieldset> 624 LEGEND; 625 $page->output_footer(); 626 } 627 } 628 629 function set_default_view($type, $vid) 630 { 631 global $mybb, $db; 632 633 $query = $db->simple_select("adminoptions", "defaultviews", "uid='{$mybb->user['uid']}'"); 634 $default_views = my_unserialize($db->fetch_field($query, "defaultviews")); 635 $create = !$db->num_rows($query); 636 637 $default_views[$type] = $vid; 638 $default_views = my_serialize($default_views); 639 $updated_admin = array("defaultviews" => $db->escape_string($default_views)); 640 641 if($create == true) 642 { 643 $updated_admin['uid'] = $mybb->user['uid']; 644 $updated_admin['notes'] = ''; 645 $updated_admin['permissions'] = ''; 646 $db->insert_query("adminoptions", $updated_admin); 647 } 648 else 649 { 650 $db->update_query("adminoptions", $updated_admin, "uid='{$mybb->user['uid']}'"); 651 } 652 } 653 654 /** 655 * @param string $type 656 * 657 * @return bool|array 658 */ 659 function fetch_default_view($type) 660 { 661 global $mybb, $db; 662 $query = $db->simple_select("adminoptions", "defaultviews", "uid='{$mybb->user['uid']}'"); 663 $default_views = my_unserialize($db->fetch_field($query, "defaultviews")); 664 if(!is_array($default_views)) 665 { 666 return false; 667 } 668 return $default_views[$type]; 669 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| 2005 - 2021 © MyBB.de | Alle Rechte vorbehalten! | Sponsor: netcup | Cross-referenced by PHPXref |