private function findMembershipsByUserId($user_id, $semester) { $memberships = \SimpleORMapCollection::createFromArray(\CourseMember::findBySQL('user_id = ? ORDER BY mkdate ASC', array($user_id))); // filter by semester if ($semester) { $memberships = $memberships->filter(function ($m) use($semester) { $course = $m->course; return $course->start_time == $semester->beginn || $course->start_time <= $semester->beginn && ($course->duration_time == -1 || $semester->beginn <= $course->end_time); }); } return $memberships; }