Current File : //etc/sentora/panel/dryden/ctrl/users.class.php |
<?php
/**
* @copyright 2014-2015 Sentora Project (http://www.sentora.org/)
* Sentora is a GPL fork of the ZPanel Project whose original header follows:
*
* General user infoamtion class.
* @package zpanelx
* @subpackage dryden -> controller
* @version 1.0.0
* @author Bobby Allen (ballen@bobbyallen.me)
* @copyright ZPanel Project (http://www.zpanelcp.com/)
* @link http://www.zpanelcp.com/
* @license GPL (http://www.gnu.org/licenses/gpl.html)
*/
class ctrl_users {
/**
* Returns an array of infomation for the account details, package, groups and quota limits for a given UID.
* @author Bobby Allen (ballen@bobbyallen.me)
* @global db_driver $zdbh The ZPX database handle.
* @param int $uid The Sentora user account ID.
* @return array
*/
static function GetAccessModule($uid = "") {
//
global $zdbh;
$userdetail = new runtime_dataobject();
if ($uid == "") {
$uid = ctrl_auth::CurrentUserID();
}
$rows = $zdbh->prepare("SELECT * FROM x_frequently_access WHERE ac_id_pk= :uid order by access_count desc limit 5");
$rows->bindParam(':uid', $uid);
$rows->execute();
$returnval="";
//$dbvals=$rows->fetch();
while($dbvals = $rows->fetch())
{
$rows1 = $zdbh->prepare("SELECT * FROM x_modules WHERE mo_folder_vc= :mo_folder_vc");
$rows1->bindParam(':mo_folder_vc', $dbvals['mo_folder_vc']);
$rows1->execute();
$dbvals1=$rows1->fetch();
$returnval.='<tr class="frequentlyaccess" ><td><a href="?module='.$dbvals['mo_folder_vc'].'">'.$dbvals1['mo_name_vc'].'</a>'.'</td></tr>';
}
return $returnval;
}
static function GetUserDetail($uid = "") {
global $zdbh;
$userdetail = new runtime_dataobject();
if ($uid == "") {
$uid = ctrl_auth::CurrentUserID();
}
$rows = $zdbh->prepare("
SELECT * FROM x_accounts
LEFT JOIN x_profiles ON (x_accounts.ac_id_pk=x_profiles.ud_user_fk)
LEFT JOIN x_groups ON (x_accounts.ac_group_fk=x_groups.ug_id_pk)
LEFT JOIN x_packages ON (x_accounts.ac_package_fk=x_packages.pk_id_pk)
LEFT JOIN x_quotas ON (x_accounts.ac_package_fk=x_quotas.qt_package_fk)
WHERE x_accounts.ac_id_pk= :uid
");
$rows->bindParam(':uid', $uid);
$rows->execute();
$dbvals = $rows->fetch();
$userdetail->addItemValue('username', $dbvals['ac_user_vc']);
$userdetail->addItemValue('userid', $dbvals['ac_id_pk']);
$userdetail->addItemValue('password', $dbvals['ac_pass_vc']);
$userdetail->addItemValue('email', $dbvals['ac_email_vc']);
$userdetail->addItemValue('resellerid', $dbvals['ac_reseller_fk']);
$userdetail->addItemValue('packageid', $dbvals['ac_package_fk']);
$userdetail->addItemValue('enabled', $dbvals['ac_enabled_in']);
$userdetail->addItemValue('usertheme', $dbvals['ac_usertheme_vc']);
$userdetail->addItemValue('usercss', $dbvals['ac_usercss_vc']);
$userdetail->addItemValue('lastlogon', $dbvals['ac_lastlogon_ts']);
$userdetail->addItemValue('fullname', $dbvals['ud_fullname_vc']);
$userdetail->addItemValue('packagename', $dbvals['pk_name_vc']);
$userdetail->addItemValue('usergroup', $dbvals['ug_name_vc']);
$userdetail->addItemValue('usergroupid', $dbvals['ac_group_fk']);
$userdetail->addItemValue('address', $dbvals['ud_address_tx']);
$userdetail->addItemValue('postcode', $dbvals['ud_postcode_vc']);
$userdetail->addItemValue('phone', $dbvals['ud_phone_vc']);
$userdetail->addItemValue('language', $dbvals['ud_language_vc']);
$userdetail->addItemValue('diskquota', $dbvals['qt_diskspace_bi']);
$userdetail->addItemValue('bandwidthquota', $dbvals['qt_bandwidth_bi']);
$userdetail->addItemValue('domainquota', $dbvals['qt_domains_in']);
$userdetail->addItemValue('subdomainquota', $dbvals['qt_subdomains_in']);
$userdetail->addItemValue('parkeddomainquota', $dbvals['qt_parkeddomains_in']);
$userdetail->addItemValue('ftpaccountsquota', $dbvals['qt_ftpaccounts_in']);
$userdetail->addItemValue('mysqlquota', $dbvals['qt_mysql_in']);
$userdetail->addItemValue('mailboxquota', $dbvals['qt_mailboxes_in']);
$userdetail->addItemValue('forwardersquota', $dbvals['qt_fowarders_in']);
$userdetail->addItemValue('distlistsquota', $dbvals['qt_distlists_in']);
$userdetail->addItemValue('catorder', $dbvals['ac_catorder_vc']);
return $userdetail->getDataObject();
}
/*
* Returns the current usage of a particular resource.
* @author Bobby Allen (ballen@bobbyallen.me)
* @param string $resource What time of quota should we be checking? (domains, subdomains, parkeddomains, mailboxes, distlists etc.)
* @param int $acc_key The user ID of which to check the quota status for.
* @return array Database table array of the quota infomation.
*/
static function GetQuotaUsages($resource, $acc_key = 0) {
global $zdbh;
if ($resource == 'domains')
{
if( $acc_key == 1 )
{
$sql = $zdbh->prepare("SELECT COUNT(*) AS amount FROM x_vhosts WHERE vh_type_in=1 AND vh_deleted_ts IS NULL");
$sql->execute();
$retval = $sql->fetch();
}
else
{
$sql = $zdbh->prepare("SELECT COUNT(*) AS amount FROM x_vhosts WHERE vh_acc_fk= :acc_key AND vh_type_in=1 AND vh_deleted_ts IS NULL");
$sql->bindParam(':acc_key', $acc_key);
$sql->execute();
$retval = $sql->fetch();
}
$retval = $retval['amount'];
}
if ($resource == 'subdomains')
{
if($acc_key==1)
{
$sql = $zdbh->prepare("SELECT COUNT(*) AS amount FROM x_vhosts WHERE vh_type_in=2 AND vh_deleted_ts IS NULL");
$sql->execute();
$retval = $sql->fetch();
}
else
{
$sql = $zdbh->prepare("SELECT COUNT(*) AS amount FROM x_vhosts WHERE vh_acc_fk= :acc_key AND vh_type_in=2 AND vh_deleted_ts IS NULL");
$sql->bindParam(':acc_key', $acc_key);
$sql->execute();
$retval = $sql->fetch();
}
$retval = $retval['amount'];
}
if ($resource == 'parkeddomains')
{
if($acc_key==1)
{
$sql = $zdbh->prepare("SELECT COUNT(*) AS amount FROM x_vhosts WHERE vh_type_in=3 AND vh_deleted_ts IS NULL");
$sql->execute();
$retval = $sql->fetch();
}
else
{
$sql = $zdbh->prepare("SELECT COUNT(*) AS amount FROM x_vhosts WHERE vh_acc_fk= :acc_key AND vh_type_in=3 AND vh_deleted_ts IS NULL");
$sql->bindParam(':acc_key', $acc_key);
$sql->execute();
$retval = $sql->fetch();
}
$retval = $retval['amount'];
}
if ($resource == 'mailboxes')
{
if($acc_key==1)
{
$sql = $zdbh->prepare("SELECT COUNT(*) AS amount FROM x_mailboxes WHERE mb_deleted_ts IS NULL");
$sql->execute();
$retval = $sql->fetch();
}
else
{
$sql = $zdbh->prepare("SELECT COUNT(*) AS amount FROM x_mailboxes WHERE mb_acc_fk= :acc_key AND mb_deleted_ts IS NULL");
$sql->bindParam(':acc_key', $acc_key);
$sql->execute();
$retval = $sql->fetch();
}
$retval = $retval['amount'];
}
if ($resource == 'forwarders')
{
if($acc_key==1)
{
$sql = $zdbh->prepare("SELECT COUNT(*) AS amount FROM x_forwarders WHERE fw_deleted_ts IS NULL");
$sql->execute();
$retval = $sql->fetch();
}
else
{
$sql = $zdbh->prepare("SELECT COUNT(*) AS amount FROM x_forwarders WHERE fw_acc_fk= :acc_key AND fw_deleted_ts IS NULL");
$sql->bindParam(':acc_key', $acc_key);
$sql->execute();
$retval = $sql->fetch();
}
$retval = $retval['amount'];
}
if ($resource == 'distlists')
{
if($acc_key==1)
{
$sql = $zdbh->prepare("SELECT COUNT(*) AS amount FROM x_distlists WHERE dl_deleted_ts IS NULL");
$sql->execute();
$retval = $sql->fetch();
}
else
{
$sql = $zdbh->prepare("SELECT COUNT(*) AS amount FROM x_distlists WHERE dl_acc_fk= :acc_key AND dl_deleted_ts IS NULL");
$sql->bindParam(':acc_key', $acc_key);
$sql->execute();
$retval = $sql->fetch();
}
$retval = $retval['amount'];
}
if ($resource == 'ftpaccounts')
{
if($acc_key==1)
{
$sql = $zdbh->prepare("SELECT COUNT(*) AS amount FROM x_ftpaccounts WHERE ft_deleted_ts IS NULL");
$sql->execute();
$retval = $sql->fetch();
}
else
{
$sql = $zdbh->prepare("SELECT COUNT(*) AS amount FROM x_ftpaccounts WHERE ft_acc_fk= :acc_key AND ft_deleted_ts IS NULL");
$sql->bindParam(':acc_key', $acc_key);
$sql->execute();
$retval = $sql->fetch();
}
$retval = $retval['amount'];
}
if ($resource == 'mysql')
{
if($acc_key==1)
{
//$sql = $zdbh->prepare("SELECT COUNT(*) AS amount FROM x_mysql_databases WHERE my_deleted_ts IS NULL");
$sql = $zdbh->prepare("SELECT COUNT(*) AS amount FROM information_schema.SCHEMATA WHERE schema_name in (SELECT my_name_vc FROM x_mysql_databases WHERE my_deleted_ts IS NULL)");
$sql->execute();
$retval = $sql->fetch();
}
else
{
//$sql = $zdbh->prepare("SELECT COUNT(*) AS amount FROM x_mysql_databases WHERE my_acc_fk= :acc_key AND my_deleted_ts IS NULL");
$sql = $zdbh->prepare("SELECT count(*) AS amount FROM information_schema.SCHEMATA WHERE schema_name in (SELECT my_name_vc FROM x_mysql_databases WHERE my_acc_fk= :acc_key AND my_deleted_ts IS NULL)");
$sql->bindParam(':acc_key', $acc_key);
$sql->execute();
$retval = $sql->fetch();
}
$retval = $retval['amount'];
}
if ($resource == 'diskspace')
{
$retval =0;
if($acc_key==1)
{
$retval =0;
$sqlupdate =$zdbh->prepare("select sum(ac_used_space) as amount from x_diskusage where ac_id_pk IN(select ac_id_pk from x_accounts where ac_deleted_ts IS NULL)");
$sqlupdate->execute();
$row_count_update = $sqlupdate->rowCount();
$sqlupdate="";
if($row_count_update >0)
{
//Get the value
$sqlupdate =$zdbh->prepare("select sum(ac_used_space) as amount from x_diskusage where ac_id_pk IN(select ac_id_pk from x_accounts where ac_deleted_ts IS NULL)");
$sqlupdate->execute();
$get_retval =$sqlupdate->fetch();
$retval = $get_retval['amount'];
}
}
else
{
$sqlupdate =$zdbh->prepare("select * from x_diskusage where ac_id_pk=:acc_key2");
$sqlupdate->bindParam(':acc_key2',$acc_key);
$sqlupdate->execute();
$row_count_update = $sqlupdate->rowCount();
$sqlupdate="";
if($row_count_update >0)
{
//Get the value
$sqlupdate =$zdbh->prepare("select * from x_diskusage where ac_id_pk=:acc_key2");
$sqlupdate->bindParam(':acc_key2',$acc_key);
$sqlupdate->execute();
$get_retval =$sqlupdate->fetch();
$retval = $get_retval['ac_used_space'];
}
}
}
if($resource == "manageclientcurrentdisk")
{
$retval =0;
$sqlupdate =$zdbh->prepare("select * from x_diskusage where ac_id_pk=:acc_key2");
$sqlupdate->bindParam(':acc_key2',$acc_key);
$sqlupdate->execute();
$row_count_update = $sqlupdate->rowCount();
$sqlupdate="";
if($row_count_update >0)
{
//Get the value
$sqlupdate =$zdbh->prepare("select * from x_diskusage where ac_id_pk=:acc_key2");
$sqlupdate->bindParam(':acc_key2',$acc_key);
$sqlupdate->execute();
$get_retval =$sqlupdate->fetch();
$retval = $get_retval['ac_used_space'];
}
}
if ($resource == 'bandwidth') {
$sql = $zdbh->prepare("SELECT bd_transamount_bi FROM x_bandwidth WHERE bd_acc_fk= :acc_key AND bd_month_in=" . date("Ym", time()) . "");
$sql->bindParam(':acc_key', $acc_key);
$sql->execute();
$retval = $sql->fetch();
$retval = $retval['bd_transamount_bi'];
}
return $retval;
}
/**
* @todo Does this still need to be here as this is now managed under a module and not seen as 'core' but template still relies on this at present! - Bobby Allen
*/
static function GetUserDomains($userid, $type = "1") {
global $zdbh;
$domains = 0;
$numrows = $zdbh->prepare("SELECT COUNT(*) FROM x_vhosts WHERE vh_acc_fk= :userid AND vh_deleted_ts IS NULL AND vh_type_in= :type");
$numrows->bindParam(':userid', $userid);
$numrows->bindParam(':type', $type);
$status = $sql->execute();
if ($status) {
if ($numrows->fetchColumn() <> 0) {
$domains = count($numrows->fetchColumn());
return $domains;
}
}
return $domains;
}
/**
* Checks that the specified user is active and therefore allowed to login to the panel.
* @author Bobby Allen (ballen@bobbyallen.me)
* @global db_driver $zdbh The ZPX database handle.
* @param int $uid The Sentora user account ID.
* @return boolean
*/
static function CheckUserEnabled($uid) {
global $zdbh;
$domains = 0;
$sql = $zdbh->prepare("SELECT COUNT(*) FROM x_accounts WHERE ac_id_pk= :uid AND ac_enabled_in=1 AND ac_deleted_ts IS NULL");
$sql->bindParam(':uid', $uid);
$status = $sql->execute();
if ($status) {
if ($sql->fetchColumn() <> 0) {
return true;
}
}
return false;
}
/**
* Checks that a specified email address is unique in the user accounts table.
* @author Bobby Allen (ballen@bobbyallen.me)
* @global db_driver The ZPX database handle.
* @param type $email The email address to check.
* @return boolean
*/
static function CheckUserEmailIsUnique($email) {
global $zdbh;
$sql = "SELECT COUNT(*) FROM x_accounts WHERE LOWER(ac_email_vc)=:email";
$uniqueuser = $zdbh->prepare($sql);
$uniqueuser->bindParam(':email', $email);
if ($uniqueuser->execute()) {
if ($uniqueuser->fetchColumn() > 0) {
return false;
} else {
return true;
}
} else {
return false;
}
}
}
?>