public function userLibrary(User $user, Request $request)
 {
     $finder = $this->container->get('course_finder');
     $userCourses = $user->getUserCourses();
     $courseIds = array();
     $courseIdsByList = array();
     $coursesByLists = array();
     $listCounts = array();
     $lists = Filter::getUserList($request->query->all());
     foreach ($lists as $list) {
         $listCounts[$list] = 0;
         $courseIdsByList[$list] = array();
     }
     foreach ($userCourses as $userCourse) {
         $list = $userCourse->getList();
         if (in_array($list['slug'], $lists)) {
             $courseIds[] = $userCourse->getCourse()->getId();
             $listCounts[$list['slug']]++;
             $courseIdsByList[$list['slug']][] = $userCourse->getCourse()->getId();
         }
     }
     extract($this->getInfoFromParams($request->query->all()));
     foreach ($lists as $list) {
         if (!empty($courseIdsByList[$list])) {
             $coursesByLists[$list] = $finder->byCourseIds($courseIdsByList[$list], $filters, $sort, -1);
         } else {
             $coursesByLists[$list] = array();
         }
     }
     $courses = $finder->byCourseIds($courseIds, $filters, $sort, $pageNo);
     extract($this->getFacets($courses));
     // Get the search terms
     $userSession = $this->container->get('user_session');
     $searchTerms = $userSession->getMTSearchTerms();
     $showInstructions = false;
     if (empty($searchTerms) && empty($lists)) {
         $showInstructions = true;
     }
     // Get Reviewed Courses
     $reviewedCourseIds = array();
     foreach ($user->getReviews() as $review) {
         $reviewedCourseIds[] = $review->getCourse()->getId();
     }
     $reviewedCourses = array();
     if (!empty($reviewedCourseIds)) {
         $reviewedCourses = $finder->byCourseIds($reviewedCourseIds);
     }
     return compact('allSubjects', 'allLanguages', 'allSessions', 'courses', 'sortField', 'sortClass', 'pageNo', 'lists', 'listCounts', 'coursesByLists', 'showInstructions', 'searchTerms', 'reviewedCourses');
 }
Exemple #2
0
 /**
  * Delete the user
  * @param \ClassCentral\SiteBundle\Entity\User $user
  */
 public function deleteUser(\ClassCentral\SiteBundle\Entity\User $user)
 {
     $em = $this->container->get('doctrine')->getManager();
     $connection = $em->getConnection();
     $uid = $user->getId();
     $reviewUser = $em->getRepository('ClassCentralSiteBundle:User')->find(\ClassCentral\SiteBundle\Entity\User::REVIEW_USER_ID);
     if ($uid == \ClassCentral\SiteBundle\Entity\User::REVIEW_USER_ID || $uid == \ClassCentral\SiteBundle\Entity\User::SPECIAL_USER_ID) {
         throw new \Exception("Cannot delete user");
     }
     foreach ($user->getReviews() as $review) {
         if (!empty($review->getReview())) {
             $review->setUser($reviewUser);
             $em->persist($review);
             $em->flush();
         } else {
             $connection->exec("DELETE FROM reviews_feedback WHERE review_id=" . $review->getId());
             $connection->exec("DELETE FROM reviews_feedback_summary WHERE review_id=" . $review->getId());
         }
     }
     $tables = array('reviews', 'users_courses', 'users_fb', 'newsletters_subscriptions', 'profiles', 'mooc_tracker_courses', 'mooc_tracker_search_terms', 'reviews_feedback', 'user_preferences', 'follows');
     foreach ($tables as $table) {
         $connection->exec("DELETE FROM {$table} WHERE user_id={$uid}");
     }
     // Delete user record
     $connection->exec("DELETE FROM users WHERE id={$uid}");
     return true;
 }