[ Index ]

PHP Cross Reference of MyBB 1.6.7

title

Body

[close]

/admin/inc/ -> functions_view_manager.php (source)

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


Generated: Sat Mar 31 17:55:03 2012 Cross-referenced by PHPXref 0.7.1