<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wiki.mipt.ru/index.php?action=history&amp;feed=atom&amp;title=Development%3AAnonymous_Users</id>
	<title>Development:Anonymous Users - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.mipt.ru/index.php?action=history&amp;feed=atom&amp;title=Development%3AAnonymous_Users"/>
	<link rel="alternate" type="text/html" href="http://wiki.mipt.ru/index.php?title=Development:Anonymous_Users&amp;action=history"/>
	<updated>2026-05-07T14:21:26Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>http://wiki.mipt.ru/index.php?title=Development:Anonymous_Users&amp;diff=10804&amp;oldid=prev</id>
		<title>Олег Давидович: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://wiki.mipt.ru/index.php?title=Development:Anonymous_Users&amp;diff=10804&amp;oldid=prev"/>
		<updated>2024-10-21T08:50:59Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 08:50, 21 октября 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Олег Давидович</name></author>
	</entry>
	<entry>
		<id>http://wiki.mipt.ru/index.php?title=Development:Anonymous_Users&amp;diff=10803&amp;oldid=prev</id>
		<title>1&gt;Ikawhero в 13:26, 2 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://wiki.mipt.ru/index.php?title=Development:Anonymous_Users&amp;diff=10803&amp;oldid=prev"/>
		<updated>2010-05-02T13:26:33Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{CategoryDeveloper}}&lt;br /&gt;
