Ejemplo n.º 1
0
 public function onUserUnfollowed(ServiceEvent $event)
 {
     $friend = $event->getSubject();
     $user = $this->getUserService()->getUser($friend['fromId']);
     $message = array('userId' => $user['id'], 'userName' => $user['nickname'], 'opration' => 'unfollow');
     $this->getNotificationService()->notify($friend['toId'], 'user-follow', $message);
 }
Ejemplo n.º 2
0
 public function onPostDelete(ServiceEvent $event)
 {
     $post = $event->getSubject();
     if ($post['parentId'] == 0) {
         $this->getArticleService()->count($post['targetId'], 'postNum', -1);
     }
 }
Ejemplo n.º 3
0
 public function onAnnouncementCreated(ServiceEvent $event)
 {
     $announcement = $event->getSubject();
     if ($announcement['targetType'] == 'global') {
         $tuiClient = new EdusohoTuiClient();
         $result = $tuiClient->sendAnnouncement($announcement);
     }
 }
 public function onCourseTeacherUpdate(ServiceEvent $event)
 {
     $context = $event->getSubject();
     $courseId = $context["courseId"];
     $findClassroomsByCourseId = $this->getClassroomService()->findClassroomIdsByCourseId($courseId);
     foreach ($findClassroomsByCourseId as $key => $value) {
         $this->getClassroomService()->updateClassroomTeachers($value);
     }
 }
Ejemplo n.º 5
0
 public function onTestpaperFinish(ServiceEvent $event)
 {
     $testpaper = $event->getSubject();
     $testpaperResult = $event->getArgument('testpaperResult');
     //TODO need to use targetHelper class for consistency
     $target = explode('-', $testpaper['target']);
     $course = $this->getCourseService()->getCourse($target[1]);
     $this->getStatusService()->publishStatus(array('type' => 'finished_testpaper', 'objectType' => 'testpaper', 'objectId' => $testpaper['id'], 'private' => $course['status'] == 'published' ? 0 : 1, 'properties' => array('testpaper' => $this->simplifyTestpaper($testpaper), 'result' => $this->simplifyTestpaperResult($testpaperResult))));
 }
 public function onPostDelete(ServiceEvent $event)
 {
     $post = $event->getSubject();
     $this->getClassroomService()->waveClassroom($post['targetId'], 'postNum', 0 - $event->getArgument('deleted'));
     $adoptedPostCount = $this->getThreadService()->searchPostsCount(array('threadId' => $post['threadId'], 'adopted' => 1));
     if (empty($adoptedPostCount)) {
         $this->getThreadService()->cancelThreadSolved($post['threadId']);
     }
 }
Ejemplo n.º 7
0
 public function onTestPaperFinished(ServiceEvent $event)
 {
     $testpaper = $event->getSubject();
     $testpaperResult = $event->getArgument('testpaperResult');
     $target = explode('-', $testpaperResult['target']);
     if (isset($target[3])) {
         $lesson = $this->getCourseService()->getLesson($target[3]);
         $targetObject = array('id' => $lesson['id'], 'type' => 'testpaper', 'passedStatus' => $testpaperResult['passedStatus'], 'userId' => $testpaperResult['userId']);
         $this->_finishTask('studyplan', $targetObject);
     }
 }
Ejemplo n.º 8
0
 public function before(ServiceEvent $event)
 {
     $currentUser = ServiceKernel::instance()->getCurrentUser();
     if ($currentUser->isAdmin() || $currentUser->isSuperAdmin() || $currentUser->isTeacher()) {
         return;
     }
     $currentIp = $currentUser->currentIp;
     if (!($this->getTokenBucketService()->hasToken($currentIp, 'thread') && $this->getTokenBucketService()->hasToken($currentUser['id'], 'threadLoginedUser'))) {
         $event->stopPropagation();
     }
 }
Ejemplo n.º 9
0
 public function onMessageSended(ServiceEvent $event)
 {
     $message = $event->getSubject();
     $user = $this->getUserService()->getUser($message['fromId']);
     $largeAvatar = empty($user['largeAvatar']) ? '' : $this->getFileService()->parseFileUri($user['largeAvatar']);
     $message['title'] = $user['nickname'];
     $host = 'http://' . $_SERVER['HTTP_HOST'];
     $message['custom'] = json_encode(array('fromId' => $message['fromId'], 'nickname' => $user['nickname'], 'imgUrl' => empty($largeAvatar) ? $host . '/assets/img/default/avatar.png' : $host . '/files/' . $largeAvatar['path'], 'typeMsg' => $message['type'], 'typeBusiness' => in_array('ROLE_TEACHER', $user['roles']) ? 'teacher' : 'friend', 'createdTime' => time()));
     $tuiClient = new EdusohoTuiClient();
     $result = $tuiClient->sendMessage($message);
 }
