Makes perfect sense to not use Javascript, Thanks! However I realy don’t know how to implement the code above to my class… What I have done, is insert my classes. Hope you guys can help… Thanks in advance!
[php]
<?php
error_reporting(E_ERROR);
require_once ('config.php');
require_once 'class.AirtimeUser.php';
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
class UserMod
{
private $dbHost = "";
private $dbUser = "";
private $dbPass = "";
private $dbName = "";
public function UserMod()
{
global $site;
$this->dbHost = $site['db']['db_host'];
$this->dbUser = $site['db']['db_user'];
$this->dbPass = $site['db']['db_pass'];
$this->dbName = $site['db']['db_name'];
}
//Search Function
public function getUsers($userId, $isAdmin, $filterUsername = "")
{
$cmd = "SELECT
airtime_users.airtime_user_id,
airtime_users.username,
airtime_users.is_admin
FROM airtime_users
where airtime_users.username like '%$filterUsername%'";
if($isAdmin != 1)
{
$cmd = $cmd . " and airtime_users.parent_user_id = " . $userId;
}
$result = $this->execCommand($cmd);
$output = $this->buildUserModGrid($result, $filterUsername);
return $output;
}
public function showUser($userId, $isAdmin, $editUserID)
{
$user = new AirtimeUser($editUserID);
if(!$isAdmin)
{
// verify this user is allowed to edit the selected user.
if($user->isNewUser())
{
$user->set_parent_user_id($userId);
}
else
{
if($user->get_parent_user_id() <> $userId)
{
alert('You do not have the permission to edit a user!');
return false;
}
}
}
return $this->getUserEditForm($user);
}
//New added function with less permissions
private function getUserEditForm(AirtimeUser $user)
{
$output = "";
$output = $output . "
";
$output = $output . "
User Id |
" . $user->get_airtime_user_id () . " |
";
$output = $output . "
CDR Download permission |
|
";
$output = $output . "
SIM Summary download permission |
|
";
$output = $output . "
Allow user management |
|
";
$output = $output . "
Allow permission management |
|
";
$output = $output . "
Allow access to custom reports |
|
";
$output = $output . "
Allow access to interactive reports |
|
";
$output = $output . "
Username |
|
";
$output = $output . "
Password |
|
";
$output = $output . "
Parent User |
|
";
$output = $output . "
get_airtime_user_id () . ");\">Save User";
if(!$user->isNewUser())
{
$output = $output . " :: get_airtime_user_id () . ");\">Modify SIM permissions";
$output = $output . " :: get_airtime_user_id () . ");\">Modify Report permissions";
}
$output = $output . " |
";
$output = $output . "
";
return $output;
}
public function execCommand($cmd)
{
$con = new mysqli($this->dbHost, $this->dbUser, $this->dbPass, $this->dbName)
or die ('Could not connect to the database server' . mysqli_connect_error());
$result = $con->query($cmd);
$con->close();
return $result;
}
public function saveUser($userId, $isAdmin, $editUserID, $postValues)
{
$user = new AirtimeUser($editUserID);
if(!$isAdmin)
{
// verify this user is allowed to edit the selected user.
if($user->isNewUser())
{
$user->set_parent_user_id($userId);
}
else
{
if($user->get_parent_user_id() <> $userId)
{
return false;
}
}
}
$user->set_mod_download_cdr ($postValues['mod_download_cdr']);
$user->set_mod_download_sim_summary ($postValues['mod_download_sim_summary']);
$user->set_mod_user_add ($postValues['mod_user_add']);
$user->set_mod_user_permissions ($postValues['mod_user_permissions']);
$user->set_mod_custom_reports ($postValues['mod_custom_reports']);
$user->set_mod_interactive_report ($postValues['mod_interactive_report']);
$user->set_username ($postValues['username']);
$user->set_passwd ($postValues['passwd']);
// now we try to save the bastard.
$output = $this->getUserEditForm($user);
if(!$user->save())
{
$output = $output . "ERROR Saving the user: (" . $user->getErrorNo() . ") " . $user->getError();
}
else
{
$output = $output . "User has been saved.";
}
return $output;
}
private function buildUserModGrid(mysqli_result $result, $filterCriteria)
{
$outputHeader = "
Filter by Username: |
Search |
";
$outputFooter = "
|
Add new |
";
if(!$result)
{
// we have an empty result set
$output = "No users matching your criteria or permissions |
";
}
else
{
$output = "";
$fields = $result->fetch_fields();
$output = $output . "";
foreach($fields as $fld)
{
$output = $output . "" . $fld->name . " | ";
}
$output = $output . "Options | ";
$output = $output . " ";
while($row = $result->fetch_array(MYSQLI_NUM))
{
$output = $output . "";
foreach($row as $fieldVal)
{
$output = $output . "$fieldVal | ";
}
$output = $output . "Edit | ";
$output = $output . " ";
}
$output = $output . " |
";
$result->close();
}
return $outputHeader . $output . $outputFooter;
}
public function getReportListForPermissions($userId, $userRole, $editUser)
{
$user = new AirtimeUser($editUser);
$parent = new AirtimeUser($userId);
if(!$isAdmin)
{
// verify this user is allowed to edit the selected user.
if($user->get_parent_user_id() <> $parent->get_airtime_user_id())
{
return false;
}
}
$cmd = "
SELECT if(airtime_user_reports.report_id in (select airtime_user_reports.report_id from airtime_user_reports where airtime_user_reports.user_id = " . $user->get_airtime_user_id() . "), 1, 0) AS linked_to_child,
airtime_user_reports.report_id,
airtime_reports.report_name
FROM airtime_user_reports INNER JOIN airtime_users ON airtime_user_reports.user_id = airtime_users.airtime_user_id
INNER JOIN airtime_reports ON airtime_user_reports.report_id = airtime_reports.report_id
WHERE airtime_users.airtime_user_id = " . $parent->get_airtime_user_id();
$result = $this->execCommand($cmd);
// now we can build an output form listing the available SIMs
$output = "";
// first, a brief header
$output = $output . "
Logged In as:" .
$parent->get_username() . " |
Editing permissions for:" .
$user->get_username() . " |
";
// now we can print the SIMs for linking
$output = $output . "";
$output = $output . "
Link | ";
$output = $output . "Report Name |
";
if(!$result)
$output = $output . "No Reports available for link | ";
else
{
while($row = $result->fetch_array(MYSQLI_ASSOC))
{
if($row['linked_to_child'] == 1)
{
$output = $output . "
| ";
}
else
{
$output = $output . "
| ";
}
$output = $output . "" . $row['report_name'] . " |
";
}
$output = $output . "get_airtime_user_id() . ")\">Save Permissions | ";
}
$output = $output . " |
";
$output = $output . "
";
return $output;
}
public function getSimlistForPermission($userId, $userRole, $editUser)
{
$user = new AirtimeUser($editUser);
$parent = new AirtimeUser($userId);
if(!$isAdmin)
{
// verify this user is allowed to edit the selected user.
if($user->get_parent_user_id() <> $parent->get_airtime_user_id())
{
return false;
}
}
$cmd = "
SELECT
if(packages.package_id in (select airtime_user_sims.package_id from airtime_user_sims where airtime_user_sims.airtime_user_id = " . $user->get_airtime_user_id() . "), 1, 0) as linked_to_child,
packages.package_id,
packages.msisdn,
packages.icc_id,
packages.user_1,
packages.user_2,
packages.user_3,
packages.user_4,
packages.user_5
FROM airtime_users
INNER JOIN airtime_user_sims ON airtime_users.airtime_user_id = airtime_user_sims.airtime_user_id
INNER JOIN packages ON packages.package_id = airtime_user_sims.package_id
where airtime_users.airtime_user_id = " . $parent->get_airtime_user_id();
$result = $this->execCommand($cmd);
// now we can build an output form listing the available SIMs
$output = "";
// first, a brief header
$output = $output . "
Logged In as:" .
$parent->get_username() . " |
Editing permissions for:" .
$user->get_username() . " |
";
// now we can print the SIMs for linking
$output = $output . "";
$output = $output . "
Link | ";
$output = $output . "msisdn | ";
$output = $output . "icc_id | ";
$output = $output . "user_1 | ";
$output = $output . "user_2 | ";
$output = $output . "user_3 | ";
$output = $output . "user_4 | ";
$output = $output . "user_5 |
";
if(!$result)
$output = $output . "No SIMS available for link | ";
else
{
while($row = $result->fetch_array(MYSQLI_ASSOC))
{
if($row['linked_to_child'] == 1)
{
$output = $output . "
| ";
}
else
{
$output = $output . "
| ";
}
$output = $output . "" . $row['msisdn'] . " | ";
$output = $output . "" . $row['icc_id'] . " | ";
$output = $output . "" . $row['user_1'] . " | ";
$output = $output . "" . $row['user_2'] . " | ";
$output = $output . "" . $row['user_3'] . " | ";
$output = $output . "" . $row['user_4'] . " | ";
$output = $output . "" . $row['user_5'] . " |
";
}
$output = $output . "get_airtime_user_id() . ")\">Save Permissions | ";
}
$output = $output . " |
";
$output = $output . "
";
return $output;
}
public function saveUserSimPermissions($userId, $isAdmin, $editUserID, $postValues)
{
$user = new AirtimeUser($editUserID);
if(!$isAdmin)
{
// verify this user is allowed to edit the selected user.
if($user->get_parent_user_id() <> $userId)
{
return false;
}
}
$con = new mysqli($this->dbHost, $this->dbUser, $this->dbPass, $this->dbName)
or die ('Could not connect to the database server' . mysqli_connect_error());
// we need a transaction
$con->autocommit(false);
if(!$con->query("delete from airtime_user_sims where airtime_user_id = " . $user->get_airtime_user_id()))
{
echo("Error: " . $con->errno . ": " . $con->error . " while resetting permissions.");
$con->rollback();
$con->close();
return false;
}
if(!$stmt = $con->prepare("insert into airtime_user_sims (airtime_user_id, package_id) values (?,?)"))
{
echo("Error: " . $con->errno . ": " . $con->error . " while resetting permissions.");
$con->rollback();
$con->close();
return false;
}
$packageID = null;
$stmt->bind_param('ii', $user->get_airtime_user_id(), $packageID);
foreach($postValues['linkedPackages'] as $packageID)
{
if(!$stmt->execute())
{
echo("Error setting permission for $packageID: " . $stmt->errno . ": " . $stmt->error);
$con->rollback();
$stmt->close();
$con->close();
return false;
}
}
$con->commit();
$con->close();
$stmt->close();
return $this->getSimlistForPermission($userId, $userRole, $editUserID) . "All changes saved.";
}
public function saveUserReportPermissions($userId, $isAdmin, $editUserID, $postValues)
{
$user = new AirtimeUser($editUserID);
if(!$isAdmin)
{
// verify this user is allowed to edit the selected user.
if($user->get_parent_user_id() <> $userId)
{
return false;
}
}
$con = new mysqli($this->dbHost, $this->dbUser, $this->dbPass, $this->dbName)
or die ('Could not connect to the database server' . mysqli_connect_error());
// we need a transaction
$con->autocommit(false);
if(!$con->query("delete from airtime_user_reports where user_id = " . $user->get_airtime_user_id()))
{
echo("Error: " . $con->errno . ": " . $con->error . " while resetting permissions.");
$con->rollback();
$con->close();
return false;
}
if(!$stmt = $con->prepare("insert into airtime_user_reports (user_id, report_id) values (?,?)"))
{
echo("Error: " . $con->errno . ": " . $con->error . " while resetting permissions.");
$con->rollback();
$con->close();
return false;
}
$report_id = null;
$stmt->bind_param('ii', $user->get_airtime_user_id(), $report_id);
foreach($postValues['linkedReports'] as $report_id)
{
if(!$stmt->execute())
{
echo("Error setting permission for $report_id: " . $stmt->errno . ": " . $stmt->error);
$con->rollback();
$stmt->close();
$con->close();
return false;
}
}
$con->commit();
$con->close();
$stmt->close();
return $this->getReportListForPermissions($userId, $userRole, $editUserID) . "All changes saved.";
}
}
?>
[/php]