| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960 |
- <?xml version="1.0" encoding="iso-8859-1"?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <!-- template designed by Marco Von Ballmoos -->
- <title>File Source for locallib.1.9.php</title>
- <link rel="stylesheet" href="../media/stylesheet.css" />
- </head>
- <body>
-
<h1>Source for file locallib.1.9.php</h1>
- <p>Documentation is available at <a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html">locallib.1.9.php</a></p>
- <div class="src-code">
- <div class="src-code"><ol><li><div class="src-line"><a name="a1"></a><span class="src-php"><?php </span><span class="src-comm">// $Id: locallib.php,v 1.127.2.10 2008/02/29 16:22:13 tjhunt Exp $</span></div></li>
- <li><div class="src-line"><a name="a2"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a3"></a><span class="src-doc"> * Library of functions used by the quiz module.</span></div></li>
- <li><div class="src-line"><a name="a4"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a5"></a><span class="src-doc"> * This contains functions that are called from within the quiz module only</span></div></li>
- <li><div class="src-line"><a name="a6"></a><span class="src-doc"> * Functions that are also called by core Moodle are in </span><span class="src-doc-inlinetag">{@link lib.php}</span></div></li>
- <li><div class="src-line"><a name="a7"></a><span class="src-doc"> * This script also loads the code in </span><span class="src-doc-inlinetag">{@link questionlib.php}</span><span class="src-doc"> which holds</span></div></li>
- <li><div class="src-line"><a name="a8"></a><span class="src-doc"> * the module-indpendent code for handling questions and which in turn</span></div></li>
- <li><div class="src-line"><a name="a9"></a><span class="src-doc"> * initialises all the questiontype classes.</span></div></li>
- <li><div class="src-line"><a name="a10"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a11"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@author</span><span class="src-doc"> Martin Dougiamas and many others. This has recently been completely</span></div></li>
- <li><div class="src-line"><a name="a12"></a><span class="src-doc"> * rewritten by Alex Smith, Julian Sedding and Gustav Delius as part of</span></div></li>
- <li><div class="src-line"><a name="a13"></a><span class="src-doc"> * the Serving Mathematics project</span></div></li>
- <li><div class="src-line"><a name="a14"></a><span class="src-doc"> * </span><span class="src-doc-inlinetag">{@link http://maths.york.ac.uk/serving_maths}</span></div></li>
- <li><div class="src-line"><a name="a15"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@license</span><span class="src-doc"> http://www.gnu.org/copyleft/gpl.html GNU Public License</span></div></li>
- <li><div class="src-line"><a name="a16"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@package</span><span class="src-doc"> quiz</span></div></li>
- <li><div class="src-line"><a name="a17"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a18"></a> </div></li>
- <li><div class="src-line"><a name="a19"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a20"></a><span class="src-doc"> * Include those library functions that are also used by core Moodle or other modules</span></div></li>
- <li><div class="src-line"><a name="a21"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a22"></a><span class="src-inc">require_once</span><span class="src-sym">(</span><span class="src-var">$CFG</span><span class="src-sym">-></span><span class="src-id">dirroot </span>. <span class="src-str">'/mod/quiz/lib.php'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a23"></a><span class="src-inc">require_once</span><span class="src-sym">(</span><span class="src-var">$CFG</span><span class="src-sym">-></span><span class="src-id">dirroot </span>. <span class="src-str">'/question/editlib.php'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a24"></a> </div></li>
- <li><div class="src-line"><a name="a25"></a><span class="src-comm">/// Constants ///////////////////////////////////////////////////////////////////</span></div></li>
- <li><div class="src-line"><a name="a26"></a> </div></li>
- <li><div class="src-line"><a name="a27"></a><span class="src-comm">/**#@+</span></div></li>
- <li><div class="src-line"><a name="a28"></a><span class="src-comm"> * Options determining how the grades from individual attempts are combined to give</span></div></li>
- <li><div class="src-line"><a name="a29"></a><span class="src-comm"> * the overall grade for a user</span></div></li>
- <li><div class="src-line"><a name="a30"></a><span class="src-comm"> */</span></div></li>
- <li><div class="src-line"><a name="a31"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">"QUIZ_GRADEHIGHEST"</span><span class="src-sym">, </span><span class="src-str">"1"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a32"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">"QUIZ_GRADEAVERAGE"</span><span class="src-sym">, </span><span class="src-str">"2"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a33"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">"QUIZ_ATTEMPTFIRST"</span><span class="src-sym">, </span><span class="src-str">"3"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a34"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">"QUIZ_ATTEMPTLAST"</span><span class="src-sym">, </span><span class="src-str">"4"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a35"></a><span class="src-comm">/**#@-*/</span></div></li>
- <li><div class="src-line"><a name="a36"></a> </div></li>
- <li><div class="src-line"><a name="a37"></a><span class="src-comm">/**#@+</span></div></li>
- <li><div class="src-line"><a name="a38"></a><span class="src-comm"> * Constants to describe the various states a quiz attempt can be in.</span></div></li>
- <li><div class="src-line"><a name="a39"></a><span class="src-comm"> */</span></div></li>
- <li><div class="src-line"><a name="a40"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'QUIZ_STATE_DURING'</span><span class="src-sym">, </span><span class="src-str">'during'</span><span class="src-sym">)</span><span class="src-sym">; </span></div></li>
- <li><div class="src-line"><a name="a41"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'QUIZ_STATE_IMMEDIATELY'</span><span class="src-sym">, </span><span class="src-str">'immedately'</span><span class="src-sym">)</span><span class="src-sym">; </span></div></li>
- <li><div class="src-line"><a name="a42"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'QUIZ_STATE_OPEN'</span><span class="src-sym">, </span><span class="src-str">'open'</span><span class="src-sym">)</span><span class="src-sym">; </span></div></li>
- <li><div class="src-line"><a name="a43"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'QUIZ_STATE_CLOSED'</span><span class="src-sym">, </span><span class="src-str">'closed'</span><span class="src-sym">)</span><span class="src-sym">; </span></div></li>
- <li><div class="src-line"><a name="a44"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'QUIZ_STATE_TEACHERACCESS'</span><span class="src-sym">, </span><span class="src-str">'teacheraccess'</span><span class="src-sym">)</span><span class="src-sym">; </span><span class="src-comm">// State only relevant if you are in a studenty role.</span></div></li>
- <li><div class="src-line"><a name="a45"></a><span class="src-comm">/**#@-*/</span></div></li>
- <li><div class="src-line"><a name="a46"></a> </div></li>
- <li><div class="src-line"><a name="a47"></a><span class="src-comm">/// Functions related to attempts /////////////////////////////////////////</span></div></li>
- <li><div class="src-line"><a name="a48"></a> </div></li>
- <li><div class="src-line"><a name="a49"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a50"></a><span class="src-doc"> * Creates an object to represent a new attempt at a quiz</span></div></li>
- <li><div class="src-line"><a name="a51"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a52"></a><span class="src-doc"> * Creates an attempt object to represent an attempt at the quiz by the current</span></div></li>
- <li><div class="src-line"><a name="a53"></a><span class="src-doc"> * user starting at the current time. The ->id field is not set. The object is</span></div></li>
- <li><div class="src-line"><a name="a54"></a><span class="src-doc"> * NOT written to the database.</span></div></li>
- <li><div class="src-line"><a name="a55"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">object </span><span class="src-doc"> </span><span class="src-doc-type">The </span><span class="src-doc">newly created attempt object.</span></div></li>
- <li><div class="src-line"><a name="a56"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">object </span><span class="src-doc-var">$quiz </span><span class="src-doc"> The quiz to create an attempt for.</span></div></li>
- <li><div class="src-line"><a name="a57"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$attemptnumber </span><span class="src-doc">The sequence number for the attempt.</span></div></li>
- <li><div class="src-line"><a name="a58"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a59"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_create_attempt">quiz_create_attempt</a><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">, </span><span class="src-var">$attemptnumber</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a60"></a> <span class="src-key">global </span><span class="src-var">$USER</span><span class="src-sym">, </span><span class="src-var">$CFG</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a61"></a> </div></li>
- <li><div class="src-line"><a name="a62"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-var">$attemptnumber </span>> <span class="src-num">1 </span><span class="src-key">or </span><span class="src-sym">!</span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">attemptonlast </span><span class="src-key">or </span><span class="src-sym">!</span><span class="src-var">$attempt </span>= <span class="src-id">get_record</span><span class="src-sym">(</span><span class="src-str">'quiz_attempts'</span><span class="src-sym">, </span><span class="src-str">'quiz'</span><span class="src-sym">, </span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">, </span><span class="src-str">'userid'</span><span class="src-sym">, </span><span class="src-var">$USER</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">, </span><span class="src-str">'attempt'</span><span class="src-sym">, </span><span class="src-var">$attemptnumber</span>-<span class="src-num">1</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a63"></a> <span class="src-comm">// we are not building on last attempt so create a new attempt</span></div></li>
- <li><div class="src-line"><a name="a64"></a> <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">quiz </span>= <span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a65"></a> <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">userid </span>= <span class="src-var">$USER</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a66"></a> <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">preview </span>= <span class="src-num">0</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a67"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">shufflequestions</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a68"></a> <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">layout </span>= <a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_repaginate">quiz_repaginate</a><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">questions</span><span class="src-sym">, </span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">questionsperpage</span><span class="src-sym">, </span><span class="src-id">true</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a69"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a70"></a> <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">layout </span>= <span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">questions</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a71"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a72"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a73"></a> </div></li>
- <li><div class="src-line"><a name="a74"></a> <span class="src-var">$timenow </span>= <a href="http://www.php.net/time">time</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a75"></a> <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">attempt </span>= <span class="src-var">$attemptnumber</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a76"></a> <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">sumgrades </span>= <span class="src-num">0.0</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a77"></a> <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">timestart </span>= <span class="src-var">$timenow</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a78"></a> <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">timefinish </span>= <span class="src-num">0</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a79"></a> <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">timemodified </span>= <span class="src-var">$timenow</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a80"></a> <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">uniqueid </span>= <span class="src-id">question_new_attempt_uniqueid</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a81"></a> </div></li>
- <li><div class="src-line"><a name="a82"></a> <span class="src-key">return </span><span class="src-var">$attempt</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a83"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a84"></a> </div></li>
- <li><div class="src-line"><a name="a85"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a86"></a><span class="src-doc"> * Returns an unfinished attempt (if there is one) for the given</span></div></li>
- <li><div class="src-line"><a name="a87"></a><span class="src-doc"> * user on the given quiz. This function does not return preview attempts.</span></div></li>
- <li><div class="src-line"><a name="a88"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a89"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$quizid </span><span class="src-doc">the id of the quiz.</span></div></li>
- <li><div class="src-line"><a name="a90"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$userid </span><span class="src-doc">the id of the user.</span></div></li>
- <li><div class="src-line"><a name="a91"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a92"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">mixed </span><span class="src-doc">the unfinished attempt if there is one, false if not.</span></div></li>
- <li><div class="src-line"><a name="a93"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a94"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_get_user_attempt_unfinished">quiz_get_user_attempt_unfinished</a><span class="src-sym">(</span><span class="src-var">$quizid</span><span class="src-sym">, </span><span class="src-var">$userid</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a95"></a> <span class="src-var">$attempts </span>= <span class="src-id">quiz_get_user_attempts</span><span class="src-sym">(</span><span class="src-var">$quizid</span><span class="src-sym">, </span><span class="src-var">$userid</span><span class="src-sym">, </span><span class="src-str">'unfinished'</span><span class="src-sym">, </span><span class="src-id">true</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a96"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$attempts</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a97"></a> <span class="src-key">return </span><a href="http://www.php.net/array_shift">array_shift</a><span class="src-sym">(</span><span class="src-var">$attempts</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a98"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a99"></a> <span class="src-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a100"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a101"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a102"></a> </div></li>
- <li><div class="src-line"><a name="a103"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a104"></a><span class="src-doc"> * Delete a quiz attempt.</span></div></li>
- <li><div class="src-line"><a name="a105"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a106"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_delete_attempt">quiz_delete_attempt</a><span class="src-sym">(</span><span class="src-var">$attempt</span><span class="src-sym">, </span><span class="src-var">$quiz</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a107"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/is_numeric">is_numeric</a><span class="src-sym">(</span><span class="src-var">$attempt</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a108"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-var">$attempt </span>= <span class="src-id">get_record</span><span class="src-sym">(</span><span class="src-str">'quiz_attempts'</span><span class="src-sym">, </span><span class="src-str">'id'</span><span class="src-sym">, </span><span class="src-var">$attempt</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a109"></a> <span class="src-key">return</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a110"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a111"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a112"></a> </div></li>
- <li><div class="src-line"><a name="a113"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">quiz </span>!= <span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a114"></a> <span class="src-id">debugging</span><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">Trying to delete attempt <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">id</span> which belongs to quiz <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">quiz</span> </span><span class="src-str">" </span>.</div></li>
- <li><div class="src-line"><a name="a115"></a> <span class="src-str">"</span><span class="src-str">but was passed quiz <span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">id</span>.</span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a116"></a> <span class="src-key">return</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a117"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a118"></a> </div></li>
- <li><div class="src-line"><a name="a119"></a> <span class="src-id">delete_records</span><span class="src-sym">(</span><span class="src-str">'quiz_attempts'</span><span class="src-sym">, </span><span class="src-str">'id'</span><span class="src-sym">, </span><span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a120"></a> <span class="src-id">delete_attempt</span><span class="src-sym">(</span><span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">uniqueid</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a121"></a> </div></li>
- <li><div class="src-line"><a name="a122"></a> <span class="src-comm">// Search quiz_attempts for other instances by this user.</span></div></li>
- <li><div class="src-line"><a name="a123"></a> <span class="src-comm">// If none, then delete record for this quiz, this user from quiz_grades</span></div></li>
- <li><div class="src-line"><a name="a124"></a> <span class="src-comm">// else recalculate best grade</span></div></li>
- <li><div class="src-line"><a name="a125"></a> </div></li>
- <li><div class="src-line"><a name="a126"></a> <span class="src-var">$userid </span>= <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">userid</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a127"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-id">record_exists</span><span class="src-sym">(</span><span class="src-str">'quiz_attempts'</span><span class="src-sym">, </span><span class="src-str">'userid'</span><span class="src-sym">, </span><span class="src-var">$userid</span><span class="src-sym">, </span><span class="src-str">'quiz'</span><span class="src-sym">, </span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a128"></a> <span class="src-id">delete_records</span><span class="src-sym">(</span><span class="src-str">'quiz_grades'</span><span class="src-sym">, </span><span class="src-str">'userid'</span><span class="src-sym">, </span><span class="src-var">$userid</span><span class="src-sym">,</span><span class="src-str">'quiz'</span><span class="src-sym">, </span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a129"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a130"></a> <a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_save_best_grade">quiz_save_best_grade</a><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">, </span><span class="src-var">$userid</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a131"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a132"></a> </div></li>
- <li><div class="src-line"><a name="a133"></a> <span class="src-id">quiz_update_grades</span><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">, </span><span class="src-var">$userid</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a134"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a135"></a> </div></li>
- <li><div class="src-line"><a name="a136"></a><span class="src-comm">/// Functions to do with quiz layout and pages ////////////////////////////////</span></div></li>
- <li><div class="src-line"><a name="a137"></a> </div></li>
- <li><div class="src-line"><a name="a138"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a139"></a><span class="src-doc"> * Returns a comma separated list of question ids for the current page</span></div></li>
- <li><div class="src-line"><a name="a140"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a141"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">string </span><span class="src-doc"> Comma separated list of question ids</span></div></li>
- <li><div class="src-line"><a name="a142"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$layout </span><span class="src-doc"> The string representing the quiz layout. Each page is represented as a</span></div></li>
- <li><div class="src-line"><a name="a143"></a><span class="src-doc"> * comma separated list of question ids and 0 indicating page breaks.</span></div></li>
- <li><div class="src-line"><a name="a144"></a><span class="src-doc"> * So 5,2,0,3,0 means questions 5 and 2 on page 1 and question 3 on page 2</span></div></li>
- <li><div class="src-line"><a name="a145"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$page </span><span class="src-doc"> The number of the current page.</span></div></li>
- <li><div class="src-line"><a name="a146"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a147"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_questions_on_page">quiz_questions_on_page</a><span class="src-sym">(</span><span class="src-var">$layout</span><span class="src-sym">, </span><span class="src-var">$page</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a148"></a> <span class="src-var">$pages </span>= <a href="http://www.php.net/explode">explode</a><span class="src-sym">(</span><span class="src-str">',0'</span><span class="src-sym">, </span><span class="src-var">$layout</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a149"></a> <span class="src-key">return </span><a href="http://www.php.net/trim">trim</a><span class="src-sym">(</span><span class="src-var">$pages</span><span class="src-sym">[</span><span class="src-var">$page</span><span class="src-sym">]</span><span class="src-sym">, </span><span class="src-str">','</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a150"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a151"></a> </div></li>
- <li><div class="src-line"><a name="a152"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a153"></a><span class="src-doc"> * Returns a comma separated list of question ids for the quiz</span></div></li>
- <li><div class="src-line"><a name="a154"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a155"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">string </span><span class="src-doc"> Comma separated list of question ids</span></div></li>
- <li><div class="src-line"><a name="a156"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$layout </span><span class="src-doc"> The string representing the quiz layout. Each page is represented as a</span></div></li>
- <li><div class="src-line"><a name="a157"></a><span class="src-doc"> * comma separated list of question ids and 0 indicating page breaks.</span></div></li>
- <li><div class="src-line"><a name="a158"></a><span class="src-doc"> * So 5,2,0,3,0 means questions 5 and 2 on page 1 and question 3 on page 2</span></div></li>
- <li><div class="src-line"><a name="a159"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a160"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_questions_in_quiz">quiz_questions_in_quiz</a><span class="src-sym">(</span><span class="src-var">$layout</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a161"></a> <span class="src-key">return </span><a href="http://www.php.net/str_replace">str_replace</a><span class="src-sym">(</span><span class="src-str">',0'</span><span class="src-sym">, </span><span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$layout</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a162"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a163"></a> </div></li>
- <li><div class="src-line"><a name="a164"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a165"></a><span class="src-doc"> * Returns the number of pages in the quiz layout</span></div></li>
- <li><div class="src-line"><a name="a166"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a167"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">integer </span><span class="src-doc"> Comma separated list of question ids</span></div></li>
- <li><div class="src-line"><a name="a168"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$layout </span><span class="src-doc"> The string representing the quiz layout.</span></div></li>
- <li><div class="src-line"><a name="a169"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a170"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_number_of_pages">quiz_number_of_pages</a><span class="src-sym">(</span><span class="src-var">$layout</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a171"></a> <span class="src-key">return </span><a href="http://www.php.net/substr_count">substr_count</a><span class="src-sym">(</span><span class="src-var">$layout</span><span class="src-sym">, </span><span class="src-str">',0'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a172"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a173"></a> </div></li>
- <li><div class="src-line"><a name="a174"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a175"></a><span class="src-doc"> * Returns the first question number for the current quiz page</span></div></li>
- <li><div class="src-line"><a name="a176"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a177"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">integer </span><span class="src-doc"> The number of the first question</span></div></li>
- <li><div class="src-line"><a name="a178"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$quizlayout </span><span class="src-doc">The string representing the layout for the whole quiz</span></div></li>
- <li><div class="src-line"><a name="a179"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$pagelayout </span><span class="src-doc">The string representing the layout for the current page</span></div></li>
- <li><div class="src-line"><a name="a180"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a181"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_first_questionnumber">quiz_first_questionnumber</a><span class="src-sym">(</span><span class="src-var">$quizlayout</span><span class="src-sym">, </span><span class="src-var">$pagelayout</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a182"></a> <span class="src-comm">// this works by finding all the questions from the quizlayout that</span></div></li>
- <li><div class="src-line"><a name="a183"></a> <span class="src-comm">// come before the current page and then adding up their lengths.</span></div></li>
- <li><div class="src-line"><a name="a184"></a> <span class="src-key">global </span><span class="src-var">$CFG</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a185"></a> <span class="src-var">$start </span>= <a href="http://www.php.net/strpos">strpos</a><span class="src-sym">(</span><span class="src-var">$quizlayout</span><span class="src-sym">, </span><span class="src-str">','</span>.<span class="src-var">$pagelayout</span>.<span class="src-str">','</span><span class="src-sym">)</span>-<span class="src-num">2</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a186"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$start </span>> <span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a187"></a> <span class="src-var">$prevlist </span>= <a href="http://www.php.net/substr">substr</a><span class="src-sym">(</span><span class="src-var">$quizlayout</span><span class="src-sym">, </span><span class="src-num">0</span><span class="src-sym">, </span><span class="src-var">$start</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a188"></a> <span class="src-key">return </span><span class="src-id">get_field_sql</span><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">SELECT sum(length)+1 FROM {<span class="src-var">$CFG</span></span><span class="src-sym">-></span><span class="src-id">prefix</span><span class="src-str"></span><span class="src-sym">}</span>question</span></div></li>
- <li><div class="src-line"><a name="a189"></a></span><span class="src-str"> WHERE id IN (<span class="src-var">$prevlist</span>)</span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a190"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a191"></a> <span class="src-key">return </span><span class="src-num">1</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a192"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a193"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a194"></a> </div></li>
- <li><div class="src-line"><a name="a195"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a196"></a><span class="src-doc"> * Re-paginates the quiz layout</span></div></li>
- <li><div class="src-line"><a name="a197"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a198"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">string </span><span class="src-doc"> The new layout string</span></div></li>
- <li><div class="src-line"><a name="a199"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$layout </span><span class="src-doc"> The string representing the quiz layout.</span></div></li>
- <li><div class="src-line"><a name="a200"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$perpage </span><span class="src-doc">The number of questions per page</span></div></li>
- <li><div class="src-line"><a name="a201"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">boolean </span><span class="src-doc-var">$shuffle </span><span class="src-doc">Should the questions be reordered randomly?</span></div></li>
- <li><div class="src-line"><a name="a202"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a203"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_repaginate">quiz_repaginate</a><span class="src-sym">(</span><span class="src-var">$layout</span><span class="src-sym">, </span><span class="src-var">$perpage</span><span class="src-sym">, </span><span class="src-var">$shuffle</span>=<span class="src-id">false</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a204"></a> <span class="src-var">$layout </span>= <a href="http://www.php.net/str_replace">str_replace</a><span class="src-sym">(</span><span class="src-str">',0'</span><span class="src-sym">, </span><span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$layout</span><span class="src-sym">)</span><span class="src-sym">; </span><span class="src-comm">// remove existing page breaks</span></div></li>
- <li><div class="src-line"><a name="a205"></a> <span class="src-var">$questions </span>= <a href="http://www.php.net/explode">explode</a><span class="src-sym">(</span><span class="src-str">','</span><span class="src-sym">, </span><span class="src-var">$layout</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a206"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$shuffle</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a207"></a> <a href="http://www.php.net/srand">srand</a><span class="src-sym">(</span>(float)<a href="http://www.php.net/microtime">microtime</a><span class="src-sym">(</span><span class="src-sym">) </span>* <span class="src-num">1000000</span><span class="src-sym">)</span><span class="src-sym">; </span><span class="src-comm">// for php < 4.2</span></div></li>
- <li><div class="src-line"><a name="a208"></a> <a href="http://www.php.net/shuffle">shuffle</a><span class="src-sym">(</span><span class="src-var">$questions</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a209"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a210"></a> <span class="src-var">$i </span>= <span class="src-num">1</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a211"></a> <span class="src-var">$layout </span>= <span class="src-str">''</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a212"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$questions </span><span class="src-key">as </span><span class="src-var">$question</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a213"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$perpage </span><span class="src-key">and </span><span class="src-var">$i </span>> <span class="src-var">$perpage</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a214"></a> <span class="src-var">$layout </span>.= <span class="src-str">'0,'</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a215"></a> <span class="src-var">$i </span>= <span class="src-num">1</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a216"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a217"></a> <span class="src-var">$layout </span>.= <span class="src-var">$question</span>.<span class="src-str">','</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a218"></a> <span class="src-var">$i</span>++<span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a219"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a220"></a> <span class="src-key">return </span><span class="src-var">$layout</span>.<span class="src-str">'0'</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a221"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a222"></a> </div></li>
- <li><div class="src-line"><a name="a223"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a224"></a><span class="src-doc"> * Print navigation panel for quiz attempt and review pages</span></div></li>
- <li><div class="src-line"><a name="a225"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a226"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$page </span><span class="src-doc"> The number of the current page (counting from 0).</span></div></li>
- <li><div class="src-line"><a name="a227"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$pages </span><span class="src-doc"> The total number of pages.</span></div></li>
- <li><div class="src-line"><a name="a228"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a229"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_print_navigation_panel">quiz_print_navigation_panel</a><span class="src-sym">(</span><span class="src-var">$page</span><span class="src-sym">, </span><span class="src-var">$pages</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a230"></a> <span class="src-comm">//$page++;</span></div></li>
- <li><div class="src-line"><a name="a231"></a> echo <span class="src-str">'<div class="paging pagingbar">'</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a232"></a> echo <span class="src-str">'<span class="title">' </span>. <span class="src-id">get_string</span><span class="src-sym">(</span><span class="src-str">'page'</span><span class="src-sym">) </span>. <span class="src-str">':</span>'</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a233"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$page </span>> <span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a234"></a> <span class="src-comm">// Print previous link</span></div></li>
- <li><div class="src-line"><a name="a235"></a> <span class="src-var">$strprev </span>= <span class="src-id">get_string</span><span class="src-sym">(</span><span class="src-str">'previous'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a236"></a> echo <span class="src-str">'<a href="javascript:navigate(' </span>. <span class="src-sym">(</span><span class="src-var">$page </span>- <span class="src-num">1</span><span class="src-sym">) </span>. <span class="src-str">');" title="'</span></div></li>
- <li><div class="src-line"><a name="a237"></a> . <span class="src-var">$strprev </span>. <span class="src-str">'">(' </span>. <span class="src-var">$strprev </span>. <span class="src-str">')</a>'</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a238"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a239"></a> <span class="src-key">for </span><span class="src-sym">(</span><span class="src-var">$i </span>= <span class="src-num">0</span><span class="src-sym">; </span><span class="src-var">$i </span>< <span class="src-var">$pages</span><span class="src-sym">; </span><span class="src-var">$i</span>++<span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a240"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$i </span>== <span class="src-var">$page</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a241"></a> echo <span class="src-str">'<span class="thispage">'</span>.<span class="src-sym">(</span><span class="src-var">$i</span>+<span class="src-num">1</span><span class="src-sym">)</span>.<span class="src-str">'</span>'</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a242"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a243"></a> echo <span class="src-str">'<a href="javascript:navigate(' </span>. <span class="src-sym">(</span><span class="src-var">$i</span><span class="src-sym">) </span>. <span class="src-str">');">'</span>.<span class="src-sym">(</span><span class="src-var">$i</span>+<span class="src-num">1</span><span class="src-sym">)</span>.<span class="src-str">'</a>'</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a244"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a245"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a246"></a> </div></li>
- <li><div class="src-line"><a name="a247"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$page </span>< <span class="src-var">$pages </span>- <span class="src-num">1</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a248"></a> <span class="src-comm">// Print next link</span></div></li>
- <li><div class="src-line"><a name="a249"></a> <span class="src-var">$strnext </span>= <span class="src-id">get_string</span><span class="src-sym">(</span><span class="src-str">'next'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a250"></a> echo <span class="src-str">'<a href="javascript:navigate(' </span>. <span class="src-sym">(</span><span class="src-var">$page </span>+ <span class="src-num">1</span><span class="src-sym">) </span>. <span class="src-str">');" title="'</span></div></li>
- <li><div class="src-line"><a name="a251"></a> . <span class="src-var">$strnext </span>. <span class="src-str">'">(' </span>. <span class="src-var">$strnext </span>. <span class="src-str">')</a>'</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a252"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a253"></a> echo <span class="src-str">'</div>'</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a254"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a255"></a> </div></li>
- <li><div class="src-line"><a name="a256"></a><span class="src-comm">/// Functions to do with quiz grades //////////////////////////////////////////</span></div></li>
- <li><div class="src-line"><a name="a257"></a> </div></li>
- <li><div class="src-line"><a name="a258"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a259"></a><span class="src-doc"> * Creates an array of maximum grades for a quiz</span></div></li>
- <li><div class="src-line"><a name="a260"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a261"></a><span class="src-doc"> * The grades are extracted from the quiz_question_instances table.</span></div></li>
- <li><div class="src-line"><a name="a262"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array </span><span class="src-doc"> Array of grades indexed by question id</span></div></li>
- <li><div class="src-line"><a name="a263"></a><span class="src-doc"> * These are the maximum possible grades that</span></div></li>
- <li><div class="src-line"><a name="a264"></a><span class="src-doc"> * students can achieve for each of the questions</span></div></li>
- <li><div class="src-line"><a name="a265"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$quiz </span><span class="src-doc">The quiz object</span></div></li>
- <li><div class="src-line"><a name="a266"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a267"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_get_all_question_grades">quiz_get_all_question_grades</a><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a268"></a> <span class="src-key">global </span><span class="src-var">$CFG</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a269"></a> </div></li>
- <li><div class="src-line"><a name="a270"></a> <span class="src-var">$questionlist </span>= <a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_questions_in_quiz">quiz_questions_in_quiz</a><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">questions</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a271"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-key">empty</span><span class="src-sym">(</span><span class="src-var">$questionlist</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a272"></a> <span class="src-key">return </span><span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a273"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a274"></a> </div></li>
- <li><div class="src-line"><a name="a275"></a> <span class="src-var">$instances </span>= <span class="src-id">get_records_sql</span><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">SELECT question,grade,id</span></div></li>
- <li><div class="src-line"><a name="a276"></a></span><span class="src-str"> FROM {<span class="src-var">$CFG</span></span><span class="src-sym">-></span><span class="src-id">prefix</span><span class="src-str"></span><span class="src-sym">}</span>quiz_question_instances</span></div></li>
- <li><div class="src-line"><a name="a277"></a></span><span class="src-str"> WHERE quiz = '<span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">id</span>'</span><span class="src-str">" </span>.</div></li>
- <li><div class="src-line"><a name="a278"></a> <span class="src-sym">(</span><a href="http://www.php.net/is_null">is_null</a><span class="src-sym">(</span><span class="src-var">$questionlist</span><span class="src-sym">) </span>? <span class="src-str">'' </span>:</div></li>
- <li><div class="src-line"><a name="a279"></a> <span class="src-str">"</span><span class="src-str">AND question IN (<span class="src-var">$questionlist</span>)</span><span class="src-str">"</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a280"></a> </div></li>
- <li><div class="src-line"><a name="a281"></a> <span class="src-var">$list </span>= <a href="http://www.php.net/explode">explode</a><span class="src-sym">(</span><span class="src-str">","</span><span class="src-sym">, </span><span class="src-var">$questionlist</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a282"></a> <span class="src-var">$grades </span>= <span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a283"></a> </div></li>
- <li><div class="src-line"><a name="a284"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$list </span><span class="src-key">as </span><span class="src-var">$qid</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a285"></a> <span class="src-key">if </span><span class="src-sym">(</span>isset<span class="src-sym">(</span><span class="src-var">$instances</span><span class="src-sym">[</span><span class="src-var">$qid</span><span class="src-sym">]</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a286"></a> <span class="src-var">$grades</span><span class="src-sym">[</span><span class="src-var">$qid</span><span class="src-sym">] </span>= <span class="src-var">$instances</span><span class="src-sym">[</span><span class="src-var">$qid</span><span class="src-sym">]</span><span class="src-sym">-></span><span class="src-id">grade</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a287"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a288"></a> <span class="src-var">$grades</span><span class="src-sym">[</span><span class="src-var">$qid</span><span class="src-sym">] </span>= <span class="src-num">1</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a289"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a290"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a291"></a> <span class="src-key">return </span><span class="src-var">$grades</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a292"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a293"></a> </div></li>
- <li><div class="src-line"><a name="a294"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a295"></a><span class="src-doc"> * Get the best current grade for a particular user in a quiz.</span></div></li>
- <li><div class="src-line"><a name="a296"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a297"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">object </span><span class="src-doc-var">$quiz </span><span class="src-doc">the quiz object.</span></div></li>
- <li><div class="src-line"><a name="a298"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$userid </span><span class="src-doc">the id of the user.</span></div></li>
- <li><div class="src-line"><a name="a299"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">float </span><span class="src-doc">the user's current grade for this quiz.</span></div></li>
- <li><div class="src-line"><a name="a300"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a301"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_get_best_grade">quiz_get_best_grade</a><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">, </span><span class="src-var">$userid</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a302"></a> <span class="src-var">$grade </span>= <span class="src-id">get_field</span><span class="src-sym">(</span><span class="src-str">'quiz_grades'</span><span class="src-sym">, </span><span class="src-str">'grade'</span><span class="src-sym">, </span><span class="src-str">'quiz'</span><span class="src-sym">, </span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">, </span><span class="src-str">'userid'</span><span class="src-sym">, </span><span class="src-var">$userid</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a303"></a> </div></li>
- <li><div class="src-line"><a name="a304"></a> <span class="src-comm">// Need to detect errors/no result, without catching 0 scores.</span></div></li>
- <li><div class="src-line"><a name="a305"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/is_numeric">is_numeric</a><span class="src-sym">(</span><span class="src-var">$grade</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a306"></a> <span class="src-key">return </span><a href="http://www.php.net/round">round</a><span class="src-sym">(</span><span class="src-var">$grade</span><span class="src-sym">, </span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">decimalpoints</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a307"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a308"></a> <span class="src-key">return </span><span class="src-id">NULL</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a309"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a310"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a311"></a> </div></li>
- <li><div class="src-line"><a name="a312"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a313"></a><span class="src-doc"> * Convert the raw grade stored in $attempt into a grade out of the maximum</span></div></li>
- <li><div class="src-line"><a name="a314"></a><span class="src-doc"> * grade for this quiz.</span></div></li>
- <li><div class="src-line"><a name="a315"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a316"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">float </span><span class="src-doc-var">$rawgrade </span><span class="src-doc">the unadjusted grade, fof example $attempt->sumgrades</span></div></li>
- <li><div class="src-line"><a name="a317"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">object </span><span class="src-doc-var">$quiz </span><span class="src-doc">the quiz object. Only the fields grade, sumgrades and decimalpoints are used.</span></div></li>
- <li><div class="src-line"><a name="a318"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">float </span><span class="src-doc">the rescaled grade.</span></div></li>
- <li><div class="src-line"><a name="a319"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a320"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_rescale_grade">quiz_rescale_grade</a><span class="src-sym">(</span><span class="src-var">$rawgrade</span><span class="src-sym">, </span><span class="src-var">$quiz</span><span class="src-sym">, </span><span class="src-var">$round </span>= <span class="src-id">true</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a321"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">sumgrades</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a322"></a> <span class="src-var">$grade </span>= <span class="src-var">$rawgrade </span>* <span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">grade </span>/ <span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">sumgrades</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a323"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$round</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a324"></a> <span class="src-var">$grade </span>= <a href="http://www.php.net/round">round</a><span class="src-sym">(</span><span class="src-var">$grade</span><span class="src-sym">, </span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">decimalpoints</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a325"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a326"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a327"></a> <span class="src-var">$grade </span>= <span class="src-num">0</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a328"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a329"></a> <span class="src-key">return </span><span class="src-var">$grade</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a330"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a331"></a> </div></li>
- <li><div class="src-line"><a name="a332"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a333"></a><span class="src-doc"> * Get the feedback text that should be show to a student who</span></div></li>
- <li><div class="src-line"><a name="a334"></a><span class="src-doc"> * got this grade on this quiz. The feedback is processed ready for diplay.</span></div></li>
- <li><div class="src-line"><a name="a335"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a336"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">float </span><span class="src-doc-var">$grade </span><span class="src-doc">a grade on this quiz.</span></div></li>
- <li><div class="src-line"><a name="a337"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$quizid </span><span class="src-doc">the id of the quiz object.</span></div></li>
- <li><div class="src-line"><a name="a338"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">string </span><span class="src-doc">the comment that corresponds to this grade (empty string if there is not one.</span></div></li>
- <li><div class="src-line"><a name="a339"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a340"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_feedback_for_grade">quiz_feedback_for_grade</a><span class="src-sym">(</span><span class="src-var">$grade</span><span class="src-sym">, </span><span class="src-var">$quizid</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a341"></a> <span class="src-var">$feedback </span>= <span class="src-id">get_field_select</span><span class="src-sym">(</span><span class="src-str">'quiz_feedback'</span><span class="src-sym">, </span><span class="src-str">'feedbacktext'</span><span class="src-sym">,</span></div></li>
- <li><div class="src-line"><a name="a342"></a> <span class="src-str">"</span><span class="src-str">quizid = <span class="src-var">$quizid</span> AND mingrade <= <span class="src-var">$grade</span> AND <span class="src-var">$grade</span> < maxgrade</span><span class="src-str">"</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a343"></a> </div></li>
- <li><div class="src-line"><a name="a344"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-key">empty</span><span class="src-sym">(</span><span class="src-var">$feedback</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a345"></a> <span class="src-var">$feedback </span>= <span class="src-str">''</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a346"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a347"></a> </div></li>
- <li><div class="src-line"><a name="a348"></a> <span class="src-comm">// Clean the text, ready for display.</span></div></li>
- <li><div class="src-line"><a name="a349"></a> <span class="src-var">$formatoptions </span>= <span class="src-key">new </span><span class="src-id">stdClass</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a350"></a> <span class="src-var">$formatoptions</span><span class="src-sym">-></span><span class="src-id">noclean </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a351"></a> <span class="src-var">$feedback </span>= <span class="src-id">format_text</span><span class="src-sym">(</span><span class="src-var">$feedback</span><span class="src-sym">, </span><span class="src-id">FORMAT_MOODLE</span><span class="src-sym">, </span><span class="src-var">$formatoptions</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a352"></a> </div></li>
- <li><div class="src-line"><a name="a353"></a> <span class="src-key">return </span><span class="src-var">$feedback</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a354"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a355"></a> </div></li>
- <li><div class="src-line"><a name="a356"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a357"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$quizid </span><span class="src-doc">the id of the quiz object.</span></div></li>
- <li><div class="src-line"><a name="a358"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">boolean </span><span class="src-doc">Whether this quiz has any non-blank feedback text.</span></div></li>
- <li><div class="src-line"><a name="a359"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a360"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_has_feedback">quiz_has_feedback</a><span class="src-sym">(</span><span class="src-var">$quizid</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a361"></a> <span class="src-key">static </span><span class="src-var">$cache </span>= <span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a362"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-id">array_key_exists</span><span class="src-sym">(</span><span class="src-var">$quizid</span><span class="src-sym">, </span><span class="src-var">$cache</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a363"></a> <span class="src-var">$cache</span><span class="src-sym">[</span><span class="src-var">$quizid</span><span class="src-sym">] </span>= <span class="src-id">record_exists_select</span><span class="src-sym">(</span><span class="src-str">'quiz_feedback'</span><span class="src-sym">,</span></div></li>
- <li><div class="src-line"><a name="a364"></a> <span class="src-str">"</span>quizid = <span class="src-var">$quizid</span> AND <span class="src-str">" </span>. <span class="src-id">sql_isnotempty</span><span class="src-sym">(</span><span class="src-str">'quiz_feedback'</span><span class="src-sym">, </span><span class="src-str">'feedbacktext'</span><span class="src-sym">, </span><span class="src-id">false</span><span class="src-sym">, </span><span class="src-id">true</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a365"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a366"></a> <span class="src-key">return </span><span class="src-var">$cache</span><span class="src-sym">[</span><span class="src-var">$quizid</span><span class="src-sym">]</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a367"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a368"></a> </div></li>
- <li><div class="src-line"><a name="a369"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a370"></a><span class="src-doc"> * The quiz grade is the score that student's results are marked out of. When it</span></div></li>
- <li><div class="src-line"><a name="a371"></a><span class="src-doc"> * changes, the corresponding data in quiz_grades and quiz_feedback needs to be</span></div></li>
- <li><div class="src-line"><a name="a372"></a><span class="src-doc"> * rescaled.</span></div></li>
- <li><div class="src-line"><a name="a373"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a374"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">float </span><span class="src-doc-var">$newgrade </span><span class="src-doc">the new maximum grade for the quiz.</span></div></li>
- <li><div class="src-line"><a name="a375"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">object </span><span class="src-doc-var">$quiz </span><span class="src-doc">the quiz we are updating. Passed by reference so its grade field can be updated too.</span></div></li>
- <li><div class="src-line"><a name="a376"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">boolean </span><span class="src-doc">indicating success or failure.</span></div></li>
- <li><div class="src-line"><a name="a377"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a378"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_set_grade">quiz_set_grade</a><span class="src-sym">(</span><span class="src-var">$newgrade</span><span class="src-sym">, </span><span class="src-sym">&</span><span class="src-var">$quiz</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a379"></a> <span class="src-comm">// This is potentially expensive, so only do it if necessary.</span></div></li>
- <li><div class="src-line"><a name="a380"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/abs">abs</a><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">grade </span>- <span class="src-var">$newgrade</span><span class="src-sym">) </span>< <span class="src-num">1e-7</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a381"></a> <span class="src-comm">// Nothing to do.</span></div></li>
- <li><div class="src-line"><a name="a382"></a> <span class="src-key">return </span><span class="src-id">true</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a383"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a384"></a> </div></li>
- <li><div class="src-line"><a name="a385"></a> <span class="src-comm">// Use a transaction, so that on those databases that support it, this is safer.</span></div></li>
- <li><div class="src-line"><a name="a386"></a> <span class="src-id">begin_sql</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a387"></a> </div></li>
- <li><div class="src-line"><a name="a388"></a> <span class="src-comm">// Update the quiz table.</span></div></li>
- <li><div class="src-line"><a name="a389"></a> <span class="src-var">$success </span>= <span class="src-id">set_field</span><span class="src-sym">(</span><span class="src-str">'quiz'</span><span class="src-sym">, </span><span class="src-str">'grade'</span><span class="src-sym">, </span><span class="src-var">$newgrade</span><span class="src-sym">, </span><span class="src-str">'id'</span><span class="src-sym">, </span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">instance</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a390"></a> </div></li>
- <li><div class="src-line"><a name="a391"></a> <span class="src-comm">// Rescaling the other data is only possible if the old grade was non-zero.</span></div></li>
- <li><div class="src-line"><a name="a392"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">grade </span>> <span class="src-num">1e-7</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a393"></a> <span class="src-key">global </span><span class="src-var">$CFG</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a394"></a> </div></li>
- <li><div class="src-line"><a name="a395"></a> <span class="src-var">$factor </span>= <span class="src-var">$newgrade</span>/<span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">grade</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a396"></a> <span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">grade </span>= <span class="src-var">$newgrade</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a397"></a> </div></li>
- <li><div class="src-line"><a name="a398"></a> <span class="src-comm">// Update the quiz_grades table.</span></div></li>
- <li><div class="src-line"><a name="a399"></a> <span class="src-var">$timemodified </span>= <a href="http://www.php.net/time">time</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a400"></a> <span class="src-var">$success </span>= <span class="src-var">$success </span>&& <span class="src-id">execute_sql</span><span class="src-sym">(</span><span class="src-str">"</div></li>
- <li><div class="src-line"><a name="a401"></a></span><span class="src-str"> UPDATE {<span class="src-var">$CFG</span></span><span class="src-sym">-></span><span class="src-id">prefix</span><span class="src-str"></span><span class="src-sym">}</span>quiz_grades</span></div></li>
- <li><div class="src-line"><a name="a402"></a></span><span class="src-str"> SET grade = <span class="src-var">$factor</span> * grade, timemodified = <span class="src-var">$timemodified</span></span></div></li>
- <li><div class="src-line"><a name="a403"></a></span><span class="src-str"> WHERE quiz = <span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">id</span></span></div></li>
- <li><div class="src-line"><a name="a404"></a></span><span class="src-str"> </span><span class="src-str">"</span><span class="src-sym">, </span><span class="src-id">false</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a405"></a> </div></li>
- <li><div class="src-line"><a name="a406"></a> <span class="src-comm">// Update the quiz_grades table.</span></div></li>
- <li><div class="src-line"><a name="a407"></a> <span class="src-var">$success </span>= <span class="src-var">$success </span>&& <span class="src-id">execute_sql</span><span class="src-sym">(</span><span class="src-str">"</div></li>
- <li><div class="src-line"><a name="a408"></a></span><span class="src-str"> UPDATE {<span class="src-var">$CFG</span></span><span class="src-sym">-></span><span class="src-id">prefix</span><span class="src-str"></span><span class="src-sym">}</span>quiz_feedback</span></div></li>
- <li><div class="src-line"><a name="a409"></a></span><span class="src-str"> SET mingrade = <span class="src-var">$factor</span> * mingrade, maxgrade = <span class="src-var">$factor</span> * maxgrade</span></div></li>
- <li><div class="src-line"><a name="a410"></a></span><span class="src-str"> WHERE quizid = <span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">id</span></span></div></li>
- <li><div class="src-line"><a name="a411"></a></span><span class="src-str"> </span><span class="src-str">"</span><span class="src-sym">, </span><span class="src-id">false</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a412"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a413"></a> </div></li>
- <li><div class="src-line"><a name="a414"></a> <span class="src-comm">// update grade item and send all grades to gradebook</span></div></li>
- <li><div class="src-line"><a name="a415"></a> <span class="src-id">quiz_grade_item_update</span><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a416"></a> <span class="src-id">quiz_update_grades</span><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a417"></a> </div></li>
- <li><div class="src-line"><a name="a418"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$success</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a419"></a> <span class="src-key">return </span><span class="src-id">commit_sql</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a420"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a421"></a> <span class="src-id">rollback_sql</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a422"></a> <span class="src-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a423"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a424"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a425"></a> </div></li>
- <li><div class="src-line"><a name="a426"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a427"></a><span class="src-doc"> * Save the overall grade for a user at a quiz in the quiz_grades table</span></div></li>
- <li><div class="src-line"><a name="a428"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a429"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">object </span><span class="src-doc-var">$quiz </span><span class="src-doc">The quiz for which the best grade is to be calculated and then saved.</span></div></li>
- <li><div class="src-line"><a name="a430"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$userid </span><span class="src-doc">The userid to calculate the grade for. Defaults to the current user.</span></div></li>
- <li><div class="src-line"><a name="a431"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">boolean </span><span class="src-doc">Indicates success or failure.</span></div></li>
- <li><div class="src-line"><a name="a432"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a433"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_save_best_grade">quiz_save_best_grade</a><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">, </span><span class="src-var">$userid </span>= <span class="src-id">null</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a434"></a> <span class="src-key">global </span><span class="src-var">$USER</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a435"></a> </div></li>
- <li><div class="src-line"><a name="a436"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-key">empty</span><span class="src-sym">(</span><span class="src-var">$userid</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a437"></a> <span class="src-var">$userid </span>= <span class="src-var">$USER</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a438"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a439"></a> </div></li>
- <li><div class="src-line"><a name="a440"></a> <span class="src-comm">// Get all the attempts made by the user</span></div></li>
- <li><div class="src-line"><a name="a441"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-var">$attempts </span>= <span class="src-id">quiz_get_user_attempts</span><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">, </span><span class="src-var">$userid</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a442"></a> <span class="src-id">notify</span><span class="src-sym">(</span><span class="src-str">'Could not find any user attempts'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a443"></a> <span class="src-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a444"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a445"></a> </div></li>
- <li><div class="src-line"><a name="a446"></a> <span class="src-comm">// Calculate the best grade</span></div></li>
- <li><div class="src-line"><a name="a447"></a> <span class="src-var">$bestgrade </span>= <a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_calculate_best_grade">quiz_calculate_best_grade</a><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">, </span><span class="src-var">$attempts</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a448"></a> <span class="src-var">$bestgrade </span>= <a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_rescale_grade">quiz_rescale_grade</a><span class="src-sym">(</span><span class="src-var">$bestgrade</span><span class="src-sym">, </span><span class="src-var">$quiz</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a449"></a> </div></li>
- <li><div class="src-line"><a name="a450"></a> <span class="src-comm">// Save the best grade in the database</span></div></li>
- <li><div class="src-line"><a name="a451"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$grade </span>= <span class="src-id">get_record</span><span class="src-sym">(</span><span class="src-str">'quiz_grades'</span><span class="src-sym">, </span><span class="src-str">'quiz'</span><span class="src-sym">, </span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">, </span><span class="src-str">'userid'</span><span class="src-sym">, </span><span class="src-var">$userid</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a452"></a> <span class="src-var">$grade</span><span class="src-sym">-></span><span class="src-id">grade </span>= <span class="src-var">$bestgrade</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a453"></a> <span class="src-var">$grade</span><span class="src-sym">-></span><span class="src-id">timemodified </span>= <a href="http://www.php.net/time">time</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a454"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-id">update_record</span><span class="src-sym">(</span><span class="src-str">'quiz_grades'</span><span class="src-sym">, </span><span class="src-var">$grade</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a455"></a> <span class="src-id">notify</span><span class="src-sym">(</span><span class="src-str">'Could not update best grade'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a456"></a> <span class="src-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a457"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a458"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a459"></a> <span class="src-var">$grade</span><span class="src-sym">-></span><span class="src-id">quiz </span>= <span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a460"></a> <span class="src-var">$grade</span><span class="src-sym">-></span><span class="src-id">userid </span>= <span class="src-var">$userid</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a461"></a> <span class="src-var">$grade</span><span class="src-sym">-></span><span class="src-id">grade </span>= <span class="src-var">$bestgrade</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a462"></a> <span class="src-var">$grade</span><span class="src-sym">-></span><span class="src-id">timemodified </span>= <a href="http://www.php.net/time">time</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a463"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-id">insert_record</span><span class="src-sym">(</span><span class="src-str">'quiz_grades'</span><span class="src-sym">, </span><span class="src-var">$grade</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a464"></a> <span class="src-id">notify</span><span class="src-sym">(</span><span class="src-str">'Could not insert new best grade'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a465"></a> <span class="src-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a466"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a467"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a468"></a> </div></li>
- <li><div class="src-line"><a name="a469"></a> <span class="src-id">quiz_update_grades</span><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">, </span><span class="src-var">$userid</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a470"></a> <span class="src-key">return </span><span class="src-id">true</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a471"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a472"></a> </div></li>
- <li><div class="src-line"><a name="a473"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a474"></a><span class="src-doc"> * Calculate the overall grade for a quiz given a number of attempts by a particular user.</span></div></li>
- <li><div class="src-line"><a name="a475"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a476"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">float </span><span class="src-doc"> The overall grade</span></div></li>
- <li><div class="src-line"><a name="a477"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">object </span><span class="src-doc-var">$quiz </span><span class="src-doc"> The quiz for which the best grade is to be calculated</span></div></li>
- <li><div class="src-line"><a name="a478"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">array </span><span class="src-doc-var">$attempts </span><span class="src-doc">An array of all the attempts of the user at the quiz</span></div></li>
- <li><div class="src-line"><a name="a479"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a480"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_calculate_best_grade">quiz_calculate_best_grade</a><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">, </span><span class="src-var">$attempts</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a481"></a> </div></li>
- <li><div class="src-line"><a name="a482"></a> <span class="src-key">switch </span><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">grademethod</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a483"></a> </div></li>
- <li><div class="src-line"><a name="a484"></a> <span class="src-key">case </span><span class="src-id"><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#defineQUIZ_ATTEMPTFIRST">QUIZ_ATTEMPTFIRST</a></span>:</div></li>
- <li><div class="src-line"><a name="a485"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$attempts </span><span class="src-key">as </span><span class="src-var">$attempt</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a486"></a> <span class="src-key">return </span><span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">sumgrades</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a487"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a488"></a> <span class="src-key">break</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a489"></a> </div></li>
- <li><div class="src-line"><a name="a490"></a> <span class="src-key">case </span><span class="src-id"><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#defineQUIZ_ATTEMPTLAST">QUIZ_ATTEMPTLAST</a></span>:</div></li>
- <li><div class="src-line"><a name="a491"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$attempts </span><span class="src-key">as </span><span class="src-var">$attempt</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a492"></a> <span class="src-var">$final </span>= <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">sumgrades</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a493"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a494"></a> <span class="src-key">return </span><span class="src-var">$final</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a495"></a> </div></li>
- <li><div class="src-line"><a name="a496"></a> <span class="src-key">case </span><span class="src-id"><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#defineQUIZ_GRADEAVERAGE">QUIZ_GRADEAVERAGE</a></span>:</div></li>
- <li><div class="src-line"><a name="a497"></a> <span class="src-var">$sum </span>= <span class="src-num">0</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a498"></a> <span class="src-var">$count </span>= <span class="src-num">0</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a499"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$attempts </span><span class="src-key">as </span><span class="src-var">$attempt</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a500"></a> <span class="src-var">$sum </span>+= <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">sumgrades</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a501"></a> <span class="src-var">$count</span>++<span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a502"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a503"></a> <span class="src-key">return </span>(float)<span class="src-var">$sum</span>/<span class="src-var">$count</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a504"></a> </div></li>
- <li><div class="src-line"><a name="a505"></a> <span class="src-key">default</span>:</div></li>
- <li><div class="src-line"><a name="a506"></a> <span class="src-key">case </span><span class="src-id"><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#defineQUIZ_GRADEHIGHEST">QUIZ_GRADEHIGHEST</a></span>:</div></li>
- <li><div class="src-line"><a name="a507"></a> <span class="src-var">$max </span>= <span class="src-num">0</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a508"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$attempts </span><span class="src-key">as </span><span class="src-var">$attempt</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a509"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">sumgrades </span>> <span class="src-var">$max</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a510"></a> <span class="src-var">$max </span>= <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">sumgrades</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a511"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a512"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a513"></a> <span class="src-key">return </span><span class="src-var">$max</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a514"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a515"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a516"></a> </div></li>
- <li><div class="src-line"><a name="a517"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a518"></a><span class="src-doc"> * Return the attempt with the best grade for a quiz</span></div></li>
- <li><div class="src-line"><a name="a519"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a520"></a><span class="src-doc"> * Which attempt is the best depends on $quiz->grademethod. If the grade</span></div></li>
- <li><div class="src-line"><a name="a521"></a><span class="src-doc"> * method is GRADEAVERAGE then this function simply returns the last attempt.</span></div></li>
- <li><div class="src-line"><a name="a522"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">object </span><span class="src-doc"> </span><span class="src-doc-type">The </span><span class="src-doc">attempt with the best grade</span></div></li>
- <li><div class="src-line"><a name="a523"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">object </span><span class="src-doc-var">$quiz </span><span class="src-doc"> The quiz for which the best grade is to be calculated</span></div></li>
- <li><div class="src-line"><a name="a524"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">array </span><span class="src-doc-var">$attempts </span><span class="src-doc">An array of all the attempts of the user at the quiz</span></div></li>
- <li><div class="src-line"><a name="a525"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a526"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_calculate_best_attempt">quiz_calculate_best_attempt</a><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">, </span><span class="src-var">$attempts</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a527"></a> </div></li>
- <li><div class="src-line"><a name="a528"></a> <span class="src-key">switch </span><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">grademethod</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a529"></a> </div></li>
- <li><div class="src-line"><a name="a530"></a> <span class="src-key">case </span><span class="src-id"><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#defineQUIZ_ATTEMPTFIRST">QUIZ_ATTEMPTFIRST</a></span>:</div></li>
- <li><div class="src-line"><a name="a531"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$attempts </span><span class="src-key">as </span><span class="src-var">$attempt</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a532"></a> <span class="src-key">return </span><span class="src-var">$attempt</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a533"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a534"></a> <span class="src-key">break</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a535"></a> </div></li>
- <li><div class="src-line"><a name="a536"></a> <span class="src-key">case </span><span class="src-id"><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#defineQUIZ_GRADEAVERAGE">QUIZ_GRADEAVERAGE</a></span>: <span class="src-comm">// need to do something with it :-)</span></div></li>
- <li><div class="src-line"><a name="a537"></a> <span class="src-key">case </span><span class="src-id"><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#defineQUIZ_ATTEMPTLAST">QUIZ_ATTEMPTLAST</a></span>:</div></li>
- <li><div class="src-line"><a name="a538"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$attempts </span><span class="src-key">as </span><span class="src-var">$attempt</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a539"></a> <span class="src-var">$final </span>= <span class="src-var">$attempt</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a540"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a541"></a> <span class="src-key">return </span><span class="src-var">$final</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a542"></a> </div></li>
- <li><div class="src-line"><a name="a543"></a> <span class="src-key">default</span>:</div></li>
- <li><div class="src-line"><a name="a544"></a> <span class="src-key">case </span><span class="src-id"><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#defineQUIZ_GRADEHIGHEST">QUIZ_GRADEHIGHEST</a></span>:</div></li>
- <li><div class="src-line"><a name="a545"></a> <span class="src-var">$max </span>= -<span class="src-num">1</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a546"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$attempts </span><span class="src-key">as </span><span class="src-var">$attempt</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a547"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">sumgrades </span>> <span class="src-var">$max</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a548"></a> <span class="src-var">$max </span>= <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">sumgrades</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a549"></a> <span class="src-var">$maxattempt </span>= <span class="src-var">$attempt</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a550"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a551"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a552"></a> <span class="src-key">return </span><span class="src-var">$maxattempt</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a553"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a554"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a555"></a> </div></li>
- <li><div class="src-line"><a name="a556"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a557"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">the </span><span class="src-doc">options for calculating the quiz grade from the individual attempt grades.</span></div></li>
- <li><div class="src-line"><a name="a558"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a559"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_get_grading_options">quiz_get_grading_options</a><span class="src-sym">(</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a560"></a> <span class="src-key">return </span><span class="src-key">array </span><span class="src-sym">(</span></div></li>
- <li><div class="src-line"><a name="a561"></a> <span class="src-id"><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#defineQUIZ_GRADEHIGHEST">QUIZ_GRADEHIGHEST</a> </span>=> <span class="src-id">get_string</span><span class="src-sym">(</span><span class="src-str">'gradehighest'</span><span class="src-sym">, </span><span class="src-str">'quiz'</span><span class="src-sym">)</span><span class="src-sym">,</span></div></li>
- <li><div class="src-line"><a name="a562"></a> <span class="src-id"><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#defineQUIZ_GRADEAVERAGE">QUIZ_GRADEAVERAGE</a> </span>=> <span class="src-id">get_string</span><span class="src-sym">(</span><span class="src-str">'gradeaverage'</span><span class="src-sym">, </span><span class="src-str">'quiz'</span><span class="src-sym">)</span><span class="src-sym">,</span></div></li>
- <li><div class="src-line"><a name="a563"></a> <span class="src-id"><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#defineQUIZ_ATTEMPTFIRST">QUIZ_ATTEMPTFIRST</a> </span>=> <span class="src-id">get_string</span><span class="src-sym">(</span><span class="src-str">'attemptfirst'</span><span class="src-sym">, </span><span class="src-str">'quiz'</span><span class="src-sym">)</span><span class="src-sym">,</span></div></li>
- <li><div class="src-line"><a name="a564"></a> <span class="src-id"><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#defineQUIZ_ATTEMPTLAST">QUIZ_ATTEMPTLAST</a> </span>=> <span class="src-id">get_string</span><span class="src-sym">(</span><span class="src-str">'attemptlast'</span><span class="src-sym">, </span><span class="src-str">'quiz'</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a565"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a566"></a> </div></li>
- <li><div class="src-line"><a name="a567"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a568"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">int </span><span class="src-doc-var">$option </span><span class="src-doc">one of the values QUIZ_GRADEHIGHEST, QUIZ_GRADEAVERAGE, QUIZ_ATTEMPTFIRST or QUIZ_ATTEMPTLAST.</span></div></li>
- <li><div class="src-line"><a name="a569"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">the </span><span class="src-doc">lang string for that option.</span></div></li>
- <li><div class="src-line"><a name="a570"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a571"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_get_grading_option_name">quiz_get_grading_option_name</a><span class="src-sym">(</span><span class="src-var">$option</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a572"></a> <span class="src-var">$strings </span>= <a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_get_grading_options">quiz_get_grading_options</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a573"></a> <span class="src-key">return </span><span class="src-var">$strings</span><span class="src-sym">[</span><span class="src-var">$option</span><span class="src-sym">]</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a574"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a575"></a> </div></li>
- <li><div class="src-line"><a name="a576"></a><span class="src-comm">/// Other quiz functions ////////////////////////////////////////////////////</span></div></li>
- <li><div class="src-line"><a name="a577"></a> </div></li>
- <li><div class="src-line"><a name="a578"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a579"></a><span class="src-doc"> * Parse field names used for the replace options on question edit forms</span></div></li>
- <li><div class="src-line"><a name="a580"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a581"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_parse_fieldname">quiz_parse_fieldname</a><span class="src-sym">(</span><span class="src-var">$name</span><span class="src-sym">, </span><span class="src-var">$nameprefix</span>=<span class="src-str">'question'</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a582"></a> <span class="src-var">$reg </span>= <span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a583"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/preg_match">preg_match</a><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">/<span class="src-var">$nameprefix</span>(\\d+)(\w+)/</span><span class="src-str">"</span><span class="src-sym">, </span><span class="src-var">$name</span><span class="src-sym">, </span><span class="src-var">$reg</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a584"></a> <span class="src-key">return </span><span class="src-key">array</span><span class="src-sym">(</span><span class="src-str">'mode' </span>=> <span class="src-var">$reg</span><span class="src-sym">[</span><span class="src-num">2</span><span class="src-sym">]</span><span class="src-sym">, </span><span class="src-str">'id' </span>=> (int)<span class="src-var">$reg</span><span class="src-sym">[</span><span class="src-num">1</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a585"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a586"></a> <span class="src-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a587"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a588"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a589"></a> </div></li>
- <li><div class="src-line"><a name="a590"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a591"></a><span class="src-doc"> * Upgrade states for an attempt to Moodle 1.5 model</span></div></li>
- <li><div class="src-line"><a name="a592"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a593"></a><span class="src-doc"> * Any state that does not yet have its timestamp set to nonzero has not yet been upgraded from Moodle 1.4</span></div></li>
- <li><div class="src-line"><a name="a594"></a><span class="src-doc"> * The reason these are still around is that for large sites it would have taken too long to</span></div></li>
- <li><div class="src-line"><a name="a595"></a><span class="src-doc"> * upgrade all states at once. This function sets the timestamp field and creates an entry in the</span></div></li>
- <li><div class="src-line"><a name="a596"></a><span class="src-doc"> * question_sessions table.</span></div></li>
- <li><div class="src-line"><a name="a597"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">object </span><span class="src-doc-var">$attempt </span><span class="src-doc"> The attempt whose states need upgrading</span></div></li>
- <li><div class="src-line"><a name="a598"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a599"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_upgrade_states">quiz_upgrade_states</a><span class="src-sym">(</span><span class="src-var">$attempt</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a600"></a> <span class="src-key">global </span><span class="src-var">$CFG</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a601"></a> <span class="src-comm">// The old quiz model only allowed a single response per quiz attempt so that there will be</span></div></li>
- <li><div class="src-line"><a name="a602"></a> <span class="src-comm">// only one state record per question for this attempt.</span></div></li>
- <li><div class="src-line"><a name="a603"></a> </div></li>
- <li><div class="src-line"><a name="a604"></a> <span class="src-comm">// We set the timestamp of all states to the timemodified field of the attempt.</span></div></li>
- <li><div class="src-line"><a name="a605"></a> <span class="src-id">execute_sql</span><span class="src-sym">(</span><span class="src-str">"</span><span class="src-str">UPDATE {<span class="src-var">$CFG</span></span><span class="src-sym">-></span><span class="src-id">prefix</span><span class="src-str"></span><span class="src-sym">}</span>question_states SET timestamp = '<span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">timemodified</span>' WHERE attempt = '<span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">uniqueid</span>'</span><span class="src-str">"</span><span class="src-sym">, </span><span class="src-id">false</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a606"></a> </div></li>
- <li><div class="src-line"><a name="a607"></a> <span class="src-comm">// For each state we create an entry in the question_sessions table, with both newest and</span></div></li>
- <li><div class="src-line"><a name="a608"></a> <span class="src-comm">// newgraded pointing to this state.</span></div></li>
- <li><div class="src-line"><a name="a609"></a> <span class="src-comm">// Actually we only do this for states whose question is actually listed in $attempt->layout.</span></div></li>
- <li><div class="src-line"><a name="a610"></a> <span class="src-comm">// We do not do it for states associated to wrapped questions like for example the questions</span></div></li>
- <li><div class="src-line"><a name="a611"></a> <span class="src-comm">// used by a RANDOM question</span></div></li>
- <li><div class="src-line"><a name="a612"></a> <span class="src-var">$session </span>= <span class="src-key">new </span><span class="src-id">stdClass</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a613"></a> <span class="src-var">$session</span><span class="src-sym">-></span><span class="src-id">attemptid </span>= <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">uniqueid</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a614"></a> <span class="src-var">$questionlist </span>= <a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_questions_in_quiz">quiz_questions_in_quiz</a><span class="src-sym">(</span><span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">layout</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a615"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$questionlist </span><span class="src-key">and </span><span class="src-var">$states </span>= <span class="src-id">get_records_select</span><span class="src-sym">(</span><span class="src-str">'question_states'</span><span class="src-sym">, </span><span class="src-str">"</span><span class="src-str">attempt = '<span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">uniqueid</span>' AND question IN (<span class="src-var">$questionlist</span>)</span><span class="src-str">"</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a616"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$states </span><span class="src-key">as </span><span class="src-var">$state</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a617"></a> <span class="src-var">$session</span><span class="src-sym">-></span><span class="src-id">newgraded </span>= <span class="src-var">$state</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a618"></a> <span class="src-var">$session</span><span class="src-sym">-></span><span class="src-id">newest </span>= <span class="src-var">$state</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a619"></a> <span class="src-var">$session</span><span class="src-sym">-></span><span class="src-id">questionid </span>= <span class="src-var">$state</span><span class="src-sym">-></span><span class="src-id">question</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a620"></a> <span class="src-id">insert_record</span><span class="src-sym">(</span><span class="src-str">'question_sessions'</span><span class="src-sym">, </span><span class="src-var">$session</span><span class="src-sym">, </span><span class="src-id">false</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a621"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a622"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a623"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a624"></a> </div></li>
- <li><div class="src-line"><a name="a625"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a626"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">object </span><span class="src-doc-var">$quiz </span><span class="src-doc">the quiz</span></div></li>
- <li><div class="src-line"><a name="a627"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">object </span><span class="src-doc-var">$question </span><span class="src-doc">the question</span></div></li>
- <li><div class="src-line"><a name="a628"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">the </span><span class="src-doc">HTML for a preview question icon.</span></div></li>
- <li><div class="src-line"><a name="a629"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a630"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_question_preview_button">quiz_question_preview_button</a><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">, </span><span class="src-var">$question</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a631"></a> <span class="src-key">global </span><span class="src-var">$CFG</span><span class="src-sym">, </span><span class="src-var">$COURSE</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a632"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-id">question_has_capability_on</span><span class="src-sym">(</span><span class="src-var">$question</span><span class="src-sym">, </span><span class="src-str">'use'</span><span class="src-sym">, </span><span class="src-var">$question</span><span class="src-sym">-></span><span class="src-id">category</span><span class="src-sym">))</span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a633"></a> <span class="src-key">return </span><span class="src-str">''</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a634"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a635"></a> <span class="src-var">$strpreview </span>= <span class="src-id">get_string</span><span class="src-sym">(</span><span class="src-str">'previewquestion'</span><span class="src-sym">, </span><span class="src-str">'quiz'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a636"></a> <span class="src-var">$quizorcourseid </span>= <span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">id</span>?<span class="src-sym">(</span><span class="src-str">'&amp;quizid=' </span>. <span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">)</span>:<span class="src-sym">(</span><span class="src-str">'&amp;courseid=' </span>.<span class="src-var">$COURSE</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a637"></a> <span class="src-key">return </span><span class="src-id">link_to_popup_window</span><span class="src-sym">(</span><span class="src-str">'/question/preview.php?id=' </span>. <span class="src-var">$question</span><span class="src-sym">-></span><span class="src-id">id </span>. <span class="src-var">$quizorcourseid</span><span class="src-sym">, </span><span class="src-str">'questionpreview'</span><span class="src-sym">,</span></div></li>
- <li><div class="src-line"><a name="a638"></a> <span class="src-str">"</span><span class="src-str"><img src=\"<span class="src-var">$CFG</span><span class="src-sym">-></span><span class="src-id">pixpath</span>/t/preview.gif\" class=\"iconsmall\" alt=\"<span class="src-var">$strpreview</span>\" /></span><span class="src-str">"</span><span class="src-sym">,</span></div></li>
- <li><div class="src-line"><a name="a639"></a> <span class="src-num">0</span><span class="src-sym">, </span><span class="src-num">0</span><span class="src-sym">, </span><span class="src-var">$strpreview</span><span class="src-sym">, </span><span class="src-id">QUESTION_PREVIEW_POPUP_OPTIONS</span><span class="src-sym">, </span><span class="src-id">true</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a640"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a641"></a> </div></li>
- <li><div class="src-line"><a name="a642"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a643"></a><span class="src-doc"> * Determine render options</span></div></li>
- <li><div class="src-line"><a name="a644"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a645"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">int </span><span class="src-doc-var">$reviewoptions </span></div></li>
- <li><div class="src-line"><a name="a646"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">object </span><span class="src-doc-var">$state </span></div></li>
- <li><div class="src-line"><a name="a647"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a648"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_get_renderoptions">quiz_get_renderoptions</a><span class="src-sym">(</span><span class="src-var">$reviewoptions</span><span class="src-sym">, </span><span class="src-var">$state</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a649"></a> <span class="src-var">$options </span>= <span class="src-key">new </span><span class="src-id">stdClass</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a650"></a> </div></li>
- <li><div class="src-line"><a name="a651"></a> <span class="src-comm">// Show the question in readonly (review) mode if the question is in</span></div></li>
- <li><div class="src-line"><a name="a652"></a> <span class="src-comm">// the closed state</span></div></li>
- <li><div class="src-line"><a name="a653"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">readonly </span>= <span class="src-id">question_state_is_closed</span><span class="src-sym">(</span><span class="src-var">$state</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a654"></a> </div></li>
- <li><div class="src-line"><a name="a655"></a> <span class="src-comm">// Show feedback once the question has been graded (if allowed by the quiz)</span></div></li>
- <li><div class="src-line"><a name="a656"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">feedback </span>= <span class="src-id">question_state_is_graded</span><span class="src-sym">(</span><span class="src-var">$state</span><span class="src-sym">) </span>&& <span class="src-sym">(</span><span class="src-var">$reviewoptions </span><span class="src-sym">& </span><span class="src-id">QUIZ_REVIEW_FEEDBACK </span><span class="src-sym">& </span><span class="src-id">QUIZ_REVIEW_IMMEDIATELY</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a657"></a> </div></li>
- <li><div class="src-line"><a name="a658"></a> <span class="src-comm">// Show validation only after a validation event</span></div></li>
- <li><div class="src-line"><a name="a659"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">validation </span>= <span class="src-id">QUESTION_EVENTVALIDATE </span>=== <span class="src-var">$state</span><span class="src-sym">-></span><span class="src-id">event</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a660"></a> </div></li>
- <li><div class="src-line"><a name="a661"></a> <span class="src-comm">// Show correct responses in readonly mode if the quiz allows it</span></div></li>
- <li><div class="src-line"><a name="a662"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">correct_responses </span>= <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">readonly </span>&& <span class="src-sym">(</span><span class="src-var">$reviewoptions </span><span class="src-sym">& </span><span class="src-id">QUIZ_REVIEW_ANSWERS </span><span class="src-sym">& </span><span class="src-id">QUIZ_REVIEW_IMMEDIATELY</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a663"></a> </div></li>
- <li><div class="src-line"><a name="a664"></a> <span class="src-comm">// Show general feedback if the question has been graded and the quiz allows it.</span></div></li>
- <li><div class="src-line"><a name="a665"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">generalfeedback </span>= <span class="src-id">question_state_is_graded</span><span class="src-sym">(</span><span class="src-var">$state</span><span class="src-sym">) </span>&& <span class="src-sym">(</span><span class="src-var">$reviewoptions </span><span class="src-sym">& </span><span class="src-id">QUIZ_REVIEW_GENERALFEEDBACK </span><span class="src-sym">& </span><span class="src-id">QUIZ_REVIEW_IMMEDIATELY</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a666"></a> </div></li>
- <li><div class="src-line"><a name="a667"></a> <span class="src-comm">// Show overallfeedback once the attempt is over.</span></div></li>
- <li><div class="src-line"><a name="a668"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">overallfeedback </span>= <span class="src-id">false</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a669"></a> </div></li>
- <li><div class="src-line"><a name="a670"></a> <span class="src-comm">// Always show responses and scores</span></div></li>
- <li><div class="src-line"><a name="a671"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">responses </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a672"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">scores </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a673"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">quizstate </span>= <span class="src-id"><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#defineQUIZ_STATE_DURING">QUIZ_STATE_DURING</a></span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a674"></a> </div></li>
- <li><div class="src-line"><a name="a675"></a> <span class="src-key">return </span><span class="src-var">$options</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a676"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a677"></a> </div></li>
- <li><div class="src-line"><a name="a678"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a679"></a><span class="src-doc"> * Determine review options</span></div></li>
- <li><div class="src-line"><a name="a680"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a681"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">object </span><span class="src-doc-var">$quiz </span><span class="src-doc">the quiz instance.</span></div></li>
- <li><div class="src-line"><a name="a682"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">object </span><span class="src-doc-var">$attempt </span><span class="src-doc">the attempt in question.</span></div></li>
- <li><div class="src-line"><a name="a683"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">$context </span><span class="src-doc">the roles and permissions context,</span></div></li>
- <li><div class="src-line"><a name="a684"></a><span class="src-doc"> * normally the context for the quiz module instance.</span></div></li>
- <li><div class="src-line"><a name="a685"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a686"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">object </span><span class="src-doc-type">an </span><span class="src-doc">object with boolean fields responses, scores, feedback,</span></div></li>
- <li><div class="src-line"><a name="a687"></a><span class="src-doc"> * correct_responses, solutions and general feedback</span></div></li>
- <li><div class="src-line"><a name="a688"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a689"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_get_reviewoptions">quiz_get_reviewoptions</a><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">, </span><span class="src-var">$attempt</span><span class="src-sym">, </span><span class="src-var">$context</span>=<span class="src-id">null</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a690"></a> <span class="src-var">$options </span>= <span class="src-key">new </span><span class="src-id">stdClass</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a691"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">readonly </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a692"></a> </div></li>
- <li><div class="src-line"><a name="a693"></a> <span class="src-comm">// Provide the links to the question review and comment script</span></div></li>
- <li><div class="src-line"><a name="a694"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">questionreviewlink </span>= <span class="src-str">'/mod/quiz/reviewquestion.php'</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a695"></a> </div></li>
- <li><div class="src-line"><a name="a696"></a> <span class="src-comm">// Show a link to the comment box only for closed attempts</span></div></li>
- <li><div class="src-line"><a name="a697"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">timefinish </span>&& <span class="src-sym">!</span><a href="http://www.php.net/is_null">is_null</a><span class="src-sym">(</span><span class="src-var">$context</span><span class="src-sym">) </span>&& <span class="src-id">has_capability</span><span class="src-sym">(</span><span class="src-str">'mod/quiz:grade'</span><span class="src-sym">, </span><span class="src-var">$context</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a698"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">questioncommentlink </span>= <span class="src-str">'/mod/quiz/comment.php'</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a699"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a700"></a> </div></li>
- <li><div class="src-line"><a name="a701"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/is_null">is_null</a><span class="src-sym">(</span><span class="src-var">$context</span><span class="src-sym">) </span>&& <span class="src-id">has_capability</span><span class="src-sym">(</span><span class="src-str">'mod/quiz:viewreports'</span><span class="src-sym">, </span><span class="src-var">$context</span><span class="src-sym">) </span>&& </div></li>
- <li><div class="src-line"><a name="a702"></a> <span class="src-id">has_capability</span><span class="src-sym">(</span><span class="src-str">'moodle/grade:viewhidden'</span><span class="src-sym">, </span><span class="src-var">$context</span><span class="src-sym">) </span>&& <span class="src-sym">!</span><span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">preview</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a703"></a> <span class="src-comm">// People who can see reports and hidden grades should be shown everything,</span></div></li>
- <li><div class="src-line"><a name="a704"></a> <span class="src-comm">// except during preview when teachers want to see what students see.</span></div></li>
- <li><div class="src-line"><a name="a705"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">responses </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a706"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">scores </span>= <span class="src-id">true</span><span class="src-sym">; </span></div></li>
- <li><div class="src-line"><a name="a707"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">feedback </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a708"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">correct_responses </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a709"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">solutions </span>= <span class="src-id">false</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a710"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">generalfeedback </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a711"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">overallfeedback </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a712"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">quizstate </span>= <span class="src-id"><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#defineQUIZ_STATE_TEACHERACCESS">QUIZ_STATE_TEACHERACCESS</a></span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a713"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a714"></a> <span class="src-comm">// Work out the state of the attempt ...</span></div></li>
- <li><div class="src-line"><a name="a715"></a> <span class="src-key">if </span><span class="src-sym">(((</span><a href="http://www.php.net/time">time</a><span class="src-sym">(</span><span class="src-sym">) </span>- <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">timefinish</span><span class="src-sym">) </span>< <span class="src-num">120</span><span class="src-sym">) </span>|| <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">timefinish</span>==<span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a716"></a> <span class="src-var">$quiz_state_mask </span>= <span class="src-id">QUIZ_REVIEW_IMMEDIATELY</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a717"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">quizstate </span>= <span class="src-id"><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#defineQUIZ_STATE_IMMEDIATELY">QUIZ_STATE_IMMEDIATELY</a></span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a718"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">timeclose </span><span class="src-key">or </span><a href="http://www.php.net/time">time</a><span class="src-sym">(</span><span class="src-sym">) </span>< <span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">timeclose</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a719"></a> <span class="src-var">$quiz_state_mask </span>= <span class="src-id">QUIZ_REVIEW_OPEN</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a720"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">quizstate </span>= <span class="src-id"><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#defineQUIZ_STATE_OPEN">QUIZ_STATE_OPEN</a></span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a721"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a722"></a> <span class="src-var">$quiz_state_mask </span>= <span class="src-id">QUIZ_REVIEW_CLOSED</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a723"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">quizstate </span>= <span class="src-id"><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#defineQUIZ_STATE_CLOSED">QUIZ_STATE_CLOSED</a></span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a724"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a725"></a> </div></li>
- <li><div class="src-line"><a name="a726"></a> <span class="src-comm">// ... and hence extract the appropriate review options. </span></div></li>
- <li><div class="src-line"><a name="a727"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">responses </span>= <span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">review </span><span class="src-sym">& </span><span class="src-var">$quiz_state_mask </span><span class="src-sym">& </span><span class="src-id">QUIZ_REVIEW_RESPONSES</span><span class="src-sym">) </span>? <span class="src-num">1 </span>: <span class="src-num">0</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a728"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">scores </span>= <span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">review </span><span class="src-sym">& </span><span class="src-var">$quiz_state_mask </span><span class="src-sym">& </span><span class="src-id">QUIZ_REVIEW_SCORES</span><span class="src-sym">) </span>? <span class="src-num">1 </span>: <span class="src-num">0</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a729"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">feedback </span>= <span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">review </span><span class="src-sym">& </span><span class="src-var">$quiz_state_mask </span><span class="src-sym">& </span><span class="src-id">QUIZ_REVIEW_FEEDBACK</span><span class="src-sym">) </span>? <span class="src-num">1 </span>: <span class="src-num">0</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a730"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">correct_responses </span>= <span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">review </span><span class="src-sym">& </span><span class="src-var">$quiz_state_mask </span><span class="src-sym">& </span><span class="src-id">QUIZ_REVIEW_ANSWERS</span><span class="src-sym">) </span>? <span class="src-num">1 </span>: <span class="src-num">0</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a731"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">solutions </span>= <span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">review </span><span class="src-sym">& </span><span class="src-var">$quiz_state_mask </span><span class="src-sym">& </span><span class="src-id">QUIZ_REVIEW_SOLUTIONS</span><span class="src-sym">) </span>? <span class="src-num">1 </span>: <span class="src-num">0</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a732"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">generalfeedback </span>= <span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">review </span><span class="src-sym">& </span><span class="src-var">$quiz_state_mask </span><span class="src-sym">& </span><span class="src-id">QUIZ_REVIEW_GENERALFEEDBACK</span><span class="src-sym">) </span>? <span class="src-num">1 </span>: <span class="src-num">0</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a733"></a> <span class="src-var">$options</span><span class="src-sym">-></span><span class="src-id">overallfeedback </span>= <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">timefinish </span>&& <span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">review </span><span class="src-sym">& </span><span class="src-var">$quiz_state_mask </span><span class="src-sym">& </span><span class="src-id">QUIZ_REVIEW_OVERALLFEEDBACK</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a734"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a735"></a> </div></li>
- <li><div class="src-line"><a name="a736"></a> <span class="src-key">return </span><span class="src-var">$options</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a737"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a738"></a> </div></li>
- <li><div class="src-line"><a name="a739"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a740"></a><span class="src-doc"> * Combines the review options from a number of different quiz attempts.</span></div></li>
- <li><div class="src-line"><a name="a741"></a><span class="src-doc"> * Returns an array of two ojects, so he suggested way of calling this</span></div></li>
- <li><div class="src-line"><a name="a742"></a><span class="src-doc"> * funciton is:</span></div></li>
- <li><div class="src-line"><a name="a743"></a><span class="src-doc"> * list($someoptions, $alloptions) = quiz_get_combined_reviewoptions(...)</span></div></li>
- <li><div class="src-line"><a name="a744"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a745"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">object </span><span class="src-doc-var">$quiz </span><span class="src-doc">the quiz instance.</span></div></li>
- <li><div class="src-line"><a name="a746"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">array </span><span class="src-doc-var">$attempts </span><span class="src-doc">an array of attempt objects.</span></div></li>
- <li><div class="src-line"><a name="a747"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">$context </span><span class="src-doc">the roles and permissions context,</span></div></li>
- <li><div class="src-line"><a name="a748"></a><span class="src-doc"> * normally the context for the quiz module instance.</span></div></li>
- <li><div class="src-line"><a name="a749"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a750"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array </span><span class="src-doc">of two options objects, one showing which options are true for</span></div></li>
- <li><div class="src-line"><a name="a751"></a><span class="src-doc"> * at least one of the attempts, the other showing which options are true</span></div></li>
- <li><div class="src-line"><a name="a752"></a><span class="src-doc"> * for all attempts.</span></div></li>
- <li><div class="src-line"><a name="a753"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a754"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_get_combined_reviewoptions">quiz_get_combined_reviewoptions</a><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">, </span><span class="src-var">$attempts</span><span class="src-sym">, </span><span class="src-var">$context</span>=<span class="src-id">null</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a755"></a> <span class="src-var">$fields </span>= <span class="src-key">array</span><span class="src-sym">(</span><span class="src-str">'readonly'</span><span class="src-sym">, </span><span class="src-str">'scores'</span><span class="src-sym">, </span><span class="src-str">'feedback'</span><span class="src-sym">, </span><span class="src-str">'correct_responses'</span><span class="src-sym">, </span><span class="src-str">'solutions'</span><span class="src-sym">, </span><span class="src-str">'generalfeedback'</span><span class="src-sym">, </span><span class="src-str">'overallfeedback'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a756"></a> <span class="src-var">$someoptions </span>= <span class="src-key">new </span><span class="src-id">stdClass</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a757"></a> <span class="src-var">$alloptions </span>= <span class="src-key">new </span><span class="src-id">stdClass</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a758"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$fields </span><span class="src-key">as </span><span class="src-var">$field</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a759"></a> <span class="src-var">$someoptions</span><span class="src-sym">-></span><span class="src-var">$field </span>= <span class="src-id">false</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a760"></a> <span class="src-var">$alloptions</span><span class="src-sym">-></span><span class="src-var">$field </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a761"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a762"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$attempts </span><span class="src-key">as </span><span class="src-var">$attempt</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a763"></a> <span class="src-var">$attemptoptions </span>= <a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_get_reviewoptions">quiz_get_reviewoptions</a><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">, </span><span class="src-var">$attempt</span><span class="src-sym">, </span><span class="src-var">$context</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a764"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$fields </span><span class="src-key">as </span><span class="src-var">$field</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a765"></a> <span class="src-var">$someoptions</span><span class="src-sym">-></span><span class="src-var">$field </span>= <span class="src-var">$someoptions</span><span class="src-sym">-></span><span class="src-var">$field </span>|| <span class="src-var">$attemptoptions</span><span class="src-sym">-></span><span class="src-var">$field</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a766"></a> <span class="src-var">$alloptions</span><span class="src-sym">-></span><span class="src-var">$field </span>= <span class="src-var">$alloptions</span><span class="src-sym">-></span><span class="src-var">$field </span>&& <span class="src-var">$attemptoptions</span><span class="src-sym">-></span><span class="src-var">$field</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a767"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a768"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a769"></a> <span class="src-key">return </span><span class="src-key">array</span><span class="src-sym">(</span><span class="src-var">$someoptions</span><span class="src-sym">, </span><span class="src-var">$alloptions</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a770"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a771"></a> </div></li>
- <li><div class="src-line"><a name="a772"></a><span class="src-comm">/// FUNCTIONS FOR SENDING NOTIFICATION EMAILS ///////////////////////////////</span></div></li>
- <li><div class="src-line"><a name="a773"></a> </div></li>
- <li><div class="src-line"><a name="a774"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a775"></a><span class="src-doc"> * Sends confirmation email to the student taking the course</span></div></li>
- <li><div class="src-line"><a name="a776"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a777"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">stdClass </span><span class="src-doc-var">$a </span><span class="src-doc">associative array of replaceable fields for the templates</span></div></li>
- <li><div class="src-line"><a name="a778"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a779"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">bool</span><span class="src-doc">|</span><span class="src-doc-type">string</span><span class="src-doc">result of email_to_user()</span></div></li>
- <li><div class="src-line"><a name="a780"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a781"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_send_confirmation">quiz_send_confirmation</a><span class="src-sym">(</span><span class="src-var">$a</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a782"></a> </div></li>
- <li><div class="src-line"><a name="a783"></a> <span class="src-key">global </span><span class="src-var">$USER</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a784"></a> </div></li>
- <li><div class="src-line"><a name="a785"></a> <span class="src-comm">// recipient is self</span></div></li>
- <li><div class="src-line"><a name="a786"></a> <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">useridnumber </span>= <span class="src-var">$USER</span><span class="src-sym">-></span><span class="src-id">idnumber</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a787"></a> <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">username </span>= <span class="src-id">fullname</span><span class="src-sym">(</span><span class="src-var">$USER</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a788"></a> <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">userusername </span>= <span class="src-var">$USER</span><span class="src-sym">-></span><span class="src-id">username</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a789"></a> </div></li>
- <li><div class="src-line"><a name="a790"></a> <span class="src-comm">// fetch the subject and body from strings</span></div></li>
- <li><div class="src-line"><a name="a791"></a> <span class="src-var">$subject </span>= <span class="src-id">get_string</span><span class="src-sym">(</span><span class="src-str">'emailconfirmsubject'</span><span class="src-sym">, </span><span class="src-str">'quiz'</span><span class="src-sym">, </span><span class="src-var">$a</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a792"></a> <span class="src-var">$body </span>= <span class="src-id">get_string</span><span class="src-sym">(</span><span class="src-str">'emailconfirmbody'</span><span class="src-sym">, </span><span class="src-str">'quiz'</span><span class="src-sym">, </span><span class="src-var">$a</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a793"></a> </div></li>
- <li><div class="src-line"><a name="a794"></a> <span class="src-comm">// send email and analyse result</span></div></li>
- <li><div class="src-line"><a name="a795"></a> <span class="src-key">return </span><span class="src-id">email_to_user</span><span class="src-sym">(</span><span class="src-var">$USER</span><span class="src-sym">, </span><span class="src-id">get_admin</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">, </span><span class="src-var">$subject</span><span class="src-sym">, </span><span class="src-var">$body</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a796"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a797"></a> </div></li>
- <li><div class="src-line"><a name="a798"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a799"></a><span class="src-doc"> * Sends notification email to the interested parties that assign the role capability</span></div></li>
- <li><div class="src-line"><a name="a800"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a801"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">object </span><span class="src-doc-var">$recipient </span><span class="src-doc">user object of the intended recipient</span></div></li>
- <li><div class="src-line"><a name="a802"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">stdClass </span><span class="src-doc-var">$a </span><span class="src-doc">associative array of replaceable fields for the templates</span></div></li>
- <li><div class="src-line"><a name="a803"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a804"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">bool</span><span class="src-doc">|</span><span class="src-doc-type">string</span><span class="src-doc">result of email_to_user()</span></div></li>
- <li><div class="src-line"><a name="a805"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a806"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_send_notification">quiz_send_notification</a><span class="src-sym">(</span><span class="src-var">$recipient</span><span class="src-sym">, </span><span class="src-var">$a</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a807"></a> </div></li>
- <li><div class="src-line"><a name="a808"></a> <span class="src-key">global </span><span class="src-var">$USER</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a809"></a> </div></li>
- <li><div class="src-line"><a name="a810"></a> <span class="src-comm">// recipient info for template</span></div></li>
- <li><div class="src-line"><a name="a811"></a> <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">username </span>= <span class="src-id">fullname</span><span class="src-sym">(</span><span class="src-var">$recipient</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a812"></a> <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">userusername </span>= <span class="src-var">$recipient</span><span class="src-sym">-></span><span class="src-id">username</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a813"></a> <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">userusername </span>= <span class="src-var">$recipient</span><span class="src-sym">-></span><span class="src-id">username</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a814"></a> </div></li>
- <li><div class="src-line"><a name="a815"></a> <span class="src-comm">// fetch the subject and body from strings</span></div></li>
- <li><div class="src-line"><a name="a816"></a> <span class="src-var">$subject </span>= <span class="src-id">get_string</span><span class="src-sym">(</span><span class="src-str">'emailnotifysubject'</span><span class="src-sym">, </span><span class="src-str">'quiz'</span><span class="src-sym">, </span><span class="src-var">$a</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a817"></a> <span class="src-var">$body </span>= <span class="src-id">get_string</span><span class="src-sym">(</span><span class="src-str">'emailnotifybody'</span><span class="src-sym">, </span><span class="src-str">'quiz'</span><span class="src-sym">, </span><span class="src-var">$a</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a818"></a> </div></li>
- <li><div class="src-line"><a name="a819"></a> <span class="src-comm">// send email and analyse result</span></div></li>
- <li><div class="src-line"><a name="a820"></a> <span class="src-key">return </span><span class="src-id">email_to_user</span><span class="src-sym">(</span><span class="src-var">$recipient</span><span class="src-sym">, </span><span class="src-var">$USER</span><span class="src-sym">, </span><span class="src-var">$subject</span><span class="src-sym">, </span><span class="src-var">$body</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a821"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a822"></a> </div></li>
- <li><div class="src-line"><a name="a823"></a><span class="src-doc">/**</span></div></li>
- <li><div class="src-line"><a name="a824"></a><span class="src-doc"> * Takes a bunch of information to format into an email and send</span></div></li>
- <li><div class="src-line"><a name="a825"></a><span class="src-doc"> * to the specified recipient.</span></div></li>
- <li><div class="src-line"><a name="a826"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a827"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">object </span><span class="src-doc-var">$course </span><span class="src-doc">the course</span></div></li>
- <li><div class="src-line"><a name="a828"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">object </span><span class="src-doc-var">$quiz </span><span class="src-doc">the quiz</span></div></li>
- <li><div class="src-line"><a name="a829"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">object </span><span class="src-doc-var">$attempt </span><span class="src-doc">this attempt just finished</span></div></li>
- <li><div class="src-line"><a name="a830"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">object </span><span class="src-doc-var">$context </span><span class="src-doc">the quiz context</span></div></li>
- <li><div class="src-line"><a name="a831"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">object </span><span class="src-doc-var">$cm </span><span class="src-doc">the coursemodule for this quiz</span></div></li>
- <li><div class="src-line"><a name="a832"></a><span class="src-doc"> *</span></div></li>
- <li><div class="src-line"><a name="a833"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">int </span><span class="src-doc">number of emails sent</span></div></li>
- <li><div class="src-line"><a name="a834"></a><span class="src-doc"> */</span></div></li>
- <li><div class="src-line"><a name="a835"></a><span class="src-key">function </span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_send_notification_emails">quiz_send_notification_emails</a><span class="src-sym">(</span><span class="src-var">$course</span><span class="src-sym">, </span><span class="src-var">$quiz</span><span class="src-sym">, </span><span class="src-var">$attempt</span><span class="src-sym">, </span><span class="src-var">$context</span><span class="src-sym">, </span><span class="src-var">$cm</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a836"></a> <span class="src-key">global </span><span class="src-var">$CFG</span><span class="src-sym">, </span><span class="src-var">$USER</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a837"></a> <span class="src-comm">// we will count goods and bads for error logging</span></div></li>
- <li><div class="src-line"><a name="a838"></a> <span class="src-var">$emailresult </span>= <span class="src-key">array</span><span class="src-sym">(</span><span class="src-str">'good' </span>=> <span class="src-num">0</span><span class="src-sym">, </span><span class="src-str">'block' </span>=> <span class="src-num">0</span><span class="src-sym">, </span><span class="src-str">'fail' </span>=> <span class="src-num">0</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a839"></a> </div></li>
- <li><div class="src-line"><a name="a840"></a> <span class="src-comm">// do nothing if required objects not present</span></div></li>
- <li><div class="src-line"><a name="a841"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-key">empty</span><span class="src-sym">(</span><span class="src-var">$course</span><span class="src-sym">) </span><span class="src-key">or </span><span class="src-key">empty</span><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">) </span><span class="src-key">or </span><span class="src-key">empty</span><span class="src-sym">(</span><span class="src-var">$attempt</span><span class="src-sym">) </span><span class="src-key">or </span><span class="src-key">empty</span><span class="src-sym">(</span><span class="src-var">$context</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a842"></a> <span class="src-id">debugging</span><span class="src-sym">(</span><span class="src-str">'quiz_send_notification_emails: Email(s) not sent due to program error.'</span><span class="src-sym">,</span></div></li>
- <li><div class="src-line"><a name="a843"></a> <span class="src-id">DEBUG_DEVELOPER</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a844"></a> <span class="src-key">return </span><span class="src-var">$emailresult</span><span class="src-sym">[</span><span class="src-str">'fail'</span><span class="src-sym">]</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a845"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a846"></a> </div></li>
- <li><div class="src-line"><a name="a847"></a> <span class="src-comm">// check for confirmation required</span></div></li>
- <li><div class="src-line"><a name="a848"></a> <span class="src-var">$sendconfirm </span>= <span class="src-id">false</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a849"></a> <span class="src-var">$notifyexcludeusers </span>= <span class="src-str">''</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a850"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-id">has_capability</span><span class="src-sym">(</span><span class="src-str">'mod/quiz:emailconfirmsubmission'</span><span class="src-sym">, </span><span class="src-var">$context</span><span class="src-sym">, </span><span class="src-id">NULL</span><span class="src-sym">, </span><span class="src-id">false</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a851"></a> <span class="src-comm">// exclude from notify emails later</span></div></li>
- <li><div class="src-line"><a name="a852"></a> <span class="src-var">$notifyexcludeusers </span>= <span class="src-var">$USER</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a853"></a> <span class="src-comm">// send the email</span></div></li>
- <li><div class="src-line"><a name="a854"></a> <span class="src-var">$sendconfirm </span>= <span class="src-id">true</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a855"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a856"></a> </div></li>
- <li><div class="src-line"><a name="a857"></a> <span class="src-comm">// check for notifications required</span></div></li>
- <li><div class="src-line"><a name="a858"></a> <span class="src-var">$notifyfields </span>= <span class="src-str">'u.id, u.username, u.firstname, u.lastname, u.email, u.emailstop, u.lang, u.timezone, u.mailformat, u.maildisplay'</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a859"></a> <span class="src-var">$groups </span>= <span class="src-id">groups_get_all_groups</span><span class="src-sym">(</span><span class="src-var">$course</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">, </span><span class="src-var">$USER</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a860"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/is_array">is_array</a><span class="src-sym">(</span><span class="src-var">$groups</span><span class="src-sym">) </span>&& <a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$groups</span><span class="src-sym">) </span>> <span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a861"></a> <span class="src-var">$groups </span>= <a href="http://www.php.net/array_keys">array_keys</a><span class="src-sym">(</span><span class="src-var">$groups</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a862"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-key">if </span><span class="src-sym">(</span><span class="src-id">groups_get_activity_groupmode</span><span class="src-sym">(</span><span class="src-var">$cm</span><span class="src-sym">, </span><span class="src-var">$course</span><span class="src-sym">) </span>!= <span class="src-id">NOGROUPS</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a863"></a> <span class="src-comm">// If the user is not in a group, and the quiz is set to group mode,</span></div></li>
- <li><div class="src-line"><a name="a864"></a> <span class="src-comm">// then set $gropus to a non-existant id so that only users with</span></div></li>
- <li><div class="src-line"><a name="a865"></a> <span class="src-comm">// 'moodle/site:accessallgroups' get notified.</span></div></li>
- <li><div class="src-line"><a name="a866"></a> <span class="src-var">$groups </span>= -<span class="src-num">1</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a867"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a868"></a> <span class="src-var">$groups </span>= <span class="src-str">''</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a869"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a870"></a> <span class="src-var">$userstonotify </span>= <span class="src-id">get_users_by_capability</span><span class="src-sym">(</span><span class="src-var">$context</span><span class="src-sym">, </span><span class="src-str">'mod/quiz:emailnotifysubmission'</span><span class="src-sym">,</span></div></li>
- <li><div class="src-line"><a name="a871"></a> <span class="src-var">$notifyfields</span><span class="src-sym">, </span><span class="src-str">''</span><span class="src-sym">, </span><span class="src-str">''</span><span class="src-sym">, </span><span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$groups</span><span class="src-sym">, </span><span class="src-var">$notifyexcludeusers</span><span class="src-sym">, </span><span class="src-id">false</span><span class="src-sym">, </span><span class="src-id">false</span><span class="src-sym">, </span><span class="src-id">true</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a872"></a> </div></li>
- <li><div class="src-line"><a name="a873"></a> <span class="src-comm">// if something to send, then build $a</span></div></li>
- <li><div class="src-line"><a name="a874"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">! </span><span class="src-key">empty</span><span class="src-sym">(</span><span class="src-var">$userstonotify</span><span class="src-sym">) </span><span class="src-key">or </span><span class="src-var">$sendconfirm</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a875"></a> <span class="src-var">$a </span>= <span class="src-key">new </span><span class="src-id">stdClass</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a876"></a> <span class="src-comm">// course info</span></div></li>
- <li><div class="src-line"><a name="a877"></a> <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">coursename </span>= <span class="src-var">$course</span><span class="src-sym">-></span><span class="src-id">fullname</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a878"></a> <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">courseshortname </span>= <span class="src-var">$course</span><span class="src-sym">-></span><span class="src-id">shortname</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a879"></a> <span class="src-comm">// quiz info</span></div></li>
- <li><div class="src-line"><a name="a880"></a> <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">quizname </span>= <span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">name</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a881"></a> <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">quizreporturl </span>= <span class="src-var">$CFG</span><span class="src-sym">-></span><span class="src-id">wwwroot </span>. <span class="src-str">'/mod/quiz/report.php?q=' </span>. <span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a882"></a> <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">quizreportlink </span>= <span class="src-str">'<a href="' </span>. <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">quizreporturl </span>. <span class="src-str">'">' </span>. <span class="src-id">format_string</span><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">name</span><span class="src-sym">) </span>. <span class="src-str">' report</a>'</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a883"></a> <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">quizreviewurl </span>= <span class="src-var">$CFG</span><span class="src-sym">-></span><span class="src-id">wwwroot </span>. <span class="src-str">'/mod/quiz/review.php?attempt=' </span>. <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a884"></a> <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">quizreviewlink </span>= <span class="src-str">'<a href="' </span>. <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">quizreviewurl </span>. <span class="src-str">'">' </span>. <span class="src-id">format_string</span><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">name</span><span class="src-sym">) </span>. <span class="src-str">' review</a>'</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a885"></a> <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">quizurl </span>= <span class="src-var">$CFG</span><span class="src-sym">-></span><span class="src-id">wwwroot </span>. <span class="src-str">'/mod/quiz/view.php?q=' </span>. <span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">id</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a886"></a> <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">quizlink </span>= <span class="src-str">'<a href="' </span>. <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">quizurl </span>. <span class="src-str">'">' </span>. <span class="src-id">format_string</span><span class="src-sym">(</span><span class="src-var">$quiz</span><span class="src-sym">-></span><span class="src-id">name</span><span class="src-sym">) </span>. <span class="src-str">'</a>'</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a887"></a> <span class="src-comm">// attempt info</span></div></li>
- <li><div class="src-line"><a name="a888"></a> <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">submissiontime </span>= <span class="src-id">userdate</span><span class="src-sym">(</span><span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">timefinish</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a889"></a> <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">timetaken </span>= <span class="src-id">format_time</span><span class="src-sym">(</span><span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">timefinish </span>- <span class="src-var">$attempt</span><span class="src-sym">-></span><span class="src-id">timestart</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a890"></a> <span class="src-comm">// student who sat the quiz info</span></div></li>
- <li><div class="src-line"><a name="a891"></a> <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">studentidnumber </span>= <span class="src-var">$USER</span><span class="src-sym">-></span><span class="src-id">idnumber</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a892"></a> <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">studentname </span>= <span class="src-id">fullname</span><span class="src-sym">(</span><span class="src-var">$USER</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a893"></a> <span class="src-var">$a</span><span class="src-sym">-></span><span class="src-id">studentusername </span>= <span class="src-var">$USER</span><span class="src-sym">-></span><span class="src-id">username</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a894"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a895"></a> </div></li>
- <li><div class="src-line"><a name="a896"></a> <span class="src-comm">// send confirmation if required</span></div></li>
- <li><div class="src-line"><a name="a897"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$sendconfirm</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a898"></a> <span class="src-comm">// send the email and update stats</span></div></li>
- <li><div class="src-line"><a name="a899"></a> <span class="src-key">switch </span><span class="src-sym">(</span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_send_confirmation">quiz_send_confirmation</a><span class="src-sym">(</span><span class="src-var">$a</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a900"></a> <span class="src-key">case </span><span class="src-id">true</span>:</div></li>
- <li><div class="src-line"><a name="a901"></a> <span class="src-var">$emailresult</span><span class="src-sym">[</span><span class="src-str">'good'</span><span class="src-sym">]</span>++<span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a902"></a> <span class="src-key">break</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a903"></a> <span class="src-key">case </span><span class="src-id">false</span>:</div></li>
- <li><div class="src-line"><a name="a904"></a> <span class="src-var">$emailresult</span><span class="src-sym">[</span><span class="src-str">'fail'</span><span class="src-sym">]</span>++<span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a905"></a> <span class="src-key">break</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a906"></a> <span class="src-key">case </span><span class="src-str">'emailstop'</span>:</div></li>
- <li><div class="src-line"><a name="a907"></a> <span class="src-var">$emailresult</span><span class="src-sym">[</span><span class="src-str">'block'</span><span class="src-sym">]</span>++<span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a908"></a> <span class="src-key">break</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a909"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a910"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a911"></a> </div></li>
- <li><div class="src-line"><a name="a912"></a> <span class="src-comm">// send notifications if required</span></div></li>
- <li><div class="src-line"><a name="a913"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span><span class="src-key">empty</span><span class="src-sym">(</span><span class="src-var">$userstonotify</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a914"></a> <span class="src-comm">// loop through recipients and send an email to each and update stats</span></div></li>
- <li><div class="src-line"><a name="a915"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$userstonotify </span><span class="src-key">as </span><span class="src-var">$recipient</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a916"></a> <span class="src-key">switch </span><span class="src-sym">(</span><a href="../quiz/_sloodle---mod---quiz-1.0---locallib.1.9.php.html#functionquiz_send_notification">quiz_send_notification</a><span class="src-sym">(</span><span class="src-var">$recipient</span><span class="src-sym">, </span><span class="src-var">$a</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a917"></a> <span class="src-key">case </span><span class="src-id">true</span>:</div></li>
- <li><div class="src-line"><a name="a918"></a> <span class="src-var">$emailresult</span><span class="src-sym">[</span><span class="src-str">'good'</span><span class="src-sym">]</span>++<span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a919"></a> <span class="src-key">break</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a920"></a> <span class="src-key">case </span><span class="src-id">false</span>:</div></li>
- <li><div class="src-line"><a name="a921"></a> <span class="src-var">$emailresult</span><span class="src-sym">[</span><span class="src-str">'fail'</span><span class="src-sym">]</span>++<span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a922"></a> <span class="src-key">break</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a923"></a> <span class="src-key">case </span><span class="src-str">'emailstop'</span>:</div></li>
- <li><div class="src-line"><a name="a924"></a> <span class="src-var">$emailresult</span><span class="src-sym">[</span><span class="src-str">'block'</span><span class="src-sym">]</span>++<span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a925"></a> <span class="src-key">break</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a926"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a927"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a928"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a929"></a> </div></li>
- <li><div class="src-line"><a name="a930"></a> <span class="src-comm">// log errors sending emails if any</span></div></li>
- <li><div class="src-line"><a name="a931"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">! </span><span class="src-key">empty</span><span class="src-sym">(</span><span class="src-var">$emailresult</span><span class="src-sym">[</span><span class="src-str">'fail'</span><span class="src-sym">]</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a932"></a> <span class="src-id">debugging</span><span class="src-sym">(</span><span class="src-str">'quiz_send_notification_emails:: '</span>.<span class="src-var">$emailresult</span><span class="src-sym">[</span><span class="src-str">'fail'</span><span class="src-sym">]</span>.<span class="src-str">' email(s) failed to be sent.'</span><span class="src-sym">, </span><span class="src-id">DEBUG_DEVELOPER</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a933"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a934"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">! </span><span class="src-key">empty</span><span class="src-sym">(</span><span class="src-var">$emailresult</span><span class="src-sym">[</span><span class="src-str">'block'</span><span class="src-sym">]</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
- <li><div class="src-line"><a name="a935"></a> <span class="src-id">debugging</span><span class="src-sym">(</span><span class="src-str">'quiz_send_notification_emails:: '</span>.<span class="src-var">$emailresult</span><span class="src-sym">[</span><span class="src-str">'block'</span><span class="src-sym">]</span>.<span class="src-str">' email(s) were blocked by the user.'</span><span class="src-sym">, </span><span class="src-id">DEBUG_DEVELOPER</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a936"></a> <span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a937"></a> </div></li>
- <li><div class="src-line"><a name="a938"></a> <span class="src-comm">// return the number of successfully sent emails</span></div></li>
- <li><div class="src-line"><a name="a939"></a> <span class="src-key">return </span><span class="src-var">$emailresult</span><span class="src-sym">[</span><span class="src-str">'good'</span><span class="src-sym">]</span><span class="src-sym">;</span></div></li>
- <li><div class="src-line"><a name="a940"></a><span class="src-sym">}</span></div></li>
- <li><div class="src-line"><a name="a941"></a><span class="src-php">?></span></div></li>
- </ol></div>
- </div>
- <p class="notes" id="credit">
- Documentation generated on Mon, 16 Jun 2008 15:56:38 +0100 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.0</a>
- </p>
- </body>
- </html>
|