<?php 
include "../inc/init.php"; 
 
if(!$user->isAdmin()) { 
    header("Location: $set->url/login.php"); 
    exit; 
} 
 
$page->title = "Group Management"; 
 
$presets->setActive("adminpanel"); // we set admin panel active in the navbar 
 
$groups_type = array("Guest","Member", "Moderator", "Administrator"); // all the possible types of a group 
 
$ignored_columns = array("groupid", "name", "type", "priority", "color"); 
 
$data = $db->getAll("SELECT * FROM `".MLS_PREFIX."groups` ORDER BY `type`,`priority`"); 
 
$columns = get_object_vars($data[0]); // we grab the columns name 
 
 
$act = isset($_GET['act']) ? $_GET['act'] : NULL; 
 
 
if($_POST) { 
 
    if( ($act == "add") || ($act == 'edit') ) { // when we add or we edit we grab the same data all we need to change is the query 
 
 
      if($act == 'edit') 
        $sql = "UPDATE `".MLS_PREFIX."groups` SET "; 
      else 
        $sql = "INSERT INTO `".MLS_PREFIX."groups` SET "; 
 
      $editable = 0; // based on this we determine if it's a default group or not 
 
      if ($act == 'add') { 
        $editable = 1; 
      } 
 
      if(($act == 'edit') && ($group = $db->getRow("SELECT * FROM `".MLS_PREFIX."groups` WHERE `groupid` = ?i", $_GET['id'])))  
        if($group->groupid > 4) 
          $editable = 1; 
       
 
 
 
      $name = $_POST['name']; 
 
      if(isset($_POST['type'])) 
        $type = $_POST['type']; 
       
      $priority = $_POST['priority']; 
      $color = $_POST['color']; 
 
      $sql .= $db->parse(" `name` = ?s, `priority` = ?s, `color` = ?s, ", $name, $priority, $color); 
 
      if($editable) 
        $sql .= $db->parse(" `type` = ?s,", $type); 
 
 
 
      foreach ($_POST as $key => $value)  
        if(!in_array($key, $ignored_columns) && in_array($key, array_keys($columns))) // we make sure it's a valid key 
          $sql .= $db->parse(" ?n = ?s,", $key, $value); 
       
 
      if($act == 'edit') 
        $sql = trim($sql, ",").$db->parse(" WHERE `groupid` = ?i", $group->groupid); 
      else 
        $sql = trim($sql, ","); 
 
 
      if($db->query("?p", $sql)) // we have the query already parsed 
        if($act == 'edit') 
          $page->success = "Group settings successfully saved !"; 
        else 
          $page->success = "Group successfully created !"; 
      else 
        $page->error = "Some error camed up !"; 
 
 
 
    } else if($act == 'del') { 
 
      if($group = $db->getRow("SELECT * FROM `".MLS_PREFIX."groups` WHERE `groupid` = ?i", $_GET['id'])) { 
 
 
          $valid_groups = array(); 
 
          foreach ($data as $d)  
            if($d->groupid != $group->groupid) 
              $valid_groups[] = $d->groupid; 
 
 
          if(in_array($_POST['replace'], $valid_groups)) { 
              $db->query("DELETE FROM `".MLS_PREFIX."groups` WHERE `groupid` = ?i", $group->groupid); 
              if($db->query("UPDATE `".MLS_PREFIX."groups` SET `groupid` = ?i WHERE `groupid` = ?i", $_POST['replace'], $group->groupid)) 
                $page->success = "Group was successfully deleted !"; 
          } 
 
      } else  
        $page->error = "This group does not exists !"; 
 
 
    } 
 
} 
 
 
include "header.php"; 
 
include "menu-side.php"; 
 
 
 
if(isset($page->error)) 
  $options->fError($page->error); 
else if(isset($page->success)) 
  $options->success($page->success); 
 
 
 
 
 
