Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- use Olivemedia\Video\VideoService as Service;
- include_once( APPPATH . 'libraries/d2r/Mobile_API_Controller.php');
- class V1 extends Mobile_API_Controller {
- public function __construct(){
- parent::__construct();
- }
- public function member_login_get() {
- try {
- $member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- return $this->response(array('success' => 'true', 'result' => array(
- 'id' => $member->id,
- 'organisation_id' => $member->organisation_id,
- 'username' => $member->user->username,
- 'first_name' => $member->first_name,
- 'last_name' => $member->last_name,
- 'email' => $member->email,
- 'mobile_number' => $member->mobile_number,
- 'mobile_country_code' => $member->country_code,
- 'created_at' => $member->created_at,
- 'updated_at' => $member->updated_at,
- 'is_verified' => ($member->is_verified()) ? 1 : 0,
- 'verification_stage' => $member->verification_stage,
- 'is_trainer' => $member->is_trainer,
- 'is_team_admin' => $member->is_team_admin,
- 'is_admin' => $member->is_admin,
- 'is_super_admin' => $member->is_super_admin,
- 'is_site_manager' => $member->is_site_manager,
- 'image_key' => rtrim(strtr(base64_encode($member->image_key), '+/', '-_'), '=')
- )));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- exit;
- }
- public function member_details_post() {
- try {
- if(!isset($this->_post_json_args->first_name)) $this->_post_json_args->first_name = null;
- if(!isset($this->_post_json_args->last_name)) $this->_post_json_args->last_name = null;
- if(!isset($this->_post_json_args->email)) $this->_post_json_args->email = null;
- if(!isset($this->_post_json_args->username)) $this->_post_json_args->username = null;
- $member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- $member->first_name = $this->_post_json_args->first_name;
- $member->last_name = $this->_post_json_args->last_name;
- if($this->_post_json_args->email != $member->email) $member->email = $this->_post_json_args->email;
- if($member->is_registered()) {
- if($member->user->username != $this->_post_json_args->username) $member->user->username = $this->_post_json_args->username;
- $member->user->save();
- }
- $member->save();
- return $this->response(array("success" => "true"));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function member_password_post() {
- try {
- if(!isset($this->_post_json_args->password)) $this->_post_json_args->password = null;
- if(!isset($this->_post_json_args->passwordconfirm)) $this->_post_json_args->passwordconfirm = null;
- $member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- $member->user->reset_password(
- $this->_post_json_args->password,
- $this->_post_json_args->passwordconfirm
- );
- $member->user->save();
- return $this->response(array("success" => "true"));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function member_mobile_post() {
- try {
- if(!isset($this->_post_json_args->mobile_number)) $this->_post_json_args->mobile_number = null;
- if(!isset($this->_post_json_args->mobile_country_code)) $this->_post_json_args->mobile_country_code = null;
- $member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- $mobile_number = $this->_post_json_args->mobile_country_code.$this->_post_json_args->mobile_number;
- $mobile_number = urldecode($mobile_number);
- $mobile_number = trim($mobile_number);
- $member->mobile_number = $mobile_number;
- $member->country_code = $this->_post_json_args->mobile_country_code;
- $member->save();
- return $this->response(array("success" => "true"));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function member_image_post() {
- try {
- if(!isset($this->_post_json_args->imagedata)) return $this->error_response("Image data required");
- $member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- $member_image_temp = new SplFileObject('/tmp/member_'.$this->member_id.'_image.jpeg', 'w+');
- $member_image_temp->fwrite(base64_decode($this->_post_json_args->imagedata));
- $s3_client = \Aws\S3\S3Client::factory(array(
- 'key' => AWS_S3_ACCESS_KEY,
- 'secret' => AWS_S3_SECRET_KEY,
- 'region' => 'us-east-1'
- ));
- $key_base_path = $member->base_path;
- $hash = md5(uniqid(rand(), true));
- $key = $key_base_path.$hash.'.jpeg';
- $key = new AcademyHQ\S3\Key($key);
- $image_upload = new AcademyHQ\S3\Image\Factory($s3_client, AWS_S3_ASSETS_BUCKET);
- $image = $image_upload->create($key, $member_image_temp);
- $member->image_key = $image->get_reference()->get_key()->to_string();
- $member->save();
- $member_image_temp = null;
- unlink('/tmp/member_'.$this->member_id.'_image.jpeg');
- return $this->response(array("success" => "true", "image_key" => rtrim(strtr(base64_encode($member->image_key), '+/', '-_'), '=')));
- } catch (Exception $e) {
- //return $this->error_response($e->getMessage());//DEV returns all aws errors as well (these should not go to the app.
- return $this->error_response("There was an error accepting your image please contact us. : code(009)");
- }
- }
- public function member_token_post() {
- if(!isset($this->_post_json_args->device_token)) $this->_post_json_args->device_token = null;
- if(!isset($this->_post_json_args->is_ios)) $this->_post_json_args->is_ios = 0;
- if(!isset($this->_post_json_args->is_android)) $this->_post_json_args->is_android = 0;
- try {
- $tokenNew = false;
- $member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- $token = PushToken::find_by_device_token(
- $this->_post_json_args->device_token
- );
- if($token == null) {
- $tokenNew = true;
- $token = PushToken::create(array(
- 'device_token' => $this->_post_json_args->device_token,
- 'is_ios' => $this->_post_json_args->is_ios,
- 'is_android' => $this->_post_json_args->is_android,
- ));
- }
- $token->set_member($member);
- $token->save();
- return $this->response(array("success" => "true", "token_new" => $tokenNew, "member_id" => $member->id ));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function org_details_get() {
- try {
- $organisation = Organisation::find_valid_by_id(
- $this->current_organisation_id
- );
- return $this->response(array('success' => 'true', 'result' => array(
- 'id' => $organisation->id,
- 'name' => $organisation->name,
- 'branding_hex' => $organisation->branding_hex,
- 'branding_hex_dark' => Util::mobile_branding_darken($organisation->branding_hex, -50),
- 'currency' => $organisation->currency,
- 'language' => $organisation->language,
- 'mobile_validation_enabled' => $organisation->mobile_validation_enabled,
- 'mobile_validation_skippable' => $organisation->mobile_validation_skippable,
- 'created_at' => $organisation->created_at,
- 'updated_at' => $organisation->updated_at,
- 'image_key' => rtrim(strtr(base64_encode($organisation->branding_logo_key), '+/', '-_'), '=')
- )));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function documents_get($from = null, $limit = null, $page_number = 1) {
- if($limit == null) $limit = $this->config->item('mobile_api_pagination_limit');
- if($from == null) {
- $from = date("Y-m-d H:i:s", 0);
- } else {
- $from = urldecode($from);
- }
- $from = date("Y-m-d H:i:s", strtotime($from)+1);
- try {
- $organisation = Organisation::find_valid_by_id(
- $this->current_organisation_id
- );
- $page = new Page();
- $page->set_per_page($limit);
- $page->set_current_page_number($page_number);
- $document_search = new DocumentSearch();
- $document_search
- ->set_page($page)
- ->set_date_filter('updated')
- ->set_date_from($from)
- ->set_organisation($organisation);
- $document_search->execute();
- $results = array();
- $l = $document_search->get_row_per_current_page();
- for($i = 0; $i < $l; $i++){
- $document = $document_search[$i];
- $document_details = array(
- 'id' => $document->id,
- 'name' => $document->name,
- 'created_at' => $document->created_at,
- 'updated_at' => $document->updated_at,
- 'is_deleted' => $document->is_deleted,
- 'is_required' => $document->is_required,
- 'is_active' => $document->is_active
- );
- array_push($results, $document_details);
- }
- return $this->response(array('success' => 'true', 'total_rows' => (int) $l, 'result' => $results));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function document_get($document_id) {
- try {
- $document = Document::find_valid_by_id(
- $document_id
- );
- return $this->response(array('success' => 'true', 'results' => array(
- 'id' => $document->id,
- 'name' => $document->name,
- 'created_at' => $document->created_at,
- 'updated_at' => $document->updated_at,
- 'is_deleted' => $document->is_deleted,
- 'is_required' => $document->is_required,
- 'is_active' => $document->is_active
- )));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function search_member_name_get($first = null, $last= null, $limit = null, $page_number = 1) {
- if($limit == null) $limit = $this->config->item('mobile_api_pagination_limit');
- try {
- $organisation = Organisation::find_valid_by_id(
- $this->current_organisation_id
- );
- $organisationFactory = new OrganisationFactory();
- $organisation = $organisationFactory->get($organisation);
- $page = new Page();
- $page->set_per_page($limit);
- $page->set_current_page_number($page_number);
- $member_search = new MemberFilteredSearch();
- $member_search->set_page($page);
- $member_search->set_organisation($organisation);
- $member_search->set_is_deleted(0);
- $member_search->set_is_active(1);
- if($first != null) {
- $member_search->set_first_name($first);
- }
- if($last != null) {
- $member_search->set_last_name($last);
- }
- $member_search->execute();
- $results = array();
- $l = $member_search->get_row_per_current_page();
- for($i = 0; $i < $l; $i++){
- $member = $member_search[$i];
- $member_details = array(
- 'id' => $member->id,
- 'first_name' => $member->first_name,
- 'last_name' => $member->last_name,
- );
- array_push($results, $member_details);
- }
- return $this->response(array('success' => 'true', 'total_rows' => (int) $l, 'result' => $results));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function search_member_mobile_number_get($mobile = null, $limit = null, $page_number = 1) {
- if($limit == null) $limit = $this->config->item('mobile_api_pagination_limit');
- try {
- $organisation = Organisation::find_valid_by_id(
- $this->current_organisation_id
- );
- $organisationFactory = new OrganisationFactory();
- $organisation = $organisationFactory->get($organisation);
- $page = new Page();
- $page->set_per_page($limit);
- $page->set_current_page_number($page_number);
- $member_search = new MemberFilteredSearch();
- $member_search->set_page($page)
- ->set_role('learner')
- ->set_mobile_number($mobile)
- ->set_organisation($organisation);
- $member_search->execute();
- $results = array();
- $l = $member_search->get_row_per_current_page();
- for($i = 0; $i < $l; $i++){
- $member = $member_search[$i];
- $member_details = array(
- 'id' => $member->id,
- 'first_name' => $member->first_name,
- 'last_name' => $member->last_name,
- );
- array_push($results, $member_details);
- }
- return $this->response(array('success' => 'true', 'total_rows' => (int) $l, 'result' => $results));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function verify_mobile_post() {
- if(file_exists('vendor/twilio/sdk/Services/Twilio.php'))
- {
- require_once('vendor/twilio/sdk/Services/Twilio.php');
- }
- else {
- return $this->error_response("Error sending SMS please contact us. : code(012) ");
- }
- try {
- if(!isset($this->_post_json_args->mobile_number)) $this->_post_json_args->mobile_number = null;
- if(!isset($this->_post_json_args->mobile_country_code)) $this->_post_json_args->mobile_country_code = null;
- $member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- $mobile_number = $this->_post_json_args->mobile_country_code.$this->_post_json_args->mobile_number;
- $validation = MemberValidationCode::create(array(
- 'member' => $member,
- 'mobile_number' => $mobile_number,
- 'country_code' => $this->_post_json_args->mobile_country_code
- ));
- $client = new Twilio\Rest\Client(ACCOUNT_SID_FOR_SMS, AUTH_TOKEN_FOR_SMS);
- $message = $client->messages->create(
- $mobile_number,
- array(
- 'from' => TWILIO_SMS_NUMBER,
- 'body' => "Your AcademyHQ verification code is ".$validation->validation_code
- )
- );
- $validation->sms_id = $message->sid;
- $validation->save();
- $member->verification_stage = 1;
- $member->save();
- return $this->response(array("success" => "true"));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function verify_code_post() {
- try {
- if(!isset($this->_post_json_args->verifycode)) $this->_post_json_args->verifycode = null;
- $member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- $verifycode = MemberValidationCode::find_by_validation_code(
- $this->_post_json_args->verifycode
- );
- if($verifycode != null) {
- if($verifycode->member_id == $member->id) {
- $mobile_number = urldecode($verifycode->mobile_number);
- $mobile_number = trim($mobile_number);
- $member->verification_stage = 2;
- $member->mobile_number = $mobile_number;
- $member->country_code = $verifycode->country_code;
- $member->save();
- $verifycode->complete();
- return $this->response(array("success" => "true"));
- }
- }
- return $this->error_response("Verify code incorrect");
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function verify_image_post() {
- try {
- if(!isset($this->_post_json_args->imagedata)) return $this->error_response("Image data required");
- $member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- $member_image_temp = new SplFileObject('/tmp/member_'.$this->member_id.'_image.jpeg', 'w+');
- $member_image_temp->fwrite(base64_decode($this->_post_json_args->imagedata));
- $s3_client = \Aws\S3\S3Client::factory(array(
- 'key' => AWS_S3_ACCESS_KEY,
- 'secret' => AWS_S3_SECRET_KEY,
- 'region' => 'us-east-1'
- ));
- $key_base_path = $member->base_path;
- $hash = md5(uniqid(rand(), true));
- $key = $key_base_path.$hash.'.jpeg';
- $key = new AcademyHQ\S3\Key($key);
- $image_upload = new AcademyHQ\S3\Image\Factory($s3_client, AWS_S3_ASSETS_BUCKET);
- $image = $image_upload->create($key, $member_image_temp);
- $member->image_key = $image->get_reference()->get_key()->to_string();
- $member->verification_stage = 3;
- $member->save();
- $member_image_temp = null;
- unlink('/tmp/member_'.$this->member_id.'_image.jpeg');
- return $this->response(array("success" => "true", "image_key" => rtrim(strtr(base64_encode($member->image_key), '+/', '-_'), '=')));
- } catch (Exception $e) {
- //return $this->error_response($e->getMessage());//DEV returns all aws errors as well (these should not go to the app.
- return $this->error_response("There was an error accepting your image please contact us. : code(010)");
- }
- }
- public function verify_state_get() {
- try {
- $member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- $member->verification_stage = 4;
- $member->is_verified = 1;
- $member->save();
- return $this->response(array("success" => "true"));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function enrolment_get($enrolment_id) {
- try {
- $enrolment = Enrolment::find_valid_by_id(
- $enrolment_id
- );
- $course = $enrolment->course;
- $module_details = array();
- if($enrolment->course->has_modules()) {
- $module = $enrolment->course->get_first_module();
- $module_details = array(
- 'id' => $module->id,
- 'created_at' => $module->created_at,
- 'updated_at' => $module->updated_at,
- 'course_id' => $module->course_id,
- 'name' => $module->name,
- 'description_message' => $module->description,//description is a reserved key on iOS hence the miss match of keys here
- 'completion_message' => $module->completion_message,
- 'duration' => $module->duration,
- 'typical_time' => $module->typical_time,
- 'is_active' => $module->is_active,
- 'is_deleted' => $module->is_deleted,
- );
- }
- $course_details = array(
- 'id' => $course->id,
- 'created_at' => $course->created_at,
- 'updated_at' => $course->updated_at,
- 'name' => $course->name,
- 'is_active' => $course->is_active,
- 'is_deleted' => $course->is_deleted,
- 'module_count' => $course->module_count,
- 'has_certificate' => $course->has_certificate,
- 'expiry_months' => $course->expiry_months,
- 'image_key' => rtrim(strtr(base64_encode($course->image_key), '+/', '-_'), '='),
- 'module' => $module_details
- );
- return $this->response(array('success' => 'true', 'result' => array(
- 'id' => $enrolment->id,
- 'created_at' => $enrolment->created_at,
- 'updated_at' => $enrolment->updated_at,
- 'started_at' => $enrolment->started_at,
- 'completed_at' => $enrolment->completed_at,
- 'succeeded_at' => $enrolment->succeeded_at,
- 'failed_at' => $enrolment->failed_at,
- 'reminded_at' => $enrolment->reminded_at,
- 'last_resumed_at' => $enrolment->last_resumed_at,
- 'progress' => $enrolment->progress,
- 'time_spent' => $enrolment->time_spent,
- 'score' => $enrolment->score,
- 'course_id' => $enrolment->course_id,
- 'is_started' => $enrolment->is_started,
- 'is_completed' => $enrolment->is_completed,
- 'is_successful' => $enrolment->is_successful,
- 'is_failed' => $enrolment->is_failed,
- 'is_manual' => $enrolment->is_manual,
- 'is_active' => $enrolment->is_active,
- 'is_deleted' => $enrolment->is_deleted,
- 'expire_at' => $enrolment->expire_at,
- 'is_expired' => $enrolment->is_expired,
- 'course' => $course_details,
- )));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function enrolments_get($from = null, $limit = null, $page_number = 1) {
- if($limit == null) $limit = $this->config->item('mobile_api_pagination_limit');
- if($from == null) {
- $from = date("Y-m-d H:i:s", 0);
- } else {
- $from = urldecode($from);
- }
- $from = date("Y-m-d H:i:s", strtotime($from)+1);
- try {
- $member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- $organisation = Organisation::find_valid_by_id(
- $this->current_organisation_id
- );
- $page = new Page();
- $page->set_per_page($limit);
- $page->set_current_page_number($page_number);
- $enrolment_search = new EnrolmentMobileFilteredSearch();
- $enrolment_search->set_page($page)
- ->set_order('updated_at', 'DESC')
- ->set_type('standard')
- ->set_date_filter('updated')
- ->set_date_from($from)
- ->set_member($member)
- ->set_organisation($organisation);
- $enrolment_search->execute();
- $results = array();
- $l = $enrolment_search->get_row_per_current_page();
- for($i = 0; $i < $l; $i++){
- $enrolment = $enrolment_search[$i];
- $course = $enrolment->course;
- $module_details = array();
- if($enrolment->course->has_modules()) {
- $module = $enrolment->course->get_first_module();
- $module_details = array(
- 'id' => $module->id,
- 'created_at' => $module->created_at,
- 'updated_at' => $module->updated_at,
- 'course_id' => $module->course_id,
- 'name' => $module->name,
- 'description_message' => $module->description,//description is a reserved key on iOS hence the miss match of keys here
- 'completion_message' => $module->completion_message,
- 'duration' => $module->duration,
- 'typical_time' => $module->typical_time,
- 'is_active' => $module->is_active,
- 'is_deleted' => $module->is_deleted,
- );
- }
- if($course->standard != null) {
- $course_mobile = $course->standard->is_mobile_enabled;
- } else {
- $course_mobile = 0;
- }
- $course_details = array(
- 'id' => $course->id,
- 'created_at' => $course->created_at,
- 'updated_at' => $course->updated_at,
- 'name' => $course->name,
- 'is_active' => $course->is_active,
- 'is_deleted' => $course->is_deleted,
- 'module_count' => $course->module_count,
- 'has_certificate' => $course->has_certificate,
- 'expiry_months' => $course->expiry_months,
- 'image_key' => rtrim(strtr(base64_encode($course->image_key), '+/', '-_'), '='),
- 'module' => $module_details,
- 'is_mobile_enabled' => $course_mobile
- );
- $enrolment_details = array(
- 'id' => $enrolment->id,
- 'created_at' => $enrolment->created_at,
- 'updated_at' => $enrolment->updated_at,
- 'started_at' => $enrolment->started_at,
- 'completed_at' => $enrolment->completed_at,
- 'succeeded_at' => $enrolment->succeeded_at,
- 'failed_at' => $enrolment->failed_at,
- 'reminded_at' => $enrolment->reminded_at,
- 'last_resumed_at' => $enrolment->last_resumed_at,
- 'progress' => $enrolment->progress,
- 'time_spent' => $enrolment->time_spent,
- 'score' => $enrolment->score,
- 'course_id' => $enrolment->course_id,
- 'is_started' => $enrolment->is_started,
- 'is_completed' => $enrolment->is_completed,
- 'is_successful' => $enrolment->is_successful,
- 'is_failed' => $enrolment->is_failed,
- 'is_manual' => $enrolment->is_manual,
- 'is_active' => $enrolment->is_active,
- 'is_deleted' => $enrolment->is_deleted,
- 'expire_at' => $enrolment->expire_at,
- 'is_expired' => $enrolment->is_expired,
- 'course' => $course_details,
- );
- array_push($results, $enrolment_details);
- }
- return $this->response(array('success' => 'true', 'total_rows' => (int) $l, 'result' => $results));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function enrolment_launch_get($enrolment_id) {
- if(file_exists(APPPATH . 'libraries/ScormCloud/ScormEngineService.php'))
- {
- require_once(APPPATH . 'libraries/ScormCloud/ScormEngineService.php');
- }
- else {
- return $this->error_response("Error loading SCORM library please contact us. : code(013)");
- }
- $scorm_api = new ScormEngineService(
- SCORM_API_URL,
- SCORM_APP_ID,
- SCORM_SECRET,
- 'rusticisoftware.phplibrary.1.2.1'
- );
- try {
- $enrolment = Enrolment::find_valid_by_id_and_member_id(
- $enrolment_id,
- $this->member_id
- );
- if($enrolment->standard){
- $standard_enrolment = $enrolment->standard;
- if(!$enrolment->is_started()){
- $registration = $standard_enrolment->start();
- } else {
- $registration = $standard_enrolment->resume();
- }
- } else {
- return $this->error_response("Non standard enrolment");
- }
- $registration_scorm = RegistrationScorm::find_valid_by_registration_id($registration->id);
- if(!$registration_scorm->is_started()) {
- $registration_scorm->start($scorm_api);
- }
- $registration_scorm->resume($scorm_api);
- $callback_url = 'http://courseexitcallback/';
- $launch_url = $registration_scorm->get_launch_url($scorm_api, $callback_url);
- return $this->response(array('success' => 'true', 'result' => array("scorm_url" => urldecode($launch_url))));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- private function generate_certificate($enrolment_id) {
- try {
- $enrolment = Enrolment::find_valid_by_id($enrolment_id);
- $metadata = array(
- 'name' => $enrolment->member->member_info,
- 'course' => $enrolment->course->name,
- $enrolment->succeeded_at
- );
- $ukata_client = new UkataClient(UKATA_API_KEY);
- $response = $ukata_client->get_certificate_url($metadata);
- $bucket_key = Certificate::store($response, $enrolment);
- $enrolment->standard->certificate_key = $bucket_key;
- $enrolment->standard->save();
- return true;
- } catch (Exception $e) {
- print_r($e->getMessage());
- exit();
- }
- }
- public function enrolment_close_get($enrolment_id) {
- if(file_exists(APPPATH . 'libraries/ScormCloud/ScormEngineService.php'))
- {
- require_once(APPPATH . 'libraries/ScormCloud/ScormEngineService.php');
- }
- else {
- return $this->error_response("Error loading SCORM library please contact us. : code(014)");
- }
- $scorm_api = new ScormEngineService(
- SCORM_API_URL,
- SCORM_APP_ID,
- SCORM_SECRET,
- 'rusticisoftware.phplibrary.1.2.1'
- );
- try {
- $enrolment = Enrolment::find_valid_by_id_and_member_id(
- $enrolment_id,
- $this->member_id
- );
- if($enrolment->standard){
- $standard_enrolment = $enrolment->standard;
- } else {
- return $this->error_response("Non standard enrolment");
- }
- unset($enrolment);
- $registration = $standard_enrolment->current_registration;
- $registration_scorm = RegistrationScorm::find_valid_by_registration_id($registration->id);
- $scorm_registration_service = $scorm_api->getRegistrationService();
- $registration_summary = $scorm_registration_service->GetRegistrationSummary($registration_scorm->scorm_id);
- $registration_scorm->regen($registration_summary);
- $registration_scorm->enrolment->regen($scorm_api);
- if($registration_scorm->enrolment->is_successful()) {
- if($registration_scorm->enrolment->course->has_certificate()) {
- $certificate_generator = $registration_scorm->enrolment->course->certificate->certificate_generator;
- $certificate_info = $certificate_generator->store($registration_scorm->enrolment);
- $member_enrolment_certificate = MemberEnrolmentCertificate::create(array(
- 'member' => $registration_scorm->enrolment->member,
- 'certificate' => $registration_scorm->enrolment->course->certificate,
- 'enrolment_succeeded_at' => $registration_scorm->enrolment->succeeded_at,
- 'expire_at' => $registration_scorm->enrolment->expire_at,
- 'certificate_key' => $certificate_info['key']
- ));
- }
- }
- $next_registration = null;
- if(!$registration_scorm->module->is_last_module()) {
- $next_registration = $registration_scorm->enrolment->current_registration;
- $next_registration = $next_registration->id;
- }
- $enrolment = Enrolment::find_valid_by_id_and_member_id(
- $enrolment_id,
- $this->member_id
- );
- $enrolment_details = array(
- 'id' => $enrolment->id,
- 'created_at' => $enrolment->created_at,
- 'updated_at' => $enrolment->updated_at,
- 'started_at' => $enrolment->started_at,
- 'completed_at' => $enrolment->completed_at,
- 'succeeded_at' => $enrolment->succeeded_at,
- 'failed_at' => $enrolment->failed_at,
- 'reminded_at' => $enrolment->reminded_at,
- 'last_resumed_at' => $enrolment->last_resumed_at,
- 'progress' => $enrolment->progress,
- 'time_spent' => $enrolment->time_spent,
- 'score' => $enrolment->score,
- 'course_id' => $enrolment->course_id,
- 'is_started' => $enrolment->is_started,
- 'is_completed' => $enrolment->is_completed,
- 'is_successful' => $enrolment->is_successful,
- 'is_failed' => $enrolment->is_failed,
- 'is_manual' => $enrolment->is_manual,
- 'is_active' => $enrolment->is_active,
- 'is_deleted' => $enrolment->is_deleted,
- 'expire_at' => $enrolment->expire_at,
- 'is_expired' => $enrolment->is_expired
- );
- return $this->response(array('success' => 'true', 'result' => $enrolment_details, 'next_registration' => $next_registration));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function licenses_get($from = null, $limit = null, $page_number = 1) {
- if($limit == null) $limit = $this->config->item('mobile_api_pagination_limit');
- if($from == null) {
- $from = date("Y-m-d H:i:s", 0);
- } else {
- $from = urldecode($from);
- }
- $from = date("Y-m-d H:i:s", strtotime($from)+1);
- try {
- $organisation = Organisation::find_valid_by_id(
- $this->current_organisation_id
- );
- $page = new Page();
- $page->set_per_page($limit);
- $page->set_current_page_number($page_number);
- $license_search = new LicenseMobileFilteredSearch();
- $license_search->set_page($page)
- ->set_order('updated_at', 'DESC')
- ->set_date_updated_from($from)
- ->set_organisation($organisation);
- $license_search->execute();
- $results = array();
- $l = $license_search->get_row_per_current_page();
- for($i = 0; $i < $l; $i++){
- $license = $license_search[$i];
- $course = $license->course_standard->course;
- $module_details = array();
- if($license->course_standard != null) {
- $course_mobile = $license->course_standard->is_mobile_enabled;
- } else {
- $course_mobile = 0;
- }
- if($course_mobile == 0 ){
- $non_mobile_inject = "This course is not mobile enabled. You will need to login via the web to take this course.";
- } else {
- $non_mobile_inject = "";
- }
- if($license->course_standard->has_modules()) {
- $module = $license->course_standard->course->get_first_module();
- $module_details = array(
- 'id' => $module->id,
- 'created_at' => $module->created_at,
- 'updated_at' => $module->updated_at,
- 'course_id' => $module->course_id,
- 'name' => $module->name,
- 'description_message' => $non_mobile_inject.$module->description,//description is a reserved key on iOS hence the miss match of keys here
- 'completion_message' => $module->completion_message,
- 'duration' => $module->duration,
- 'typical_time' => $module->typical_time,
- 'is_active' => $module->is_active,
- 'is_deleted' => $module->is_deleted,
- );
- }
- $course_details = array(
- 'id' => $course->id,
- 'created_at' => $course->created_at,
- 'updated_at' => $course->updated_at,
- 'name' => $course->name,
- 'is_active' => $course->is_active,
- 'is_deleted' => $course->is_deleted,
- 'module_count' => $course->module_count,
- 'has_certificate' => $course->has_certificate,
- 'expiry_months' => $course->expiry_months,
- 'image_key' => rtrim(strtr(base64_encode($course->image_key), '+/', '-_'), '='),
- 'module' => $module_details,
- 'is_mobile_enabled' => $course_mobile
- );
- $license_details = array(
- 'id' => $license->id,
- 'created_at' => $license->created_at,
- 'updated_at' => $license->updated_at,
- 'course_id' => $license->course_standard->course->id,
- 'is_active' => $license->is_active,
- 'is_deleted' => $license->is_deleted,
- 'is_purchasable' => $license->is_purchasable,
- 'is_auto_enrollable' => $license->is_auto_enrollable,
- 'quantity' => $license->quantity,
- 'used' => $license->used,
- 'available' => $license->available,
- 'price' => $license->price,
- 'course' => $course_details
- );
- array_push($results, $license_details);
- }
- return $this->response(array('success' => 'true', 'total_rows' => (int) $l, 'result' => $results));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function purchase_license_post($license_id){
- if(!isset($this->_post_json_args->token)) {
- //return $this->error_response("There has been an issue processing your payment : code(008)");
- $this->_post_json_args->token = "";
- }
- if(!isset($this->_post_json_args->new_card)) $this->_post_json_args->new_card = 0;
- $token = $this->_post_json_args->token;
- $new_card = $this->_post_json_args->new_card;
- Stripe::setApiKey(PAYMENTS_STRIPE_PRIVATE_KEY);
- try {
- $member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- $organisation = Organisation::find_valid_by_id(
- $this->current_organisation_id
- );
- $license = License::find_by_id_and_organisation_id(
- $license_id,
- $organisation->id
- );
- //check license is purchasable
- if($member->customer != null) {
- $stripe_customer = Stripe_Customer::retrieve($member->customer->stripe_id);
- //echo("existing customer");
- if($token != "" && $new_card == 1) {
- //echo("new card");
- $stripe_customer->card = $token;
- $stripe_customer->save();
- }
- } else if($new_card == 0 && $token == "") {
- return $this->error_response("Your existing card has been removed from ours records please use the pay with a new card form. If your existing card is still valid please feel free to re-enter those details.");
- } else {
- //echo("new customer");
- if($token == "") {
- return $this->error_response("There has been an issue processing your payment : code(008)");
- }
- //using token to construct new customer.
- $stripe_customer = Stripe_Customer::create(array(
- "card" => $token,
- "description" => $member->email)
- );
- $customer = new Customer(array(
- 'stripe_id' => $stripe_customer->id
- ));
- $customer->set_member($member);
- $customer->save();
- }
- $member_licenses_order = new MemberMobileLicenseOrder(
- $organisation,
- $license,
- $member
- );
- $member_licenses_order->check_purchasable();
- Stripe_Charge::create(array(
- "amount" => $member_licenses_order->get_total_in_cents(), # amount in cents, again
- "currency" => $member_licenses_order->get_currency(),
- "customer" => $stripe_customer->id,
- "description" => "Mobile purchasing ".$member_licenses_order->get_total_items()." course(s)")
- );
- $newenrolment = $member_licenses_order->purchase();
- $emailBody = $this->load->view(
- 'emails/purchaser/purchaser_mobile_receipt',
- array(
- 'member_licenses_order' => $member_licenses_order,
- ),
- true
- );
- try {
- Email::push(array(
- 'type' => 'payment-receipt',
- 'from' => PAYMENTS_RECEIPT_EMAIL_FROM,
- 'to' => $member->email,
- 'subject' => "New Payment Receipt on the ".$organisation->name." Academy",
- 'body' => $emailBody,
- ));
- Email::push(array(
- 'type' => 'payment-receipt',
- 'from' => PAYMENTS_RECEIPT_EMAIL_FROM,
- 'to' => PAYMENTS_RECEIPT_EMAIL_FROM,
- 'subject' => "New Payment Receipt on the ".$organisation->name." Academy",
- 'body' => $emailBody,
- ));
- } catch (exception $recipt_error) {
- }
- return $this->response(array("success" => "true", "id" => $newenrolment->enrolment_id));
- } catch(Stripe_CardError $e) {
- // Since it's a decline, Stripe_CardError will be caught
- $body = $e->getJsonBody();
- $err = $body['error'];
- /*print('Status is:' . $e->getHttpStatus() . "\n");
- print('Type is:' . $err['type'] . "\n");
- print('Code is:' . $err['code'] . "\n");
- // param is '' in this case
- print('Param is:' . $err['param'] . "\n");
- print('Message is:' . $err['message'] . "\n");*/
- return $this->error_response($err['message']);
- } catch (Stripe_InvalidRequestError $e) {
- // Invalid parameters were supplied to Stripe's API
- //return $this->error_response("There has been an issue processing your payment : code(004) ".$e->getMessage());
- return $this->error_response("There has been an issue processing your payment : code(004) ");
- } catch (Stripe_AuthenticationError $e) {
- // Authentication with Stripe's API failed
- // (maybe you changed API keys recently)
- //return $this->error_response("There has been an issue processing your payment : code(005) ".$e->getMessage());
- return $this->error_response("There has been an issue processing your payment : code(005) ");
- } catch (Stripe_ApiConnectionError $e) {
- // Network communication with Stripe failed
- //return $this->error_response("There has been an issue processing your payment : code(006) ".$e->getMessage());
- return $this->error_response("There has been an issue processing your payment : code(006) ");
- } catch (Stripe_Error $e) {
- // Display a very generic error to the user,
- //return $this->error_response("There has been an issue processing your payment : code(007) ".$e->getMessage());
- return $this->error_response("There has been an issue processing your payment : code(007) ");
- } catch (Exception $e) {
- // Something else happened, completely unrelated to Stripe
- return $this->error_response($e->getMessage());
- }
- }
- public function certificates_get($from = null, $limit = null, $page_number = 1) {
- if($limit == null) $limit = $this->config->item('mobile_api_pagination_limit');
- if($from == null) {
- $from = date("Y-m-d H:i:s", 0);
- } else {
- $from = urldecode($from);
- }
- $from = date("Y-m-d H:i:s", strtotime($from)+1);
- try {
- $member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- $organisation = Organisation::find_valid_by_id(
- $this->current_organisation_id
- );
- $page = new Page();
- $page->set_per_page($limit);
- $page->set_current_page_number($page_number);
- $cert_search = new EnrolmentMobileFilteredSearch();
- $cert_search->set_page($page)
- ->set_order('updated_at', 'DESC')
- ->set_is_completed(1)
- ->set_is_successful(1)
- ->set_date_filter('updated')
- ->set_date_from($from)
- ->set_member($member)
- ->set_organisation($organisation);
- $cert_search->execute();
- $results = array();
- $l = $cert_search->get_row_per_current_page();
- for($i = 0; $i < $l; $i++){
- $cert = $cert_search[$i];
- $course = $cert->course;
- $course_details = array(
- 'id' => $course->id,
- 'created_at' => $course->created_at,
- 'updated_at' => $course->updated_at,
- 'name' => $course->name,
- 'is_active' => $course->is_active,
- 'is_deleted' => $course->is_deleted,
- 'module_count' => $course->module_count,
- 'has_certificate' => $course->has_certificate,
- 'expiry_months' => $course->expiry_months,
- 'image_key' => rtrim(strtr(base64_encode($course->image_key), '+/', '-_'), '=')
- );
- $cert_details = array(
- 'id' => $cert->id,
- 'created_at' => $cert->created_at,
- 'updated_at' => $cert->updated_at,
- 'started_at' => $cert->started_at,
- 'completed_at' => $cert->completed_at,
- 'succeeded_at' => $cert->succeeded_at,
- 'is_started' => $cert->is_started,
- 'is_completed' => $cert->is_completed,
- 'is_successful' => $cert->is_successful,
- 'is_failed' => $cert->is_failed,
- 'is_manual' => $cert->is_manual,
- 'is_active' => $cert->is_active,
- 'is_deleted' => $cert->is_deleted,
- 'expire_at' => $cert->expire_at,
- 'is_expired' => $cert->is_expired,
- 'course_id' => $cert->course_id,
- 'course' => $course_details,
- );
- array_push($results, $cert_details);
- }
- return $this->response(array('success' => 'true', 'total_rows' => (int) $l, 'result' => $results));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- private function generate_enrolment_certificate($enrolment) {
- try {
- $certificate_generator = $enrolment->course->certificate->certificate_generator;
- $certificate_info = $certificate_generator->store($enrolment);
- $member_enrolment_certificate = MemberEnrolmentCertificate::create(array(
- 'member' => $enrolment->member,
- 'certificate' => $enrolment->course->certificate,
- 'enrolment_succeeded_at' => $enrolment->succeeded_at,
- 'expire_at' => $enrolment->expire_at,
- 'certificate_key' => $certificate_info['key']
- ));
- return $member_enrolment_certificate->member_certificate;
- } catch (Exception $e) {
- print_r($e->getMessage());
- exit();
- }
- }
- private function generate_practical_session_certificate($enrolment) {
- try {
- $ioc = new IOCContainer();
- $certificate_generator = $ioc->bind_generator('DefaultStandardCertificate');
- $certificate_info = $certificate_generator->store($enrolment);
- $member_practical_session_certificate = MemberPracticalSessionCertificate::create(array(
- 'member' => $enrolment->member,
- 'course' => $enrolment->course,
- 'certificate_key' => $certificate_info['key'],
- 'enrolment_succeeded_at' => $enrolment->succeeded_at,
- 'expire_at' => $enrolment->expire_at
- ));
- return $member_practical_session_certificate->member_certificate;
- } catch (Exception $e) {
- print_r($e->getMessage());
- exit();
- }
- }
- public function certificate_image_get($enrolment_id) {
- try {
- $enrolment = Enrolment::find_undeleted_by_id($enrolment_id);
- $enrolment->check_is_not_successful();
- $enrolment->check_is_not_completed();
- if($enrolment->offline) {
- $this->offline_certificate_image_get($enrolment_id);
- } else {
- $member_certificate = MemberCertificate::find_by_member_id_and_course_id(
- $enrolment->member->id,
- $enrolment->course->id
- );
- if(!$member_certificate) {
- if($enrolment->is_successful && $enrolment->course->has_certificate()) {
- $member_certificate = $this->generate_enrolment_certificate($enrolment);
- } elseif($enrolment->is_successful() && $enrolment->standard && $enrolment->standard->practical_session_complete) {
- $member_certificate = $this->generate_practical_session_certificate($enrolment);
- }
- }
- if($member_certificate->practical_session_certificate) {
- $ioc = new IOCContainer();
- $certificate_generator = $ioc->bind_generator('DefaultStandardCertificate');
- } elseif ($member_certificate->enrolment_certificate) {
- $certificate_generator = $member_certificate->enrolment_certificate->certificate->certificate_generator;
- }
- $certificate_generator->retrieve($member_certificate, "D");
- }
- } catch (Exception $e) {
- return $this->error_response("There has been an error creating your certificate please contact us.: code(015)");
- }
- }
- private function offline_certificate_image_get($enrolment_id, $method = 'attachment') {
- try {
- $enrolment_offline = EnrolmentOffline::find_valid_by_enrolment_id($enrolment_id);
- $member_certificate = MemberCertificate::find_by_member_id_and_course_id(
- $enrolment_offline->member->id,
- $enrolment_offline->course->id
- );
- $certificate_generator = $member_certificate->enrolment_certificate->certificate->certificate_generator;
- $certificate_generator->retrieve($member_certificate, "D");
- } catch(Exception $e) {
- return $this->error_response("There has been an error creating your certificate please contact us.: code(015)");
- }
- }
- public function videos_categories_get($from = null, $limit = null, $page_number = 1) {
- if($limit == null) $limit = $this->config->item('mobile_api_pagination_limit');
- if($from == null) {
- $from = date("Y-m-d H:i:s", 0);
- } else {
- $from = urldecode($from);
- }
- $from = date("Y-m-d H:i:s", strtotime($from)+1);
- try {
- $organisation = Organisation::find_valid_by_id(
- $this->current_organisation_id
- );
- $page = new Page();
- $page->set_per_page($limit);
- $page->set_current_page_number($page_number);
- $video_categories_search = new VideoCategorySearch();
- $video_categories_search->set_page($page)
- ->set_date_filter('updated')
- ->set_date_from($from)
- ->set_organisation($organisation);
- $video_categories_search->execute();
- $results = array();
- $l = $video_categories_search->get_row_per_current_page();
- for($i = 0; $i < $l; $i++){
- $video_category = $video_categories_search[$i];
- $video_category_result = array(
- 'id' => $video_category->id,
- 'created_at' => $video_category->created_at,
- 'updated_at' => $video_category->updated_at,
- 'name' => $video_category->name,
- 'is_active' => $video_category->is_active,
- 'is_deleted' => $video_category->is_deleted,
- );
- array_push($results, $video_category_result);
- }
- return $this->response(array('success' => 'true', 'total_rows' => (int) $l, 'result' => $results));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function videos_get($from = null, $limit = null, $page_number = 1) {
- if($limit == null) $limit = $this->config->item('mobile_api_pagination_limit');
- if($from == null) {
- $from = date("Y-m-d H:i:s", 0);
- } else {
- $from = urldecode($from);
- }
- $from = date("Y-m-d H:i:s", strtotime($from)+1);
- try {
- $client = Service::factory(array(
- 'client_id' => VIDEO_SERVICE_CLIENT_ID,
- 'client_secret_key' => VIDEO_SERVICE_CLIENT_SECRET_KEY,
- ));
- $organisation = Organisation::find_valid_by_id(
- $this->current_organisation_id
- );
- $page = new Page();
- $page->set_per_page($limit);
- $page->set_current_page_number($page_number);
- $videos_search = new VideoSearch();
- $videos_search->set_page($page)
- ->set_date_filter('updated')
- ->set_date_from($from)
- ->set_is_uploaded(1)
- ->set_organisation($organisation);
- $videos_search->execute();
- $results = array();
- $l = $videos_search->get_row_per_current_page();
- for($i = 0; $i < $l; $i++){
- $video = $videos_search[$i];
- try {
- $olive_media_video = Service::find_by_id($client, $video->olive_video_id);
- $video_url = $olive_media_video['data']['hls_url'];
- $renditions = $olive_media_video['data']['mp4_renditions'];
- $deleted = $video->is_deleted;
- } catch(Exception $e) {
- $video_url = "";
- $renditions = "";
- $deleted = 1;
- }
- $video = array(
- 'id' => $video->id,
- 'created_at' => $video->created_at,
- 'updated_at' => $video->updated_at,
- 'published_at' => $video->published_at,
- 'video_category_id' => $video->video_category_id,
- 'name' => $video->name,
- 'description' => $video->description,
- 'olive_id' => $video->olive_video_id,
- 'is_uploaded' => $video->is_uploaded,
- 'is_rendition_complete' => $video->is_rendition_complete,
- 'is_published' => $video->is_published,
- 'is_active' => $video->is_active,
- 'is_deleted' => $deleted,
- 'video_url' => $video_url,
- 'renditions' => $renditions
- );
- array_push($results, $video);
- }
- return $this->response(array('success' => 'true', 'total_rows' => (int) $l, 'result' => $results));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function audits_get($from = null, $limit = null, $page_number = 1) {
- if($limit == null) $limit = $this->config->item('mobile_api_pagination_limit');
- if($from == null) {
- $from = date("Y-m-d H:i:s", 0);
- } else {
- $from = urldecode($from);
- }
- $from = date("Y-m-d H:i:s", strtotime($from)+1);
- try {
- $organisation = Organisation::find_valid_by_id(
- $this->current_organisation_id
- );
- $page = new Page();
- $page->set_per_page($limit);
- $page->set_current_page_number($page_number);
- $audit_search = new AuditFormSearch();
- $audit_search
- ->set_page($page)
- ->set_date_filter('updated')
- ->set_is_published(1)
- ->set_date_from($from)
- ->set_organisation($organisation);
- $audit_search->execute();
- $results = array();
- $l = $audit_search->get_row_per_current_page();
- for($i = 0; $i < $l; $i++){
- $audit = $audit_search[$i];
- $audit_details = array(
- 'id' => $audit->id,
- 'name' => $audit->name,
- 'created_at' => $audit->created_at,
- 'updated_at' => $audit->updated_at,
- 'is_deleted' => $audit->is_deleted,
- 'is_published' => $audit->is_published,
- 'is_active' => $audit->is_active
- );
- array_push($results, $audit_details);
- }
- return $this->response(array('success' => 'true', 'total_rows' => (int) $audit_search->total_rows, 'result' => $results));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function member_documents_get($from = null, $limit = null, $page_number = 1) {
- if($limit == null) $limit = $this->config->item('mobile_api_pagination_limit');
- if($from == null) {
- $from = date("Y-m-d H:i:s", 0);
- } else {
- $from = urldecode($from);
- }
- $from = date("Y-m-d H:i:s", strtotime($from)+1);
- try {
- $member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- $organisation = Organisation::find_valid_by_id(
- $this->current_organisation_id
- );
- $page = new Page();
- $page->set_per_page($limit);
- $page->set_current_page_number($page_number);
- $document_search = new MemberDocumentSearch();
- $document_search->set_page($page)
- ->set_date_filter('updated')
- ->set_date_from($from)
- ->set_member($member);
- $document_search->execute();
- $results = array();
- $l = $document_search->get_row_per_current_page();
- for($i = 0; $i < $l; $i++){
- $member_document = $document_search[$i];
- $document = $member_document->document;
- $document_details = array(
- 'id' => $document->id,
- 'name' => $document->name,
- 'created_at' => $document->created_at,
- 'updated_at' => $document->updated_at,
- 'is_deleted' => $document->is_deleted,
- 'is_required' => $document->is_required,
- 'is_active' => $document->is_active
- );
- $member_document_details = array(
- 'id' => $member_document->id,
- 'created_at' => $member_document->created_at,
- 'updated_at' => $member_document->updated_at,
- 'is_deleted' => $member_document->is_deleted,
- 'is_active' => $member_document->is_active,
- 'is_expired' => $member_document->is_expired,
- 'expires_at' => $member_document->expires_at,
- 'document_key' => rtrim(strtr(base64_encode($member_document->document_key), '+/', '-_'), '='),
- 'document_id' => $member_document->document_id,
- 'document' => $document_details
- );
- array_push($results, $member_document_details);
- }
- return $this->response(array('success' => 'true', 'total_rows' => (int) $l, 'result' => $results));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function member_document_post() {
- if(!isset($this->_post_json_args->document_id)) $this->_post_json_args->document_id = null;
- if(!isset($this->_post_json_args->expires_at)) $this->_post_json_args->expires_at = null;
- try {
- $member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- $document = Document::find_valid_by_id(
- $this->_post_json_args->document_id
- );
- $member_document = MemberDocument::create(array(
- 'member' => $member,
- 'expires_at' => $this->_post_json_args->expires_at,
- 'document' => $document
- ));
- $member_document->save();
- return $this->response(array("success" => "true", "id" => $member_document->id));
- } catch (Exception $e) {
- return $this->error_response("There has been an error creating your certificate please contact us.: code(016)");
- //return $this->error_response($e->getMessage());
- }
- }
- public function member_document_image_post($member_document_id) {
- if(!isset($this->_post_json_args->imagedata)) return $this->error_response("Image data required");
- try {
- $member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- $member_document = MemberDocument::find_valid_by_id(
- $member_document_id
- );
- if($member_document->member_id != $this->member_id) return $this->error_response("This document does not belong to the current user.");
- $member_document_image_temp = new SplFileObject('/tmp/member_document_'.$this->member_id.'_image.jpeg', 'w+');
- $member_document_image_temp->fwrite(base64_decode($this->_post_json_args->imagedata));
- $s3_client = \Aws\S3\S3Client::factory(array(
- 'key' => AWS_S3_ACCESS_KEY,
- 'secret' => AWS_S3_SECRET_KEY,
- 'region' => 'us-east-1'
- ));
- $key_base_path = $member->base_path;
- $hash = md5(uniqid(rand(), true));
- $key = $key_base_path.$hash.'.jpeg';
- $key = new AcademyHQ\S3\Key($key);
- $image_upload = new AcademyHQ\S3\Image\Factory($s3_client, AWS_S3_ASSETS_BUCKET);
- $image = $image_upload->create($key, $member_document_image_temp);
- $member_document->document_key = $image->get_reference()->get_key()->to_string();
- $member_image_temp = null;
- unlink('/tmp/member_document_'.$this->member_id.'_image.jpeg');
- $member_document->save();
- return $this->response(array("success" => "true", "document_key" => rtrim(strtr(base64_encode($member_document->document_key), '+/', '-_'), '=')));
- } catch (Exception $e) {
- //return $this->error_response($e->getMessage());//DEV returns all aws errors as well (these should not go to the app.
- return $this->error_response("There was an error accepting your image please contact us. : code(008)");
- }
- }
- public function member_audits_get($from = null, $limit = null, $page_number = 1) {
- if($limit == null) $limit = $this->config->item('mobile_api_pagination_limit');
- if($from == null) {
- $from = date("Y-m-d H:i:s", 0);
- } else {
- $from = urldecode($from);
- }
- $from = date("Y-m-d H:i:s", strtotime($from)+1);
- try {
- $member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- $organisation = Organisation::find_valid_by_id(
- $this->current_organisation_id
- );
- $page = new Page();
- $page->set_per_page($limit);
- $page->set_current_page_number($page_number);
- $member_audit_search = new MemberAuditFormSearch();
- $member_audit_search->set_page($page)
- ->set_date_filter('updated')
- ->set_is_submitted(1)
- ->set_date_from($from)
- ->set_member($member);
- $member_audit_search->execute();
- $results = array();
- $l = $member_audit_search->get_row_per_current_page();
- for($i = 0; $i < $l; $i++){
- $member_audit = $member_audit_search[$i];
- $audit = $member_audit->audit_form;
- $audit_details = array(
- 'id' => $audit->id,
- 'name' => $audit->name,
- 'created_at' => $audit->created_at,
- 'updated_at' => $audit->updated_at,
- 'is_deleted' => $audit->is_deleted,
- 'is_published' => $audit->is_published,
- 'is_active' => $audit->is_active
- );
- $member_audit_details = array(
- 'id' => $member_audit->id,
- 'created_at' => $member_audit->created_at,
- 'updated_at' => $member_audit->updated_at,
- 'submitted_at' => $member_audit->submitted_at,
- 'is_deleted' => $member_audit->is_deleted,
- 'is_active' => $member_audit->is_active,
- 'is_submitted' => $member_audit->is_submitted,
- 'audit_id' => $member_audit->audit_form_id,
- 'audit' => $audit_details,
- );
- array_push($results, $member_audit_details);
- }
- return $this->response(array('success' => 'true', 'total_rows' => (int) $member_audit_search->total_rows, 'result' => $results));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function member_audit_get($audit_form_id) {
- try {
- $member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- $callback_url = "http://auditexitcallback/";
- $audit_form = AuditForm::find_valid_by_id($audit_form_id);
- $existing_member_audit_form = new MemberAuditFormSearch();
- $page = new Page();
- $page->set_per_page(1);
- $page->set_current_page_number(1);
- $existing_member_audit_form->set_page($page)
- ->set_member($member)
- ->set_audit_form($audit_form)
- ->set_is_submitted(0);
- $existing_member_audit_form->execute();
- $l = $existing_member_audit_form->get_row_per_current_page();
- if($l > 0 ) {
- $member_audit_form = $existing_member_audit_form[0];
- } else {
- $member_audit_form = MemberAuditForm::create(array(
- 'audit_form' => $audit_form,
- 'member' => $member,
- 'form_data' => $audit_form->form_element,
- ));
- }
- $member_audit_form_token = MemberAuditFormTokenFactory::create($member_audit_form);
- $member_audit_form->check_is_submitted();
- $member_audit_form_service = new \MemberAuditFormService($member_audit_form_token->token);
- $launch_url = $member_audit_form_service->get_launch_url(
- $callback_url,
- $member
- );
- return $this->response(array("success" => "true", "id" => $member_audit_form->id, "launch_url" => $launch_url));
- } catch(Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function member_audit_view_get($member_audit_form_id) {
- try {
- $member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- $member_audit_form = MemberAuditForm::find_valid_by_id_and_member_id(
- $member_audit_form_id,
- $member->id
- );
- $callback_url = "http://auditexitcallback/";
- $member_audit_form->check_is_not_submitted();
- $member_audit_form_token = MemberAuditFormTokenFactory::create($member_audit_form);
- $member_audit_form_service = new \MemberAuditFormService($member_audit_form_token->token);
- $launch_url = $member_audit_form_service->get_view_url(
- $callback_url,
- $member
- );
- return $this->response(array("success" => "true", "view_url" => $launch_url));
- } catch(Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function records_member_details_get($member_id) {
- try {
- $requesting_member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- if(!$requesting_member->is_trainer() && !$requesting_member->is_admin() && !$requesting_member->is_super_admin() && !$requesting_member->is_site_manager()) {
- return $this->error_response("User roles not valid");
- }
- $member = Member::find_valid_registered_by_id(
- $member_id
- );
- $requesting_orgs = $requesting_member->organisation->get_all_organisation_ids();
- if(!in_array($member->organisation->id, $requesting_orgs)) {
- return $this->error_response("User not a member of requesting admins organisation");
- }
- /*if($requesting_member->organisation->id != $member->organisation->id ) {
- return $this->error_response("User not a member of requesting admins organisation");
- }*/
- /*$total_documents = MemberDocument::count_valid_by_member_id(
- $member_id
- );*/
- $page = new Page();
- $page->set_per_page(10);
- $page->set_current_page_number(1);
- $document_search = new MemberDocumentSearch();
- $document_search->set_page($page)
- ->set_date_filter('updated')
- ->set_member($member)
- ->set_is_active(1)
- ->set_is_deleted(0)
- ->set_is_document_active(1)
- ->set_is_document_deleted(0);
- $document_search->execute();
- $cert_search = new EnrolmentMobileFilteredSearch();
- $cert_search->set_page($page)
- ->set_order('updated_at', 'DESC')
- ->set_is_completed(1)
- ->set_is_successful(1)
- ->set_has_certificate(1)
- ->set_is_active(1)
- ->set_is_deleted(0)
- ->set_is_course_active(1)
- ->set_is_course_deleted(0)
- ->set_member($member);
- $cert_search->execute();
- $total_certificates = $cert_search->get_total_rows();
- $total_documents = $document_search->get_total_rows();
- /*$total_certificates = Enrolment::count_valid_by_member_id_and_is_completed_and_is_successful(
- $member_id,
- 1,
- 1
- );*/
- return $this->response(array('success' => 'true', 'result' => array(
- 'id' => $member->id,
- 'is_verified' => ($member->is_verified()) ? true : false,
- 'verification_stage' => $member->verification_stage,
- 'first_name' => $member->first_name,
- 'last_name' => $member->last_name,
- 'email' => $member->email,
- 'username' => ($member->is_registered()) ? $member->user->username : null,
- 'mobile_number' => $member->mobile_number,
- 'mobile_country_code' => $member->country_code,
- 'created_at' => $member->created_at,
- 'updated_at' => $member->updated_at,
- 'documents_total' => $total_documents,
- 'certificates_total' => $total_certificates,
- 'image_key' => rtrim(strtr(base64_encode($member->image_key), '+/', '-_'), '=')
- )));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function records_member_documents_get($member_id, $from = null, $limit = null, $page_number = 1) {
- if($limit == null) $limit = $this->config->item('mobile_api_pagination_limit');
- if($from == null) {
- $from = date("Y-m-d H:i:s", 0);
- } else {
- $from = urldecode($from);
- }
- $from = date("Y-m-d H:i:s", strtotime($from)+1);
- try {
- $requesting_member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- if(!$requesting_member->is_trainer() && !$requesting_member->is_admin() && !$requesting_member->is_super_admin() && !$requesting_member->is_site_manager()) {
- return $this->error_response("User roles not valid");
- }
- $member = Member::find_valid_registered_by_id(
- $member_id
- );
- $organisation = Organisation::find_valid_by_id(
- $this->current_organisation_id
- );
- $page = new Page();
- $page->set_per_page($limit);
- $page->set_current_page_number($page_number);
- $document_search = new MemberDocumentSearch();
- $document_search->set_page($page)
- ->set_date_filter('updated')
- ->set_date_from($from)
- ->set_member($member);
- $document_search->execute();
- $results = array();
- $l = $document_search->get_row_per_current_page();
- for($i = 0; $i < $l; $i++){
- $member_document = $document_search[$i];
- $document = $member_document->document;
- $document_details = array(
- 'id' => $document->id,
- 'name' => $document->name,
- 'created_at' => $document->created_at,
- 'updated_at' => $document->updated_at,
- 'is_deleted' => $document->is_deleted,
- 'is_required' => $document->is_required,
- 'is_active' => $document->is_active
- );
- $member_document_details = array(
- 'id' => $member_document->id,
- 'created_at' => $member_document->created_at,
- 'updated_at' => $member_document->updated_at,
- 'is_deleted' => $member_document->is_deleted,
- 'is_active' => $member_document->is_active,
- 'is_expired' => $member_document->is_expired,
- 'expires_at' => $member_document->expires_at,
- 'document_key' => rtrim(strtr(base64_encode($member_document->document_key), '+/', '-_'), '='),
- 'document_id' => $member_document->document_id,
- 'document' => $document_details,
- );
- array_push($results, $member_document_details);
- }
- return $this->response(array('success' => 'true', 'total_rows' => (int) $l, 'result' => $results));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function records_member_certificates_get($member_id, $from = null, $limit = null, $page_number = 1) {
- if($limit == null) $limit = $this->config->item('mobile_api_pagination_limit');
- if($from == null) {
- $from = date("Y-m-d H:i:s", 0);
- } else {
- $from = urldecode($from);
- }
- $from = date("Y-m-d H:i:s", strtotime($from)+1);
- try {
- $requesting_member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- if(!$requesting_member->is_trainer() && !$requesting_member->is_admin() && !$requesting_member->is_super_admin() && !$requesting_member->is_site_manager()) {
- return $this->error_response("User roles not valid");
- }
- $member = Member::find_valid_registered_by_id(
- $member_id
- );
- $organisation = Organisation::find_valid_by_id(
- $this->current_organisation_id
- );
- $page = new Page();
- $page->set_per_page($limit);
- $page->set_current_page_number($page_number);
- $cert_search = new EnrolmentMobileFilteredSearch();
- $cert_search->set_page($page)
- ->set_order('updated_at', 'DESC')
- ->set_is_completed(1)
- ->set_is_successful(1)
- ->set_has_certificate(1)
- ->set_is_active(1)
- ->set_is_deleted(0)
- ->set_is_course_active(1)
- ->set_is_course_deleted(0)
- ->set_date_filter('updated')
- ->set_date_from($from)
- ->set_member($member)
- ->set_organisation($member->organisation);
- $cert_search->execute();
- $results = array();
- $l = $cert_search->get_row_per_current_page();
- for($i = 0; $i < $l; $i++){
- $cert = $cert_search[$i];
- $course = $cert->course;
- $course_details = array(
- 'id' => $course->id,
- 'created_at' => $course->created_at,
- 'updated_at' => $course->updated_at,
- 'name' => $course->name,
- 'is_active' => $course->is_active,
- 'is_deleted' => $course->is_deleted,
- 'module_count' => $course->module_count,
- 'has_certificate' => $course->has_certificate,
- 'expiry_months' => $course->expiry_months
- );
- $cert_details = array(
- 'id' => $cert->id,
- 'created_at' => $cert->created_at,
- 'updated_at' => $cert->updated_at,
- 'started_at' => $cert->started_at,
- 'completed_at' => $cert->completed_at,
- 'succeeded_at' => $cert->succeeded_at,
- 'is_started' => $cert->is_started,
- 'is_completed' => $cert->is_completed,
- 'is_successful' => $cert->is_successful,
- 'is_failed' => $cert->is_failed,
- 'is_manual' => $cert->is_manual,
- 'is_active' => $cert->is_active,
- 'is_deleted' => $cert->is_deleted,
- 'expire_at' => $cert->expire_at,
- 'is_expired' => $cert->is_expired,
- 'course_id' => $cert->course_id,
- 'course' => $course_details,
- );
- array_push($results, $cert_details);
- }
- return $this->response(array('success' => 'true', 'total_rows' => (int) $l, 'result' => $results));
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- public function image_get($key, $width = null, $height = null) {
- try {
- $member = Member::find_valid_registered_by_id(
- $this->member_id
- );
- $key = base64_decode(str_pad(strtr($key, '-_', '+/'), strlen($key) % 4, '=', STR_PAD_RIGHT));
- $ext = substr(strrchr($key,'.'),1);
- $image_temp_name = 'member_'.$member->id.'_at_'.time().'_image'.$ext;
- $image_temp = new SplFileObject('/tmp/'.$image_temp_name, 'w+');
- $key = new AcademyHQ\S3\Key($key);
- $aws = \Aws\Common\Aws::factory(APPPATH.'config/aws.php');
- $s3_client = $aws->get('S3');
- $image_download = new \AcademyHQ\S3\Image\Factory($s3_client, AWS_S3_ASSETS_BUCKET);
- $image = $image_download->get_by_key($key, $image_temp);
- if(((isset($width) && $width != -1) && $height == -1)) {
- $resizer_nocrop = new \AcademyHQ\S3\Image\ResizerWithoutCropping($image);
- $info = @getimagesize($image->get_image()->getRealPath());
- if($width < $info[0]) {
- $resizer_nocrop->set_width($width);
- $resizer_nocrop->set_height($info[1]*($width/$info[0]));
- }
- $display_file = $resizer_nocrop->resize_image();
- } else {
- $resizer = new \AcademyHQ\S3\Image\Resizer($image);
- if(isset($width) && $width != -1) {
- $resizer->set_width($width);
- }
- if(isset($height) && $height != -1) {
- $resizer->set_height($height);
- }
- $display_file = $resizer->resize_image();
- }
- //header('HTTP/1.1: ' . 200);
- //header('Status: ' . 200);
- header("Content-Type: image/".$ext);
- //header("Content-Length: " . $display_file->getSize());
- $display_file->fpassthru();
- $image_temp = null;
- unlink('/tmp/'.$image_temp_name);
- } catch (Exception $e) {
- return $this->error_response($e->getMessage());
- }
- }
- }
Add Comment
Please, Sign In to add comment