protected function shareBubble($bubbleId, $userId)
 {
     $user = $this->getUserMapper()->findById($userId);
     if (!$user) {
         return array('success' => false, 'error' => 'User not found');
     }
     $em = $this->getEntityManager();
     $bubbleRepo = $em->getRepository(Bubble::class);
     $bubble = $bubbleRepo->find($bubbleId);
     if (!$bubble) {
         return array('success' => false, 'error' => 'Bubble not found');
     }
     if (!$this->getBubblePermission()->canShare($bubble)) {
         return array('success' => false, 'error' => 'Not authorized');
     }
     $share = new BubbleShare();
     $share->setBubble($bubble)->setSharedWith($user);
     $em->persist($share);
     $em->flush($share);
     $isLinked = false;
     $courseParent = $this->findCourseParent($bubble);
     if ($courseParent) {
         $course = $this->findCourse($courseParent->getCourseroom(), $user);
         if ($this->createEdge($course, $bubble)) {
             $isLinked = true;
         }
     }
     if (!$isLinked) {
         $semesterParent = $this->findSemesterParent($bubble);
         if ($semesterParent) {
             $semester = $this->findSemester($semesterParent->getYear(), $semesterParent->getIsWinter(), $user);
             if (!$semester) {
                 $semester = new Semester();
                 $semester->setYear($semesterParent->getYear())->setIsWinter($semesterParent->getIsWinter())->setOwner($user);
                 $em->persist($semester);
                 $em->flush($semester);
             }
             if ($courseParent) {
                 $course = new Course();
                 $course->setCourseroom($courseParent->getCourseroom())->setTitle($courseParent->getTitle())->setOwner($user);
                 $em->persist($course);
                 $em->flush($course);
                 $this->createEdge($semester, $course);
                 $this->createEdge($course, $bubble);
             } else {
                 $this->createEdge($semester, $bubble);
             }
         }
     }
     return array('success' => true);
 }
Exemplo n.º 2
0
 protected function syncCourses()
 {
     $em = $this->getEntityManager();
     $courseRepo = $em->getRepository(Course::class);
     $l2p = $this->getClient();
     $owner = $this->getAuthService()->getIdentity();
     $response = $l2p->request('viewAllCourseInfo');
     $courseinfo = json_decode($response['output']);
     if ($response['code'] != 200) {
         return false;
     }
     $result = array('status' => true, 'new' => array());
     foreach ($courseinfo->dataSet as $course) {
         $found = $courseRepo->findOneBy(array('owner' => $owner, 'courseroom' => $course->uniqueid));
         if (!$found) {
             $newCourse = new Course();
             $newCourse->setCourseroom($course->uniqueid);
             $newCourse->setTitle($course->courseTitle);
             $newCourse->setOwner($owner);
             $em->persist($newCourse);
             $em->flush($newCourse);
             $semester = $this->findSemester($course->semester);
             $newEdge = new Edge();
             $newEdge->setFrom($semester)->setTo($newCourse);
             $em->persist($newEdge);
             $em->flush($newEdge);
             $result['new'][] = $newCourse->jsonSerialize();
         }
     }
     return $result;
 }