if(($act == "add") || ($act == 'edit')) { // add and edit shows the same form so we only need to set the default values in case it is edit 
 
  $edit = 0; // based on this we determine if it's edit or add 
  $editable = 0; // based on this we determine if it's a default group or not 
 
  if(($act == 'edit') && ($group = $db->getRow("SELECT * FROM `".MLS_PREFIX."groups` WHERE `groupid` = ?i", $_GET['id']))) { 
    $edit = 1; 
    if($group->groupid > 4) 
      $editable = 1; 
  } 
 
  $show_types = ''; // holds the html for the group types 
  $show_can_options = ''; // holds the extra options that are not added by default 
 
 
  foreach ($groups_type as $k => $v)  
    if($k != 0) 
      $show_types .= "<option value='$k' ".($edit && ($group->type == $k) ? "selected='1'" : "").">".$options->html($v)."</option>"; 
  
  foreach ($columns as $k => $v) { 
    $safe_name = $options->html($k); 
 
    if(!in_array($k, $ignored_columns)) 
      if((strpos($k, "can") !== FALSE)) { 
        $show_can_options .= "     
          <div class='form-group'> 
            <label class='col-sm-2 control-label' for='$safe_name'>".$options->prettyPrint(str_ireplace("can", "can ", $safe_name))."</label> 
            <div class='col-sm-9'> 
              <select id='$safe_name' name='$safe_name' class='form-control'> 
                <option value='0' ".($edit && ($group->$k == 0) ? "selected='1'" : "").">No</option> 
                <option value='1' ".($edit && ($group->$k == 1) ? "selected='1'" : "").">Yes</option> 
              </select> 
            </div> 
          </div>"; 
       
      } else { 
       
        $show_can_options .= " 
          <div class='form-group'> 
            <label class='col-sm-2 control-label' for='$safe_name'>".$options->prettyPrint($safe_name)."</label> 
            <div class='col-sm-9'> 
              <input type='text' id='$safe_name' name='$safe_name' ".($edit ? "value='".$options->html($group->$k)."'" : "")." class='form-control'> 
            </div> 
          </div> 
        ";  
      } 
  } 
 
 
 
echo " 
  <form class='form-horizontal' action='#' method='post'> 
    <fieldset> 
 
    <legend>".($edit ? "Edit" : "Add")." Group</legend> 
 
    <div class='form-group'> 
      <label class='col-sm-2 control-label' for='name'>Name</label> 
      <div class='col-sm-9'> 
        <input id='name' name='name' type='text' ".($edit ? "value='".$options->html($group->name)."'" : "")." class='form-control'> 
      </div> 
    </div>"; 
 
 
if($editable || !$edit) 
  echo " 
      <div class='form-group'> 
        <label class='col-sm-2 control-label' for='type'>Type</label> 
        <div class='col-sm-9'> 
          <select id='type' name='type' class='form-control'> 
            $show_types 
          </select> 
        </div> 
      </div>"; 
 
echo " 
    <div class='form-group'> 
      <label class='col-sm-2 control-label' for='priority'>Priority</label> 
      <div class='col-sm-9'> 
        <input id='priority' name='priority' type='text' class='form-control' ".($edit ? "value='".$options->html($group->priority)."'" : "value='1'")."> 
        <p class='help-block'>the bigger the number the higher the priority it has compared with same type</p> 
      </div> 
    </div> 
 
    <div class='form-group'> 
      <label class='col-sm-2 control-label' for='color'>Color</label> 
      <div class='col-sm-9'> 
        <input id='color' name='color' type='text' ".($edit ? "value='".$options->html($group->color)."'" : "")." class='form-control'> 
        <p class='help-block'>eg: <b>#00ff00</b> or <b>lime</b></p> 
      </div> 
    </div> 
 
 
    $show_can_options 
 
    <div class='form-group'> 
      <div class='col-sm-offset-2 col-sm-10'> 
        <input type='submit' value='Save Group' class='btn btn-success'>  <a href='?' class='btn'>Cancel</a> 
      </div> 
    </div> 
 
    </fieldset> 
  </form>"; 
 
 
 
 
} else if($act == 'del') { 
 
  if($group = $db->getRow("SELECT * FROM `".MLS_PREFIX."groups` WHERE `groupid` = ?i", $_GET['id'])) { 
 
 
  $show_groups = ''; 
 
  foreach ($data as $d)  
    if($d->groupid != $group->groupid) 
      $show_groups .= "<option value='$d->groupid'>".$options->html($d->name)."</option>"; 
   
 
  echo " 
    <form class='form-horizontal' action='#' method='post'> 
      <fieldset> 
 
      <legend>Delete Group</legend> 
 
      ".$options->info("You are about to delete the group `".$options->html($group->name)."`",1)." 
 
      <div class='form-group'> 
        <label class='col-sm-2 control-label' for='replace'>Replace group with: </label> 
        <div class='col-sm-9'> 
          <select name='replace' class='form-control'> 
            $show_groups 
          </select> 
          <p class='help-block'>all the users that currently belong to the deleted group will be moved to this one</p> 
        </div> 
      </div> 
 
      <div class='form-group'> 
        <div class='col-sm-9'> 
          <input type='submit' value='Yes delete' class='btn btn-success'> <a href='?' class='btn'>Cancel</a> 
        </div> 
      </div> 
 
    </form> 
  "; 
}else 
  $options->error("This group doesn't exists !"); 
 
} else { 
 
    echo "<legend>Group Management</legend>"; 
 
 
 
      echo "<table class='table table-striped'> 
        <tr> <th>Name</th> <th>Type</th> <th>Options</th></tr>"; 
      foreach ($data as $d) { 
 
        if($d->groupid > 4) // we only show delete option for user made groups 
          $delbtn = "<a href='?act=del&id=$d->groupid' class='btn btn-danger'>Delete</a>"; 
        else 
          $delbtn = ''; 
 
        echo " 
        <tr>  
          <td>".$options->html($d->name)."</td>  
          <td>".$groups_type[$d->type]."</td>  
          <td><a href='?act=edit&id=$d->groupid' class='btn btn-primary'>Edit</a> $delbtn</td> 
        </tr>"; 
      } 
 
 
      echo "</table> 
 
      <a href='?act=add' class='btn btn-success'>+ Add new group</a> 
      "; 
 
} 
include 'admin-footer.php'; 
?> 
 
 
 
 |