Ejemplo n.º 10
0
 public function onOrderPaid(ServiceEvent $event)
 {
     $order = $event->getSubject();
     if ($order['coinAmount'] > 0 || $order['amount'] > 0) {
         $record = $this->getInviteRecordService()->getRecordByInvitedUserId($order['userId']);
         if (!empty($record) && $record['inviteUserCardId'] == null) {
             $inviteCoupon = $this->getCouponService()->generateInviteCoupon($record['inviteUserId'], 'pay');
             if (!empty($inviteCoupon)) {
                 $this->getInviteRecordService()->addInviteRewardRecordToInvitedUser($order['userId'], array('inviteUserCardId' => $inviteCoupon['id']));
             }
         }
     }
 }
Ejemplo n.º 11
0
 public function onTestpaperItemUpdate(ServiceEvent $event)
 {
     $context = $event->getSubject();
     $argument = $context['argument'];
     $testpaper = $context['testpaper'];
     $testpaperTarget = explode('-', $testpaper['target']);
     $courseId = $testpaperTarget[1];
     $courseIds = ArrayToolkit::column($this->getCourseService()->findCoursesByParentIdAndLocked($courseId, 1), 'id');
     if ($courseIds) {
         $lockedTarget = '';
         foreach ($courseIds as $courseId) {
             $lockedTarget .= "'course-" . $courseId . "',";
         }
         $lockedTarget = "(" . trim($lockedTarget, ',') . ")";
         $testpaperIds = ArrayToolkit::column($this->getTestpaperService()->findTestpapersByCopyIdAndLockedTarget($testpaper['id'], $lockedTarget), 'id');
         foreach ($testpaperIds as $testpaperId) {
             $this->getTestpaperService()->updateTestpaperItems($testpaperId, $argument);
         }
     }
 }
Ejemplo n.º 12
0
 public function onCourseMemberDelete(ServiceEvent $event)
 {
     $member = $event->getSubject();
     $courseIds = ArrayToolkit::column($this->getCourseService()->findCoursesByParentIdAndLocked($member['courseId'], 1), 'id');
     if ($courseIds) {
         foreach ($courseIds as $courseId) {
             $this->getCourseService()->deleteMemberByCourseIdAndUserId($courseId, $member['userId']);
         }
     }
 }
Ejemplo n.º 13
0
 public function onQuestionDelete(ServiceEvent $event)
 {
     $question = $event->getSubject();
     $questionTarget = explode('/', $question['target']);
     $questionCourseTarget = explode('-', $questionTarget[0]);
     $courseId = $questionCourseTarget[1];
     $courseIds = ArrayToolkit::column($this->getCourseService()->findCoursesByParentIdAndLocked($courseId, 1), 'id');
     if ($courseIds) {
         $num = count(explode('/', $question['target']));
         if ($num > 1) {
             $questionLessonTarget = explode('-', $questionTarget[1]);
             $lessonId = $questionLessonTarget[1];
             $lessonIds = ArrayToolkit::column($this->getCourseService()->findLessonsByCopyIdAndLockedCourseIds($lessonId, $courseIds), 'id');
         }
         $lockedTarget = '';
         foreach ($courseIds as $key => $courseId) {
             if ($num > 1) {
                 $lockedTarget .= "'course-" . $courseId . "/lesson-" . $lessonIds[$key] . "',";
             } else {
                 $lockedTarget .= "'course-" . $courseId . "',";
             }
         }
         $lockedTarget = "(" . trim($lockedTarget, ',') . ")";
         $questionIds = ArrayToolkit::column($this->getQuestionService()->findQuestionsByCopyIdAndLockedTarget($question['id'], $lockedTarget), 'id');
         foreach ($questionIds as $questionId) {
             $this->getQuestionService()->deleteQuestion($questionId);
         }
     }
 }
 public function onCourseLessonReplay(ServiceEvent $event)
 {
     $courseLessonReplay = $event->getSubject();
     $courseIds = ArrayToolkit::column($this->getCourseService()->findCoursesByParentIdAndLocked($courseLessonReplay['courseId'], 1), 'id');
     $lessonIds = ArrayToolkit::column($this->getCourseService()->findLessonsByParentIdAndLockedCourseIds($courseLessonReplay['lessonId'], $courseIds), 'id');
     $courseLessonReplay = array('title' => $courseLessonReplay['title'], 'replayId' => $courseLessonReplay['replayId'], 'userId' => $courseLessonReplay['userId']);
     foreach ($courseIds as $key => $courseId) {
         $courseLessonReplay['courseId'] = $courseId;
         $courseLessonReplay['lessonId'] = $lessonIds[$key];
         $courseLessonReplay['createdTime'] = time();
         $this->getCourseService()->addCourseLessonReplay($courseLessonReplay);
     }
 }
 public function onChapterUpdate(ServiceEvent $event)
 {
     $context = $event->getSubject();
     $argument = $context['argument'];
     if (isset($argument['parentId'])) {
         unset($argument['parentId']);
     }
     $chapter = $context['chapter'];
     $courseIds = ArrayToolkit::column($this->getCourseService()->findCoursesByParentIdAndLocked($chapter['courseId'], 1), 'id');
     if ($courseIds) {
         $chapterIds = ArrayToolkit::column($this->getCourseService()->findChaptersByCopyIdAndLockedCourseIds($chapter['id'], $courseIds), 'id');
         foreach ($chapterIds as $key => $chapterId) {
             $argument['courseId'] = $courseIds[$key];
             $this->getCourseService()->updateChapter($courseIds[$key], $chapterId, $argument);
         }
     }
 }
 public function onCourseLessonStart(ServiceEvent $event)
 {
     $lesson = $event->getSubject();
     $course = $event->getArgument('course');
     $learn = $event->getArgument('learn');
     $target = $this->getTarget('course', $learn['courseId']);
     $from = array('type' => 'course', 'id' => $learn['courseId'], 'image' => $target['image']);
     $to = array('type' => 'user', 'id' => $learn['userId']);
     $body = array('type' => 'lesson.start', 'lessonId' => $learn['lessonId'], 'courseId' => $learn['courseId'], 'learnStartTime' => $learn['startTime']);
     $this->push($course['title'], $lesson['title'], $from, $to, $body);
 }
