/**
  * Tab function, allows a user to administer tabs
  */
 public function tab($id = null)
 {
     $this->_force_admin();
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
         if ($_POST['newtab']) {
             unset($_POST['id']);
             unset($id);
         } else {
             $postdata = $_POST;
             foreach ($postdata['lock_state'] as $key => $value) {
                 $lock_state += $value;
             }
             $postdata['lock_state'] = $lock_state;
             $postdata['slug'] = str_replace(' ', '-', strtolower($postdata['name']));
             $tab_obj = new MyTab($postdata);
             $id = $tab_obj->id;
             if (isset($_POST['targets'])) {
                 $tab_obj->_save();
                 MyPortalObject::save_targets($_POST['targets'], $tab_obj->id, 'MyTab');
                 echo 'Your tab has been saved.';
             } else {
                 echo 'You have selected no targets and your tab has not been saved. Did you mean to select public targeting?';
             }
         }
     }
     if ($tab_obj->id == null && $id == null) {
         $tabform = new TabForm();
     } else {
         if ($tab_obj->id != null) {
             $id = $tab_obj->id;
         }
         $tabform = MyPortalObject::fetchRow($id, 'MyTab');
         $tabform = new TabForm($tabform, true);
     }
     $this->tpl->assign('tabform', $tabform);
     $this->display('admin-tab.tpl');
 }