Example #1
0
function askBranches()
{
    try {
        if (G_VERSIONTYPE == 'enterprise') {
            #cpp#ifdef ENTERPRISE
            if (!isset($_SESSION['supervises_branches'])) {
                include_once $path . "module_hcd_tools.php";
                //Automatically fix missing branch assignments for supervisors
                eF_assignSupervisorMissingSubBranchesRecursive();
                //discover employee role in the hierarchy
                eF_getRights();
            }
        }
        #cpp#endif
        eF_checkParameter($_POST['preffix'], 'text') ? $preffix = $_POST['preffix'] : ($preffix = '%');
        if ($_SESSION['s_type'] == "administrator") {
            $result = eF_getTableData("(module_hcd_branch LEFT OUTER JOIN (module_hcd_employee_works_at_branch JOIN users ON module_hcd_employee_works_at_branch.users_LOGIN = users.login) ON module_hcd_branch.branch_ID = module_hcd_employee_works_at_branch.branch_ID AND module_hcd_employee_works_at_branch.assigned = '1') LEFT OUTER JOIN module_hcd_branch as branch1 ON module_hcd_branch.father_branch_ID = branch1.branch_ID GROUP BY module_hcd_branch.branch_ID ORDER BY branch1.branch_ID", "module_hcd_branch.branch_ID, module_hcd_branch.name, module_hcd_branch.city, module_hcd_branch.address,  sum(CASE WHEN users.active=1 THEN 1 END) as employees, sum(CASE WHEN users.active=0 THEN 1 END) as inactive_employees, branch1.branch_ID as father_ID, branch1.name as father, supervisor", "");
        } elseif ($_SESSION['supervises_branches']) {
            $result = eF_getTableData("(module_hcd_branch LEFT OUTER JOIN (module_hcd_employee_works_at_branch JOIN users ON module_hcd_employee_works_at_branch.users_LOGIN = users.login) ON module_hcd_branch.branch_ID = module_hcd_employee_works_at_branch.branch_ID AND module_hcd_employee_works_at_branch.assigned = '1') LEFT OUTER JOIN module_hcd_branch as branch1 ON module_hcd_branch.father_branch_ID = branch1.branch_ID WHERE module_hcd_branch.branch_ID IN (" . $_SESSION['supervises_branches'] . ") GROUP BY module_hcd_branch.branch_ID ORDER BY branch1.branch_ID", "module_hcd_branch.name, module_hcd_branch.city, module_hcd_branch.address,  sum(CASE WHEN users.active=1 THEN 1 END) as employees, sum(CASE WHEN users.active=0 THEN 1 END) as inactive_employees,  module_hcd_branch.branch_ID, branch1.branch_ID as father_ID, branch1.name as father", "");
        } else {
            $result = array();
        }
        $branches = array();
        foreach ($result as $value) {
            $branches[$value['branch_ID']] = $value;
        }
        $tree = new EfrontBranchesTree();
        $branchKeys = array_keys($branches);
        $branchKeys = array_combine($branchKeys, $branchKeys);
        $branch_results = array();
        foreach ($tree->toPathString() as $key => $branch) {
            if (isset($branchKeys[$key])) {
                if ($preffix == '%' || stripos($branch, $preffix) !== false || stripos($branch, htmlentities($preffix)) !== false) {
                    $truncated = eF_truncatePath($branch, 80, 6, "...", " → ");
                    $hiname = highlightSearch($truncated, $preffix);
                    $branch_results[$key] = array('branch_ID' => $key, 'name' => $branch, 'path_string' => $hiname);
                }
            }
        }
        $strs = array();
        $strs[] = '<ul>';
        foreach ($branch_results as $key => $branch) {
            $strs[] = '<li id=' . $key . '>' . $branch['path_string'] . '</li>';
        }
        $strs[] = '</ul>';
        echo implode("", $strs);
    } catch (Exception $e) {
        handleAjaxExceptions($e);
    }
}
     } else {
         if ($_GET['set_default_group']) {
             $groups = $currentUser->getGroups();
             if (sizeof($groups) > 0) {
                 $group = new EfrontGroup(current($groups));
                 echo json_encode(array('status' => true, 'foreign_ID' => $group->group['id'], 'name' => $group->group['name']));
             }
             exit;
         } else {
             if ($_GET['set_default_branch']) {
                 if (G_VERSIONTYPE == 'enterprise') {
                     #cpp#ifdef ENTERPRISE
                     if (!isset($_SESSION['supervises_branches'])) {
                         require_once $path . "module_hcd_tools.php";
                         //Automatically fix missing branch assignments for supervisors
                         eF_assignSupervisorMissingSubBranchesRecursive();
                         //discover employee role in the hierarchy
                         eF_getRights();
                     }
                 }
                 #cpp#endif
                 $branches = explode(",", $_SESSION['supervises_branches']);
                 if ($_SESSION['supervises_branches'] && sizeof($branches) > 0) {
                     $branch = new EfrontBranch($branches[0]);
                     echo json_encode(array('status' => true, 'foreign_ID' => $branch->branch['branch_ID'], 'name' => $branch->branch['name']));
                 }
                 exit;
             }
         }
     }
 }