<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fa">
	<id>https://www.iran-pedia.org/w/index.php?action=history&amp;feed=atom&amp;title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C%3AGadget-userinfo.js</id>
	<title>مدیاویکی:Gadget-userinfo.js - تاریخچهٔ نسخه‌ها</title>
	<link rel="self" type="application/atom+xml" href="https://www.iran-pedia.org/w/index.php?action=history&amp;feed=atom&amp;title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C%3AGadget-userinfo.js"/>
	<link rel="alternate" type="text/html" href="https://www.iran-pedia.org/w/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-userinfo.js&amp;action=history"/>
	<updated>2026-04-26T07:35:57Z</updated>
	<subtitle>تاریخچهٔ نسخه‌ها برای این صفحه در ویکی</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://www.iran-pedia.org/w/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-userinfo.js&amp;diff=2562&amp;oldid=prev</id>
		<title>Rootadmin: ۱ نسخه واردشده</title>
		<link rel="alternate" type="text/html" href="https://www.iran-pedia.org/w/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-userinfo.js&amp;diff=2562&amp;oldid=prev"/>
		<updated>2017-12-02T11:05:57Z</updated>

		<summary type="html">&lt;p&gt;۱ نسخه واردشده&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;fa&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;نسخهٔ ‏۲ دسامبر ۲۰۱۷، ساعت ۱۳:۰۵&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;fa&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>Rootadmin</name></author>
	</entry>
	<entry>
		<id>https://www.iran-pedia.org/w/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-userinfo.js&amp;diff=2561&amp;oldid=prev</id>
		<title>Rootadmin: ۱ نسخه واردشده</title>
		<link rel="alternate" type="text/html" href="https://www.iran-pedia.org/w/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-userinfo.js&amp;diff=2561&amp;oldid=prev"/>
		<updated>2017-08-29T15:52:07Z</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;// based on http://en.wikipedia.org/wiki/User:Fran Rogers/dimorphism.js&lt;br /&gt;