&lt;br /&gt;
{{Work in progress}}&lt;br /&gt;
&lt;br /&gt;
{{Moodle 2.0}}&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
To allow users to switch into an anonymous mode when using certain activities eg when posting to a forum, so that the user&amp;#039;s real identity cannot be ascertained by other non-privileged users.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Possible Use Cases ==&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Activity:&amp;#039;&amp;#039;&amp;#039; for example a forum may be switched into anonymous mode by teacher rendering all posts anonymous.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;User:&amp;#039;&amp;#039;&amp;#039; 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;&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Role Play:&amp;#039;&amp;#039;&amp;#039; 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 &amp;quot;yes&amp;quot; in the course settings.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
&lt;br /&gt;
=== Global ===&lt;br /&gt;
[[Image:Anon global.png]]&lt;br /&gt;
&lt;br /&gt;
=== Course ===&lt;br /&gt;
[[Image:Anon course.png]]&lt;br /&gt;
&lt;br /&gt;
=== Activity ===&lt;br /&gt;
[[Image:Anon activity.png]]&lt;br /&gt;
&lt;br /&gt;
=== User Profile ===&lt;br /&gt;
[[Image:Anon profile.png]]&lt;br /&gt;
&lt;br /&gt;
== Code Changes ==&lt;br /&gt;
&lt;br /&gt;
=== Status definitions ===&lt;br /&gt;
 define(&amp;#039;ANONYMITY_ON&amp;#039;, 2);&lt;br /&gt;
 define(&amp;#039;ANONYMITY_OPTIONAL&amp;#039;, 1);&lt;br /&gt;
 define(&amp;#039;ANONYMITY_INHERIT&amp;#039;, 0);&lt;br /&gt;
 define(&amp;#039;ANONYMITY_OFF&amp;#039;, -1);&lt;br /&gt;
 define(&amp;#039;ANONYMITY_DISABLED&amp;#039;, -9999);&lt;br /&gt;
&lt;br /&gt;
=== Capabilities ===&lt;br /&gt;
 &amp;#039;moodle/anonymity:viewrealname&amp;#039; =&amp;gt; array(&lt;br /&gt;
     &amp;#039;riskbitmask&amp;#039; =&amp;gt; RISK_PERSONAL,&lt;br /&gt;
     &amp;#039;captype&amp;#039; =&amp;gt; &amp;#039;read&amp;#039;,&lt;br /&gt;
     &amp;#039;contextlevel&amp;#039; =&amp;gt; CONTEXT_SYSTEM,&lt;br /&gt;
     &amp;#039;legacy&amp;#039; =&amp;gt; array(&lt;br /&gt;
         &amp;#039;editingteacher&amp;#039; =&amp;gt; CAP_ALLOW,&lt;br /&gt;
         &amp;#039;manager&amp;#039; =&amp;gt; CAP_ALLOW&lt;br /&gt;
     )&lt;br /&gt;
 )&lt;br /&gt;
&lt;br /&gt;
=== DB Tables ===&lt;br /&gt;
&lt;br /&gt;
New table: &amp;#039;&amp;#039;&amp;#039;anonymity_context&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Record the anonymity status in given contexts&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!field&lt;br /&gt;
!type&lt;br /&gt;
!description&lt;br /&gt;
|-&lt;br /&gt;
|id&lt;br /&gt;
|int(10) unsigned&lt;br /&gt;
|auto-increment&lt;br /&gt;
|-&lt;br /&gt;
|contextid&lt;br /&gt;
|int(10) unsigned&lt;br /&gt;
|id from the context table&lt;br /&gt;
|-&lt;br /&gt;
|status&lt;br /&gt;
|int(4) signed&lt;br /&gt;
|anonymity status&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
New table: &amp;#039;&amp;#039;&amp;#039;anonymity_user_context&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Record user aliases for a particular context&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!field&lt;br /&gt;
!type&lt;br /&gt;
!description&lt;br /&gt;
|-&lt;br /&gt;
|id&lt;br /&gt;
|int(10) unsigned&lt;br /&gt;
|auto-increment&lt;br /&gt;
|-&lt;br /&gt;
|userid&lt;br /&gt;
|int(10) unsigned&lt;br /&gt;
|id from the user table&lt;br /&gt;
|-&lt;br /&gt;
|contextid&lt;br /&gt;
|int(10) unsigned&lt;br /&gt;
|id from the context table&lt;br /&gt;
|-&lt;br /&gt;
|alias&lt;br /&gt;
|varchar(255)&lt;br /&gt;
|the user&amp;#039;s alias for this given context&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code ===&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;fullname&amp;#039;&amp;#039;&amp;#039; 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-&amp;gt;context will always to set to something sensible.)&lt;br /&gt;
&lt;br /&gt;
As the fullname function may be called many times on a single page, it is extremely important that we keep the function as efficient as possible. It is also important that we implement these changes in a way that works in most instances without changes to the calling code.&lt;br /&gt;
&lt;br /&gt;
 function fullname($user, $override=false, $anonymous=false)&lt;br /&gt;
where the user object may also contain an &amp;#039;&amp;#039;alias&amp;#039;&amp;#039; property. The &amp;#039;&amp;#039;$anonymous&amp;#039;&amp;#039; parameter will only be checked if the anonymity status for the current context is set to optional.&lt;br /&gt;
&lt;br /&gt;
What we return depends on:&lt;br /&gt;
* anonymity status for the current context&lt;br /&gt;
* $anonymous parameter&lt;br /&gt;
* existing user alias in the &amp;#039;&amp;#039;&amp;#039;anonymity_user_context&amp;#039;&amp;#039;&amp;#039; table&lt;br /&gt;
* &amp;#039;&amp;#039;alias&amp;#039;&amp;#039; property in the passed &amp;#039;&amp;#039;$user&amp;#039;&amp;#039; object&lt;br /&gt;
* &amp;#039;&amp;#039;moodle/anonymity:viewrealname&amp;#039;&amp;#039; permission for the current user&lt;br /&gt;
* $CFG-&amp;gt;anonymityuseraliases&lt;br /&gt;
&lt;br /&gt;
So what do we return? The following table shows the possibilities for various scenarios&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;sortable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-size:0.8em&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!anonymity status&amp;lt;br /&amp;gt;&lt;br /&gt;
!$anonymous&amp;lt;br /&amp;gt;&lt;br /&gt;
!$CFG-&amp;gt;anonymityuseraliases&amp;lt;br /&amp;gt;&lt;br /&gt;
!anonymity_user_alias.alias&amp;lt;br /&amp;gt;&lt;br /&gt;
!$user-&amp;gt;alias&amp;lt;br /&amp;gt;&lt;br /&gt;
!moodle/anonymity:viewrealname&amp;lt;br /&amp;gt;&lt;br /&gt;
!return example&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|off&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|&amp;quot;Real Name&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|optional&lt;br /&gt;
|true&lt;br /&gt;
|false&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|true&lt;br /&gt;
|get_string(&amp;#039;anonymous&amp;#039;).&amp;lt;br /&amp;gt;&amp;quot;(Real Name)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|optional&lt;br /&gt;
|true&lt;br /&gt;
|false&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|false&lt;br /&gt;
|get_string(&amp;#039;anonymous&amp;#039;)&lt;br /&gt;
|-&lt;br /&gt;
|optional&lt;br /&gt;
|true&lt;br /&gt;
|true&lt;br /&gt;
|&amp;#039;&amp;#039;(not set)&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;(not set)&amp;#039;&amp;#039;&lt;br /&gt;
|true&lt;br /&gt;
|get_string(&amp;#039;anonymous&amp;#039;).&amp;lt;br /&amp;gt;&amp;quot;(Real Name)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|optional&lt;br /&gt;
|true&lt;br /&gt;
|true&lt;br /&gt;
|&amp;#039;&amp;#039;(not set)&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;(not set)&amp;#039;&amp;#039;&lt;br /&gt;
|false&lt;br /&gt;
|get_string(&amp;#039;anonymous&amp;#039;)&lt;br /&gt;
|-&lt;br /&gt;
|optional&lt;br /&gt;
|true&lt;br /&gt;
|true&lt;br /&gt;
|&amp;#039;&amp;#039;(not set)&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;quot;Fred Jones&amp;quot;&lt;br /&gt;
|true&lt;br /&gt;
|&amp;quot;Fred Jones (Real Name)&lt;br /&gt;
|-&lt;br /&gt;
|optional&lt;br /&gt;
|true&lt;br /&gt;
|true&lt;br /&gt;
|&amp;#039;&amp;#039;(not set)&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;quot;Fred Jones&amp;quot;&lt;br /&gt;
|false&lt;br /&gt;
|&amp;quot;Fred Jones&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|optional&lt;br /&gt;
|true&lt;br /&gt;
|true&lt;br /&gt;
|&amp;quot;Bob Smith&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;(not set)&amp;#039;&amp;#039;&lt;br /&gt;
|false&lt;br /&gt;
|Bob Smith&lt;br /&gt;
|-&lt;br /&gt;
|optional&lt;br /&gt;
|true&lt;br /&gt;
|true&lt;br /&gt;
|&amp;quot;Bob Smith&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;(not set)&amp;#039;&amp;#039;&lt;br /&gt;
|true&lt;br /&gt;
|&amp;quot;Bob Smith (Real Name)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|optional&lt;br /&gt;
|true&lt;br /&gt;
|true&lt;br /&gt;
|&amp;quot;Bob Smith&amp;quot;&lt;br /&gt;
|&amp;quot;Fred Jones&amp;quot;&lt;br /&gt;
|false&lt;br /&gt;
|&amp;quot;Fred Jones&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|optional&lt;br /&gt;
|true&lt;br /&gt;
|true&lt;br /&gt;
|&amp;quot;Bob Smith&amp;quot;&lt;br /&gt;
|&amp;quot;Fred Jones&amp;quot;&lt;br /&gt;
|true&lt;br /&gt;
|&amp;quot;Fred Jones (Real Name)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|optional&lt;br /&gt;
|false&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|&amp;quot;Real Name&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|on&lt;br /&gt;
|N/A&lt;br /&gt;
|false&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|true&lt;br /&gt;
|get_string(&amp;#039;anonymous&amp;#039;).&amp;lt;br /&amp;gt;&amp;quot;(Real Name)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|on&lt;br /&gt;
|N/A&lt;br /&gt;
|false&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|false&lt;br /&gt;
|get_string(&amp;#039;anonymous&amp;#039;)&lt;br /&gt;
|-&lt;br /&gt;
|on&lt;br /&gt;
|N/A&lt;br /&gt;
|true&lt;br /&gt;
|&amp;#039;&amp;#039;(not set)&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;(not set)&amp;#039;&amp;#039;&lt;br /&gt;
|true&lt;br /&gt;
|get_string(&amp;#039;anonymous&amp;#039;).&amp;lt;br /&amp;gt;&amp;quot;(Real Name)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|on&lt;br /&gt;
|N/A&lt;br /&gt;
|true&lt;br /&gt;
|&amp;#039;&amp;#039;(not set)&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;(not set)&amp;#039;&amp;#039;&lt;br /&gt;
|false&lt;br /&gt;
|get_string(&amp;#039;anonymous&amp;#039;)&lt;br /&gt;
|-&lt;br /&gt;
|on&lt;br /&gt;
|N/A&lt;br /&gt;
|true&lt;br /&gt;
|&amp;#039;&amp;#039;(not set)&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;quot;Fred Jones&amp;quot;&lt;br /&gt;
|true&lt;br /&gt;
|&amp;quot;Fred Jones (Real Name)&lt;br /&gt;
|-&lt;br /&gt;
|on&lt;br /&gt;
|N/A&lt;br /&gt;
|true&lt;br /&gt;
|&amp;#039;&amp;#039;(not set)&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;quot;Fred Jones&amp;quot;&lt;br /&gt;
|false&lt;br /&gt;
|&amp;quot;Fred Jones&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|on&lt;br /&gt;
|N/A&lt;br /&gt;
|true&lt;br /&gt;
|&amp;quot;Bob Smith&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;(not set)&amp;#039;&amp;#039;&lt;br /&gt;
|false&lt;br /&gt;
|Bob Smith&lt;br /&gt;
|-&lt;br /&gt;
|on&lt;br /&gt;
|N/A&lt;br /&gt;
|true&lt;br /&gt;
|&amp;quot;Bob Smith&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;(not set)&amp;#039;&amp;#039;&lt;br /&gt;
|true&lt;br /&gt;
|&amp;quot;Bob Smith (Real Name)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|on&lt;br /&gt;
|N/A&lt;br /&gt;
|true&lt;br /&gt;
|&amp;quot;Bob Smith&amp;quot;&lt;br /&gt;
|&amp;quot;Fred Jones&amp;quot;&lt;br /&gt;
|false&lt;br /&gt;
|&amp;quot;Fred Jones&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|on&lt;br /&gt;
|N/A&lt;br /&gt;
|true&lt;br /&gt;
|&amp;quot;Bob Smith&amp;quot;&lt;br /&gt;
|&amp;quot;Fred Jones&amp;quot;&lt;br /&gt;
|true&lt;br /&gt;
|&amp;quot;Fred Jones (Real Name)&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* MDL-1071 Add a forum option to allow anonymous posting&lt;/div&gt;</summary>
		<author><name>1&gt;Ikawhero</name></author>
	</entry>
</feed>