<?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-libGlobalReplace.js</id>
	<title>مدیاویکی:Gadget-libGlobalReplace.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-libGlobalReplace.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-libGlobalReplace.js&amp;action=history"/>
	<updated>2026-04-26T06:06:37Z</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-libGlobalReplace.js&amp;diff=2649&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-libGlobalReplace.js&amp;diff=2649&amp;oldid=prev"/>
		<updated>2017-12-02T11:14:32Z</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;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fa&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;→ نسخهٔ قدیمی‌تر&lt;/td&gt;
				&lt;td colspan=&quot;2&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;4&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;!-- diff cache key fairanpediadb-fa_:diff:1.41:old-2648:rev-2649 --&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-libGlobalReplace.js&amp;diff=2648&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-libGlobalReplace.js&amp;diff=2648&amp;oldid=prev"/>
		<updated>2017-08-29T21:40:54Z</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;/**&lt;br /&gt;
 * [[MediaWiki:Gadget-GlobalReplace.js]]&lt;br /&gt;
 * Replaces a file on all wikis, including Wikimedia Commons&lt;br /&gt;
 * Uses either CORS under the current user account&lt;br /&gt;
 * or deputes the task to Commons Delinker&lt;br /&gt;
 *&lt;br /&gt;
 * The method used is determined by&lt;br /&gt;
 * -Browser capabilities (CORS required)&lt;br /&gt;
 * -The usage count: More than the given number&lt;br /&gt;
 *                   aren&amp;#039;t attempted to be replaced&lt;br /&gt;
 *                   under the user account&lt;br /&gt;
 *&lt;br /&gt;
 * It adds only one public method to the mw.libs - object:&lt;br /&gt;
 * @example&lt;br /&gt;
 *      var $jQuery_Deferred_Object;&lt;br /&gt;
 *      $jQuery_Deferred_Object = mw.libs.globalReplace(oldFile, newFile, shortReason, fullReason);&lt;br /&gt;
 *      $jQuery_Deferred_Object.done(function() { alert(&amp;quot;Good news! &amp;quot; + oldFile + &amp;quot; has been replaced by &amp;quot; + newFile + &amp;quot;!&amp;quot;) });&lt;br /&gt;
 *&lt;br /&gt;
 * Internal stuff:&lt;br /&gt;
 * Since we don&amp;#039;t use instances of classes, we have to pass around all the parameters&lt;br /&gt;
 *&lt;br /&gt;
 * TODO: I18n (progress messages) when Krinkle is ready with Gadgets 2.0 :-)&lt;br /&gt;
 *&lt;br /&gt;
 * @rev 1 (2012-11-26)&lt;br /&gt;
 * @author Rillke, 2012&lt;br /&gt;
 * &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 */&lt;br /&gt;
