Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Anonymous Users: Difference between revisions

From MoodleDocs
mNo edit summary
mNo edit summary
Line 31: Line 31:
== Code Changes ==
== Code Changes ==


=== New Tables ===
=== Status definitions ===
define('ANONYMITY_ON', 2);
define('ANONYMITY_OPTIONAL', 1);
define('ANONYMITY_INHERIT', 0);
define('ANONYMITY_OFF', -1);
define('ANONYMITY_DISABLED', -9999);
 
=== DB Tables ===


New table: '''anonymity_context'''
New table: '''anonymity_context'''
Line 80: Line 87:
|}
|}


=== Core Code ===
=== Code ===


The '''fullname''' function in lib/moodlelib.php will need to be changed. Currently it is defined as:
The '''fullname'' function in lib/moodlelib.php will be changed to return an anonymous name if applicable. We can take advantage of the Navigation 2.0 changes which ensure each page is linked to a specific context (That is, $PAGE->context will always to set to something sensible.)
function fullname($user, $override=false)
where the user object is only required to contain '''firstname''' and '''lastname''' properties.


Proposed changes are:
  function fullname($user, $override=false, $anonymous=false, $viewanonymous=false)
  function fullname($user, $override=false, $courseid=null, $link=false, $anonymous=null, $viewanonymous=false)
where the user object may also contain an '''alias''' property
where the user object is required to contain '''firstname''', '''lastname''', '''alias'''


So what do we return?
So what do we return?

Revision as of 09:14, 1 May 2010

Template:CategoryDeveloper

Note: This page is a work-in-progress. Feedback and suggested improvements are welcome. Please join the discussion on moodle.org or use the page comments.


Moodle 2.0


Objective

To allow users to switch into an anonymous mode when using certain activities eg when posting to a forum, so that the user's real identity cannot be ascertained by other non-privileged users.

Possible Use Cases

  1. Activity: for example a forum may be switched into anonymous mode by teacher rendering all posts anonymous.
  2. User: a user may choose to participate in an activity anonymously. In this case the teacher would switch the activity into an optional mode. For example, the forum module, when posting to a forum in an optional anonymous mode, the student could choose at the time of posting whether the post should be anonymous;
  3. Role Play: a teacher may choose to run the whole course in an anonymous mode to allow students to role play. In this case the anonymous mode will be forced to "yes" in the course settings.

Settings

Global

Anon global.png

Course

Anon course.png

Activity

Anon activity.png

User Profile

Anon profile.png

Code Changes

Status definitions

define('ANONYMITY_ON', 2);
define('ANONYMITY_OPTIONAL', 1);
define('ANONYMITY_INHERIT', 0);
define('ANONYMITY_OFF', -1);
define('ANONYMITY_DISABLED', -9999);

DB Tables

New table: anonymity_context

  • Record the anonymity status in given contexts
field type description
id int(10) unsigned auto-increment
contextid int(10) unsigned id from the context table
status int(4) signed anonymity status

New table: anonymity_user_context

  • Record user aliases for a particular context
field type description
id int(10) unsigned auto-increment
userid int(10) unsigned id from the user table
contextid int(10) unsigned id from the context table
alias varchar(255) the user's alias for this given context

Code

The 'fullname function in lib/moodlelib.php will be changed to return an anonymous name if applicable. We can take advantage of the Navigation 2.0 changes which ensure each page is linked to a specific context (That is, $PAGE->context will always to set to something sensible.)

function fullname($user, $override=false, $anonymous=false, $viewanonymous=false)

where the user object may also contain an alias property

So what do we return?

$anonymous $viewanonymous return example
no no firstname lastname
no yes firstname lastname
yes no alias
yes yes alias (firstname lastname)

backwards compatibility

  • If no anonymous mode is given then we check the current context to see if anonymous mode should be running. Check activity, course, global settings and determine anonymity status. We can grab the current context from the $PAGE object, otherwise find another way to do it.
  • If no alias property is defined in the user object then we return get_string('anonymoususer') ie a global, default string;

See also

  • MDL-1071 Add a forum option to allow anonymous posting