// and on http://en.wikipedia.org/wiki/User:Splarka/sysopdectector.js&lt;br /&gt;
//copy and localization based on [[:en:User:PleaseStand/userinfo.js]]&lt;br /&gt;
function UserinfoJsFormatQty(qty, singular, plural) {&lt;br /&gt;
    return String(qty).replace(/\d{1,3}(?=(\d{3})+(?!\d))/g, &amp;quot;$&amp;amp;,&amp;quot;) + &amp;quot;\u00a0&amp;quot; + (qty == 1 ? singular : plural);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function htmlEscape(str) {&lt;br /&gt;
    return String(str)&lt;br /&gt;
            .replace(/&amp;amp;/g, &amp;#039;&amp;amp;amp;&amp;#039;)&lt;br /&gt;
            .replace(/&amp;quot;/g, &amp;#039;&amp;amp;quot;&amp;#039;)&lt;br /&gt;
            .replace(/&amp;#039;/g, &amp;#039;&amp;amp;#39;&amp;#039;)&lt;br /&gt;
            .replace(/&amp;lt;/g, &amp;#039;&amp;amp;lt;&amp;#039;)&lt;br /&gt;
            .replace(/&amp;gt;/g, &amp;#039;&amp;amp;gt;&amp;#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function EntoFa (txt) {&lt;br /&gt;
    var txt = txt.replace(/1/g, &amp;quot;۱&amp;quot;).replace(/2/g, &amp;quot;۲&amp;quot;).replace(/3/g, &amp;quot;۳&amp;quot;).replace(/4/g, &amp;quot;۴&amp;quot;).replace(/5/g, &amp;quot;۵&amp;quot;).replace(/,/g, &amp;quot;.&amp;quot;).replace(/6/g, &amp;quot;۶&amp;quot;).replace(/7/g, &amp;quot;۷&amp;quot;).replace(/8/g, &amp;quot;۸&amp;quot;).replace(/9/g, &amp;quot;۹&amp;quot;).replace(/0/g, &amp;quot;۰&amp;quot;);&lt;br /&gt;
return txt;&lt;br /&gt;
}&lt;br /&gt;
function UserinfoCheckExpire(date) {&lt;br /&gt;
            var age =   date.getTime()-new Date().getTime();&lt;br /&gt;
            var ageNumber, ageRemainder, ageWords;&lt;br /&gt;
            if(age &amp;lt; 60000) {&lt;br /&gt;
                // less than one minute old&lt;br /&gt;
                ageNumber = Math.floor(age / 1000);&lt;br /&gt;
                ageWords = &amp;quot;&amp;lt;font color=&amp;#039;red&amp;#039;&amp;gt;&amp;quot;+UserinfoJsFormatQty(EntoFa(String(ageNumber)), &amp;quot;ثانیه دیگر&amp;quot;, &amp;quot;ثانیه دیگر&amp;quot;)+&amp;quot;&amp;lt;/font&amp;gt;&amp;quot;;&lt;br /&gt;
            } else if(age &amp;lt; 3600000) {&lt;br /&gt;
                // less than one hour old&lt;br /&gt;
                ageNumber = Math.floor(age / 60000);&lt;br /&gt;
                ageWords = &amp;quot;&amp;lt;font color=&amp;#039;red&amp;#039;&amp;gt;&amp;quot;+UserinfoJsFormatQty(EntoFa(String(ageNumber)), &amp;quot;دقیقه دیگر&amp;quot;, &amp;quot;دقیقه دیگر&amp;quot;)+&amp;quot;&amp;lt;/font&amp;gt;&amp;quot;;&lt;br /&gt;
            } else if(age &amp;lt; 86400000) {&lt;br /&gt;
                // less than one day old&lt;br /&gt;
                ageNumber = Math.floor(age / 3600000);&lt;br /&gt;
                ageWords = &amp;quot;&amp;lt;font color=&amp;#039;red&amp;#039;&amp;gt;&amp;quot;+UserinfoJsFormatQty(EntoFa(String(ageNumber)), &amp;quot;ساعت دیگر&amp;quot;, &amp;quot;ساعت دیگر&amp;quot;)+&amp;quot;&amp;lt;/font&amp;gt;&amp;quot;;&lt;br /&gt;
                ageRemainder = Math.floor((age - ageNumber * 3600000) / 60000);&lt;br /&gt;
            } else if(age &amp;lt; 604800000) {&lt;br /&gt;
                // less than one week old&lt;br /&gt;
                ageNumber = Math.floor(age / 86400000);&lt;br /&gt;
                ageWords = &amp;quot;&amp;lt;font color=&amp;#039;red&amp;#039;&amp;gt;&amp;quot;+UserinfoJsFormatQty(EntoFa(String(ageNumber)), &amp;quot;روز دیگر&amp;quot;, &amp;quot;روز دیگر&amp;quot;)+&amp;quot;&amp;lt;/font&amp;gt;&amp;quot;;&lt;br /&gt;
            } else if(age &amp;lt; 2592000000) {&lt;br /&gt;
                // less than one month old&lt;br /&gt;
                ageNumber = Math.floor(age / 604800000);&lt;br /&gt;
                ageWords = &amp;quot;&amp;lt;font color=&amp;#039;red&amp;#039;&amp;gt;&amp;quot;+UserinfoJsFormatQty(EntoFa(String(ageNumber)), &amp;quot;هفته دیگر&amp;quot;, &amp;quot;هفته دیگر&amp;quot;)+&amp;quot;&amp;lt;/font&amp;gt;&amp;quot;;&lt;br /&gt;
            } else if(age &amp;lt; 31536000000) {&lt;br /&gt;
                // less than one year old&lt;br /&gt;
                ageNumber = Math.floor(age / 2592000000);&lt;br /&gt;
                if (ageNumber&amp;gt;2){&lt;br /&gt;
                    ageWords = UserinfoJsFormatQty(EntoFa(String(ageNumber)), &amp;quot;ماه دیگر&amp;quot;, &amp;quot;ماه دیگر&amp;quot;);&lt;br /&gt;
                }else{&lt;br /&gt;
                    ageWords = &amp;quot;&amp;lt;font color=&amp;#039;red&amp;#039;&amp;gt;&amp;quot;+UserinfoJsFormatQty(EntoFa(String(ageNumber)), &amp;quot;ماه دیگر&amp;quot;, &amp;quot;ماه دیگر&amp;quot;)+&amp;quot;&amp;lt;/font&amp;gt;&amp;quot;;&lt;br /&gt;
                }&lt;br /&gt;
            } else {&lt;br /&gt;
                // one year or older&lt;br /&gt;
                ageNumber = Math.floor(age / 31536000000);&lt;br /&gt;
                ageWords = UserinfoJsFormatQty(EntoFa(String(ageNumber)), &amp;quot;سال&amp;quot;, &amp;quot;سال&amp;quot;);&lt;br /&gt;
                ageRemainder =&lt;br /&gt;
                    Math.floor((age - ageNumber * 31536000000) / 2592000000);&lt;br /&gt;
                if(ageRemainder) {&lt;br /&gt;
                    ageWords += &amp;quot; &amp;quot; +&lt;br /&gt;
                        UserinfoJsFormatQty(EntoFa(String(ageRemainder)), &amp;quot;ماه دیگر&amp;quot;, &amp;quot;ماه دیگر&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
           }&lt;br /&gt;
           return ageWords;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function UserinfoJsFormatDateRel(old) {&lt;br /&gt;
// The code below requires the computer&amp;#039;s clock to be set correctly.&lt;br /&gt;
            var age = new Date().getTime() - old.getTime();&lt;br /&gt;
            var ageNumber, ageRemainder, ageWords;&lt;br /&gt;
            if(age &amp;lt; 60000) {&lt;br /&gt;
                // less than one minute old&lt;br /&gt;
                ageNumber = Math.floor(age / 1000);&lt;br /&gt;
                ageWords = UserinfoJsFormatQty(EntoFa(String(ageNumber)), &amp;quot;ثانیه&amp;quot;, &amp;quot;ثانیه&amp;quot;);&lt;br /&gt;
            } else if(age &amp;lt; 3600000) {&lt;br /&gt;
                // less than one hour old&lt;br /&gt;
                ageNumber = Math.floor(age / 60000);&lt;br /&gt;
                ageWords = UserinfoJsFormatQty(EntoFa(String(ageNumber)), &amp;quot;دقیقه&amp;quot;, &amp;quot;دقیقه&amp;quot;);&lt;br /&gt;
            } else if(age &amp;lt; 86400000) {&lt;br /&gt;
                // less than one day old&lt;br /&gt;
                ageNumber = Math.floor(age / 3600000);&lt;br /&gt;
                ageWords = UserinfoJsFormatQty(EntoFa(String(ageNumber)), &amp;quot;ساعت&amp;quot;, &amp;quot;ساعت&amp;quot;);&lt;br /&gt;
                ageRemainder = Math.floor((age - ageNumber * 3600000) / 60000);&lt;br /&gt;
            } else if(age &amp;lt; 604800000) {&lt;br /&gt;
                // less than one week old&lt;br /&gt;
                ageNumber = Math.floor(age / 86400000);&lt;br /&gt;
                ageWords = UserinfoJsFormatQty(EntoFa(String(ageNumber)), &amp;quot;روز&amp;quot;, &amp;quot;روز&amp;quot;);&lt;br /&gt;
            } else if(age &amp;lt; 2592000000) {&lt;br /&gt;
                // less than one month old&lt;br /&gt;
                ageNumber = Math.floor(age / 604800000);&lt;br /&gt;
                ageWords = UserinfoJsFormatQty(EntoFa(String(ageNumber)), &amp;quot;هفته&amp;quot;, &amp;quot;هفته&amp;quot;);&lt;br /&gt;
            } else if(age &amp;lt; 31536000000) {&lt;br /&gt;
                // less than one year old&lt;br /&gt;
                ageNumber = Math.floor(age / 2592000000);&lt;br /&gt;
                ageWords = UserinfoJsFormatQty(EntoFa(String(ageNumber)), &amp;quot;ماه&amp;quot;, &amp;quot;ماه&amp;quot;);&lt;br /&gt;
            } else {&lt;br /&gt;
                // one year or older&lt;br /&gt;
                ageNumber = Math.floor(age / 31536000000);&lt;br /&gt;
                ageWords = UserinfoJsFormatQty(EntoFa(String(ageNumber)), &amp;quot;سال&amp;quot;, &amp;quot;سال&amp;quot;);&lt;br /&gt;
                ageRemainder =&lt;br /&gt;
                    Math.floor((age - ageNumber * 31536000000) / 2592000000);&lt;br /&gt;
                if(ageRemainder) {&lt;br /&gt;
                    ageWords += &amp;quot; &amp;quot; +&lt;br /&gt;
                        UserinfoJsFormatQty(EntoFa(String(ageRemainder)), &amp;quot;ماه&amp;quot;, &amp;quot;ماه&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
           }&lt;br /&gt;
           return ageWords;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// If on a user or user talk page, and not a subpage...&lt;br /&gt;
if((mw.config.get(&amp;quot;wgNamespaceNumber&amp;quot;) == 2 || mw.config.get(&amp;quot;wgNamespaceNumber&amp;quot;) == 3) &amp;amp;&amp;amp; !(/\//.test(mw.config.get(&amp;quot;wgTitle&amp;quot;)))) {   &lt;br /&gt;
    // add a hook to...&lt;br /&gt;
    mw.loader.using( [&amp;#039;mediawiki.util&amp;#039;], function() { $(function(){&lt;br /&gt;
        // Request the user&amp;#039;s information from the API.&lt;br /&gt;
        // Note that this is allowed to be up to 5 minutes old.&lt;br /&gt;
        var et = encodeURIComponent(mw.config.get(&amp;quot;wgTitle&amp;quot;));&lt;br /&gt;
        &lt;br /&gt;
        $.getJSON(mw.config.get(&amp;quot;wgScriptPath&amp;quot;) + &amp;quot;/api.php?format=json&amp;amp;action=query&amp;amp;list=users|usercontribs&amp;amp;usprop=blockinfo|editcount|gender|registration|groups|groupmemberships&amp;amp;uclimit=1&amp;amp;ucprop=timestamp&amp;amp;ususers=&amp;quot; + et + &amp;quot;&amp;amp;ucuser=&amp;quot; + et + &amp;quot;&amp;amp;meta=allmessages&amp;amp;amfilter=grouppage&amp;quot;)&lt;br /&gt;
        .done(function(query) {&lt;br /&gt;
            // When response arrives extract the information we need.&lt;br /&gt;
            if(!query.query) { return; } // Suggested by Gary King to avoid JS errors --PS 2010-08-25&lt;br /&gt;
            query = query.query;&lt;br /&gt;
            var user, invalid, missing, groups, groupPages={}, editcount, registration, blocked, gender, lastEdited, groupmemberships, expirymemberships;&lt;br /&gt;
            try {&lt;br /&gt;
                user = query.users[0];&lt;br /&gt;
                invalid = typeof user.invalid != &amp;quot;undefined&amp;quot;;&lt;br /&gt;
                missing = typeof user.missing != &amp;quot;undefined&amp;quot;;&lt;br /&gt;
                groups = (typeof user.groups == &amp;quot;object&amp;quot;) ? user.groups : [];&lt;br /&gt;
                if (user.groupmemberships!==null){&lt;br /&gt;
                    for (var i in user.groupmemberships) {&lt;br /&gt;
                              if (user.groupmemberships[i][&amp;quot;group&amp;quot;]==&amp;quot;eliminator&amp;quot;){&lt;br /&gt;
                                   expirymemberships= user.groupmemberships[i][&amp;quot;expiry&amp;quot;]&lt;br /&gt;
                              }&lt;br /&gt;
                         }&lt;br /&gt;
                }&lt;br /&gt;
                if (typeof expirymemberships==&amp;quot;undefined&amp;quot;){&lt;br /&gt;
                    expirymemberships=String(new Date().getTime())&lt;br /&gt;
                }&lt;br /&gt;
                groupmemberships = (typeof expirymemberships== &amp;quot;string&amp;quot;) ?&lt;br /&gt;
                    new Date(expirymemberships) : null;&lt;br /&gt;
                editcount = (typeof user.editcount == &amp;quot;number&amp;quot;) ? user.editcount : null;&lt;br /&gt;
                registration = (typeof user.registration == &amp;quot;string&amp;quot;) ?&lt;br /&gt;
                    new Date(user.registration) : null;&lt;br /&gt;
                blocked = typeof user.blockedby != &amp;quot;undefined&amp;quot;;&lt;br /&gt;
                gender = (typeof user.gender == &amp;quot;string&amp;quot;) ? user.gender : null;&lt;br /&gt;
                lastEdited = (typeof query.usercontribs[0] == &amp;quot;object&amp;quot;) &amp;amp;&amp;amp;&lt;br /&gt;
                    (typeof query.usercontribs[0].timestamp == &amp;quot;string&amp;quot;) ?&lt;br /&gt;
                    new Date(query.usercontribs[0].timestamp) : null;&lt;br /&gt;
                for (var am=0; am&amp;lt;query.allmessages.length; am++) {&lt;br /&gt;
                    groupPages[query.allmessages[am][&amp;quot;name&amp;quot;].replace(&amp;quot;grouppage-&amp;quot;,&amp;quot;&amp;quot;)] = query.allmessages[am][&amp;quot;*&amp;quot;].replace(&amp;quot;{{ns:project}}:&amp;quot;,&amp;quot;Project:&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            } catch(e) {&lt;br /&gt;
                return; // Not much to do if the server is returning an error (e.g. if the username is malformed).&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // Format the information for on-screen display&lt;br /&gt;
            &lt;br /&gt;
            var statusText = &amp;quot;&amp;quot;;&lt;br /&gt;
            var ipUser = false;&lt;br /&gt;
            var ipv4User = false;&lt;br /&gt;
            var ipv6User = false;&lt;br /&gt;
&lt;br /&gt;
            // User status&lt;br /&gt;
            if(blocked) {&lt;br /&gt;
                statusText += &amp;quot;&amp;lt;a href=\&amp;quot;&amp;quot; + mw.config.get(&amp;quot;wgScriptPath&amp;quot;) +&lt;br /&gt;
                    &amp;quot;/index.php?title=Special:Log&amp;amp;amp;page=&amp;quot; + &lt;br /&gt;
                    encodeURIComponent(mw.config.get(&amp;quot;wgFormattedNamespaces&amp;quot;)[2] + &amp;quot;:&amp;quot; + user.name) +&lt;br /&gt;
                    &amp;quot;&amp;amp;amp;type=block\&amp;quot;&amp;gt;بسته‌شده&amp;lt;/a&amp;gt; &amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
            if (missing) {&lt;br /&gt;
                statusText += &amp;quot;کاربر ثبت‌نام نکرده&amp;quot;;&lt;br /&gt;
            } else if (invalid) {&lt;br /&gt;
                ipv4User = mw.util.isIPv4Address(user.name);&lt;br /&gt;
                ipv6User = mw.util.isIPv6Address(user.name);&lt;br /&gt;
                ipUser = ipv4User || ipv6User;&lt;br /&gt;
                if (ipv4User) {&lt;br /&gt;
                    statusText += &amp;quot;آی‌پی نسخهٔ ۴&amp;quot;;&lt;br /&gt;
                } else if (ipv6User) {&lt;br /&gt;
                    statusText += &amp;quot;آی‌پی نسخهٔ ۶&amp;quot;;&lt;br /&gt;
                } else {&lt;br /&gt;
                    statusText += &amp;quot;حساب کاربر نادرست&amp;quot;;&lt;br /&gt;
                }&lt;br /&gt;
            } else {&lt;br /&gt;
                // User is registered and may be in a privileged group. Below we have a list of user groups.&lt;br /&gt;
                // Only need the ones different from the software&amp;#039;s name (or ones to exclude), though.&lt;br /&gt;
                var friendlyGroupNames = {&lt;br /&gt;
                    // Exclude implicit user group information provided by MW 1.17 --PS 2010-02-17&lt;br /&gt;
                    &amp;#039;*&amp;#039;: false,&lt;br /&gt;
                    &amp;#039;user&amp;#039;: &amp;quot;کاربر&amp;quot;,&lt;br /&gt;
                    &amp;#039;checkuser&amp;#039;:&amp;quot;بازرس کاربر&amp;quot;,&lt;br /&gt;
                    &amp;#039;bureaucrat&amp;#039;:&amp;quot;دیوانسالار&amp;quot;,&lt;br /&gt;
                    &amp;#039;OTRS-member&amp;#039;:&amp;quot;عضو OTRS&amp;quot;,&lt;br /&gt;
                    &amp;#039;autoconfirmed&amp;#039;: false,&lt;br /&gt;
                    sysop: &amp;quot;مدیر&amp;quot;,&lt;br /&gt;
                    &amp;#039;botadmin&amp;#039;: &amp;#039;مدیر رباتیک&amp;#039;,&lt;br /&gt;
                    &amp;#039;autopatrolled&amp;#039;:&amp;quot;گشت خودکار&amp;quot;,&lt;br /&gt;
                    accountcreator: &amp;quot;سازنده حساب&amp;quot;,&lt;br /&gt;
                    &amp;quot;import&amp;quot;: &amp;quot;درون‌ریز&amp;quot;,&lt;br /&gt;
                    templateeditor:&amp;quot;ویرایشگر الگو&amp;quot;,&lt;br /&gt;
                    eliminator:&amp;quot;ویکی‌بان (تا &amp;quot;+UserinfoCheckExpire(groupmemberships)+&amp;quot;&amp;lt;/font&amp;gt;)&amp;quot;,&lt;br /&gt;
                    registered:&amp;quot;ثبت‌نام‌کرده&amp;quot;,&lt;br /&gt;
                    transwiki: &amp;quot;درون ریز بین‌ویکی‌ها&amp;quot;,&lt;br /&gt;
                    &amp;quot;ipblock-exempt&amp;quot;: &amp;quot;استثنای قطع دسترسی&amp;quot;,&lt;br /&gt;
                    eponline: &amp;quot;داوطلب دورهٔ برخط&amp;quot;,&lt;br /&gt;
                    epinstructor: &amp;quot;استاد دوره&amp;quot;,&lt;br /&gt;
                    epcoordinator: &amp;quot;هماهنگ‌کنندهٔ دوره&amp;quot;,&lt;br /&gt;
                    epcampus: &amp;quot;داوطلب دورهٔ پردیس&amp;quot;,&lt;br /&gt;
                    oversight: &amp;quot;پنهانگر&amp;quot;,&lt;br /&gt;
                    &amp;quot;Image-reviewer&amp;quot;:&amp;quot;بازبین تصویر&amp;quot;,&lt;br /&gt;
                    &amp;quot;bot&amp;quot;:&amp;quot;ربات&amp;quot;,&lt;br /&gt;
                    //&amp;quot;registered user&amp;quot;:&amp;quot;کاربر ثبت‌نام کرده&amp;quot;,&lt;br /&gt;
                    &amp;quot;patroller&amp;quot;:&amp;quot;گشت‌زن&amp;quot;,&lt;br /&gt;
                    &amp;quot;rollbacker&amp;quot;:&amp;quot;واگردان&amp;quot;,&lt;br /&gt;
                    confirmed: &amp;quot;کاربر تائیدشده&amp;quot;,&lt;br /&gt;
                    abusefilter: &amp;quot;تنظیم‌کنندهٔ پالایهٔ خرابکاری&amp;quot;,&lt;br /&gt;
                    &amp;quot;uploader&amp;quot;:&amp;quot;بارگذار&amp;quot;,&lt;br /&gt;
                    &amp;quot;extendedconfirmed&amp;quot;:&amp;quot;تأییدشده پایدار&amp;quot;,&lt;br /&gt;
                    autoreviewer: &amp;quot;بازبینی‌خودکار&amp;quot; // Group has been renamed --PS 2010-07-06&lt;br /&gt;
                };&lt;br /&gt;
                &lt;br /&gt;
                var friendlyGroups = [];&lt;br /&gt;
                for(var i = 0; i &amp;lt; groups.length; ++i) {&lt;br /&gt;
                    var s = groups[i];&lt;br /&gt;
                    if(friendlyGroupNames.hasOwnProperty(s)) {&lt;br /&gt;
                        if(friendlyGroupNames[s]) {&lt;br /&gt;
                            friendlyGroups.push(&amp;quot;&amp;lt;a href=&amp;#039;/wiki/&amp;quot; + encodeURIComponent( groupPages[s] ) + &amp;quot;&amp;#039;&amp;gt;&amp;quot; + friendlyGroupNames[s] + &amp;quot;&amp;lt;/a&amp;gt;&amp;quot;);&lt;br /&gt;
                        }&lt;br /&gt;
                    } else {&lt;br /&gt;
                        friendlyGroups.push(&amp;quot;&amp;lt;a href=&amp;#039;/wiki/&amp;quot; + encodeURIComponent( groupPages[s] ) + &amp;quot;&amp;#039;&amp;gt;&amp;quot; + s + &amp;quot;&amp;lt;/a&amp;gt;&amp;quot;);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                switch(friendlyGroups.length) {&lt;br /&gt;
                    case 0:&lt;br /&gt;
                        // User not in a privileged group&lt;br /&gt;
                        // Changed to &amp;quot;registered user&amp;quot; by request of [[User:Svanslyck]]&lt;br /&gt;
                        // --PS 2010-05-16&lt;br /&gt;
 &lt;br /&gt;
                        // statusText += &amp;quot;user&amp;quot;;&lt;br /&gt;
                        if(blocked) {&lt;br /&gt;
                            statusText += &amp;quot;user&amp;quot;;&lt;br /&gt;
                        } else {&lt;br /&gt;
                            statusText += &amp;quot;registered user&amp;quot;;&lt;br /&gt;
                        }&lt;br /&gt;
                        break;&lt;br /&gt;
                    case 1:&lt;br /&gt;
                        statusText += friendlyGroups[0];&lt;br /&gt;
                        break;&lt;br /&gt;
                    case 2:&lt;br /&gt;
                        statusText += friendlyGroups[0] + &amp;quot; و &amp;quot; + friendlyGroups[1];&lt;br /&gt;
                        break;&lt;br /&gt;
                    default:&lt;br /&gt;
                        statusText += friendlyGroups.slice(0, -1).join(&amp;quot;، &amp;quot;) +&lt;br /&gt;
                            &amp;quot; و &amp;quot; + friendlyGroups[friendlyGroups.length - 1];&lt;br /&gt;
                        break;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
                &lt;br /&gt;
            // Registration date&lt;br /&gt;
            if(registration) {&lt;br /&gt;
                statusText += &amp;quot;، &amp;quot; + UserinfoJsFormatDateRel(registration) + &amp;quot; عمر ویکی‌نویسی&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
 &lt;br /&gt;
            // Edit count&lt;br /&gt;
            if(editcount !== null) {&lt;br /&gt;
                statusText += &amp;quot;، با &amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;a href=\&amp;quot;//tools.wmflabs.org/xtools/pcount/index.php?name=&amp;quot; +&lt;br /&gt;
                    encodeURIComponent(user.name) +&lt;br /&gt;
                    &amp;quot;&amp;amp;amp;lang=fa&amp;amp;amp;wiki=wikipedia\&amp;quot;&amp;gt;&amp;quot; +&lt;br /&gt;
                    UserinfoJsFormatQty(EntoFa(String(editcount)), &amp;quot; ویرایش&amp;quot;, &amp;quot; ویرایش&amp;quot;) + &amp;quot;&amp;lt;/a&amp;gt;&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            // Prefix status text with correct article&lt;br /&gt;
            if(&amp;quot;AEIOaeio&amp;quot;.indexOf(statusText.charAt(statusText.indexOf(&amp;#039;&amp;gt;&amp;#039;)+1)) &amp;gt;= 0) {&lt;br /&gt;
                statusText = statusText;&lt;br /&gt;
            } else {&lt;br /&gt;
                statusText = statusText;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // Add full stop to status text&lt;br /&gt;
            statusText += &amp;quot;.&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            // Last edited --PS 2010-06-27&lt;br /&gt;
            // Added link to contributions page --PS 2010-07-03&lt;br /&gt;
            if(lastEdited) {&lt;br /&gt;
                statusText += &amp;quot; آخرین ویرایش وی، &amp;lt;a href=\&amp;quot;&amp;quot; + mw.config.get(&amp;#039;wgArticlePath&amp;#039;).replace(&amp;quot;$1&amp;quot;, &amp;quot;Special:Contributions/&amp;quot; + encodeURIComponent(user.name)) + &amp;quot;\&amp;quot;&amp;gt;&amp;quot; +EntoFa(String(UserinfoJsFormatDateRel(lastEdited))) + &amp;quot; پیش بوده‌است.&amp;lt;/a&amp;gt; دریافت اطلاعات &amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // Show the correct gender symbol&lt;br /&gt;
            var fh = document.getElementById(&amp;quot;firstHeading&amp;quot;) ||&lt;br /&gt;
                document.getElementById(&amp;quot;section-0&amp;quot;);&lt;br /&gt;
            // Add classes for blocked, registered, and anonymous users&lt;br /&gt;
            var newClasses = [];&lt;br /&gt;
            if(blocked) {&lt;br /&gt;
                newClasses.push(&amp;quot;ps-blocked&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
            if(ipUser) {&lt;br /&gt;
                newClasses.push(&amp;quot;ps-anonymous&amp;quot;);&lt;br /&gt;
            } else if(invalid) {&lt;br /&gt;
                newClasses.push(&amp;quot;ps-invalid&amp;quot;);&lt;br /&gt;
            } else {&lt;br /&gt;
                newClasses.push(&amp;quot;ps-registered&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
            fh.className += (fh.className.length ? &amp;quot; &amp;quot; : &amp;quot;&amp;quot;) + groups.map(function(s) {&lt;br /&gt;
                return &amp;quot;ps-group-&amp;quot; + s;&lt;br /&gt;
            }).concat(newClasses).join(&amp;quot; &amp;quot;);&lt;br /&gt;
            /*var genderSpan = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
            genderSpan.id = &amp;quot;ps-gender-&amp;quot; + (gender || &amp;quot;unknown&amp;quot;);&lt;br /&gt;
            genderSpan.style.paddingLeft = &amp;quot;0.25em&amp;quot;;&lt;br /&gt;
            genderSpan.style.fontFamily = &amp;#039;&amp;quot;Lucida Grande&amp;quot;, &amp;quot;Lucida Sans Unicode&amp;quot;, &amp;quot;sans-serif&amp;quot;&amp;#039;;&lt;br /&gt;
            genderSpan.style.fontSize = &amp;quot;150%&amp;quot;;&lt;br /&gt;
            var genderSymbol;&lt;br /&gt;
            switch(gender) {&lt;br /&gt;
                case &amp;quot;male&amp;quot;: genderSymbol = &amp;quot;\u2642&amp;quot;; break;&lt;br /&gt;
                case &amp;quot;female&amp;quot;: genderSymbol = &amp;quot;\u2640&amp;quot;; break;&lt;br /&gt;
                default: genderSymbol = &amp;quot;&amp;quot;; break;&lt;br /&gt;
            }&lt;br /&gt;
            genderSpan.appendChild(document.createTextNode(genderSymbol));&lt;br /&gt;
            fh.appendChild(genderSpan);*/&lt;br /&gt;
&lt;br /&gt;
            // Now show the other information. Non-standard? Yes, but it gets the job done.&lt;br /&gt;
            // Add a period after the tagline when doing so. --PS 2010-07-03&lt;br /&gt;
&lt;br /&gt;
            var ss = document.getElementById(&amp;quot;siteSub&amp;quot;);&lt;br /&gt;
            if(!ss) {&lt;br /&gt;
                ss = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
                ss.id = &amp;quot;siteSub&amp;quot;;&lt;br /&gt;
                ss.innerHTML = &amp;quot;از ویکی‌پدیا، دانشنامهٔ آزاد&amp;quot;;&lt;br /&gt;
                var bc = document.getElementById(&amp;quot;bodyContent&amp;quot;);&lt;br /&gt;
                bc.insertBefore(ss, bc.firstChild);&lt;br /&gt;
            }&lt;br /&gt;
            ss.innerHTML = &amp;#039;&amp;lt;span id=&amp;quot;ps-userinfo&amp;quot;&amp;gt;&amp;#039; + statusText + &amp;#039;&amp;lt;/span&amp;gt; &amp;#039; + htmlEscape(ss.innerHTML) + &amp;#039;.&amp;#039;;&lt;br /&gt;
            ss.style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
            });&lt;br /&gt;
    }); });&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Rootadmin</name></author>
	</entry>
</feed>