function getUserIdentifiers($station_id)
 {
     Debug::Text('Getting User Identifiers for Station ID: ' . $station_id, __FILE__, __LINE__, __METHOD__, 10);
     if ($station_id == '') {
         return FALSE;
     }
     //Gets all users allowed to punch in/out from this station
     $slf = new StationListFactory();
     $slf->getByStationID($station_id);
     if ($slf->getRecordCount() > 0) {
         $s_obj = $slf->getCurrent();
         $company_id = $s_obj->getCompany();
         if ($company_id != FALSE) {
             $uilf = new UserIdentificationListFactory();
             if (version_compare($this->getClientVersion(), '3.0.0', '>=')) {
                 $uilf->getByCompanyIdAndTypeId($company_id, array(10, 25, 30, 40));
                 //iButtons, LIBFP Fingerprints, Barcodes, Proximity Cards
             } else {
                 $uilf->getByCompanyIdAndTypeId($company_id, array(10, 20, 30, 40));
                 //iButtons, Griaule Fingerprints Barcodes, Proximity Cards
             }
             if ($uilf->getRecordCount() > 0) {
                 $x = 0;
                 foreach ($uilf as $ui_obj) {
                     $identification_list["'{$x}'"] = array('user_id' => (int) $ui_obj->getUser(), 'type_id' => (int) $ui_obj->getType(), 'number' => (int) $ui_obj->getNumber(), 'value' => $ui_obj->getValue());
                     $x++;
                 }
                 if (isset($identification_list)) {
                     return $identification_list;
                 }
             }
         }
     }
     return FALSE;
 }
 function checkIButton($id)
 {
     $uilf = new UserIdentificationListFactory();
     $uilf->getByTypeIdAndValue(10, $id);
     if ($uilf->getRecordCount() > 0) {
         foreach ($uilf as $ui_obj) {
             if (is_object($ui_obj->getUserObject()) and $ui_obj->getUserObject()->getStatus() == 10) {
                 $this->setObject($ui_obj->getUser());
                 return TRUE;
             }
         }
     }
     /*
     		//Use UserFactory to set name.
     		$ulf = new UserListFactory();
     
     		$ulf->getByIButtonIdAndStatus($id, 10 );
     
     		foreach ($ulf as $user) {
     			if ( $user->checkIButton($id) ) {
     				$this->setObject( $user->getID() );
     
     				return TRUE;
     			} else {
     				return FALSE;
     			}
     		}
     */
     return FALSE;
 }
 function enroll($user_id, $id, $type = 'iButton', $number = 0, $extra_value = NULL)
 {
     Debug::text('Client Version: ' . $this->getClientVersion() . ' User ID : ' . $user_id . ' ID: ' . substr($id, 0, 100) . ' Type: ' . $type . ' Number: ' . $number, __FILE__, __LINE__, __METHOD__, 10);
     $user_id = trim($user_id);
     $id = trim($id);
     $type = strtolower($type);
     $number = trim($number);
     $ulf = new UserListFactory();
     if (version_compare($this->getClientVersion(), '2.7.0', '<')) {
         Debug::text('aVersion: ' . $this->getClientVersion(), __FILE__, __LINE__, __METHOD__, 10);
         //Fingerprints can send $id=NULL to clear an enrollment.
         if (strpos($type, 'finger_print') === FALSE and $id == '') {
             Debug::text('ID is not valid: ' . $id, __FILE__, __LINE__, __METHOD__, 10);
             return FALSE;
         }
         //Check to make sure the logged in user has edit_advance permissions
         if ($this->getPermissionObject()->Check('user', 'enroll') or $this->getPermissionObject()->Check('user', 'enroll_child')) {
             Debug::text('User : '******' has Enroll permission', __FILE__, __LINE__, __METHOD__, 10);
             switch ($type) {
                 case 'finger_print_1':
                 case 'finger_print_2':
                 case 'finger_print_3':
                 case 'finger_print_4':
                     $enroll_user_obj = $ulf->getByIdAndCompanyId($user_id, $this->getUserObject()->getCompany());
                     if ($enroll_user_obj->getRecordCount() == 1) {
                         Debug::text('Enroller User ID : ' . $user_id . ' FOUND', __FILE__, __LINE__, __METHOD__, 10);
                         $enroll_user_obj = $enroll_user_obj->getCurrent();
                         switch ($type) {
                             case 'finger_print_1':
                                 $number = 10;
                                 break;
                             case 'finger_print_2':
                                 $number = 20;
                                 break;
                             case 'finger_print_3':
                                 $number = 30;
                                 break;
                             case 'finger_print_4':
                                 $number = 40;
                                 break;
                         }
                         $uilf = new UserIdentificationListFactory();
                         $uilf->getByUserIdAndTypeIdAndNumber($enroll_user_obj->getID(), 20, $number);
                         if ($uilf->getRecordCount() > 0) {
                             $uif = $uilf->getCurrent();
                         } else {
                             $uif = new UserIdentificationFactory();
                         }
                         if ($id == '' and $uilf->getRecordCount() > 0) {
                             Debug::text('Deleting Fingerprint...', __FILE__, __LINE__, __METHOD__, 10);
                             $uif->setDeleted(TRUE);
                             if ($uif->isValid()) {
                                 if ($uif->save()) {
                                     return TRUE;
                                 }
                             }
                         } elseif ($id != '') {
                             $uif->setUser($enroll_user_obj->getId());
                             $uif->setType(20);
                             //Griaule
                             $uif->setNumber($number);
                             $uif->setValue($id);
                             if ($uif->isValid()) {
                                 if ($uif->save()) {
                                     return TRUE;
                                 }
                             }
                         }
                         Debug::text('Enroll User Object not valid : ' . $user_id, __FILE__, __LINE__, __METHOD__, 10);
                     } else {
                         Debug::text('User ID : ' . $user_id . ' NOT FOUND', __FILE__, __LINE__, __METHOD__, 10);
                     }
                     break;
                 case 'ibutton':
                     //Remove ibutton from current user.
                     $uilf = new UserIdentificationListFactory();
                     $uilf->getByCompanyIdAndTypeIdAndValue($this->getUserObject()->getCompany(), 10, $id);
                     if ($uilf->getRecordCount() > 0) {
                         foreach ($uilf as $ui_obj) {
                             Debug::text('Removing iButton ID from User: '******'Didnt find current user with iButton assigned...', __FILE__, __LINE__, __METHOD__, 10);
                     }
                     $enroll_user_obj = $ulf->getByIdAndCompanyId($user_id, $this->getUserObject()->getCompany());
                     if ($enroll_user_obj->getRecordCount() == 1) {
                         Debug::text('Enroller User ID : ' . $user_id . ' FOUND', __FILE__, __LINE__, __METHOD__, 10);
                         $enroll_user_obj = $enroll_user_obj->getCurrent();
                         $uilf = new UserIdentificationListFactory();
                         $uilf->getByUserIdAndTypeIdAndNumber($enroll_user_obj->getID(), 10, 0);
                         if ($uilf->getRecordCount() > 0) {
                             $uif = $uilf->getCurrent();
                         } else {
                             $uif = new UserIdentificationFactory();
                         }
                         $uif->setUser($enroll_user_obj->getId());
                         $uif->setType(10);
                         //iButton
                         $uif->setNumber(0);
                         $uif->setValue($id);
                         if ($uif->isValid()) {
                             if ($uif->save()) {
                                 return TRUE;
                             }
                         }
                         Debug::text('Enroll User Object not valid : ' . $user_id, __FILE__, __LINE__, __METHOD__, 10);
                     } else {
                         Debug::text('User ID : ' . $user_id . ' NOT FOUND', __FILE__, __LINE__, __METHOD__, 10);
                     }
                     /*
                     $ulf->getByCompanyIDAndIButtonId( $this->getUserObject()->getCompany(), $id );
                     if ( $ulf->getRecordCount() > 0 ) {
                     	$old_user_obj = $ulf->getCurrent();
                     
                     	Debug::text('Removing iButton ID from User: '******'Didnt find current user with iButton assigned...', __FILE__, __LINE__, __METHOD__, 10);
                     }
                     
                     //$enroll_user_obj = $ulf->getByUserNameAndCompanyId( $user_name, $this->getUserObject()->getCompany() );
                     $enroll_user_obj = $ulf->getByIdAndCompanyId( $user_id, $this->getUserObject()->getCompany() );
                     
                     if ( $enroll_user_obj->getRecordCount() == 1 ) {
                     	Debug::text('Enroller User ID : '. $user_id .' FOUND', __FILE__, __LINE__, __METHOD__, 10);
                     
                     	$enroll_user_obj = $enroll_user_obj->getCurrent();
                     
                     	//Update ibutton id.
                     	$enroll_user_obj->setIButtonID( $id );
                     	if ( $enroll_user_obj->isValid() ) {
                     		if ( $enroll_user_obj->save() ) {
                     			return TRUE;
                     		}
                     	}
                     
                     	Debug::text('Enroll User Object not valid : '. $user_id, __FILE__, __LINE__, __METHOD__, 10);
                     } else {
                     	Debug::text('User ID : '. $user_id .' NOT FOUND', __FILE__, __LINE__, __METHOD__, 10);
                     }
                     */
                     break;
             }
         } else {
             Debug::text('User : '******' DOES NOT HAVE edit advance permission', __FILE__, __LINE__, __METHOD__, 10);
         }
     } else {
         //This code path needs to handle re-enrolling iButtons, proximity cards, etc... for a different employees.
         Debug::text('bVersion: ' . $this->getClientVersion(), __FILE__, __LINE__, __METHOD__, 10);
         $ulf->getByIdAndCompanyId($user_id, $this->getUserObject()->getCompany());
         if ($ulf->getRecordCount() == 1) {
             Debug::text('Enroller User ID : ' . $user_id . ' FOUND', __FILE__, __LINE__, __METHOD__, 10);
             //Checking to see if value is enrolled for a different user first.
             $uilf = new UserIdentificationListFactory();
             $uilf->getByCompanyIdAndTypeIdAndValue($this->getUserObject()->getCompany(), $type, $id);
             if ($uilf->getRecordCount() > 0) {
                 foreach ($uilf as $ui_obj) {
                     Debug::text('Removing enolled value from User: '******'Didnt find current user with enrolled value assigned...', __FILE__, __LINE__, __METHOD__, 10);
             }
             $enroll_user_obj = $ulf->getCurrent();
             $uilf = new UserIdentificationListFactory();
             $uilf->getByUserIdAndTypeIdAndNumber($enroll_user_obj->getID(), $type, $number);
             if ($uilf->getRecordCount() > 0) {
                 $uif = $uilf->getCurrent();
             } else {
                 $uif = new UserIdentificationFactory();
             }
             if ($id == '' and $uilf->getRecordCount() > 0) {
                 Debug::text('Deleting User Identification...', __FILE__, __LINE__, __METHOD__, 10);
                 $uif->setDeleted(TRUE);
                 if ($uif->isValid()) {
                     if ($uif->save()) {
                         return TRUE;
                     }
                 }
             } elseif ($id != '') {
                 Debug::text('Adding/Modifying User Identification...', __FILE__, __LINE__, __METHOD__, 10);
                 $uif->setUser($enroll_user_obj->getId());
                 $uif->setType($type);
                 $uif->setNumber($number);
                 $uif->setValue($id);
                 //Primarily used to store raw fingerprint images during enroll.
                 if ($extra_value != '') {
                     $uif->setExtraValue($extra_value);
                 }
                 if ($uif->isValid()) {
                     if ($uif->save()) {
                         return TRUE;
                     }
                 }
             }
             Debug::text('Enroll User Object not valid : ' . $user_id, __FILE__, __LINE__, __METHOD__, 10);
         } else {
             Debug::text('User ID : ' . $user_id . ' NOT FOUND', __FILE__, __LINE__, __METHOD__, 10);
         }
     }
     return FALSE;
 }
 function checkRFID($id)
 {
     $id = trim($id);
     $uilf = new UserIdentificationListFactory();
     $uilf->getByUserIdAndTypeIdAndValue($this->getId(), 40, $id);
     if ($uilf->getRecordCount() == 1) {
         return TRUE;
     }
     /*
     		//Use employee ID for now.
     		if ( $id == $this->getRFID() ) {
     			return TRUE;
     		}
     */
     return FALSE;
 }