/**
  * Get Problems solved by user
  *
  * @param Request $r
  * @return Problems array
  * @throws InvalidDatabaseOperationException
  */
 public static function apiProblemsSolved(Request $r)
 {
     self::authenticateOrAllowUnauthenticatedRequest($r);
     $response = array();
     $response['problems'] = array();
     $user = self::resolveTargetUser($r);
     try {
         $db_results = ProblemsDAO::getProblemsSolved($user->getUserId());
     } catch (Exception $e) {
         throw new InvalidDatabaseOperationException($e);
     }
     if (!is_null($db_results)) {
         $relevant_columns = array('title', 'alias', 'submissions', 'accepted');
         foreach ($db_results as $problem) {
             if ($problem->getPublic() == 1) {
                 array_push($response['problems'], $problem->asFilteredArray($relevant_columns));
             }
         }
     }
     $response['status'] = 'ok';
     return $response;
 }