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'); }
/** * 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; }