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; }