<?php
function isSuperAdmin()
{
    $ci =& get_instance();
    if ($ci->session->has_userdata('superAdmin')) {
        return true;
    }
    return false;
}

function isPermitted($value, $level = 0)
{
    $ci =& get_instance();
    if (isSuperAdmin()) {
        return true;
    } else {
        //echo $level;die;
        $privilege = $ci->session->userdata('privilege');
        if (!empty($privilege[$value]) && ($privilege[$value] > $level || $privilege[$value] == $level)) {
            return true;
        }
        return false;
    }

}

function getPrivilege($value)
{
    $ci =& get_instance();
    $privilege = $ci->session->userdata('privilege');
    if (!empty($privilege[$value])) {
        return $privilege[$value];
    }
    return false;
}

function isViewable($level = 0)
{
    $urlArray = getUrlArray();
    if (!empty($urlArray[1]) && $level == 0) {
        $level = getLevel($urlArray[1]);
    }
    else if (!is_numeric($level)){
        $level = getLevel($level);
    }

    if (isSuperAdmin()) {
        return true;
    } elseif (isPermitted($urlArray[0], $level)) {
        return true;
    } else {
        return false;
    }

}


function isViewPermitted($level = '')
{
    $urlArray = getUrlArray();
    
    //pre($urlArray,1);
    if (!empty($urlArray[1]) && $level == '') {
    $level = $urlArray[1];
}
    $level = getLevel($level);
    if (isViewable($level)) {
        return true;
    } else {
        show_404();
    }

}

function getLevel($val)
{
    switch ($val) {
        case 'view':
            return 1;
            break;
        case '':
            return 1;
            break;
        case 'add':
            return 2;
            break;
        case 'edit':
            return 2;
            break;
        case 'update':
            return 2;
            break;
        case 'delete':
            return 3;
            break;
        default:
            return 1;
    }
}