public function onTestpaperCreate(ServiceEvent $event)
 {
     $testpaper = $event->getSubject();
     $items = $event->getArgument('items');
     $id = $testpaper['id'];
     $testpaperTarget = explode('-', $testpaper['target']);
     $courseId = $testpaperTarget[1];
     $courseIds = ArrayToolkit::column($this->getCourseService()->findCoursesByParentIdAndLocked($courseId, 1), 'id');
     if ($courseIds) {
         $testpaper['pId'] = $testpaper['id'];
         unset($testpaper['id']);
         foreach ($courseIds as $courseId) {
             $testpaper['target'] = "course-" . $courseId;
             $addtestpaper = $this->getTestpaperService()->addTestpaper($testpaper);
             foreach ($items as $item) {
                 $item['pId'] = $item['id'];
                 unset($item['id']);
                 $item['testId'] = $addtestpaper['id'];
                 $this->getTestpaperService()->createTestpaperItem($item);
             }
         }
         $lockedTarget = '';
         foreach ($courseIds as $courseId) {
             $lockedTarget .= "'course-" . $courseId . "',";
         }
         $lockedTarget = "(" . trim($lockedTarget, ',') . ")";
         $testpaperIds = ArrayToolkit::column($this->getTestpaperService()->findTestpapersByPIdAndLockedTarget($id, $lockedTarget), 'id');
         $testpaper = $this->getTestpaperService()->getTestpaper($id);
         $fields = array("score" => $testpaper['score'], "itemCount" => $testpaper['itemCount'], "metas" => $testpaper['metas']);
         foreach ($testpaperIds as $testpaperId) {
             $this->getTestpaperService()->editTestpaper($testpaperId, $fields);
         }
     }
 }
 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']);
     }
 }
 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 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);
     }
 }
 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]);
     if ($course['parentId']) {
         $classroom = $this->getClassroomService()->findClassroomByCourseId($course['id']);
         $classroom = $this->getClassroomService()->getClassroom($classroom['classroomId']);
         if (array_key_exists('showable', $classroom) && $classroom['showable'] == 1) {
             $private = 0;
         } else {
             $private = 1;
         }
     }
     $this->getStatusService()->publishStatus(array('type' => 'finished_testpaper', 'objectType' => 'testpaper', 'objectId' => $testpaper['id'], 'private' => $course['status'] == 'published' ? 0 : 1, 'private' => $private == 0 ? 0 : 1, 'properties' => array('testpaper' => $this->simplifyTestpaper($testpaper), 'result' => $this->simplifyTestpaperResult($testpaperResult))));
 }
 public function onCourseNoteUpdate(ServiceEvent $event)
 {
     $note = $event->getSubject();
     $preStatus = $event->getArgument('preStatus');
     $classroom = $this->getClassroomService()->findClassroomByCourseId($note['courseId']);
     $course = $this->getCourseService()->getCourse($note['courseId']);
     if ($classroom && $note['status'] && !$preStatus) {
         $this->getClassroomService()->waveClassroom($classroom['classroomId'], 'noteNum', +1);
     }
     if ($classroom && !$note['status'] && $preStatus) {
         $this->getClassroomService()->waveClassroom($classroom['classroomId'], 'noteNum', -1);
     }
     if ($course && $note['status'] && !$preStatus) {
         $this->getCourseService()->waveCourse($note['courseId'], 'noteNum', +1);
     }
     if ($course && !$note['status'] && $preStatus) {
         $this->getCourseService()->waveCourse($note['courseId'], 'noteNum', -1);
     }
 }
 public function onOrderPaySuccess(ServiceEvent $event)
 {
     $order = $event->getSubject();
     $targetType = $event->getArgument('targetType');
     $smsType = 'sms_' . $targetType . '_buy_notify';
     if ($this->getSmsService()->isOpen($smsType)) {
         $userId = $order['userId'];
         $user = $this->getUserService()->getUser($userId);
         $parameters = array();
         $parameters['order_title'] = $order['title'];
         $parameters['order_title'] = StringToolkit::cutter($parameters['order_title'], 20, 15, 4);
         if ($targetType == 'coin') {
             $parameters['totalPrice'] = $order['amount'] . '元';
         } else {
             $parameters['totalPrice'] = $order['totalPrice'] . '元';
         }
         $description = $parameters['order_title'] . '成功回执';
         if (strlen($user['verifiedMobile']) != 0) {
             $this->getSmsService()->smsSend($smsType, array($userId), $description, $parameters);
         }
     }
 }
 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 onLessonFinish(ServiceEvent $event)
 {
     $lesson = $event->getSubject();
     $course = $event->getArgument('course');
     $private = $course['status'] == 'published' ? 0 : 1;
     if ($course['parentId']) {
         $classroom = $this->getClassroomService()->findClassroomByCourseId($course['id']);
         $classroom = $this->getClassroomService()->getClassroom($classroom['classroomId']);
         if (array_key_exists('showable', $classroom) && $classroom['showable'] == 1) {
             $private = 0;
         } else {
             $private = 1;
         }
     }
     $this->getStatusService()->publishStatus(array('type' => 'learned_lesson', 'courseId' => $course['id'], 'objectType' => 'lesson', 'objectId' => $lesson['id'], 'private' => $private, 'properties' => array('course' => $this->simplifyCousrse($course), 'lesson' => $this->simplifyLesson($lesson))));
 }
 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);
 }
 public function onCourseQuit(ServiceEvent $event)
 {
     $course = $event->getSubject();
     $userId = $event->getArgument('userId');
     $this->deleteGroupMember('course', $course['id'], $userId);
 }
 public function onLessonFinish(ServiceEvent $event)
 {
     $lesson = $event->getSubject();
     $course = $event->getArgument('course');
     $this->getStatusService()->publishStatus(array('type' => 'learned_lesson', 'courseId' => $course['id'], 'objectType' => 'lesson', 'objectId' => $lesson['id'], 'private' => $course['status'] == 'published' ? 0 : 1, 'properties' => array('course' => $this->simplifyCousrse($course), 'lesson' => $this->simplifyLesson($lesson))));
 }