PHP Classes

File: user.php

Recommend this page to a friend!
  Classes of Prakash Khanchandani   Table Maintenance   user.php   Download  
File: user.php
Role: Example script
Content type: text/plain
Description: 9th level example
Class: Table Maintenance
Manage forms for CRUD MySQL table records
Author: By
Last change:
Date: 10 years ago
Size: 6,338 bytes
 

Contents

Class file image Download
<?php

/**
 * @author Prakash Khanchandani
 * @copyright 2013
 * @program user.php
 * @description user maintenance
 * @specialities - rearrange column order in form
 * - mix of explicit auto validations and programmatic validations
 */


session_start();
require_once (
"classes.php");


function
createTableObject()
{
   
$obj = new userTable;
    if (
$obj->getListAndColumns() === false)
        return
false;
    else
        return
$obj;
}


#
#
#
#
#


class userTable extends mstrTable
{
    function
getListAndColumns()
    {
       
$this->tableName = 'users';
       
$this->ignoreInForm = array('passWrd');
       
/*
        create foreign references for bank, branch, and group. */
       
$this->explicitFrgnRef[] = array("bnkPrmtrs", "bank = parentBank");
       
$this->explicitFrgnRef[] = array("brnchPrmtrs", "bank=parentBank",
           
"branch=parentBranch");

        return
parent::getListAndColumns('userId', 'userName', 'parentBank',
           
'parentBranch');
    }


    function
populateRecordValues()
    {
        if (
parent::populateRecordValues() === false)
            return
false;
       
/*
        populate the adtnlInfo with bankName and branchName. We have given explicit
        foreign references and therefore the reference records would be available in
        the master class. */
       
$bankDes = $this->getForeignRefDescription('bnkPrmtrs', 'bankName');
       
$branchDes = $this->getForeignRefDescription('brnchPrmtrs', 'branchName');
       
$grpDes = $this->getForeignRefDescription('groups', 'grpDes');

       
$idBank = $this->getColDefsId('parentBank');
       
$idBranch = $this->getColDefsId('parentBranch');
       
$idGrp = $this->getColDefsId('grp');

       
$this->addAdditionalInfo($idBank, $bankDes);
       
$this->addAdditionalInfo($idBranch, $branchDes);
       
$this->addAdditionalInfo($idGrp, $grpDes);

        return
true;
    }


    protected function
validateInput()
    {
       
/* Since we have given explicit foreign references for bank and branch, and there is
        an implicit foreign reference for the group, we need not do those checks here. But
        there are a lot of other checks that have to be done manually through this function. */

        /*
        get various fields entered by user - they are required throughout this func. If you
        cant get it, no point in continuing. */
       
$userId = $this->getColDefsVal("userId");
       
$parentBank = $this->getColDefsVal("parentBank");
       
$parentBranch = $this->getColDefsVal("parentBranch");
       
$userType = $this->getColDefsVal("userType");
       
$isCashTell = $this->getColDefsVal("isCashTell");
       
$isHC = $this->getColDefsVal("isHC");

        if (
$userId === false or $userType === false or $isCashTell === false or $isHC
           
=== false) {
           
addToErrorMsg('could not get one of the fields entered');
            return
false;
        }
       
$errors = 0;
       
/*
        there can be only one user with userType SDBA. Check if there are any others
        present. If the current user already has a record, you might be counting him as
        well, so ignore him for the search. Note that since userType is defined as an
        enum column, the basic checks would have been done already; you dont have to
        check that it is SDBA, DBA, NORM, etc. */
       
if ($userType == 'SDBA') {
           
$qry = "select count(*)
                    from users where
                        parentBank = '
$parentBank' and
                        userId <> '
$userId' and
                        userType = 'SDBA'
            "
;
           
$script = new mstrScripts;
           
$result = $script->runCountQry($qry);
            if (
$result === false) {
               
addToErrorMsg($script->getErrorMsg());
               
$errors = $errors + 1;
            } else {
                if (
$result > 0) {
                   
addToErrorMsg('SDBA user already available for this bank');
                   
$errors = $errors + 1;
                }
            }
        }
       
/*
        check the count of input $type - Vault or Headcashier. There can be only
        one per bank/branch which is also input. Dont include this userId in the
        count */
       
if ($isCashTell == 'V') {
           
$qry = "select count(*)
                    from users where
                        parentBank = '
$parentBank' and
                        parentBranch = '
$parentBranch' and
                        userId <> '
$userId' and
                        isCashTell = 'V'
            "
;
           
$script = new mstrScripts;
           
$result = $script->runCountQry($qry);
            if (
$result === false) {
               
addToErrorMsg($script->getErrorMsg());
               
$errors = $errors + 1;
            } else {
                if (
$result > 0) {
                   
addToErrorMsg('Vault user already available for this branch');
                   
$errors = $errors + 1;
                }
            }
        }
       
/*
        similarly, there can be only one headCashier per branch. */
       
if ($isHC == 'Y') {
           
$qry = "select count(*)
                    from users where
                        parentBank = '
$parentBank' and
                        parentBranch = '
$parentBranch' and
                        userId <> '
$userId' and
                        isHC = 'Y'
            "
;
           
$script = new mstrScripts;
           
$result = $script->runCountQry($qry);
            if (
$result === false) {
               
addToErrorMsg($script->getErrorMsg());
               
$errors = $errors + 1;
            } else {
                if (
$result > 0) {
                   
addToErrorMsg('Head Cashier already available for this branch');
                   
$errors = $errors + 1;
                }
            }
        }


        if (
$errors > 0)
            return
false;

        return
true;
    }
}


#
#
#
#
#


if (!isset($_REQUEST['actn'])) {
   
$obj = createTableObject();
} else {
   
/* if the user has taken some action, handle it. */
   
$obj = handleRequestOption();
}


$form = new mstrFH($obj);
$form->setDemoNotes(userNotes());
$form->clmnOrdr = array("userId", "userName", "parentBank", "parentBranch",
   
"autoAuthorise", "selfAuthorise");
$form->displayForm();
?>