UnknownSec Bypass
403
:
/
mnt
/
lmsestudio-instance-vol002
/
lms_e68102a66e2a
/
app
/
Services
/
Admin
/ [
drwxr-xr-x
]
Menu
Upload
Mass depes
Mass delete
Terminal
Info server
About
name :
CourseServices.php
<?php namespace EstudioLMS\Services\Admin; use Carbon\Carbon; use EstudioLMS\Events\TicketNotification; use EstudioLMS\Repositories\Auth\UserRepository; use EstudioLMS\Repositories\Courses\Course\CourseRepository; use EstudioLMS\Repositories\Courses\Course\CourseResourceRepository; use EstudioLMS\Repositories\Courses\Course\SupportMaterialRepository; use EstudioLMS\Repositories\Courses\Resources\QuizInterface; use EstudioLMS\Repositories\Financial\PlanRepository; use EstudioLMS\Repositories\Ticket\TicketMessageRepository; use EstudioLMS\Repositories\Ticket\TicketRepository; use File; use Illuminate\Contracts\Auth\Guard; use Illuminate\Http\Request; use Storage; /** * Class CourseServices * @package EstudioLMS\Services\Admin */ class CourseServices { /** * @var CourseRepository */ private $course; /** * @var PlanRepository */ private $plan; /** * @var SupportMaterialRepository */ private $supportMaterialRepository; /** * @var ConfigurationServices */ private $configurationServices; /** * @var Guard */ private $auth; /** * @var UserRepository */ private $userRepository; /** * @var TicketRepository */ private $ticketRepository; /** * @var TicketMessageRepository */ private $ticketMessageRepository; /** * @var CourseResourceRepository */ private $courseResourceRepository; /** * @var QuizInterface */ private $quiz; /** * LessonServices constructor. * * @param CourseRepository $course * @param PlanRepository $plan * @param SupportMaterialRepository $supportMaterialRepository * @param ConfigurationServices $configurationServices * @param Guard $auth * @param UserRepository $userRepository * @param TicketRepository $ticketRepository * @param TicketMessageRepository $ticketMessageRepository * @param CourseResourceRepository $courseResourceRepository * @param QuizInterface $quiz */ public function __construct( CourseRepository $course, PlanRepository $plan, SupportMaterialRepository $supportMaterialRepository, ConfigurationServices $configurationServices, Guard $auth, UserRepository $userRepository, TicketRepository $ticketRepository, TicketMessageRepository $ticketMessageRepository, CourseResourceRepository $courseResourceRepository, QuizInterface $quiz ) { $this->course = $course; $this->plan = $plan; $this->supportMaterialRepository = $supportMaterialRepository; $this->configurationServices = $configurationServices; $this->auth = $auth; $this->userRepository = $userRepository; $this->ticketRepository = $ticketRepository; $this->ticketMessageRepository = $ticketMessageRepository; $this->courseResourceRepository = $courseResourceRepository; $this->quiz = $quiz; } /** * @param Request $request * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException */ public function storeCourse(Request $request) { $data = $request->all(); if ($request->hasFile('main_image')) { if ($request->file('main_image')->isValid()) { $data['main_image'] = uniqid(str_random(20)) . '.' . $request->file('main_image')->getClientOriginalExtension(); Storage::disk('course_image')->put($data['main_image'], File::get($request->file('main_image'))); } } else { unset($data['main_image']); } if ($request->hasFile('cover_image')) { if ($request->file('cover_image')->isValid()) { $data['cover_image'] = uniqid(str_random(20)) . '.' . $request->file('cover_image')->getClientOriginalExtension(); Storage::disk('course_image')->put($data['cover_image'], File::get($request->file('cover_image'))); } } else { unset($data['cover_image']); } $data['is_free'] = false; if ($data['plan_course'] == $this->plan->freeDuration()) { $data['is_free'] = true; } //$data['slug'] = str_slug($data['name'], '-'); $config = $this->configurationServices->configuration(); if ($config['moderate_teacher_create_edit_course'] && $this->auth->user()->isType('teacher')) { $data['published'] = false; } else { if (!isset($data['published'])) { $data['published'] = false; } else { $data['published'] = true; } } if (empty($data['using_boleto'])) { $data['using_boleto'] = false; } else { $data['using_boleto'] = true; } if (empty($data['debit_registration'])) { $data['debit_registration'] = false; } else { $data['debit_registration'] = true; } //$data['description'] = utf8_encode($data['description']); //testar $data['description'] = preg_replace('/[\x00-\x1F\x7F\xA0]/u', '', $data['description']); $created = $this->course->create($data); if ($data['is_free'] == false) { foreach ($data['plan'] as $key => $plan) { $default = $plan == $data['plan_course']; $price = str_replace(',', '.', str_replace('.', '', $data['value_' . $plan])); $registration = 0.00; if (isset($data['registration_' . $plan])) { $registration = str_replace(',', '.', str_replace('.', '', $data['registration_' . $plan])); } $created->plans()->attach( [$plan => [ 'price' => $price, 'default' => $default, 'registration' => $registration, 'debit' => $data['debit_' . $plan] ?? 0, 'created_at' => Carbon::now(), 'updated_at' => Carbon::now() ] ]); } } else { $created->plans()->attach([$data['duration'] => ['price' => 0, 'default' => true]]); } if (isset($data['gateways'])) { foreach ($data['gateways'] as $key => $gateway) { $created->gateways()->attach( [ $gateway => [ 'installments' => $data['installments_' . $gateway] ] ] ); } } /*if (isset($data['material']['description'])) { $data['material']['published'] = isset($data['material']['published']) ? 1 : 0; $data['material']['price'] = str_replace(',', '.', str_replace('.', '', $data['material']['price'])); $data['material']['weight'] = str_replace(',', '.', str_replace('.', '', $data['material']['weight'])); $data['material']['course_id'] = $created['id']; $this->supportMaterialRepository->create($data['material']); }*/ $createMsg = trans('admin_course.msgCourseFinalized'). ' ' . $data['name'] . ' ' . trans('admin_course.msgCourseFinalized2'); $createMsg .= trans('admin_course.msgCourseFinalized3'); $createMsg .= trans('admin_course.msgCourseFinalized4'); $createMsg .= trans('admin_course.msgCourseFinalized5'); $createMsg .= '<p>'; $createMsg .= '<a href="' . route('admin.courses.lessons.index', $created['id']) . '" class="btn btn-default btn-lg">'; $createMsg .= trans('admin_course.msgCourseFinalized6'); flash()->message($createMsg); if ($config['moderate_teacher_create_edit_course'] && $this->auth->user()->isType('teacher')) { $subject = trans('admin_course.subjectModerateTeacher'); $message = trans('admin_course.msgModerateTeacher') . ' ' . $this->auth->user()->name . trans('admin_course.msgModerateTeacher2') . ' ' . $created['name'] . trans('admin_course.msgModerateTeacher2-5'); $message .= trans('admin_course.msgModerateTeacher3') . ' <a href="' . route('admin.courses.course.edit', $created['id']) . '">' . trans('admin_course.msgModerateTeacher4') . '</a>'; $this->notifyCreatedCourse($created['id'], $subject, $message); } } /** * @param Request $request * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException */ public function updateCourse(Request $request) { $data = $request->all(); $course = $this->course->find($data['id']); if ($request->hasFile('main_image')) { if ($request->file('main_image')->isValid()) { $data['main_image'] = uniqid(str_random(20)) . '.' . $request->file('main_image')->getClientOriginalExtension(); Storage::disk('course_image')->put($data['main_image'], File::get($request->file('main_image'))); if (!empty($course['main_image'])) { if (Storage::disk('course_image')->exists($course['main_image'])) { Storage::disk('course_image')->delete($course['main_image']); } } } } else { unset($data['main_image']); } if ($request->hasFile('cover_image')) { if ($request->file('cover_image')->isValid()) { $data['cover_image'] = uniqid(str_random(20)) . '.' . $request->file('cover_image')->getClientOriginalExtension(); Storage::disk('course_image')->put($data['cover_image'], File::get($request->file('cover_image'))); if (!empty($course['cover_image'])) { if (Storage::disk('course_image')->exists($course['cover_image'])) { Storage::disk('course_image')->delete($course['cover_image']); } } } } else { unset($data['cover_image']); } $data['is_free'] = false; if (isset($data['duration'])) { $data['is_free'] = true; } $config = $this->configurationServices->configuration(); if ($config['moderate_teacher_create_edit_course'] && $this->auth->user()->isType('teacher')) { $data['published'] = false; } else { if (!isset($data['published'])) { $data['published'] = false; } else { $data['published'] = true; } } if (empty($data['using_boleto'])) { $data['using_boleto'] = false; } else { $data['using_boleto'] = true; } if (empty($data['debit_registration'])) { $data['debit_registration'] = false; } else { $data['debit_registration'] = true; } //$data['description'] = utf8_encode($data['description']); // Testar $data['description'] = preg_replace('/[\x00-\x1F\x7F\xA0]/u', '', $data['description']); $updated = $this->course->update($data, $data['id']); if ($data['is_free'] == false) { $syncArr = []; foreach ($data['plan'] as $key => $plan) { $default = $plan == $data['plan_course']; $price = str_replace(',', '.', str_replace('.', '', $data['value_' . $plan])); $registration = 0.00; if (isset($data['registration_' . $plan])) { $registration = str_replace(',', '.', str_replace('.', '', $data['registration_' . $plan])); } $syncArr += [ $plan => [ 'price' => $price, 'default' => $default, 'registration' => $registration, 'debit' => isset($data['debit_' . $plan]), 'updated_at' => Carbon::now() ] ]; } $updated->plans()->sync($syncArr); } else { $updated->plans()->sync( [ $data['duration'] => [ 'price' => 0, 'default' => true, 'updated_at' => Carbon::now() ] ] ); } $syncArr = []; if (isset($data['gateways'])) { foreach ($data['gateways'] as $key => $gateway) { $syncArr += [ $gateway => [ 'installments' => $data['installments_' . $gateway] ] ]; } $updated->gateways()->sync($syncArr); } else { $updated->gateways()->detach(); } /*if (isset($data['material']['description'])) { $data['material']['published'] = isset($data['material']['published']) ? 1 : 0; $data['material']['price'] = str_replace(',', '.', str_replace('.', '', $data['material']['price'])); $data['material']['weight'] = str_replace(',', '.', str_replace('.', '', $data['material']['weight'])); if ($updated->material == null) { $data['material']['course_id'] = $updated['id']; $this->supportMaterialRepository->create($data['material']); } else { $this->supportMaterialRepository->update($data['material'], $updated->material->id); } }*/ $msg = ''; if($data['average'] > 0) { $checkForAverages = \DB::table('course_resources') ->where('consists_average', 1) ->where('course_id', $data['id']) ->count(); if($checkForAverages <= 0) { $msg = trans('admin_course.msgAverage'); } } flash()->message(trans('admin_course.msgCourseUpdate') . $msg); if ($config['moderate_teacher_create_edit_course'] && $this->auth->user()->isType('teacher')) { $subject = trans('admin_course.subjectModerateTeacherEdit'); $message = trans('admin_course.msgModerateTeacherEdit') . ' ' . $this->auth->user()->name . trans('admin_course.msgModerateTeacherEdit2') . ' '. $updated['name'] . trans('admin_course.msgModerateTeacherEdit3'); $message .= trans('admin_course.msgModerateTeacherEdit4') . '<a href="' . route('admin.courses.course.edit', $updated['id']) . '">' . trans('admin_course.msgModerateTeacherEdit5') . '</a>'; $this->notifyEditedCourse($updated['id'], $subject, $message); } } /** * @param $courseId * @param $subject * @param $message * @param int $typeId */ private function notifyCreatedCourse($courseId, $subject, $message, $typeId = 6) { $GUID = md5(uniqid(rand(), true)); $admin = $this->userRepository->userByRole('superadmin'); $toId = $admin['id']; $newTicket = [ 'GUID' => $GUID, 'ticket_type_id' => $typeId, 'course_id' => $courseId, 'ticket_status_id' => 1, 'subject' => $subject ]; $ticket = $this->ticketRepository->create($newTicket); $newMessage= [ 'ticket_id' => $ticket['id'], 'from_id' => $this->auth->user()['id'], 'to_id' => $toId, 'message' => $message, 'attachment' => null ]; $message = $this->ticketMessageRepository->create($newMessage); $showRoute = 'admin.ticket.show'; $notify = [ 'link' => route($showRoute, $ticket['GUID']), 'course_id' => $ticket['course_id'], 'from_id' => $message['from_id'], 'to_id' => $message['to_id'], 'message' => $message['message'], 'attachment' => !empty($message['attachment']), 'url' => route('index') ]; \Event::fire(new TicketNotification($notify, $ticket['ticket_type_id'], 'O', 'T')); } /** * @param $courseId * @param $subject * @param $message */ private function notifyEditedCourse($courseId, $subject, $message) { $admin = $this->userRepository->userByRole('superadmin'); $toId = $admin['id']; $exists = $this->ticketRepository->lookingForTicket($courseId); if ($exists) { $newMessage = [ 'ticket_id' => $exists['id'], 'from_id' => $this->auth->user()['id'], 'to_id' => $toId, 'message' => $message, 'attachment' => false, ]; $message = $this->ticketMessageRepository->create($newMessage); $this->ticketRepository->update(['ticket_status_id' => 1], $exists['id']); $notify = [ 'link' => route('admin.ticket.show', $exists['GUID']), 'course_id' => $exists['course_id'], 'from_id' => $message['from_id'], 'to_id' => $message['to_id'], 'message' => $message['message'], 'attachment' => !empty($message['attachment']), 'url' => route('index') ]; \Event::fire(new TicketNotification($notify, $exists['ticket_type_id'], 'R', 'T')); } else { $this->notifyCreatedCourse($courseId, $subject, $message, 7); } } }
Copyright © 2026 - UnknownSec