1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-10 00:27:45 +02:00

Userclasses - add checks for duplicate names, caching for class tree, some checking for stupid values

This commit is contained in:
e107steved
2008-11-29 21:16:54 +00:00
parent 7351b6c03d
commit 2ee32fcd9a
3 changed files with 232 additions and 142 deletions

View File

@@ -11,9 +11,9 @@
| GNU General Public License (http://gnu.org).
|
| $Source: /cvs_backup/e107_0.8/e107_admin/userclass2.php,v $
| $Revision: 1.15 $
| $Date: 2008-11-29 17:35:38 $
| $Author: secretr $
| $Revision: 1.16 $
| $Date: 2008-11-29 21:16:48 $
| $Author: e107steved $
+----------------------------------------------------------------------------+
*/
@@ -204,17 +204,17 @@ if (isset($_POST['delete']))
//---------------------------------------------------
// Add/Edit class information
//---------------------------------------------------
if (isset($_POST['updateclass']) || isset($_POST['createclass']))
if (($action == 'config') && isset($_POST['createclass'])) // Add or edit
{
$class_record = array(
'userclass_name' => varset($tp->toDB($_POST['userclass_name']),''),
'userclass_description' => varset($tp->toDB($_POST['userclass_description']),''),
'userclass_editclass' => intval(varset($_POST['userclass_editclass'],0)),
'userclass_parent' => intval(varset($_POST['userclass_parent'],0)),
'userclass_visibility' => intval(varset($_POST['userclass_visibility'],0)),
'userclass_icon' => varset($tp->toDB($_POST['userclass_icon']),''),
'userclass_type' => intval(varset($_POST['userclass_type'],UC_TYPE_STD))
);
$class_record = array(
'userclass_name' => varset($tp->toDB($_POST['userclass_name']),''),
'userclass_description' => varset($tp->toDB($_POST['userclass_description']),''),
'userclass_editclass' => intval(varset($_POST['userclass_editclass'],0)),
'userclass_parent' => intval(varset($_POST['userclass_parent'],0)),
'userclass_visibility' => intval(varset($_POST['userclass_visibility'],0)),
'userclass_icon' => varset($tp->toDB($_POST['userclass_icon']),''),
'userclass_type' => intval(varset($_POST['userclass_type'],UC_TYPE_STD))
);
if ($class_record['userclass_type'] == UC_TYPE_GROUP)
{
$temp = array();
@@ -225,48 +225,64 @@ if (isset($_POST['updateclass']) || isset($_POST['createclass']))
$class_record['userclass_accum'] = implode(',',$temp);
}
$do_tree = FALSE;
$do_tree = FALSE; // Set flag to rebuild tree if no errors
$forwardVals = FALSE; // Set to ripple through existing values to a subsequent pass
if (isset($_POST['createclass']) && $_POST['userclass_id'])
{
check_allowed($_POST['userclass_id']);
$class_record['userclass_id'] = intval($_POST['userclass_id']);
$e_userclass->save_edited_class($class_record);
userclass2_adminlog("03","ID:{$class_record['userclass_id']} (".$class_record['userclass_name'].")");
$do_tree = TRUE;
$message = UCSLAN_5;
}
elseif (isset($_POST['createclass']))
{
if($class_record['userclass_name'])
{
if (getperms("0") || ($class_record['userclass_editclass'] && check_class($class_record['userclass_editclass'])))
{
$i = 1;
while ($sql->db_Select('userclass_classes', '*', "userclass_id='".$i."' ") && $i < 255)
{
$i++;
}
if ($i < 245)
{
$class_record['userclass_id'] = $i;
$e_userclass->add_new_class($class_record);
userclass2_adminlog("01","ID:{$class_record['userclass_id']} (".$class_record['userclass_name'].")");
$do_tree = TRUE;
}
$message = UCSLAN_6;
}
else
{
header("location:".SITEURL);
exit;
}
$tempID = intval(varset($_POST['userclass_id'], -1));
if (($tempID < 0) && $e_userclass->ucGetClassIDFromName($class_record['userclass_name']))
{ // Duplicate name
$message = UCSLAN_63;
$forwardVals = TRUE;
}
else
elseif ($e_userclass->checkAdminInfo($class_record, $tempID) === FALSE)
{
$message = UCSLAN_37;
$message = UCSLAN_86;
}
if (!$forwardVals)
{
if ($tempID > 0)
{ // Editing existing class here
check_allowed($_POST['userclass_id']);
$class_record['userclass_id'] = $tempID;
$e_userclass->save_edited_class($class_record);
userclass2_adminlog("03","ID:{$class_record['userclass_id']} (".$class_record['userclass_name'].")");
$do_tree = TRUE;
$message .= UCSLAN_5;
}
else
{ // Creating new class
if($class_record['userclass_name'])
{
if (getperms("0") || ($class_record['userclass_editclass'] && check_class($class_record['userclass_editclass'])))
{
$i = $e_userclass->findNewClassID();
if ($i === FALSE)
{
$message = UCSLAN_85;
}
else
{
$class_record['userclass_id'] = $i;
$e_userclass->add_new_class($class_record);
userclass2_adminlog("01","ID:{$class_record['userclass_id']} (".$class_record['userclass_name'].")");
$do_tree = TRUE;
$message .= UCSLAN_6;
}
}
else
{
header("location:".SITEURL);
exit;
}
}
else
{
$message = UCSLAN_37; // Class name required
$forwardVals = TRUE;
}
}
}
}
if ($do_tree)
{
@@ -298,6 +314,7 @@ switch ($action)
{
$class_num = intval(varset($uc_qs[2],0));
}
$userclass_id = 0; // Set defaults for new class to start with
$userclass_name = '';
$userclass_description = '';
@@ -307,22 +324,25 @@ switch ($action)
$userclass_icon = '';
$userclass_type = UC_TYPE_STD;
$userclass_groupclass = '';
if ($params == 'edit')
if ($params == 'edit' || $forwardVals)
{
check_allowed($class_num);
$sql->db_Select('userclass_classes', '*', "userclass_id='".intval($class_num)."' ");
$row = $sql->db_Fetch();
$userclass_id = $row['userclass_id']; // Update fields from DB if editing
$userclass_name = $row['userclass_name'];
$userclass_description = $row['userclass_description'];
$userclass_editclass = $row['userclass_editclass'];
$userclass_visibility = $row['userclass_visibility'];
$userclass_parent = $row['userclass_parent'];
$userclass_icon = $row['userclass_icon'];
$userclass_type = $row['userclass_type'];
if (!$forwardVals)
{ // Get the values from DB (else just recycle data uer was trying to store)
check_allowed($class_num);
$sql->db_Select('userclass_classes', '*', "userclass_id='".intval($class_num)."' ");
$class_record = $sql->db_Fetch();
$userclass_id = $class_record['userclass_id']; // Update fields from DB if editing
}
$userclass_name = $class_record['userclass_name'];
$userclass_description = $class_record['userclass_description'];
$userclass_editclass = $class_record['userclass_editclass'];
$userclass_visibility = $class_record['userclass_visibility'];
$userclass_parent = $class_record['userclass_parent'];
$userclass_icon = $class_record['userclass_icon'];
$userclass_type = $class_record['userclass_type'];
if ($userclass_type == UC_TYPE_GROUP)
{
$userclass_groupclass = $row['userclass_accum'];
$userclass_groupclass = $class_record['userclass_accum'];
}
}
@@ -593,19 +613,12 @@ $ns->tablerender(UCSLAN_21, $text);
if (isset($_POST['add_class_tree']))
{ // Create a default tree
$message = UCSLAN_62;
if (!$e_userclass->update_db(TRUE))
{
$message .= UCSLAN_63;
}
else
{
$message = UCSLAN_62;
$e_userclass->set_default_structure();
$e_userclass->calc_tree();
$e_userclass->save_tree();
$e_userclass->read_tree(TRUE); // Need to re-read the tree to show correct info
$message .= UCSLAN_64;
}
}
if (isset($_POST['flatten_class_tree']))