// List the global variables for jsHint-Validation. Please make sure that it passes http://jshint.com/&lt;br /&gt;
// Scheme: globalVariable:allowOverwriting[, globalVariable:allowOverwriting][, globalVariable:allowOverwriting]&lt;br /&gt;
/*global jQuery:false, mediaWiki:false*/&lt;br /&gt;
&lt;br /&gt;
// Set jsHint-options. You should not set forin or undef to false if your script does not validate.&lt;br /&gt;
/*jshint forin:true, noarg:true, noempty:true, eqeqeq:true, bitwise:true, strict:true, undef:true, curly:false, browser:true*/&lt;br /&gt;
&lt;br /&gt;
(function ($, mw) {&lt;br /&gt;
	&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// Config&lt;br /&gt;
	// When this number is exceeded or reached, use CommonsDelinker&lt;br /&gt;
	// This number must not be higher than 50&lt;br /&gt;
	// (can&amp;#039;t query more than 50 titles at once)&lt;br /&gt;
	var usageThreshold = 200;&lt;br /&gt;
&lt;br /&gt;
	// Internal stuff&lt;br /&gt;
	var CORSsupported = false;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * TODO: Outsource to library as I often use them OR does jQuery provide something like that?&lt;br /&gt;
	 **/&lt;br /&gt;
	var getObjLen = function (obj) {&lt;br /&gt;
		var x, i = 0;&lt;br /&gt;
		for (x in obj) {&lt;br /&gt;
			if (obj.hasOwnProperty(x)) {&lt;br /&gt;
				i++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return i;&lt;br /&gt;
	};&lt;br /&gt;
	var firstItem = function (o) {&lt;br /&gt;
		for (var i in o) {&lt;br /&gt;
			if (o.hasOwnProperty(i)) {&lt;br /&gt;
				return o[i];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// TODO: Keep in sync with CommonsDelinker source&lt;br /&gt;
	// http://svn.wikimedia.org/viewvc/pywikipedia/trunk/pywikipedia/commonsdelinker/delinker.py?revision=9053&amp;amp;view=markup#l172&lt;br /&gt;
	var getFileRegEx = function (title) {&lt;br /&gt;
		return new RegExp(&amp;#039;([\\n\\[\\:\\=\\&amp;gt;\\|]\\s*)[&amp;#039; + mw.RegExp.escape(title.charAt(0).toUpperCase()) + mw.RegExp.escape(title.charAt(0).toLowerCase()) + &amp;#039;]&amp;#039; + mw.RegExp.escape(&lt;br /&gt;
			title.slice(1)).replace(/ /g, &amp;#039;[ _]&amp;#039;), &amp;#039;g&amp;#039;);&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	var queryGET = function (params, cb, errCb) {&lt;br /&gt;
		mw.loader.using([&amp;#039;ext.gadget.libAPI&amp;#039;, &amp;#039;ext.gadget.libWikiDOM&amp;#039;], function () {&lt;br /&gt;
			mw.libs.commons.api.query(params, {&lt;br /&gt;
				method: &amp;#039;GET&amp;#039;,&lt;br /&gt;
				cache: true,&lt;br /&gt;
				cb: cb,&lt;br /&gt;
				errCb: errCb&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	var testCORS = function (done) {&lt;br /&gt;
		if (CORSsupported) return done();&lt;br /&gt;
		doCORSReq({&lt;br /&gt;
			action: &amp;#039;query&amp;#039;,&lt;br /&gt;
			meta: &amp;#039;userinfo&amp;#039;&lt;br /&gt;
		}, &amp;#039;www.mediawiki.org&amp;#039;, function (data, textStatus, jqXHR) {&lt;br /&gt;
			if (!data.query.userinfo.id) {&lt;br /&gt;
				CORSsupported = &amp;#039;CORS supported but not logged-in&amp;#039;;&lt;br /&gt;
			} else {&lt;br /&gt;
				CORSsupported = &amp;#039;OK&amp;#039;;&lt;br /&gt;
			}&lt;br /&gt;
			done();&lt;br /&gt;
		}, function (jqXHR, textStatus, errorThrown) {&lt;br /&gt;
			CORSsupported = &amp;#039;CORS not supported: &amp;#039; + textStatus + &amp;#039; \nError: &amp;#039; + errorThrown;&lt;br /&gt;
			done();&lt;br /&gt;
		});&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	var doCORSReq = function (params, wiki, cb, errCb, method) {&lt;br /&gt;
		$.support.cors = true;&lt;br /&gt;
		// Format parameter first!&lt;br /&gt;
		var newParams = {&lt;br /&gt;
			format: &amp;#039;json&amp;#039;,&lt;br /&gt;
			origin: document.location.protocol + &amp;#039;//&amp;#039; + document.location.hostname&lt;br /&gt;
		};&lt;br /&gt;
		params = $.extend(newParams, params);&lt;br /&gt;
		$.ajax({&lt;br /&gt;
			&amp;#039;url&amp;#039;: &amp;#039;//&amp;#039; + wiki + &amp;#039;/w/api.php&amp;#039;,&lt;br /&gt;
			&amp;#039;data&amp;#039;: params,&lt;br /&gt;
			&amp;#039;xhrFields&amp;#039;: {&lt;br /&gt;
				&amp;#039;withCredentials&amp;#039;: true&lt;br /&gt;
			},&lt;br /&gt;
			&amp;#039;type&amp;#039;: method || &amp;#039;GET&amp;#039;,&lt;br /&gt;
			&amp;#039;success&amp;#039;: function (r) {&lt;br /&gt;
				cb(r, wiki);&lt;br /&gt;
			},&lt;br /&gt;
			&amp;#039;error&amp;#039;: errCb,&lt;br /&gt;
			&amp;#039;dataType&amp;#039;: &amp;#039;json&amp;#039;&lt;br /&gt;
		});&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	var updateReplaceStatus = function ($prog) {&lt;br /&gt;
		// If we are using CommonsDelinker (CD),&lt;br /&gt;
		// it will mark this progress object&lt;br /&gt;
		// as resolved as soon as the requst was placed in the queue; &lt;br /&gt;
		// Don&amp;#039;t know whether we should&lt;br /&gt;
		// stop replacement under user account&lt;br /&gt;
		// when we request CD to do our job; but see no&lt;br /&gt;
		// pressing need to&lt;br /&gt;
		if (0 === $prog.remaining &amp;amp;&amp;amp; !$prog.usingCD) {&lt;br /&gt;
			$prog.resolve(&amp;quot;All usages replaced&amp;quot;);&lt;br /&gt;
			// Kill the timer: Everything worked in time!&lt;br /&gt;
			if ($prog.CDtimeout) clearTimeout($prog.CDtimeout);&lt;br /&gt;
		}&lt;br /&gt;
		$prog.notify(&amp;quot;Replacing usage - &amp;quot; + Math.round(($prog.total - $prog.remaining) * 100 / $prog.total) +&lt;br /&gt;
			&amp;quot;% \nDo not close this window until the task is completed.&amp;quot;);&lt;br /&gt;
	};&lt;br /&gt;
	var decrementAndUpdate = function ($prog) {&lt;br /&gt;
		$prog.remaining--;&lt;br /&gt;
		updateReplaceStatus($prog);&lt;br /&gt;
	};&lt;br /&gt;
	var checkPage = function ($prog, pg, wiki, cb) {&lt;br /&gt;
		if (!pg.revisions) {&lt;br /&gt;
			$prog.notify(&amp;quot;No page text for &amp;quot; + pg.title + &amp;quot; - &amp;quot; + wiki + &amp;quot; - private wiki or out of date?&amp;quot;);&lt;br /&gt;
			if (cb &amp;amp;&amp;amp; $.isFunction(cb)) cb();&lt;br /&gt;
			decrementAndUpdate($prog);&lt;br /&gt;
			return false;&lt;br /&gt;
		} else {&lt;br /&gt;
			return true;&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
	var compareTexts = function ($prog, oldT, newT, title, wiki) {&lt;br /&gt;
		if (oldT === newT) {&lt;br /&gt;
			$prog.notify(&amp;quot;No changes at &amp;quot; + title + &amp;quot; - &amp;quot; + wiki + &amp;quot; - template use?&amp;quot;);&lt;br /&gt;
			decrementAndUpdate($prog);&lt;br /&gt;
			return false;&lt;br /&gt;
		} else {&lt;br /&gt;
			return true;&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 *  Replace usage at Wikimedia Commons.&lt;br /&gt;
	 **/&lt;br /&gt;
	var localReplace = function (re, localUsage, of, nf, sr, fr, $prog) {&lt;br /&gt;
		$.each(localUsage, function (id, pg) {&lt;br /&gt;
			if (!checkPage($prog, pg, &amp;#039;Commons&amp;#039;)) return;&lt;br /&gt;
&lt;br /&gt;
			var isEditable = true,&lt;br /&gt;
				summary = sr + &amp;#039; [[File:&amp;#039; + of + &amp;#039;]] → [[File:&amp;#039; + nf + &amp;#039;]] &amp;#039; + fr,&lt;br /&gt;
				edit;&lt;br /&gt;
&lt;br /&gt;
			$.each(pg.protection, function (i, pr) {&lt;br /&gt;
				if (&amp;#039;edit&amp;#039; === pr.type) {&lt;br /&gt;
					if ($.inArray(pr.level, mw.config.get(&amp;#039;wgUserGroups&amp;#039;)) === -1) isEditable = false;&lt;br /&gt;
					return false;&lt;br /&gt;
				}&lt;br /&gt;
			});&lt;br /&gt;
&lt;br /&gt;
			if (isEditable) {&lt;br /&gt;
				var oldText = pg.revisions[0][&amp;#039;*&amp;#039;],&lt;br /&gt;
					nwe1 = mw.libs.wikiDOM.nowikiEscaper(pg.revisions[0][&amp;#039;*&amp;#039;]),&lt;br /&gt;
					newText = nwe1.secureReplace(re, &amp;#039;$1&amp;#039; + nf).getText();&lt;br /&gt;
&lt;br /&gt;
				if (!compareTexts($prog, oldText, newText, pg.title, &amp;quot;Commons&amp;quot;)) return;&lt;br /&gt;
&lt;br /&gt;
				edit = {&lt;br /&gt;
					cb: function () {&lt;br /&gt;
						decrementAndUpdate($prog);&lt;br /&gt;
					},&lt;br /&gt;
					errCb: function () {&lt;br /&gt;
						decrementAndUpdate($prog);&lt;br /&gt;
						$prog.notify(&amp;quot;Unable to update &amp;quot; + pg.title);&lt;br /&gt;
						//$prog.notify(&amp;quot;Using CommonsDelinker&amp;quot;);&lt;br /&gt;
						//commonsDelinker(of, nf, sr, fr, $prog);&lt;br /&gt;
					},&lt;br /&gt;
					title: pg.title,&lt;br /&gt;
					text: newText,&lt;br /&gt;
					editType: &amp;#039;text&amp;#039;,&lt;br /&gt;
					watchlist: &amp;#039;nochange&amp;#039;,&lt;br /&gt;
					minor: true,&lt;br /&gt;
					summary: summary,&lt;br /&gt;
					basetimestamp: pg.revisions[0].timestamp&lt;br /&gt;
				};&lt;br /&gt;
			} else {&lt;br /&gt;
				// If page is protected, post a request to the talk page&lt;br /&gt;
				edit = {&lt;br /&gt;
					cb: function () {&lt;br /&gt;
						decrementAndUpdate($prog);&lt;br /&gt;
					},&lt;br /&gt;
					errCb: function () {&lt;br /&gt;
						decrementAndUpdate($prog);&lt;br /&gt;
					},&lt;br /&gt;
					title: mw.libs.commons.getTalkPageFromTitle(pg.title),&lt;br /&gt;
					text: &amp;quot;== Please replace [[:File:&amp;quot; + of + &amp;quot;]] ==\n{{edit request}}\nThis page is protected while posting this message. &amp;quot; +&lt;br /&gt;
						&amp;quot;Please replace &amp;lt;code&amp;gt;[[:File:&amp;quot; + of + &amp;quot;]]&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;[[:File:&amp;quot; + nf + &amp;quot;]]&amp;lt;/code&amp;gt; because &amp;quot; + sr + &amp;quot; &amp;quot; + fr + &amp;quot;\nThank you. &amp;quot; +&lt;br /&gt;
						&amp;quot;&amp;lt;small&amp;gt;Message by [[MediaWiki:Gadget-GlobalReplace.js]]&amp;lt;/small&amp;gt; -- ~~~~&amp;quot;,&lt;br /&gt;
					editType: &amp;#039;appendtext&amp;#039;,&lt;br /&gt;
					watchlist: &amp;#039;nochange&amp;#039;,&lt;br /&gt;
					minor: true,&lt;br /&gt;
					summary: summary&lt;br /&gt;
				};&lt;br /&gt;
			}&lt;br /&gt;
			mw.loader.using([&amp;#039;ext.gadget.libAPI&amp;#039;], function () {&lt;br /&gt;
				mw.libs.commons.api.editPage(edit);&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	var sanitizeFileName = function (fn) {&lt;br /&gt;
		return $.trim(fn.replace(/_/g, &amp;#039; &amp;#039;)).replace(/^(?:File|Image)\:/, &amp;#039;&amp;#039;);&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * @param {string} of Old file name. The old file name will be replaced with the new file name.&lt;br /&gt;
	 * @param {string} nf New file name.&lt;br /&gt;
	 * @param {string} sr Short reason like &amp;quot;file renamed&amp;quot;. Will be prefixed to the edit summary.&lt;br /&gt;
	 * @param {string} fr Full reason like &amp;quot;file renamed because it was offending&amp;quot;. Will be appended to the edit summary.&lt;br /&gt;
	 * @param {$.Deferred} $prog Deferred object reflecting the current progress.&lt;br /&gt;
	 **/&lt;br /&gt;
	var replace = function (of, nf, sr, fr, $prog) {&lt;br /&gt;
		var pending = 0,&lt;br /&gt;
			localResult,&lt;br /&gt;
			globalResult;&lt;br /&gt;
&lt;br /&gt;
		of = sanitizeFileName(of);&lt;br /&gt;
		nf = sanitizeFileName(nf);&lt;br /&gt;
&lt;br /&gt;
		var _queryLocal = function (result) {&lt;br /&gt;
			pending--;&lt;br /&gt;
			if (result) localResult = result;&lt;br /&gt;
			if (pending &amp;gt; 0) return;&lt;br /&gt;
			_selectMethod();&lt;br /&gt;
		};&lt;br /&gt;
		var _queryGlobal = function (result) {&lt;br /&gt;
			pending--;&lt;br /&gt;
			if (result) globalResult = result;&lt;br /&gt;
			if (pending &amp;gt; 0) return;&lt;br /&gt;
			_selectMethod();&lt;br /&gt;
		};&lt;br /&gt;
		var _selectMethod = function () {&lt;br /&gt;
			var globalUsage = firstItem(globalResult.query.pages).globalusage,&lt;br /&gt;
				globalUsageCount = globalUsage.length,&lt;br /&gt;
				localUsage = localResult.query ? localResult.query.pages : {},&lt;br /&gt;
				usageCount = getObjLen(localUsage) + globalUsageCount;&lt;br /&gt;
&lt;br /&gt;
			$prog.remaining = usageCount;&lt;br /&gt;
			$prog.total = usageCount;&lt;br /&gt;
			if (0 === usageCount) {&lt;br /&gt;
				$prog.resolve(&amp;quot;File was not in use. Nothing replaced.&amp;quot;);&lt;br /&gt;
			} else if ((usageCount &amp;gt;= usageThreshold || (CORSsupported !== &amp;#039;OK&amp;#039; &amp;amp;&amp;amp; globalUsageCount)) &amp;amp;&amp;amp; !$prog.dontUseCD) {&lt;br /&gt;
				//commonsDelinker(of, nf, sr, fr, $prog);&lt;br /&gt;
				//$prog.notify(&amp;quot;Instructing CommonsDelinker to replace this file&amp;quot;);&lt;br /&gt;
			} else {&lt;br /&gt;
				var re = getFileRegEx(of);&lt;br /&gt;
				localReplace(re, localUsage, of, nf, sr, fr, $prog);&lt;br /&gt;
				// globalReplace(re, globalUsage, of, nf, sr, fr, $prog);&lt;br /&gt;
				$prog.notify(&amp;quot;Replacing usage immediately using your user account. Do not close this window until the process completed.&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			// Finally, set a timeout that will instruct CommonsDelinker if it takes too long&lt;br /&gt;
			$prog.CDtimeout = setTimeout(function () {&lt;br /&gt;
				//commonsDelinker(of, nf, sr, fr, $prog);&lt;br /&gt;
			}, 60000);&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		$prog.notify(&amp;quot;Query usage and selecting replace-method&amp;quot;);&lt;br /&gt;
		pending++;&lt;br /&gt;
		queryGET({&lt;br /&gt;
			action: &amp;#039;query&amp;#039;,&lt;br /&gt;
			generator: &amp;#039;imageusage&amp;#039;,&lt;br /&gt;
			giufilterredir: &amp;#039;nonredirects&amp;#039;,&lt;br /&gt;
			giulimit: usageThreshold,&lt;br /&gt;
			prop: &amp;#039;info|revisions&amp;#039;,&lt;br /&gt;
			inprop: &amp;#039;protection&amp;#039;,&lt;br /&gt;
			rvprop: &amp;#039;content|timestamp&amp;#039;,&lt;br /&gt;
			giutitle: &amp;#039;File:&amp;#039; + of&lt;br /&gt;
		}, _queryLocal);&lt;br /&gt;
		pending++;&lt;br /&gt;
		queryGET({&lt;br /&gt;
			action: &amp;#039;query&amp;#039;,&lt;br /&gt;
			prop: &amp;#039;globalusage&amp;#039;,&lt;br /&gt;
			guprop: &amp;#039;&amp;#039;,&lt;br /&gt;
			gulimit: usageThreshold,&lt;br /&gt;
			gufilterlocal: 1,&lt;br /&gt;
			titles: &amp;#039;File:&amp;#039; + of&lt;br /&gt;
		}, _queryGlobal);&lt;br /&gt;
&lt;br /&gt;
		pending++;&lt;br /&gt;
		testCORS(function () {&lt;br /&gt;
			pending--;&lt;br /&gt;
			if (pending &amp;gt; 0) return;&lt;br /&gt;
			_selectMethod();&lt;br /&gt;
		});&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// Expose globally&lt;br /&gt;
	/**&lt;br /&gt;
	 * @param {string} oldFile Old file name. The old file name will be replaced with the new file name.&lt;br /&gt;
	 *                         Can be in any format (both &amp;quot;File:Abc def.png&amp;quot; and &amp;quot;Abc_def.png&amp;quot; work)&lt;br /&gt;
	 * @param {string} newFile New file name.&lt;br /&gt;
	 *                         Can be in any format (both &amp;quot;File:Abc def.png&amp;quot; and &amp;quot;Abc_def.png&amp;quot; work)&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param {string} shortReason Short reason like &amp;quot;file renamed&amp;quot;. Will be prefixed to the edit summary.&lt;br /&gt;
	 * @param {string} fullReason Full reason like &amp;quot;file renamed because it was offending&amp;quot;. Will be appended to the edit summary.&lt;br /&gt;
	 * @param {boolean} dontUseDelinker Prevents usage of CommonsDelinker (only provided for debugging/scripting)&lt;br /&gt;
	 * @return {$.Deferred} $prog jQuery deferred-object reflecting the current progress. See http://api.jquery.com/category/deferred-object/ for more info.&lt;br /&gt;
	 * @examle See this gadget&amp;#039;s introduction.&lt;br /&gt;
	 **/&lt;br /&gt;
	mw.libs.globalReplace = function (oldFile, newFile, shortReason, fullReason, dontUseDelinker) {&lt;br /&gt;
		var $progress = $.Deferred();&lt;br /&gt;
		$progress.pendingQueries = 0;&lt;br /&gt;
		$progress.dontUseCD = dontUseDelinker;&lt;br /&gt;
		var args = Array.prototype.slice.call(arguments, 0);&lt;br /&gt;
		// Delete &amp;quot;dontUseDelinker&amp;quot;&lt;br /&gt;
		if (args.length &amp;gt; 4) args.pop();&lt;br /&gt;
		// Add progress&lt;br /&gt;
		args.push($progress);&lt;br /&gt;
		replace.apply(this, args);&lt;br /&gt;
		return $progress;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
}(jQuery, mediaWiki));&lt;br /&gt;
//&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rootadmin</name></author>
	</entry>
</feed>