| 
<?phpinclude "../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';
 ?>
 
 
 
 |