Gruntmaster::Data exports some functions for talking directly to the Redis server. These functions should not normally be used, except for B<MULTI>, B<EXEC>, B<PUBLISH>, B<SUBSCRIBE> and B<WAIT_FOR_MESSAGES>.
-These functions correspond to Redis commands. The current list is: B<< MULTI EXEC SMEMBERS GET HGET HDEL HSET SADD SREM INCR HMSET HSETNX DEL PUBLISH SUBSCRIBE WAIT_FOR_MESSAGES >>.
+These functions correspond to Redis commands. The current list is: B<< MULTI EXEC SMEMBERS GET HGET HGETALL HDEL HSET SADD SREM INCR HMSET HSETNX DEL PUBLISH SUBSCRIBE WAIT_FOR_MESSAGES >>.
=head2 Problems
Sets a problem's level. The levels are beginner, easy, medium, hard.
+=item B<problem_difficulty> I<$problem>
+
+Returns a problem's difficulty.
+
+=item B<set_problem_difficulty> I<$problem>, I<$name>
+
+Sets a problem's difficulty.
+
=item B<problem_statement> I<$problem>
Returns a problem's statement.
Sets a problem's author.
+=item B<problem_private> I<$problem>
+
+Returns a problem's private flag (true if the problem is private, false otherwise).
+
+=item B<set_problem_private> I<$problem>, I<$private>
+
+Sets a problem's private flag.
+
+=item B<problem_generator> I<$problem>
+
+Returns a problem's generator. The generators are File, Run and Undef. More might be added in the future.
+
+=item B<set_problem_generator> I<$problem>, I<$generator>
+
+Sets a problem's generator.
+
+=item B<problem_runner> I<$problem>
+
+Returns a problem's runner. The runners are File, Verifier and Interactive. More might be added in the future.
+
+=item B<set_problem_runner> I<$problem>, I<$runner>
+
+Sets a problem's runner.
+
+=item B<problem_judge> I<$problem>
+
+Returns a problem's judge. The judges are Absolute and Points. More might be added in the future.
+
+=item B<set_problem_judge> I<$problem>, I<$judge>
+
+Sets a problem's judge.
+
+=item B<problem_testcnt> I<$problem>
+
+Returns a problem's test count.
+
+=item B<set_problem_testcnt> I<$problem>, I<$testcnt>
+
+Sets a problem's test count.
+
+=item B<problem_timeout> I<$problem>
+
+Returns a problem's time limit, in seconds.
+
+=item B<set_problem_timeout> I<$problem>, I<$timeout>
+
+Sets a problem's time limit, in seconds.
+
+=item B<problem_olimit> I<$problem>
+
+Returns a problem's output limit, in bytes.
+
+=item B<set_problem_olimit> I<$problem>, I<$olimit>
+
+Sets a problem's output limit, in bytes.
+
=item B<get_open> I<$problem>, I<$user>
Returns the time when I<$user> opened I<$problem>.
Sets a user's email address.
+=item B<user_lastjob> I<$user>
+
+Returns the time (seconds since epoch) when the user last submitted a solution.
+
+=item B<set_user_lastjob> I<$user>, I<$lastjob>
+
+Sets the time (seconds since epoch) when the user last submitted a solution.
+
=item B<user_town> I<$user>
Returns a user's town.