/** * * @param WOOOF $wo * @param string $requestorUserId = '' * @param bool $isUserLoggedIn * @param string $sortCriteria = '' * @param string $targetUserId = '' * @return array of movies */ public static function getMovies(WOOOF $wo, $requestorUserId = '', $isUserLoggedIn, $sortCriteria = '', $targetUserId = '') { $place = __CLASS__ . '::' . __FUNCTION__; $wo->debug("{$place}: Get Movies"); $movies = []; $movieElems = ['MUM_id', 'MUM_movieramaUserId', 'MUM_title', 'MUM_description', 'MUM_publishDateTime', 'MUM_noOfLikes', 'MUM_noOfHates', 'VUS_username', 'VUS_avatarImg', 'PPR_firstName', 'PPR_lastName']; $tblViewMovieRamaUserMovies = new WOOOF_dataBaseTable($wo->db, 'v_movierama_user_movies'); if (!$tblViewMovieRamaUserMovies->constructedOk) { return false; } //movies from all users if (!$wo->hasContent($targetUserId)) { //all movies without sorting filter if (!$wo->hasContent($sortCriteria)) { $result = $wo->db->query("SELECT * FROM v_movierama_user_movies"); } else { $result = $wo->db->query("SELECT * FROM v_movierama_user_movies ORDER BY {$sortCriteria} DESC"); } } else { //all movies from a user without sorting filter if (!$wo->hasContent($sortCriteria)) { $result = $wo->db->query("SELECT * FROM v_movierama_user_movies WHERE MUM_movieramaUserId='{$targetUserId}'"); } else { $result = $wo->db->query("SELECT * FROM v_movierama_user_movies WHERE MUM_movieramaUserId='{$targetUserId}' ORDER BY {$sortCriteria} DESC"); } } if ($result === FALSE) { return false; } if (!$wo->db->getNumRows($result)) { //no error no results return []; } else { //no error results while ($row = $wo->db->fetchAssoc($result)) { $tblViewMovieRamaUserMovies->resultRows[] = $row; } } $ids = []; //not logged in if ($isUserLoggedIn === 'false') { foreach ($tblViewMovieRamaUserMovies->resultRows as $v_movie) { $movie = []; $movieId = $v_movie['MUM_id']; WOOOF_Util::filterOnKeys($movie, $movieElems, $v_movie); $movie['isType'] = 'MOV'; $movies[$movieId] = $movie; } //convert the associative array to a simple array to come back to the frontend $movies = array_values($movies); return $movies; } else { foreach ($tblViewMovieRamaUserMovies->resultRows as $v_movie) { $movie = []; $movieId = $v_movie['MUM_id']; WOOOF_Util::filterOnKeys($movie, $movieElems, $v_movie); $movie['isType'] = 'MOV'; $isUserMovieCreator = self::isUserMovieCreator($wo, $wo->app->userId, $v_movie['MUM_id']); if ($isUserMovieCreator === FALSE) { return false; } if ($isUserMovieCreator === '1') { $movie['isSelfMovieCreator'] = true; } else { $movie['isSelfMovieCreator'] = false; } $hasRunningEvals = VO_Evaluation::hasRunningEvaluations($wo, $movieId, 'MOV', $wo->app->userId); if ($hasRunningEvals === FALSE) { return false; } $runningEvalId = ''; if ($hasRunningEvals === 1) { //go get last running evaluation id $runningEvalId = VO_Evaluation::getLastRunningEvaluation($wo, $movieId, 'MOV', $wo->app->userId); if ($runningEvalId === FALSE) { return false; } } $movie['hasRunningEvals'] = $hasRunningEvals; $movie['runningEvalId'] = $runningEvalId; $movies[$movieId] = $movie; } //pass the keys from $movies to $ids $ids = array_keys($movies); //make the opinions array $opinionInfoArray = self::getOpinionsInfo($wo, $wo->app->userId, $ids); if ($opinionInfoArray === false) { return false; } //merge the movies array (with main info) with the opinions array foreach ($movies as $aKey => &$aMovie) { $aMovie['opinions'] = $opinionInfoArray[$aKey]; } //convert the associative array to a simple array to come back to the frontend $movieOpinions = array_values($movies); //return $movieOpinions; return $movieOpinions; } }
/** * * @param WOOOF $wo * @param array $in [array of user answers to eval criteria] * @return false | [ 'evaluationSavedOk' => bool, 'evaluationSavedForEvalId' => string ] */ public static function submitEvaluation(WOOOF $wo, $in) { $place = __CLASS__ . '::' . __FUNCTION__; if ($wo->userData['id'] == '0123456789') { $wo->handleShowStopperError('505'); } if (!$wo->hasContent($in)) { $wo->logError(self::_ECP . "1226 You must provide data to submit an evaluation"); return false; } $res = VO_Evaluation::submitEval($wo, $in, $wo->app->userId); if ($res === FALSE) { $out = ['evaluationSavedOk' => false, 'errors' => $wo->getErrorsAsArrayAndClear()]; $wo->db->rollback(); } else { $out = ['evaluationSavedOk' => true, 'evaluationSavedForEvalId' => $res]; $wo->db->commit(); } return $out; }