Ejemplo n.º 17
0
 public function onCourseLessonDelete(ServiceEvent $event)
 {
     $context = $event->getSubject();
     $lesson = $context['lesson'];
     $jobs = $this->getCrontabService()->findJobByTargetTypeAndTargetId('lesson', $lesson['id']);
     if ($jobs) {
         $this->deleteJob($jobs);
     }
 }
Ejemplo n.º 18
0
 public function onCoursePictureUpdate(ServiceEvent $event)
 {
     $context = $event->getSubject();
     $argument = $context['argument'];
     $course = $context['course'];
     $courseIds = ArrayToolkit::column($this->getCourseService()->findCoursesByParentIdAndLocked($course['id'], 1), 'id');
     if ($courseIds) {
         foreach ($courseIds as $courseId) {
             $this->getCourseService()->changeCoursePicture($courseId, $argument);
         }
     }
 }
Ejemplo n.º 19
0
 public function onTestpaperItemDelete(ServiceEvent $event)
 {
     $context = $event->getSubject();
     $item = $context['item'];
     $testpaper = $context['testpaper'];
     $testpaperTarget = explode('-', $testpaper['target']);
     $courseId = $testpaperTarget[1];
     $courseIds = ArrayToolkit::column($this->getCourseService()->findCoursesByParentIdAndLocked($courseId, 1), 'id');
     if ($courseIds) {
         $lockedTarget = '';
         foreach ($courseIds as $courseId) {
             $lockedTarget .= "'course-" . $courseId . "',";
         }
         $lockedTarget = "(" . trim($lockedTarget, ',') . ")";
         $testpaperIds = ArrayToolkit::column($this->getTestpaperService()->findTestpapersByPIdAndLockedTarget($testpaper['id'], $lockedTarget), 'id');
         //重新生题,删除试卷已存在的题目
         if (!$item) {
             foreach ($testpaperIds as $testpaperId) {
                 $this->getTestpaperService()->deleteTestpaperItemByTestId($testpaperId);
             }
             return;
         }
         $testpaperItemIds = ArrayToolkit::column($this->getTestpaperService()->findTestpaperItemsByPIdAndLockedTestIds($item['id'], $testpaperIds), 'id');
         foreach ($testpaperItemIds as $testpaperItemId) {
             $this->getTestpaperService()->deleteTestpaperItem($testpaperItemId);
         }
     }
 }
 public function onClassroomGuest(ServiceEvent $event)
 {
     $classroom = $event->getSubject();
     $userId = $event->getArgument('userId');
     $this->getStatusService()->publishStatus(array('type' => 'become_auditor', 'classroomId' => $classroom['id'], 'objectType' => 'classroom', 'objectId' => $classroom['id'], 'private' => $classroom['status'] == 'published' ? 0 : 1, 'userId' => $userId, 'properties' => array('classroom' => $this->simplifyClassroom($classroom))));
 }
 public function onDiscountPass(ServiceEvent $event)
 {
     $discount = $event->getSubject();
     $from = array('type' => 'global');
     $to = array('type' => 'global');
     $body = array('type' => 'discount.' . $discount['type']);
     $content;
     switch ($discount['type']) {
         case 'free':
             $content = "【限时免费】";
             break;
         case 'discount':
             $content = "【限时打折】";
             break;
         default:
             $content = "【全站打折】";
             break;
     }
     $this->push('打折活动', $content . $discount['name'], $from, $to, $body);
 }
Ejemplo n.º 22
0
 public function onCourseNoteCancelLike(ServiceEvent $event)
 {
     $note = $event->getSubject();
     $this->getNoteService()->count($note['id'], 'likeNum', -1);
 }