function getUsers($station_id)
 {
     Debug::Text('Getting Users for Station ID: ' . $station_id, __FILE__, __LINE__, __METHOD__, 10);
     if ($station_id == '') {
         return FALSE;
     }
     $permission = new Permission();
     //Gets all users allowed to punch in/out from this station
     $slf = new StationListFactory();
     $slf->getByStationID($station_id);
     if ($slf->getRecordCount() > 0) {
         Debug::Text('Found Station!!', __FILE__, __LINE__, __METHOD__, 10);
         $s_obj = $slf->getCurrent();
         $company_id = $s_obj->getCompany();
         if ($company_id != FALSE) {
             Debug::Text('Found Company: ' . $company_id, __FILE__, __LINE__, __METHOD__, 10);
             $ulf = new UserListFactory();
             $ulf->getByCompanyId($company_id);
             if ($ulf->getRecordCount() > 0) {
                 Debug::Text('Found Users ' . $ulf->getRecordCount() . ' for Company: ' . $company_id, __FILE__, __LINE__, __METHOD__, 10);
                 $x = 0;
                 foreach ($ulf as $u_obj) {
                     //Debug::Text('User ID: '. $u_obj->getId() .' iButton ID: '. $u_obj->getiButtonId() , __FILE__, __LINE__, __METHOD__,10);
                     $enable_job_tracking = $permission->Check('job', 'enabled', $u_obj->getId(), $u_obj->getCompany());
                     //Debug::Text('Enable Job Tracking for User: '******' Result: '. (int)$enable_job_tracking, __FILE__, __LINE__, __METHOD__,10);
                     if (version_compare($this->getClientVersion(), '2.7.0', '<')) {
                         //In offline punch mode, we use the system local time
                         //as we assume it is in the proper timezone for the user.
                         /*
                         $u_obj_prefs = $u_obj->getUserPreferenceObject();
                         if ( is_object( $u_obj_prefs ) ) {
                         	$time_zone = $u_obj_prefs->getTimeZone();
                         	$language = $u_obj_prefs->getLanguage();
                         } else {
                         	$time_zone = NULL;
                         	$language = NULL;
                         }
                         */
                         $ibutton = FALSE;
                         $finger_print_1 = FALSE;
                         $finger_print_2 = FALSE;
                         $finger_print_3 = FALSE;
                         $finger_print_4 = FALSE;
                         //Get User identification rows for ibutton and fingerprints.
                         $uilf = new UserIdentificationListFactory();
                         $uilf->getByUserIdAndTypeId($u_obj->getId(), array(10, 20));
                         //iButton and Griaule Fingerprints.
                         //Debug::Text('User Identication Records: '. $uilf->getRecordCount(), __FILE__, __LINE__, __METHOD__,10);
                         if ($uilf->getRecordCount() > 0) {
                             foreach ($uilf as $ui_obj) {
                                 if ($ui_obj->getType() == 10) {
                                     Debug::Text('Found iButton... User:  '******' Number: ' . $ui_obj->getNumber(), __FILE__, __LINE__, __METHOD__, 10);
                                     $ibutton = $ui_obj->getValue();
                                 } elseif ($ui_obj->getType() == 20) {
                                     Debug::Text('Found Griaule FingerPrint... User:  '******' Number: ' . $ui_obj->getNumber(), __FILE__, __LINE__, __METHOD__, 10);
                                     switch ($ui_obj->getNumber()) {
                                         case 10:
                                             $finger_print_1 = $ui_obj->getValue();
                                             break;
                                         case 20:
                                             $finger_print_2 = $ui_obj->getValue();
                                             break;
                                         case 30:
                                             $finger_print_3 = $ui_obj->getValue();
                                             break;
                                         case 40:
                                             $finger_print_4 = $ui_obj->getValue();
                                             break;
                                     }
                                 }
                             }
                         }
                         $user_list["'{$x}'"] = array('id' => (int) $u_obj->getId(), 'ibutton_id' => $ibutton, 'employee_number' => $u_obj->getEmployeeNumber(), 'user_name' => $u_obj->getUserName(), 'full_name' => $u_obj->getFullName(), 'default_branch_id' => (int) $u_obj->getDefaultBranch(), 'default_department_id' => (int) $u_obj->getDefaultDepartment(), 'finger_print_1' => $finger_print_1, 'finger_print_2' => $finger_print_2, 'finger_print_3' => $finger_print_3, 'finger_print_4' => $finger_print_4, 'enable_job_tracking' => $enable_job_tracking);
                     } else {
                         $user_list["'{$x}'"] = array('id' => (int) $u_obj->getId(), 'employee_number' => $u_obj->getEmployeeNumber(), 'user_name' => $u_obj->getUserName(), 'full_name' => $u_obj->getFullName(), 'default_branch_id' => (int) $u_obj->getDefaultBranch(), 'default_department_id' => (int) $u_obj->getDefaultDepartment(), 'enable_job_tracking' => $enable_job_tracking);
                     }
                     unset($enable_job_tracking, $time_zone, $language);
                     $x++;
                 }
                 if (isset($user_list)) {
                     Debug::Text('Returning User List!', __FILE__, __LINE__, __METHOD__, 10);
                     return $user_list;
                 }
             }
         }
     }
     Debug::Text('Returning FALSE!', __FILE__, __LINE__, __METHOD__, 10);
     return FALSE;
 }
     //9hrs
 } elseif (isset($config_vars['other']['web_session_timeout']) and $config_vars['other']['web_session_timeout'] != '') {
     $authentication->setIdle((int) $config_vars['other']['web_session_timeout']);
 }
 if ($authentication->Check() === TRUE) {
     /*
      * Get default interface data here. Things like User info, Company info etc...
      */
     $current_user = $authentication->getObject();
     Debug::text('User Authenticated: ' . $current_user->getUserName() . ' Created Date: ' . $authentication->getCreatedDate(), __FILE__, __LINE__, __METHOD__, 10);
     $clf = new CompanyListFactory();
     $current_company = $clf->getByID($current_user->getCompany())->getCurrent();
     unset($clf);
     //Check to make sure the logged in user's information is all up to date.
     //Make sure they also have permissions to edit information, otherwise don't redirect them.
     if ($current_user->isInformationComplete() == FALSE and (!stristr($_SERVER['SCRIPT_NAME'], 'permissiondenied') and !stristr($_SERVER['SCRIPT_NAME'], 'logout') and !stristr($_SERVER['SCRIPT_NAME'], 'about') and !stristr($_SERVER['SCRIPT_NAME'], 'punch.php') and !stristr($_SERVER['SCRIPT_NAME'], 'ajax_server') and !stristr($_SERVER['SCRIPT_NAME'], 'global.js') and !stristr($_SERVER['SCRIPT_NAME'], 'menu.js') and !stristr($_SERVER['SCRIPT_NAME'], 'embeddeddocument')) and !isset($_GET['incomplete']) and !isset($_POST['incomplete']) and ($permission->Check('user', 'enabled') and ($permission->Check('user', 'edit') or $permission->Check('user', 'edit_own') or $permission->Check('user', 'edit_child')))) {
         Redirect::Page(URLBuilder::getURL(array('id' => $current_user->getID(), 'incomplete' => 1), Environment::GetBaseURL() . 'users/EditUser.php'));
     }
     $db_time_zone_error = FALSE;
     $current_user_prefs = $current_user->getUserPreferenceObject();
     //If user doesnt have any preferences set, we need to bootstrap the preference object.
     if ($current_user_prefs->getUser() == '') {
         $current_user_prefs->setUser($current_user->getId());
     }
     if ($current_user_prefs->setDateTimePreferences() == FALSE) {
         //Setting timezone failed, alert user to this fact.
         $db_time_zone_error = TRUE;
     }
     /*
      *	Check locale cookie, if it varies from UserPreference Language,
      *	change user preferences to match. This could cause some unexpected behavior
/*
 * $Revision: 1396 $
 * $Id: AuthorizationNotify.php 1396 2007-11-07 16:49:35Z ipso $
 * $Date: 2007-11-07 08:49:35 -0800 (Wed, 07 Nov 2007) $
 */
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'global.inc.php';
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'CLI.inc.php';
$permission = new Permission();
$hlf = new HierarchyListFactory();
$hotlf = new HierarchyObjectTypeListFactory();
//Get all users
$ulf = new UserListFactory();
$ulf->getByStatus(10, NULL, array('company_id' => 'asc'));
foreach ($ulf as $user) {
    //Check authorize permissions for eact object type.
    if ($permission->Check('default_schedule', 'authorize', $user->getId(), $user->getCompany())) {
        //Get Hierarchy Control ID
        $default_schedule_hierarchy_id = $hotlf->getByCompanyIdAndObjectTypeId($user->getCompany(), 10)->getCurrent()->getHierarchyControl();
        Debug::Text('Default Schedule Hierarchy ID: ' . $default_schedule_hierarchy_id, __FILE__, __LINE__, __METHOD__, 10);
        //Get all levels below us.
        $default_schedule_levels = $hlf->getLevelsByHierarchyControlIdAndUserId($default_schedule_hierarchy_id, $user->getId());
        Debug::Arr($default_schedule_levels, 'Default Schedule Levels', __FILE__, __LINE__, __METHOD__, 10);
        $default_schedule_user_id = $user->getId();
        $default_schedule_node_data = $hlf->getByHierarchyControlIdAndUserId($default_schedule_hierarchy_id, $default_schedule_user_id);
        //Get current level IDs
        $default_schedule_current_level_user_ids = $hlf->getCurrentLevelIdArrayByHierarchyControlIdAndUserId($default_schedule_hierarchy_id, $default_schedule_user_id);
        Debug::Arr($default_schedule_current_level_user_ids, 'Default Schedule Current Level Ids', __FILE__, __LINE__, __METHOD__, 10);
        //Get Parents
        $default_schedule_parent_level_user_ids = $hlf->getParentLevelIdArrayByHierarchyControlIdAndUserId($default_schedule_hierarchy_id, $default_schedule_user_id);
        Debug::Arr($default_schedule_parent_level_user_ids, 'Default Schedule Parent Level Ids', __FILE__, __LINE__, __METHOD__, 10);
        //Get Children