The random allocator's init() method was split into two logical
parts. The init() now handles data from the form and executes the new
execute() method to do the actual job. The execute() method will be
called by the future scheduled allocator, too.
When generating the output of the allocation results, the names of
reviewers and authors are obtained based on the current state of assigned
roles and the 'musthavesubmission' setting. Therefore, when we want to
display information about a re-used allocation, the name of the author
or the name of the author may not be available.
In case of reviewers, we first try to reload the list including the
users without own submission. If it does not help, we just display the
id of the user instead of the name. In case of authors, we just display
the id the user. I can't see much point of eventual fetching the user
record from the database just to populate the list that almost no-one
reads anyway.
There was a bug as these users were ignored only as squares but not as
circles. This patch makes sure that no new allocation are added to
not-grouped users in visible group mode. However, the options 'Remove current
allocations' and 'Add self-assessments' apply to them intentionally.
Also, the user is warned if there are some not-grouped users found in a
workshop in visible groups mode or separate groups mode.
The patch wraps that foreach ($circles as $circleid => $circle)
loop by yet another one for() loop. Reviews are allocated iteratively
now. During the first iteration, we try to make sure that at least one
circle link exists. During the second iteration, we try to allocate two,
etc. Circles are shuffled at the beginning of each iteration.
This is supposed to improve the randomness of the allocation.
The patch also fixes shuffle_assoc() implementation. The previous
implementation actually did not work at all. Also, that removed called
to shuffle_assoc() was redundant here.
From now on, all English strings use the new syntax. They are not
eval()'ed any more and the only valid placeholders are {$a} and
{$a->foobar}. No extra quotes escaping, dollar sign escaping and putting
double percent signs.
The modified files were exported from AMOS database repository in the
new syntax and were re-ordered by stringid. Standard GNU/GPL and PHPdoc
blocks are added. Where there was no copyright note so far, I added the
default one with Martin Dougiamas as the copyright holder.
Live long and prosper.
Moving stuff from lib.php into static methods in localib.php. Removing
things from workshop core that were implemented in a subplugin. Dropping
stuff related to features not to be implemented in 2.0.
Getting a context from instance is very cheap and I can actually do it
just once when constructing the workshop API class. In the future, I
will get rid of all $PAGE->context which is actually meant for things
like blocks etc.
DB columns userid renamed to authorid or reviewerid to make the value
clear. Improved manual allocation UI. Raw grades are stored as numeric
values from 0.00000 to 100.00000 (instead of the current 0 to 1) to be
more precise. Started to work on the Grading report (it est the overall
report of all grades form submission and grades for assessments).
Critical issue fixed here: after recent refactorings, I called
get_users_with_capability() inside the loop in another loop! (oops :-)
This was used in my very first code using the renderers. I have learnt
I should follow the core approach (as suggested by Tim) to prepare a
data object and pass it to the renderer. The fact the renderer called
a workshop method indicated something was really wrong...
WIP
Every action script in 99% starts with fetching course, course module,
and module instance record. Workshop class will keep the reference to
the course record in courserecord public member variable (do not confuse
with course integer property).