=== Other changes in 1.24 ===
* The deprecated jquery.delayedBind ResourceLoader module was removed.
* The deprecated function mw.util.toggleToc was removed.
+* The Special:Search hooks SpecialSearchGo and SpecialSearchResultsAppend
+ were removed as they were unused.
== Compatibility ==
$t: title object searched for
&$params: an array of the default message name and page title (as parameter)
-'SpecialSearchGo': Called when user clicked the "Go".
-&$title: title object generated from the text entered by the user
-&$term: the search term entered by the user
-
'SpecialSearchNogomatch': Called when user clicked the "Go" button but the
target doesn't exist.
&$title: title object generated from the text entered by the user
$output: $wgOut
$term: Search term specified by the user
-'SpecialSearchResultsAppend': Called after all search results HTML has
-been output. Note that in some cases, this hook will not be called (no
-results, too many results, SpecialSearchResultsPrepend returned false,
-etc).
-$specialSearch: SpecialSearch object ($this)
-$output: $wgOut
-$term: Search term specified by the user
-
'SpecialSearchResults': Called before search result display when there are
matches.
$term: string of search term
}
/**
- * Removes content we've chosen to remove
+ * Removes content we've chosen to remove. The text of the removed elements can be
+ * extracted with the getText method.
+ * @return array of removed DOMElements
*/
public function filterContent() {
wfProfileIn( __METHOD__ );
}
}
}
-
- $this->removeElements( $domElemsToRemove );
+ $removed = $this->removeElements( $domElemsToRemove );
// Elements with named IDs
$domElemsToRemove = array();
$domElemsToRemove[] = $itemToRemoveNode;
}
}
- $this->removeElements( $domElemsToRemove );
+ $removed = array_merge( $removed, $this->removeElements( $domElemsToRemove ) );
// CSS Classes
$domElemsToRemove = array();
}
}
}
- $this->removeElements( $domElemsToRemove );
+ $removed = array_merge( $removed, $this->removeElements( $domElemsToRemove ) );
// Tags with CSS Classes
foreach ( $removals['TAG_CLASS'] as $classToRemove ) {
$elements = $xpath->query(
'//' . $parts[0] . '[@class="' . $parts[1] . '"]'
);
-
- $this->removeElements( $elements );
+ $removed = array_merge( $removed, $this->removeElements( $elements ) );
}
wfProfileOut( __METHOD__ );
+ return $removed;
}
/**
* Removes a list of elelments from DOMDocument
* @param array|DOMNodeList $elements
+ * @return array of removed elements
*/
private function removeElements( $elements ) {
$list = $elements;
$element->parentNode->removeChild( $element );
}
}
+ return $list;
}
/**
}
/**
- * Performs final transformations and returns resulting HTML
+ * Performs final transformations and returns resulting HTML. Note that if you want to call this
+ * both without an element and with an element you should call it without an element first. If you
+ * specify the $element in the method it'll change the underlying dom and you won't be able to get
+ * it back.
*
* @param DOMElement|string|null $element ID of element to get HTML from or false to get it from the whole tree
* @return string Processed HTML
/**
* Set a callback that displays notice messages
*
- * @param $callback callback
- * @return callback
+ * @param callable $callback
+ * @return callable
*/
public function setNoticeCallback( $callback ) {
return wfSetVar( $this->mNoticeCallback, $callback );
/**
* Sets the action to perform as each new page in the stream is reached.
- * @param $callback callback
- * @return callback
+ * @param callable $callback
+ * @return callable
*/
public function setPageCallback( $callback ) {
$previous = $this->mPageCallback;
* with the original title form (in case it's been overridden into a
* local namespace), and a count of revisions.
*
- * @param $callback callback
- * @return callback
+ * @param callable $callback
+ * @return callable
*/
public function setPageOutCallback( $callback ) {
$previous = $this->mPageOutCallback;
/**
* Sets the action to perform as each page revision is reached.
- * @param $callback callback
- * @return callback
+ * @param callable $callback
+ * @return callable
*/
public function setRevisionCallback( $callback ) {
$previous = $this->mRevisionCallback;
/**
* Sets the action to perform as each file upload version is reached.
- * @param $callback callback
- * @return callback
+ * @param callable $callback
+ * @return callable
*/
public function setUploadCallback( $callback ) {
$previous = $this->mUploadCallback;
/**
* Sets the action to perform as each log item reached.
- * @param $callback callback
- * @return callback
+ * @param callable $callback
+ * @return callable
*/
public function setLogItemCallback( $callback ) {
$previous = $this->mLogItemCallback;
/**
* Sets the action to perform when site info is encountered
- * @param $callback callback
- * @return callback
+ * @param callable $callback
+ * @return callable
*/
public function setSiteInfoCallback( $callback ) {
$previous = $this->mSiteInfoCallback;
* Currently, only one cache instance can exist; callers that
* need multiple backlink cache objects should keep them in scope.
*
- * @param Title $title : Title object to get a backlink cache for
+ * @param Title $title Title object to get a backlink cache for
* @return BacklinkCache
*/
public static function get( Title $title ) {
/**
* Set the Database object to use
*
- * @param $db DatabaseBase
+ * @param DatabaseBase $db
*/
public function setDB( $db ) {
$this->db = $db;
/**
* Get the slave connection to the database
* When non existing, will initialize the connection.
- * @return DatabaseBase object
+ * @return DatabaseBase
*/
protected function getDB() {
if ( !isset( $this->db ) ) {
/**
* Get the backlinks for a given table. Cached in process memory only.
- * @param $table String
- * @param $startId Integer|false
- * @param $endId Integer|false
- * @param $max Integer|INF
- * @param $select string 'all' or 'ids'
+ * @param string $table
+ * @param int|bool $startId
+ * @param int|bool $endId
+ * @param int|INF $max
+ * @param string $select 'all' or 'ids'
* @return ResultWrapper
*/
protected function queryLinks( $table, $startId, $endId, $max, $select = 'all' ) {
/**
* Get the field name prefix for a given table
- * @param $table String
+ * @param string $table
* @throws MWException
* @return null|string
*/
/**
* Get the SQL condition array for selecting backlinks, with a join
* on the page table.
- * @param $table String
+ * @param string $table
* @throws MWException
* @return array|null
*/
/**
* Check if there are any backlinks
- * @param $table String
+ * @param string $table
* @return bool
*/
public function hasLinks( $table ) {
/**
* Get the approximate number of backlinks
- * @param $table String
- * @param $max integer|INF Only count up to this many backlinks
- * @return integer
+ * @param string $table
+ * @param int|INF $max Only count up to this many backlinks
+ * @return int
*/
public function getNumLinks( $table, $max = INF ) {
global $wgMemc, $wgUpdateRowsPerJob;
* Returns an array giving the start and end of each range. The first
* batch has a start of false, and the last batch has an end of false.
*
- * @param string $table the links table name
- * @param $batchSize Integer
- * @return Array
+ * @param string $table The links table name
+ * @param int $batchSize
+ * @return array
*/
public function partition( $table, $batchSize ) {
global $wgMemc;
/**
* Partition a DB result with backlinks in it into batches
- * @param $res ResultWrapper database result
- * @param $batchSize integer
- * @param $isComplete bool Whether $res includes all the backlinks
+ * @param ResultWrapper $res Database result
+ * @param int $batchSize
+ * @param bool $isComplete Whether $res includes all the backlinks
* @throws MWException
* @return array
*/
/**
* Create an instance.
- * @param $value Mixed: the user-supplied value
+ * @param mixed $value The user-supplied value
* @param CacheDependency|CacheDependency[] $deps A dependency or dependency
* array. All dependencies must be objects implementing CacheDependency.
*/
/**
* Get the user-defined value
- * @return bool|Mixed
+ * @return bool|mixed
*/
function getValue() {
return $this->value;
/**
* Store the wrapper to a cache
*
- * @param $cache BagOStuff
- * @param $key
- * @param $expiry
+ * @param BagOStuff $cache
+ * @param string $key
+ * @param int $expiry
*/
function storeToCache( $cache, $key, $expiry = 0 ) {
$this->initialiseDeps();
* it will be generated with the callback function (if present), and the newly
* calculated value will be stored to the cache in a wrapper.
*
- * @param $cache BagOStuff a cache object such as $wgMemc
- * @param string $key the cache key
- * @param $expiry Integer: the expiry timestamp or interval in seconds
- * @param $callback Mixed: the callback for generating the value, or false
- * @param array $callbackParams the function parameters for the callback
- * @param array $deps the dependencies to store on a cache miss. Note: these
+ * @param BagOStuff $cache A cache object such as $wgMemc
+ * @param string $key The cache key
+ * @param int $expiry The expiry timestamp or interval in seconds
+ * @param bool|array $callback The callback for generating the value, or false
+ * @param array $callbackParams The function parameters for the callback
+ * @param array $deps The dependencies to store on a cache miss. Note: these
* are not the dependencies used on a cache hit! Cache hits use the stored
* dependency array.
*
* Create a file dependency
*
* @param string $filename the name of the file, preferably fully qualified
- * @param $timestamp Mixed: the unix last modified timestamp, or false if the
+ * @param null|bool|int $timestamp The unix last modified timestamp, or false if the
* file does not exist. If omitted, the timestamp will be loaded from
* the file.
*
/**
* Save and compress text to the cache
* @param string $text
- * @return string compressed text
+ * @return string Compressed text
*/
public function saveText( $text ) {
global $wgUseFileCache;
/**
* Roughly increments the cache misses in the last hour by unique visitors
- * @param $request WebRequest
+ * @param WebRequest $request
* @return void
*/
public function incrMissesRecent( WebRequest $request ) {
/**
* Returns the default gender option in this wiki.
- * @return String
+ * @return string
*/
protected function getDefault() {
if ( $this->default === null ) {
/**
* Returns the gender for given username.
- * @param string $username or User: username
- * @param string $caller the calling method
- * @return String
+ * @param string|User $username Username
+ * @param string $caller The calling method
+ * @return string
*/
public function getGenderOf( $username, $caller = '' ) {
global $wgUser;
/**
* Wrapper for doQuery that processes raw LinkBatch data.
*
- * @param $data
- * @param $caller
+ * @param array $data
+ * @param string $caller
*/
public function doLinkBatch( $data, $caller = '' ) {
$users = array();
* Wrapper for doQuery that processes a title or string array.
*
* @since 1.20
- * @param $titles List: array of Title objects or strings
- * @param string $caller the calling method
+ * @param array $titles Array of Title objects or strings
+ * @param string $caller The calling method
*/
public function doTitlesArray( $titles, $caller = '' ) {
$users = array();
/**
* Preloads genders for given list of users.
- * @param $users List|String: usernames
- * @param string $caller the calling method
+ * @param array|string $users Usernames
+ * @param string $caller The calling method
*/
public function doQuery( $users, $caller = '' ) {
$default = $this->getDefault();
class HTMLFileCache extends FileCacheBase {
/**
* Construct an ObjectFileCache from a Title and an action
- * @param $title Title|string Title object or prefixed DB key string
- * @param $action string
+ * @param Title|string $title Title object or prefixed DB key string
+ * @param string $action
* @throws MWException
* @return HTMLFileCache
*/
/**
* Check if pages can be cached for this request/user
- * @param $context IContextSource
+ * @param IContextSource $context
* @return bool
*/
public static function useFileCache( IContextSource $context ) {
/**
* Read from cache to context output
- * @param $context IContextSource
+ * @param IContextSource $context
* @return void
*/
public function loadFromFileCache( IContextSource $context ) {
/**
* Save this cache object with the given text.
* Use this as an ob_start() handler.
- * @param $text string
+ * @param string $text
* @return bool Whether $wgUseFileCache is enabled
*/
public function saveToFileCache( $text ) {
/**
* Clear the file caches for a page for all actions
- * @param $title Title
+ * @param Title $title
* @return bool Whether $wgUseFileCache is enabled
*/
public static function clearFileCache( Title $title ) {
* class. Only used in debugging output.
* @since 1.17
*
- * @param $caller
+ * @param string $caller
*/
public function setCaller( $caller ) {
$this->caller = $caller;
}
/**
- * @param $title Title
+ * @param Title $title
*/
public function addObj( $title ) {
if ( is_object( $title ) ) {
}
/**
- * @param $ns int
- * @param $dbkey string
- * @return mixed
+ * @param int $ns
+ * @param string $dbkey
*/
public function add( $ns, $dbkey ) {
if ( $ns < 0 ) {
* Set the link list to a given 2-d array
* First key is the namespace, second is the DB key, value arbitrary
*
- * @param $array array
+ * @param array $array
*/
public function setArray( $array ) {
$this->data = $array;
/**
* Do the query and add the results to the LinkCache object
*
- * @return Array mapping PDBK to ID
+ * @return array Mapping PDBK to ID
*/
public function execute() {
$linkCache = LinkCache::singleton();
* Do the query and add the results to a given LinkCache object
* Return an array mapping PDBK to ID
*
- * @param $cache LinkCache
- * @return Array remaining IDs
+ * @param LinkCache $cache
+ * @return array Remaining IDs
*/
protected function executeInto( &$cache ) {
wfProfileIn( __METHOD__ );
* This function *also* stores extra fields of the title used for link
* parsing to avoid extra DB queries.
*
- * @param $cache LinkCache
- * @param $res
- * @return Array of remaining titles
+ * @param LinkCache $cache
+ * @param ResultWrapper $res
+ * @return array Array of remaining titles
*/
public function addResultToCache( $cache, $res ) {
if ( !$res ) {
/**
* Perform the existence test query, return a ResultWrapper with page_id fields
- * @return Bool|ResultWrapper
+ * @return bool|ResultWrapper
*/
public function doQuery() {
if ( $this->isEmpty() ) {
/**
* Do (and cache) {{GENDER:...}} information for userpages in this LinkBatch
*
- * @return bool whether the query was successful
+ * @return bool Whether the query was successful
*/
public function doGenderQuery() {
if ( $this->isEmpty() ) {
/**
* Construct a WHERE clause which will match all the given titles.
*
- * @param string $prefix the appropriate table's field name prefix ('page', 'pl', etc)
- * @param $db DatabaseBase object to use
- * @return mixed string with SQL where clause fragment, or false if no items.
+ * @param string $prefix The appropriate table's field name prefix ('page', 'pl', etc)
+ * @param DatabaseBase $db DatabaseBase object to use
+ * @return string|bool String with SQL where clause fragment, or false if no items.
*/
public function constructSet( $prefix, $db ) {
return $db->makeWhereFrom2d( $this->data, "{$prefix}_namespace", "{$prefix}_title" );
/**
* General accessor to get/set whether SELECT FOR UPDATE should be used
*
- * @param $update
+ * @param bool $update
* @return bool
*/
public function forUpdate( $update = null ) {
}
/**
- * @param $title
+ * @param string $title
* @return array|int
*/
public function getGoodLinkID( $title ) {
/**
* Get a field of a title object from cache.
* If this link is not good, it will return NULL.
- * @param $title Title
+ * @param Title $title
* @param string $field ('length','redirect','revision','model')
- * @return mixed
+ * @return string|null
*/
public function getGoodLinkFieldObj( $title, $field ) {
$dbkey = $title->getPrefixedDBkey();
}
/**
- * @param $title
+ * @param string $title
* @return bool
*/
public function isBadLink( $title ) {
/**
* Same as above with better interface.
* @since 1.19
- * @param $title Title
- * @param $row object which has the fields page_id, page_is_redirect,
+ * @param Title $title
+ * @param stdClass $row Object which has the fields page_id, page_is_redirect,
* page_latest and page_content_model
*/
public function addGoodLinkObjFromRow( $title, $row ) {
}
/**
- * @param $title Title
+ * @param Title $title
*/
public function addBadLinkObj( $title ) {
$dbkey = $title->getPrefixedDBkey();
}
/**
- * @param $title Title
+ * @param Title $title
*/
public function clearLink( $title ) {
$dbkey = $title->getPrefixedDBkey();
/**
* Add a title to the link cache, return the page_id or zero if non-existent
*
- * @param string $title title to add
- * @return Integer
+ * @param string $title Title to add
+ * @return int
*/
public function addLink( $title ) {
$nt = Title::newFromDBkey( $title );
/**
* Add a title to the link cache, return the page_id or zero if non-existent
*
- * @param $nt Title object to add
- * @return Integer
+ * @param Title $nt Title object to add
+ * @return int
*/
public function addLinkObj( $nt ) {
global $wgAntiLockFlags, $wgContentHandlerUseDB;
* For constructor parameters, see the documentation in DefaultSettings.php
* for $wgLocalisationCacheConf.
*
- * @param $conf Array
+ * @param array $conf
* @throws MWException
*/
function __construct( $conf ) {
/**
* Returns true if the given key is mergeable, that is, if it is an associative
* array which can be merged through a fallback sequence.
- * @param $key
+ * @param string $key
* @return bool
*/
public function isMergeableKey( $key ) {
*
* Warning: this may be slow for split items (messages), since it will
* need to fetch all of the subitems from the cache individually.
- * @param $code
- * @param $key
+ * @param string $code
+ * @param string $key
* @return mixed
*/
public function getItem( $code, $key ) {
/**
* Get a subitem, for instance a single message for a given language.
- * @param $code
- * @param $key
- * @param $subkey
- * @return null
+ * @param string $code
+ * @param string $key
+ * @param string $subkey
+ * @return mixed|null
*/
public function getSubitem( $code, $key, $subkey ) {
if ( !isset( $this->loadedSubitems[$code][$key][$subkey] ) &&
*
* Will return null if the item is not found, or false if the item is not an
* array.
- * @param $code
- * @param $key
+ * @param string $code
+ * @param string $key
* @return bool|null|string
*/
public function getSubitemList( $code, $key ) {
/**
* Load an item into the cache.
- * @param $code
- * @param $key
+ * @param string $code
+ * @param string $key
*/
protected function loadItem( $code, $key ) {
if ( !isset( $this->initialisedLangs[$code] ) ) {
/**
* Load a subitem into the cache
- * @param $code
- * @param $key
- * @param $subkey
+ * @param string $code
+ * @param string $key
+ * @param string $subkey
*/
protected function loadSubitem( $code, $key, $subkey ) {
if ( !in_array( $key, self::$splitKeys ) ) {
/**
* Initialise a language in this object. Rebuild the cache if necessary.
- * @param $code
+ * @param string $code
* @throws MWException
*/
protected function initLanguage( $code ) {
/**
* Create a fallback from one language to another, without creating a
* complete persistent cache.
- * @param $primaryCode
- * @param $fallbackCode
+ * @param string $primaryCode
+ * @param string $fallbackCode
*/
public function initShallowFallback( $primaryCode, $fallbackCode ) {
$this->data[$primaryCode] =& $this->data[$fallbackCode];
/**
* Read a PHP file containing localisation data.
- * @param $_fileName
- * @param $_fileType
+ * @param string $_fileName
+ * @param string $_fileType
* @throws MWException
* @return array
*/
* Read a JSON file containing localisation messages.
* @param string $fileName Name of file to read
* @throws MWException if there is a syntax error in the JSON file
- * @return array with a 'messages' key, or empty array if the file doesn't exist
+ * @return array Array with a 'messages' key, or empty array if the file doesn't exist
*/
public function readJSONFile( $fileName ) {
wfProfileIn( __METHOD__ );
/**
* Get the compiled plural rules for a given language from the XML files.
* @since 1.20
+ * @param string $code
+ * @return array|null
*/
public function getCompiledPluralRules( $code ) {
$rules = $this->getPluralRules( $code );
* Get the plural rules for a given language from the XML files.
* Cached.
* @since 1.20
+ * @param string $code
+ * @return array|null
*/
public function getPluralRules( $code ) {
if ( $this->pluralRules === null ) {
* Get the plural rule types for a given language from the XML files.
* Cached.
* @since 1.22
+ * @param string $code
+ * @return array|null
*/
public function getPluralRuleTypes( $code ) {
if ( $this->pluralRuleTypes === null ) {
/**
* Load a plural XML file with the given filename, compile the relevant
* rules, and save the compiled rules in a process-local cache.
+ *
+ * @param string $fileName
*/
protected function loadPluralFile( $fileName ) {
$doc = new DOMDocument;
* Read the data from the source files for a given language, and register
* the relevant dependencies in the $deps array. If the localisation
* exists, the data array is returned, otherwise false is returned.
+ *
+ * @param string $code
+ * @param array $deps
*/
protected function readSourceFilesAndRegisterDeps( $code, &$deps ) {
global $IP;
/**
* Merge two localisation values, a primary and a fallback, overwriting the
* primary value in place.
- * @param $key
- * @param $value
- * @param $fallbackValue
+ * @param string $key
+ * @param mixed $value
+ * @param mixed $fallbackValue
*/
protected function mergeItem( $key, &$value, $fallbackValue ) {
if ( !is_null( $value ) ) {
}
/**
- * @param $value
- * @param $fallbackValue
+ * @param mixed $value
+ * @param mixed $fallbackValue
*/
protected function mergeMagicWords( &$value, $fallbackValue ) {
foreach ( $fallbackValue as $magicName => $fallbackInfo ) {
*
* Returns true if any data from the extension array was used, false
* otherwise.
- * @param $codeSequence
- * @param $key
- * @param $value
- * @param $fallbackValue
+ * @param string $codeSequence
+ * @param string $key
+ * @param mixed $value
+ * @param mixed $fallbackValue
* @return bool
*/
protected function mergeExtensionItem( $codeSequence, $key, &$value, $fallbackValue ) {
/**
* Load localisation data for a given language for both core and extensions
* and save it to the persistent cache store and the process cache
- * @param $code
+ * @param string $code
* @throws MWException
*/
public function recache( $code ) {
*
* The preload item will be loaded automatically, improving performance
* for the commonly-requested items it contains.
- * @param $data
+ * @param array $data
* @return array
*/
protected function buildPreload( $data ) {
/**
* Unload the data for a given language from the object cache.
* Reduces memory usage.
- * @param $code
+ * @param string $code
*/
public function unload( $code ) {
unset( $this->data[$code] );
private $maxLoadedLangs = 10;
/**
- * @param $fileName
- * @param $fileType
+ * @param string $fileName
+ * @param string $fileType
* @return array|mixed
*/
protected function readPHPFile( $fileName, $fileType ) {
}
/**
- * @param $code
- * @param $key
+ * @param string $code
+ * @param string $key
* @return mixed
*/
public function getItem( $code, $key ) {
}
/**
- * @param $code
- * @param $key
- * @param $subkey
- * @return
+ * @param string $code
+ * @param string $key
+ * @param string $subkey
+ * @return mixed
*/
public function getSubitem( $code, $key, $subkey ) {
unset( $this->mruLangs[$code] );
}
/**
- * @param $code
+ * @param string $code
*/
public function recache( $code ) {
parent::recache( $code );
}
/**
- * @param $code
+ * @param string $code
*/
public function unload( $code ) {
unset( $this->mruLangs[$code] );
* @since 1.23
*/
class MapCacheLRU {
- /** @var Array */
+ /** @var array */
protected $cache = array(); // (key => value)
protected $maxCacheKeys; // integer; max entries
/**
- * @param $maxKeys integer Maximum number of entries allowed (min 1).
+ * @param int $maxKeys Maximum number of entries allowed (min 1).
* @throws MWException When $maxCacheKeys is not an int or =< 0.
*/
public function __construct( $maxKeys ) {
* This will prune the cache if it gets too large based on LRU.
* If the item is already set, it will be pushed to the top of the cache.
*
- * @param $key string
- * @param $value mixed
+ * @param string $key
+ * @param mixed $value
* @return void
*/
public function set( $key, $value ) {
/**
* Check if a key exists
*
- * @param $key string
+ * @param string $key
* @return bool
*/
public function has( $key ) {
* This returns null if the key is not set.
* If the item is already set, it will be pushed to the top of the cache.
*
- * @param $key string
+ * @param string $key
* @return mixed
*/
public function get( $key ) {
/**
* Clear one or several cache entries, or all cache entries
*
- * @param $keys string|Array
+ * @param string|array $keys
* @return void
*/
public function clear( $keys = null ) {
/**
* Push an entry to the top of the cache
*
- * @param $key string
+ * @param string $key
*/
protected function ping( $key ) {
$item = $this->cache[$key];
/**
* Try to load the cache from a local file.
*
- * @param string $hash the hash of contents, to check validity.
- * @param Mixed $code Optional language code, see documenation of load().
+ * @param string $hash The hash of contents, to check validity.
+ * @param string $code Optional language code, see documenation of load().
* @return array The cache array
*/
function getLocalCache( $hash, $code ) {
/**
* Save the cache to a local file.
+ * @param string $serialized
+ * @param string $hash
+ * @param string $code
*/
function saveToLocal( $serialized, $hash, $code ) {
global $wgCacheDirectory;
* or false if populating empty cache fails. Also returns true if MessageCache
* is disabled.
*
- * @param bool|String $code Language to which load messages
+ * @param bool|string $code Language to which load messages
* @throws MWException
* @return bool
*/
/**
* Is the given cache array expired due to time passing or a version change?
*
- * @param $cache
+ * @param array $cache
* @return bool
*/
protected function isCacheExpired( $cache ) {
* a timeout of MessageCache::MSG_LOCK_TIMEOUT.
*
* @param string $key
- * @return Boolean: success
+ * @return bool Success
*/
function lock( $key ) {
$lockKey = $key . ':lock';
* * Fallbacks will be just that: fallbacks. A fallback language will never be reached if
* the message is available *anywhere* in the language for which it is a fallback.
*
- * @param string $key the message key
+ * @param string $key The message key
* @param bool $useDB If true, look for the message in the DB, false
- * to use only the compiled l10n cache.
+ * to use only the compiled l10n cache.
* @param bool|string|object $langcode Code of the language to get the message for.
- * - If string and a valid code, will create a standard language object
- * - If string but not a valid code, will create a basic language object
- * - If boolean and false, create object from the current users language
- * - If boolean and true, create object from the wikis content language
- * - If language object, use it as given
- * @param bool $isFullKey specifies whether $key is a two part key
- * "msg/lang".
+ * - If string and a valid code, will create a standard language object
+ * - If string but not a valid code, will create a basic language object
+ * - If boolean and false, create object from the current users language
+ * - If boolean and true, create object from the wikis content language
+ * - If language object, use it as given
+ * @param bool $isFullKey specifies whether $key is a two part key "msg/lang".
*
* @throws MWException when given an invalid key
* @return string|bool False if the message doesn't exist, otherwise the
}
/**
- * @param $key
+ * @param string $key
* @return array
*/
public function figureMessage( $key ) {
* for which MediaWiki:msgkey exists. If $code is another language code, this
* will ONLY return message keys for which MediaWiki:msgkey/$code exists.
* @param string $code Language code
- * @return array of message keys (strings)
+ * @return array Array of message keys (strings)
*/
public function getAllMessageKeys( $code ) {
global $wgContLang;
class ObjectFileCache extends FileCacheBase {
/**
* Construct an ObjectFileCache from a key and a type
- * @param $key string
- * @param $type string
+ * @param string $key
+ * @param string $type
* @return ObjectFileCache
*/
public static function newFromKey( $key, $type ) {
/**
* Construct an ResourceFileCache from a context
- * @param $context ResourceLoaderContext
+ * @param ResourceLoaderContext $context
* @return ResourceFileCache
*/
public static function newFromContext( ResourceLoaderContext $context ) {
/**
* Check if an RL request can be cached.
* Caller is responsible for checking if any modules are private.
- * @param $context ResourceLoaderContext
+ * @param ResourceLoaderContext $context
* @return bool
*/
public static function useFileCache( ResourceLoaderContext $context ) {
/**
* Get a property of a user based on their user ID
*
- * @param $userId integer User ID
+ * @param int $userId User ID
* @param string $prop User property
- * @return mixed The property or false if the user does not exist
+ * @return mixed|bool The property or false if the user does not exist
*/
public function getProp( $userId, $prop ) {
if ( !isset( $this->cache[$userId][$prop] ) ) {
/**
* Get the name of a user or return $ip if the user ID is 0
*
- * @param integer $userId
+ * @param int $userId
* @param string $ip
* @return string
* @since 1.22
* Preloads user names for given list of users.
* @param array $userIds List of user IDs
* @param array $options Option flags; include 'userpage' and 'usertalk'
- * @param string $caller the calling method
+ * @param string $caller The calling method
*/
public function doQuery( array $userIds, $options = array(), $caller = '' ) {
wfProfileIn( __METHOD__ );
/**
* Check if a cache type is in $options and was not loaded for this user
*
- * @param $uid integer user ID
+ * @param int $uid User ID
* @param string $type Cache type
* @param array $options Requested cache types
* @return bool
/**
* Open a connection to the database. Usually aborts on failure
*
- * @param string $server database server host
- * @param string $user database user name
- * @param string $password database user password
- * @param string $dbName database name
+ * @param string $server Database server host
+ * @param string $user Database user name
+ * @param string $password Database user password
+ * @param string $dbName Database name
* @return bool
* @throws DBConnectionError
*/
}
/**
- * @return string command delimiter used by this database engine
+ * @return string Command delimiter used by this database engine
*/
public function getDelimiter() {
return $this->delimiter;
* - false to disable debugging
* - omitted or null to do nothing
*
- * @return bool|null previous value of the flag
+ * @return bool|null Previous value of the flag
*/
public function debug( $debug = null ) {
return wfSetBit( $this->mFlags, DBO_DEBUG, $debug );
* parameters, the member with the given name is set to the given value.
*
* @param string $name
- * @param $value
+ * @param array $value
*/
public function setLBInfo( $name, $value = null ) {
if ( is_null( $value ) ) {
}
/**
- * @param $errno
+ * @param int $errno
* @param string $errstr
*/
public function connectionErrorHandler( $errno, $errstr ) {
/**
* Execute a prepared query with the various arguments
- * @param string $prepared the prepared sql
+ * @param string $prepared The prepared sql
* @param mixed $args Either an array here, or put scalars as varargs
*
* @return ResultWrapper
* For faking prepared SQL statements on DBs that don't support it directly.
*
* @param string $preparedQuery A 'preparable' SQL statement
- * @param array $args of Arguments to fill it with
+ * @param array $args Array of Arguments to fill it with
* @return string Executable SQL
*/
public function fillPrepared( $preparedQuery, $args ) {
* array(baseKeyVal => array(subKeyVal => [ignored], ...), ...)
* @param string $baseKey Field name to match the base-level keys to (eg 'pl_namespace')
* @param string $subKey Field name to match the sub-level keys to (eg 'pl_title')
- * @return Mixed: string SQL fragment, or false if no items in array.
+ * @return string|bool string SQL fragment, or false if no items in array.
*/
public function makeWhereFrom2d( $data, $baseKey, $subKey ) {
$conds = array();
/**
* Return aggregated value alias
*
- * @param $valuedata
+ * @param array $valuedata
* @param string $valuename
*
* @return string
*
* @todo Explain what exactly will fail if this is not overridden.
*
- * @param $db
+ * @param string $db
*
* @return bool Success or failure
*/
/**
* Get the current DB name
+ * @return string
*/
public function getDBname() {
return $this->mDBname;
/**
* Get the server hostname or IP address
+ * @return string
*/
public function getServer() {
return $this->mServer;
/**
* Returns true if current database backend supports ORDER BY or LIMIT for separate subqueries
* within the UNION construct.
- * @return Boolean
+ * @return bool
*/
public function unionSupportsOrderAndLimit() {
return true; // True for almost every DB supported
}
/**
- * @return boolean
+ * @return bool
*/
function isLoggable() {
// Don't send to the exception log, already in dberror log
* @param string $field Field name
* @param string|array $conds Conditions
* @param string|array $join_conds Join conditions
- * @return String SQL text
+ * @return string SQL text
* @since 1.23
*/
public function buildGroupConcatField( $delim, $table, $field, $conds = '',
/**
* @param ResultWrapper|resource $res
- * @param $n int
+ * @param int $n
* @return string
*/
function fieldName( $res, $n ) {
* Get the name of the specified field in a result
*
* @param ResultWrapper|resource $res
- * @param $n int
+ * @param int $n
* @return string
*/
abstract protected function mysqlFieldName( $res, $n );
/**
* mysql_field_type() wrapper
* @param ResultWrapper|resource $res
- * @param $n int
+ * @param int $n
* @return string
*/
public function fieldType( $res, $n ) {
/**
* DELETE where the condition is a join. MySql uses multi-table deletes.
- * @param $delTable string
- * @param $joinTable string
- * @param $delVar string
- * @param $joinVar string
- * @param $conds array|string
- * @param bool|string $fname bool
+ * @param string $delTable
+ * @param string $joinTable
+ * @param string $delVar
+ * @param string $joinVar
+ * @param array|string $conds
+ * @param bool|string $fname
* @throws DBUnexpectedError
* @return bool|ResultWrapper
*/
}
/**
- * @param $tableName
- * @param $fName string
+ * @param string $tableName
+ * @param string $fName
* @return bool|ResultWrapper
*/
public function dropTable( $tableName, $fName = __METHOD__ ) {
/**
* @param string $table
- * @param $row
+ * @param array $row
* @param string $fname
* @return bool
* @throws DBUnexpectedError
/**
* Return aggregated value function call
*
- * @param $valuedata
+ * @param array $valuedata
* @param string $valuename
* @return mixed
*/
/**
* @param DatabaseBase $dbw
- * @param $id
+ * @param int $id
*/
public function __construct( $dbw, $id ) {
$this->dbw = $dbw;
* Values may contain magic keywords like "$user"
* @since 1.19
*
- * @param $search_path array list of schemas to be searched by default
+ * @param array $search_path List of schemas to be searched by default
*/
function setSearchPath( $search_path ) {
$this->query( "SET search_path = " . implode( ", ", $search_path ) );
/**
* @see DatabaseBase::isWriteQuery()
*
- * @param $sql string
+ * @param string $sql
* @return bool
*/
function isWriteQuery( $sql ) {
/**
* @param ResultWrapper $res
- * @param $n
+ * @param int $n
* @return bool
*/
function fieldName( $res, $n ) {
}
/**
- * @param $b
+ * @param string $b
* @return Blob
*/
function encodeBlob( $b ) {
}
/**
- * @param $b Blob|string
+ * @param Blob|string $b
* @return string
*/
function decodeBlob( $b ) {
* @deprecated since 1.22
*
* @param array|null $fields
- * @param boolean $override
- * @param boolean $skipLoaded
+ * @param bool $override
+ * @param bool $skipLoaded
*
* @return bool Success indicator
*/
*
* @since 1.20
*
- * @return integer|null
+ * @return int|null
*/
public function getId();
*
* @since 1.20
*
- * @param integer|null $id
+ * @param int|null $id
*/
public function setId( $id );
*
* @param string $name
*
- * @return boolean
+ * @return bool
*/
public function hasField( $name );
*
* @since 1.20
*
- * @return boolean
+ * @return bool
*/
public function hasIdField();
* @since 1.20
*
* @param array $fields The fields to set
- * @param boolean $override Override already set fields with the provided values?
+ * @param bool $override Override already set fields with the provided values?
*/
public function setFields( array $fields, $override = true );
* @since 1.20
*
* @param null|array $fields
- * @param boolean $incNullId
+ * @param bool $incNullId
*
* @return array
*/
* @since 1.20
* @deprecated since 1.22
*
- * @param boolean $override
+ * @param bool $override
*/
public function loadDefaults( $override = true );
* @param string|null $functionName
* @deprecated since 1.22
*
- * @return boolean Success indicator
+ * @return bool Success indicator
*/
public function save( $functionName = null );
* @since 1.20
* @deprecated since 1.22
*
- * @return boolean Success indicator
+ * @return bool Success indicator
*/
public function remove();
* @deprecated since 1.22
*
* @param string $field
- * @param integer $amount
+ * @param int $amount
*
- * @return boolean Success indicator
+ * @return bool Success indicator
*/
public function addToField( $field, $amount );
* @since 1.20
* @deprecated since 1.22
*
- * @param boolean $update
+ * @param bool $update
*/
public function setUpdateSummaries( $update );
* @since 1.20
* @deprecated since 1.22
*
- * @param boolean $summaryMode
+ * @param bool $summaryMode
*/
public function setSummaryMode( $summaryMode );
* @param array|string|null $fields
* @param array $conditions
* @param array $options
- * @param boolean $collapse Set to false to always return each result row as associative array.
+ * @param bool $collapse Set to false to always return each result row as associative array.
* @param string|null $functionName
*
* @return array of array
* @param array|string|null $fields
* @param array $conditions
* @param array $options
- * @param boolean $collapse Set to false to always return each result row as associative array.
+ * @param bool $collapse Set to false to always return each result row as associative array.
* @param string|null $functionName
*
* @return mixed|array|bool False on failure
*
* @param array $conditions
*
- * @return boolean
+ * @return bool
*/
public function has( array $conditions = array() );
*
* @since 1.21
*
- * @return boolean
+ * @return bool
*/
public function exists();
* @param array $conditions
* @param array $options
*
- * @return integer
+ * @return int
*/
public function count( array $conditions = array(), array $options = array() );
* @param array $conditions
* @param string|null $functionName
*
- * @return boolean Success indicator
+ * @return bool Success indicator
*/
public function delete( array $conditions, $functionName = null );
*
* @since 1.20
*
- * @param boolean $requireParams
- * @param boolean $setDefaults
+ * @param bool $requireParams
+ * @param bool $setDefaults
*
* @return array
*/
*
* @since 1.20
*
- * @return integer DB_ enum
+ * @return int DB_ enum
*/
public function getReadDb();
/**
* Set the database type to use for read operations.
*
- * @param integer $db
+ * @param int $db
*
* @since 1.20
*/
*
* @since 1.20
*
- * @return String|bool The target wiki, in a form that LBFactory
+ * @return string|bool The target wiki, in a form that LBFactory
* understands (or false if the local wiki is used)
*/
public function getTargetWiki();
*
* @see LoadBalancer::reuseConnection
*
- * @param DatabaseBase $db the database
+ * @param DatabaseBase $db The database
*
* @since 1.20
*/
* @param array $values
* @param array $conditions
*
- * @return boolean Success indicator
+ * @return bool Success indicator
*/
public function update( array $values, array $conditions = array() );
* @since 1.20
*
* @param array $data
- * @param boolean $loadDefaults
+ * @param bool $loadDefaults
*
* @return IORMRow
*/
*
* @param string $name
*
- * @return boolean
+ * @return bool
*/
public function canHaveField( $name );
}
* Private helper for forEachLBCallMethod
* @param LoadBalancer $loadBalancer
* @param string $methodName
- * @param $args
+ * @param array $args
*/
function callMethod( $loadBalancer, $methodName, $args ) {
call_user_func_array( array( $loadBalancer, $methodName ), $args );
}
/**
- * @param string $cluster external storage cluster, or false for core
+ * @param string $cluster External storage cluster, or false for core
* @param bool|string $wiki Wiki ID, or false for the current wiki
* @return LoadBalancerSingle
*/
protected $db;
/**
- * @param $params array
+ * @param array $params
*/
function __construct( $params ) {
$this->db = $params['connection'];
/**
* Get or set arbitrary data used by the parent object, usually an LBFactory
- * @param $x
+ * @param mixed $x
* @return mixed
*/
function parentInfo( $x = null ) {
/**
* Wait for a given slave to catch up to the master pos stored in $this
- * @param $index
- * @param $open bool
+ * @param int $index
+ * @param bool $open
* @return bool
*/
protected function doWait( $index, $open = false ) {
* Get a connection by index
* This is the main entry point for this class.
*
- * @param $i Integer: server index
- * @param array $groups query groups
+ * @param int $i Server index
+ * @param array $groups Query groups
* @param bool|string $wiki Wiki ID
*
* @throws MWException
*
* @see LoadBalancer::getConnection() for parameter information
*
- * @param integer $db
+ * @param int $db
* @param mixed $groups
* @param bool|string $wiki
* @return DBConnRef
*
* @see LoadBalancer::getConnection() for parameter information
*
- * @param integer $db
+ * @param int $db
* @param mixed $groups
* @param bool|string $wiki
* @return DBConnRef
* On error, returns false, and the connection which caused the
* error will be available via $this->mErrorConnection.
*
- * @param $i Integer server index
- * @param bool|string $wiki wiki ID to open
+ * @param int $i Server index
+ * @param bool|string $wiki Wiki ID to open
* @return DatabaseBase
*
* @access private
* On error, returns false, and the connection which caused the
* error will be available via $this->mErrorConnection.
*
- * @param $i Integer: server index
- * @param string $wiki wiki ID to open
+ * @param int $i Server index
+ * @param string $wiki Wiki ID to open
* @return DatabaseBase
*/
function openForeignConnection( $i, $wiki ) {
/**
* Test if the specified index represents an open connection
*
- * @param $index Integer: server index
+ * @param int $index Server index
* @access private
* @return bool
*/
* Returns a Database object whether or not the connection was successful.
* @access private
*
- * @param $server
- * @param $dbNameOverride bool
+ * @param array $server
+ * @param bool $dbNameOverride
* @throws MWException
* @return DatabaseBase
*/
/**
* Return the server info structure for a given index, or false if the index is invalid.
- * @param $i
- * @return bool
+ * @param int $i
+ * @return array|bool
*/
function getServerInfo( $i ) {
if ( isset( $this->mServers[$i] ) ) {
/**
* Sets the server info structure for the given index. Entry at index $i
* is created if it doesn't exist
- * @param $i
- * @param $serverInfo
+ * @param int $i
+ * @param array $serverInfo
*/
function setServerInfo( $i, $serverInfo ) {
$this->mServers[$i] = $serverInfo;
}
/**
- * @param $value null
- * @return Mixed
+ * @param mixed $value
+ * @return mixed
*/
function waitTimeout( $value = null ) {
return wfSetVar( $this->mWaitTimeout, $value );
protected $res;
/**
- * @var integer
+ * @var int
*/
protected $key;
}
/**
- * @param $row
+ * @param bool|object $row
*/
protected function setCurrent( $row ) {
if ( $row === false ) {
}
/**
- * @return integer
+ * @return int
*/
public function count() {
return $this->res->numRows();
}
/**
- * @return boolean
+ * @return bool
*/
public function isEmpty() {
return $this->res->numRows() === 0;
}
/**
- * @return integer
+ * @return int
*/
public function key() {
return $this->key;
}
/**
- * @return boolean
+ * @return bool
*/
public function valid() {
return $this->current !== false;
*
* @param IORMTable|null $table Deprecated since 1.22
* @param array|null $fields
- * @param boolean $loadDefaults Deprecated since 1.22
+ * @param bool $loadDefaults Deprecated since 1.22
*/
public function __construct( IORMTable $table = null, $fields = null, $loadDefaults = false ) {
$this->table = $table;
* @deprecated since 1.22
*
* @param array|null $fields
- * @param boolean $override
- * @param boolean $skipLoaded
+ * @param bool $override
+ * @param bool $skipLoaded
*
* @return bool Success indicator
*/
* @since 1.20
*
* @param string $name Field name
- * @param $default mixed: Default value to return when none is found
+ * @param mixed $default Default value to return when none is found
* (default: null)
*
* @throws MWException
* @since 1.20
* @deprecated since 1.22
*
- * @param $name string
+ * @param string $name
*
* @return mixed
*/
*
* @since 1.20
*
- * @return integer|null
+ * @return int|null
*/
public function getId() {
return $this->getField( 'id' );
*
* @since 1.20
*
- * @param integer|null $id
+ * @param int|null $id
*/
public function setId( $id ) {
$this->setField( 'id', $id );
*
* @param string $name
*
- * @return boolean
+ * @return bool
*/
public function hasField( $name ) {
return array_key_exists( $name, $this->fields );
*
* @since 1.20
*
- * @return boolean
+ * @return bool
*/
public function hasIdField() {
return $this->hasField( 'id' ) && !is_null( $this->getField( 'id' ) );
* @since 1.20
*
* @param array $fields The fields to set
- * @param boolean $override Override already set fields with the provided values?
+ * @param bool $override Override already set fields with the provided values?
*/
public function setFields( array $fields, $override = true ) {
foreach ( $fields as $name => $value ) {
* @since 1.20
*
* @param null|array $fields
- * @param boolean $incNullId
+ * @param bool $incNullId
*
* @return array
*/
* @since 1.20
* @deprecated since 1.22
*
- * @param boolean $override
+ * @param bool $override
*/
public function loadDefaults( $override = true ) {
$this->setFields( $this->table->getDefaults(), $override );
*
* @param string|null $functionName
*
- * @return boolean Success indicator
+ * @return bool Success indicator
*/
public function save( $functionName = null ) {
if ( $this->hasIdField() ) {
*
* @param string|null $functionName
*
- * @return boolean Success indicator
+ * @return bool Success indicator
*/
protected function saveExisting( $functionName = null ) {
$dbw = $this->table->getWriteDbConnection();
* @param string|null $functionName
* @param array|null $options
*
- * @return boolean Success indicator
+ * @return bool Success indicator
*/
protected function insert( $functionName = null, array $options = null ) {
$dbw = $this->table->getWriteDbConnection();
* @since 1.20
* @deprecated since 1.22, use IORMTable->removeRow
*
- * @return boolean Success indicator
+ * @return bool Success indicator
*/
public function remove() {
$this->beforeRemove();
* @deprecated since 1.22, use IORMTable->addToField
*
* @param string $field
- * @param integer $amount
+ * @param int $amount
*
- * @return boolean Success indicator
+ * @return bool Success indicator
*/
public function addToField( $field, $amount ) {
return $this->table->addToField( $this->getUpdateConditions(), $field, $amount );
* @since 1.20
* @deprecated since 1.22
*
- * @param boolean $update
+ * @param bool $update
*/
public function setUpdateSummaries( $update ) {
$this->updateSummaries = $update;
* @since 1.20
* @deprecated since 1.22
*
- * @param boolean $summaryMode
+ * @param bool $summaryMode
*/
public function setSummaryMode( $summaryMode ) {
$this->inSummaryMode = $summaryMode;
*
* @since 1.20
*
- * @var integer DB_ enum
+ * @var int DB_ enum
*/
protected $readDb = DB_SLAVE;
* @param array|string|null $fields
* @param array $conditions
* @param array $options
- * @param boolean $collapse Set to false to always return each result row as associative array.
+ * @param bool $collapse Set to false to always return each result row as associative array.
* @param string|null $functionName
*
* @return array of array
* @param array|string|null $fields
* @param array $conditions
* @param array $options
- * @param boolean $collapse Set to false to always return each result row as associative array.
+ * @param bool $collapse Set to false to always return each result row as associative array.
* @param string|null $functionName
*
* @return mixed|array|bool False on failure
*
* @param array $conditions
*
- * @return boolean
+ * @return bool
*/
public function has( array $conditions = array() ) {
return $this->selectRow( array( 'id' ), $conditions ) !== false;
*
* @since 1.21
*
- * @return boolean
+ * @return bool
*/
public function exists() {
$dbr = $this->getReadDbConnection();
* @param array $conditions
* @param array $options
*
- * @return integer
+ * @return int
*/
public function count( array $conditions = array(), array $options = array() ) {
$res = $this->rawSelectRow(
* @param array $conditions
* @param string|null $functionName
*
- * @return boolean Success indicator
+ * @return bool Success indicator
*/
public function delete( array $conditions, $functionName = null ) {
$dbw = $this->getWriteDbConnection();
*
* @since 1.20
*
- * @param boolean $requireParams
- * @param boolean $setDefaults
+ * @param bool $requireParams
+ * @param bool $setDefaults
*
* @return array
*/
*
* @since 1.20
*
- * @return integer DB_ enum
+ * @return int DB_ enum
*/
public function getReadDb() {
return $this->readDb;
* Set the database ID to use for read operations, use DB_XXX constants or
* an index to the load balancer setup.
*
- * @param integer $db
+ * @param int $db
*
* @since 1.20
*/
*
* @since 1.20
*
- * @return String|bool The target wiki, in a form that LBFactory understands
+ * @return string|bool The target wiki, in a form that LBFactory understands
* (or false if the local wiki is used)
*/
public function getTargetWiki() {
* @param array $values
* @param array $conditions
*
- * @return boolean Success indicator
+ * @return bool Success indicator
*/
public function update( array $values, array $conditions = array() ) {
$dbw = $this->getWriteDbConnection();
* @since 1.20
*
* @param array $data
- * @param boolean $loadDefaults
+ * @param bool $loadDefaults
*
* @return IORMRow
*/
* @since 1.20
*
* @param array $fields
- * @param boolean $loadDefaults
+ * @param bool $loadDefaults
*
* @return IORMRow
*/
*
* @param string $name
*
- * @return boolean
+ * @return bool
*/
public function canHaveField( $name ) {
return array_key_exists( $name, $this->getFields() );
* @param IORMRow $row The row to save
* @param string|null $functionName
*
- * @return boolean Success indicator
+ * @return bool Success indicator
*/
public function updateRow( IORMRow $row, $functionName = null ) {
$dbw = $this->getWriteDbConnection();
* @param string|null $functionName
* @param array|null $options
*
- * @return boolean Success indicator
+ * @return bool Success indicator
*/
public function insertRow( IORMRow $row, $functionName = null, array $options = null ) {
$dbw = $this->getWriteDbConnection();
* @param IORMRow $row
* @param string|null $functionName
*
- * @return boolean Success indicator
+ * @return bool Success indicator
*/
public function removeRow( IORMRow $row, $functionName = null ) {
$success = $this->delete(
*
* @param array $conditions
* @param string $field
- * @param integer $amount
+ * @param int $amount
*
- * @return boolean Success indicator
+ * @return bool Success indicator
* @throws MWException
*/
public function addToField( array $conditions, $field, $amount ) {
* enabled.
*
* @since 1.19
- * @param $out OutputPage
+ * @param OutputPage $out
*/
public static function addModules( OutputPage $out ) {
if ( self::$enabled ) {
* @todo Add support for passing objects
*
* @since 1.19
- * @param $str string
+ * @param string $str
*/
public static function log( $str ) {
if ( !self::$enabled ) {
* Adds a warning entry to the log
*
* @since 1.19
- * @param $msg string
- * @param $callerOffset int
- * @param $level int A PHP error level. See sendMessage()
- * @param $log string: 'production' will always trigger a php error, 'auto'
- * will trigger an error if $wgDevelopmentWarnings is true, and 'debug'
- * will only write to the debug log(s).
+ * @param string $msg
+ * @param int $callerOffset
+ * @param int $level A PHP error level. See sendMessage()
+ * @param string $log 'production' will always trigger a php error, 'auto'
+ * will trigger an error if $wgDevelopmentWarnings is true, and 'debug'
+ * will only write to the debug log(s).
*
* @return mixed
*/
* @param string $function Function that is deprecated.
* @param string|bool $version Version in which the function was deprecated.
* @param string|bool $component Component to which the function belongs.
- * If false, it is assumbed the function is in MediaWiki core.
- * @param $callerOffset integer: How far up the callstack is the original
+ * If false, it is assumbed the function is in MediaWiki core.
+ * @param int $callerOffset How far up the callstack is the original
* caller. 2 = function that called the function that called
* MWDebug::deprecated() (Added in 1.20).
* @return mixed
/**
* Get an array describing the calling function at a specified offset.
*
- * @param $callerOffset integer: How far up the callstack is the original
+ * @param int $callerOffset How far up the callstack is the original
* caller. 0 = function that called getCallerDescription()
- * @return array with two keys: 'file' and 'func'
+ * @return array Array with two keys: 'file' and 'func'
*/
private static function getCallerDescription( $callerOffset ) {
$callers = wfDebugBacktrace();
* Send a message to the debug log and optionally also trigger a PHP
* error, depending on the $level argument.
*
- * @param $msg string Message to send
- * @param $caller array caller description get from getCallerDescription()
- * @param $group string log group on which to send the message
- * @param $level int|bool error level to use; set to false to not trigger an error
+ * @param string $msg Message to send
+ * @param array $caller Caller description get from getCallerDescription()
+ * @param string $group Log group on which to send the message
+ * @param int|bool $level Error level to use; set to false to not trigger an error
*/
private static function sendMessage( $msg, $caller, $group, $level ) {
$msg .= ' [Called from ' . $caller['func'] . ' in ' . $caller['file'] . ']';
* Do NOT use this method, use MWDebug::log or wfDebug()
*
* @since 1.19
- * @param $str string
+ * @param string $str
*/
public static function debugMsg( $str ) {
global $wgDebugComments, $wgShowDebug;
* Begins profiling on a database query
*
* @since 1.19
- * @param $sql string
- * @param $function string
- * @param $isMaster bool
+ * @param string $sql
+ * @param string $function
+ * @param bool $isMaster
* @return int ID number of the query to pass to queryTime or -1 if the
* debugger is disabled
*/
* Calculates how long a query took.
*
* @since 1.19
- * @param $id int
+ * @param int $id
*/
public static function queryTime( $id ) {
if ( $id === -1 || !self::$enabled ) {
/**
* Returns a list of files included, along with their size
*
- * @param $context IContextSource
+ * @param IContextSource $context
* @return array
*/
protected static function getFilesIncluded( IContextSource $context ) {
* Returns the HTML to add to the page for the toolbar
*
* @since 1.19
- * @param $context IContextSource
+ * @param IContextSource $context
* @return string
*/
public static function getDebugHTML( IContextSource $context ) {
/**
* Append the debug info to given ApiResult
*
- * @param $context IContextSource
- * @param $result ApiResult
+ * @param IContextSource $context
+ * @param ApiResult $result
*/
public static function appendDebugInfoToApiResult( IContextSource $context, ApiResult $result ) {
if ( !self::$enabled ) {
/**
* Returns the HTML to add to the page for the toolbar
*
- * @param $context IContextSource
+ * @param IContextSource $context
* @return array
*/
public static function getDebugInfo( IContextSource $context ) {
*/
class MWCallableUpdate implements DeferrableUpdate {
/**
- * @var closure/callback
+ * @var Closure|callable
*/
private $callback;
* Get a string representation of a title suitable for
* including in a search index
*
- * @return String a stripped-down title string ready for the search index
+ * @return string A stripped-down title string ready for the search index
*/
private function indexTitle() {
global $wgContLang;
/**
* Returns the file system path
*
- * @return String
+ * @return string
*/
public function getPath() {
return $this->path;
/**
* @param string $fullCont
- * @param $dirRel
+ * @param string $dirRel
* @param array $params
* @return Status
*/
/**
* Get the a bitfield of extra features supported by the backend medium
*
- * @return integer Bitfield of FileBackend::ATTR_* flags
+ * @return int Bitfield of FileBackend::ATTR_* flags
* @since 1.23
*/
public function getFeatures() {
/**
* Check if the backend medium supports a field of extra features
*
- * @return integer Bitfield of FileBackend::ATTR_* flags
+ * @return int Bitfield of FileBackend::ATTR_* flags
* @return bool
* @since 1.23
*/
* $params include:
* - src : source storage path
* - latest : use the latest available data
- * @return Array|bool Returns false on failure
+ * @return array|bool Returns false on failure
* @since 1.23
*/
abstract public function getFileXAttributes( array $params );
* @param array $params Parameters include:
* - dir : storage directory
* - topOnly : only return direct child dirs of the directory
- * @return Traversable|Array|null Returns null on failure
+ * @return Traversable|array|null Returns null on failure
* @since 1.20
*/
abstract public function getDirectoryList( array $params );
*
* @param array $params Parameters include:
* - dir : storage directory
- * @return Traversable|Array|null Returns null on failure
+ * @return Traversable|array|null Returns null on failure
* @since 1.20
*/
final public function getTopDirectoryList( array $params ) {
* - dir : storage directory
* - topOnly : only return direct child files of the directory (since 1.20)
* - adviseStat : set to true if stat requests will be made on the files (since 1.22)
- * @return Traversable|Array|null Returns null on failure
+ * @return Traversable|array|null Returns null on failure
*/
abstract public function getFileList( array $params );
* @param array $params Parameters include:
* - dir : storage directory
* - adviseStat : set to true if stat requests will be made on the files (since 1.22)
- * @return Traversable|Array|null Returns null on failure
+ * @return Traversable|array|null Returns null on failure
* @since 1.20
*/
final public function getTopFileList( array $params ) {
/** @var array Map of container names to sharding config */
protected $shardViaHashLevels = array();
- /** @var callback Method to get the MIME type of files */
+ /** @var callable Method to get the MIME type of files */
protected $mimeCallback;
protected $maxFileSize = 4294967296; // integer bytes (4GiB)
/**
* @see FileBackendStore::doPrepare()
- * @param $container
+ * @param string $container
* @param string $dir
* @param array $params
* @return Status
/**
* @see FileBackendStore::doSecure()
- * @param $container
+ * @param string $container
* @param string $dir
* @param array $params
* @return Status
/**
* @see FileBackendStore::doPublish()
- * @param $container
+ * @param string $container
* @param string $dir
* @param array $params
* @return Status
/**
* @see FileBackendStore::doClean()
- * @param $container
+ * @param string $container
* @param string $dir
* @param array $params
* @return Status
* @param string $container Resolved container name
* @param string $dir Resolved path relative to container
* @param array $params
- * @return Traversable|Array|null Returns null on failure
+ * @return Traversable|array|null Returns null on failure
*/
abstract public function getDirectoryListInternal( $container, $dir, array $params );
* @param string $container Resolved container name
* @param string $dir Resolved path relative to container
* @param array $params
- * @return Traversable|Array|null Returns null on failure
+ * @return Traversable|array|null Returns null on failure
*/
abstract public function getFileListInternal( $container, $dir, array $params );
* Check if this operation changes files listed in $paths
*
* @param array $deps Prior path reads/writes; format of FileOp::newPredicates()
- * @return boolean
+ * @return bool
*/
final public function dependsOn( array $deps ) {
foreach ( $this->storagePathsChanged() as $path ) {
// We can't continue (even with $ignoreErrors) as $predicates is wrong.
// Log the remaining ops as failed for recovery...
foreach ( $performOpsBatch as $i => $fileOp ) {
+ $status->success[$i] = false;
+ ++$status->failCount;
$performOpsBatch[$i]->logFailure( 'attempt_aborted' );
}
continue;
*
* @param string $fullCont
* @param string $type ('info' for a list of object detail maps, 'names' for names only)
- * @param integer $limit
+ * @param int $limit
* @param string|null $after
* @param string|null $prefix
* @param string|null $delim
* @param string $func
* @param array $params
* @param string $err Error string
- * @param integer $code HTTP status
+ * @param int $code HTTP status
* @param string $desc HTTP status description
*/
public function onError( $status, $func, array $params, $err = '', $code = 0, $desc = '' ) {
* Get an array of file change log entries.
* A starting change ID and/or limit can be specified.
*
- * @param $start integer Starting change ID or null
- * @param $limit integer Maximum number of items to return
- * @param &$next string Updated to the ID of the next entry.
+ * @param int $start Starting change ID or null
+ * @param int $limit Maximum number of items to return
+ * @param string &$next Updated to the ID of the next entry.
* @return array List of associative arrays, each having:
* id : unique, monotonic, ID for this change
* batch_uuid : UUID for an operation batch
* Checks if the DB has not recently had connection/query errors.
* This just avoids wasting time on doomed connection attempts.
*
- * @param $lockDb string
+ * @param string $lockDb
* @return bool
*/
protected function cacheCheckFailures( $lockDb ) {
/** @var FileBackend */
protected $backend;
- /** @var Array Map of zones to config */
+ /** @var array Map of zones to config */
protected $zones = array();
/** @var string URL of thumb.php */
* from the URL path, one can configure thumb_handler.php to recognize a special path on the
* same host name as the wiki that is used for viewing thumbnails.
*
- * @param string $zone one of: public, deleted, temp, thumb
+ * @param string $zone One of: public, deleted, temp, thumb
* @return string|bool String or false
*/
public function getZoneHandlerUrl( $zone ) {
*
* @param string $src Source file system path, storage path, or virtual URL
* @param string $dst Virtual URL or storage path
- * @param Array|string|null $options An array consisting of a key named headers
+ * @param array|string|null $options An array consisting of a key named headers
* listing extra headers. If a string, taken as content-disposition header.
* (Support for array of options new in 1.23)
* @return FileRepoStatus
* @param mixed $srcRel Relative path for the file to be deleted
* @param mixed $archiveRel Relative path for the archive location.
* Relative to a private archive directory.
- * @return FileRepoStatus object
+ * @return FileRepoStatus
*/
public function delete( $srcRel, $archiveRel ) {
$this->assertWritableRepo(); // fail out if read-only
* Properties should ultimately be obtained via FSFile::getProps().
*
* @param string $virtualUrl
- * @return Array
+ * @return array
*/
public function getFileProps( $virtualUrl ) {
$path = $this->resolveToStoragePath( $virtualUrl );
* Get the size of a file with a given virtual URL/storage path
*
* @param string $virtualUrl
- * @return integer|bool False on failure
+ * @return int|bool False on failure
*/
public function getFileSize( $virtualUrl ) {
$path = $this->resolveToStoragePath( $virtualUrl );
/**
* Determine if a relative path is valid, i.e. not blank or involving directory traveral
*
- * @param $filename string
+ * @param string $filename
* @return bool
*/
public function validateFilename( $filename ) {
/**
* Create a new fatal error
*
- * @param $message
+ * @param string $message
* @return FileRepoStatus
*/
public function newFatal( $message /*, parameters...*/ ) {
* Get the portion of the file that contains the origin file name.
* If that name is too long, then the name "thumbnail.<ext>" will be given.
*
- * @param $name string
+ * @param string $name
* @return string
*/
public function nameForThumb( $name ) {
/**
* @param FileRepo|bool $repo Default: false
- * @param $value
+ * @param mixed $value
* @return FileRepoStatus
*/
static function newGood( $repo = false, $value = null ) {
private $mQueryCache = array();
/**
- * @param $info array|null
+ * @param array|null $info
*/
function __construct( $info ) {
global $wgLocalFileRepo;
* If the url has been requested today, get it from cache
* Otherwise retrieve remote thumb url, check for local file.
*
- * @param string $name is a dbkey form of a title
+ * @param string $name Is a dbkey form of a title
* @param int $width
* @param int $height
* @param string $params Other rendering parameters (page number, etc)
* @see FileRepo::getZoneUrl()
* @param string $zone
* @param string|null $ext Optional file extension
- * @return String
+ * @return string
*/
function getZoneUrl( $zone, $ext = null ) {
switch ( $zone ) {
* @param string $url
* @param string $timeout
* @param array $options
- * @return bool|String
+ * @return bool|string
*/
public static function httpGet( $url, $timeout = 'default', $options = array() ) {
$options['timeout'] = $timeout;
* Construct a group of file repositories.
*
* @param array $localInfo Associative array for local repo's info
- * @param array $foreignInfo of repository info arrays.
+ * @param array $foreignInfo Array of repository info arrays.
* Each info array is an associative array with the 'class' member
* giving the class name. The entire array is passed to the repository
* constructor as the first parameter.
* Search repositories for an image.
* You can also use wfFindFile() to do this.
*
- * @param $title Title|string Title object or string
+ * @param Title|string $title Title object or string
* @param array $options Associative array of options:
* time: requested time for an archived image, or false for the
* current version. An image object will be returned which was
* @return array Map of (file name => File objects) for matches
*
* @param array $inputItems
- * @param integer $flags
+ * @param int $flags
* @return array
*/
function findFiles( array $inputItems, $flags = 0 ) {
/**
* Interface for FileRepo::checkRedirect()
- * @param $title Title
+ * @param Title $title
* @return bool
*/
function checkRedirect( Title $title ) {
* Find an instance of the file with this key, created at the specified time
* Returns false if the file does not exist.
*
- * @param string $hash base 36 SHA-1 hash
+ * @param string $hash Base 36 SHA-1 hash
* @param array $options Option array, same as findFile()
- * @return File object or false if it is not found
+ * @return File|bool File object or false if it is not found
*/
function findFileFromKey( $hash, $options = array() ) {
if ( !$this->reposInitialised ) {
* Find all instances of files with this key
*
* @param string $hash base 36 SHA-1 hash
- * @return Array of File objects
+ * @return array Array of File objects
*/
function findBySha1( $hash ) {
if ( !$this->reposInitialised ) {
* Find all instances of files with this keys
*
* @param array $hashes base 36 SHA-1 hashes
- * @return array of array of File objects
+ * @return array Array of array of File objects
*/
function findBySha1s( array $hashes ) {
if ( !$this->reposInitialised ) {
* format does not support that sort of thing, returns
* an empty array.
*
- * @return Array
+ * @return array
* @since 1.23
*/
public function getAvailableLanguages() {
* In files that support multiple language, what is the default language
* to use if none specified.
*
- * @return String lang code, or null if filetype doesn't support multiple languages.
+ * @return string Lang code, or null if filetype doesn't support multiple languages.
* @since 1.23
*/
public function getDefaultRenderLanguage() {
* Use File::THUMB_FULL_NAME to always get a name like "<params>-<source>".
* Otherwise, the format may be "<params>-<source>" or "<params>-thumbnail.<ext>".
*
- * @param array $params handler-specific parameters
+ * @param array $params Handler-specific parameters
* @param int $flags Bitfield that supports THUMB_* constants
* @return string
*/
/**
* Transform a media file
*
- * @param array $params an associative array of handler-specific parameters.
+ * @param array $params An associative array of handler-specific parameters.
* Typical keys are width, height and page.
* @param int $flags A bitfield, may contain self::RENDER_NOW to force rendering
* @return MediaTransformOutput|bool False on failure
*
* STUB
* @param int $limit Limit of rows to return
- * @param string $start timestamp Only revisions older than $start will be returned
- * @param string $end timestamp Only revisions newer than $end will be returned
+ * @param string $start Only revisions older than $start will be returned
+ * @param string $end Only revisions newer than $end will be returned
* @param bool $inc Include the endpoints of the time range
*
* @return array
/**
* Get the path of an archived file relative to the public zone root
*
- * @param bool|string $suffix if not false, the name of an archived thumbnail file
+ * @param bool|string $suffix If not false, the name of an archived thumbnail file
*
* @return string
*/
* Get the path, relative to the thumbnail zone root, of the
* thumbnail directory or a particular file if $suffix is specified
*
- * @param bool|string $suffix if not false, the name of a thumbnail file
+ * @param bool|string $suffix If not false, the name of a thumbnail file
* @return string
*/
function getThumbRel( $suffix = false ) {
* Get the path, relative to the thumbnail zone root, for an archived file's thumbs directory
* or a specific thumb if the $suffix is given.
*
- * @param string $archiveName the timestamped name of an archived image
- * @param bool|string $suffix if not false, the name of a thumbnail file
+ * @param string $archiveName The timestamped name of an archived image
+ * @param bool|string $suffix If not false, the name of a thumbnail file
* @return string
*/
function getArchiveThumbRel( $archiveName, $suffix = false ) {
/**
* Get the path of the archived file.
*
- * @param bool|string $suffix if not false, the name of an archived file.
+ * @param bool|string $suffix If not false, the name of an archived file.
* @return string
*/
function getArchivePath( $suffix = false ) {
/**
* Get the path of an archived file's thumbs, or a particular thumb if $suffix is specified
*
- * @param string $archiveName the timestamped name of an archived image
- * @param bool|string $suffix if not false, the name of a thumbnail file
+ * @param string $archiveName The timestamped name of an archived image
+ * @param bool|string $suffix If not false, the name of a thumbnail file
* @return string
*/
function getArchiveThumbPath( $archiveName, $suffix = false ) {
/**
* Get the URL of the archived file's thumbs, or a particular thumb if $suffix is specified
*
- * @param string $archiveName the timestamped name of an archived image
+ * @param string $archiveName The timestamped name of an archived image
* @param bool|string $suffix If not false, the name of a thumbnail file
* @return string
*/
/**
* Get the URL of the zone directory, or a particular file if $suffix is specified
*
- * @param string $zone name of requested zone
+ * @param string $zone Name of requested zone
* @param bool|string $suffix If not false, the name of a file in zone
* @return string path
*/
/**
* Get the URL of the thumbnail directory, or a particular file if $suffix is specified
*
- * @param bool|string $suffix if not false, the name of a thumbnail file
+ * @param bool|string $suffix If not false, the name of a thumbnail file
* @return string path
*/
function getThumbUrl( $suffix = false ) {
* Record a file upload in the upload log and the image table
* STUB
* Overridden by LocalFile
- * @param $oldver
- * @param $desc
+ * @param string $oldver
+ * @param string $desc
* @param string $license
* @param string $copyStatus
* @param string $source
* Options to $options include:
* - headers : name/value map of HTTP headers to use in response to GET/HEAD requests
*
- * @param string $srcPath local filesystem path to the source image
+ * @param string $srcPath Local filesystem path to the source image
* @param int $flags A bitwise combination of:
* File::DELETE_SOURCE Delete the source file, i.e. move rather than copy
* @param array $options Optional additional parameters
* Is this file a "deleted" file in a private archive?
* STUB
*
- * @param int $field one of DELETED_* bitfield constants
+ * @param int $field One of DELETED_* bitfield constants
* @return bool
*/
function isDeleted( $field ) {
* and logging are caller's responsibility
*
* @param Title $target New file name
- * @return FileRepoStatus object.
+ * @return FileRepoStatus
*/
function move( $target ) {
$this->readOnlyError();
*
* @param string $reason
* @param bool $suppress Hide content from sysops?
- * @return bool on success, false on some kind of failure
+ * @return bool Boolean on success, false on some kind of failure
* STUB
* Overridden by LocalFile
*/
*
* May throw database exceptions on error.
*
- * @param array $versions set of record ids of deleted items to restore,
+ * @param array $versions Set of record ids of deleted items to restore,
* or empty to restore all revisions.
- * @param bool $unsuppress remove restrictions on content upon restoration?
- * @return int|bool the number of file revisions restored if successful,
+ * @param bool $unsuppress Remove restrictions on content upon restoration?
+ * @return int|bool The number of file revisions restored if successful,
* or false on failure
* STUB
* Overridden by LocalFile
/**
* Get an associative array containing information about a file in the local filesystem.
*
- * @param string $path absolute local filesystem path
+ * @param string $path Absolute local filesystem path
* @param string|bool $ext The file extension, or true to extract it from
* the filename. Set it to false to ignore the extension.
*
* 160 log 2 / log 36 = 30.95, so the 160-bit hash fills 31 digits in base 36
* fairly neatly.
*
- * @param $path string
+ * @param string $path
* @return bool|string False on failure
* @deprecated since 1.19
*/
protected $repoClass = 'ForeignApiRepo';
/**
- * @param $title
+ * @param Title|string|bool $title
* @param ForeignApiRepo $repo
- * @param $info
+ * @param array $info
* @param bool $exists
*/
function __construct( $title, $repo, $info, $exists = false ) {
}
/**
- * @return null|String
+ * @return null|string
*/
function getSha1() {
return isset( $this->mInfo['sha1'] )
}
/**
- * @param $oldver
- * @param $desc string
- * @param $license string
- * @param $copyStatus string
- * @param $source string
- * @param $watch bool
- * @param $timestamp bool|string
- * @param $user User object or null to use $wgUser
+ * @param string $oldver
+ * @param string $desc
+ * @param string $license
+ * @param string $copyStatus
+ * @param string $source
+ * @param bool $watch
+ * @param bool|string $timestamp
+ * @param User $user User object or null to use $wgUser
* @return bool
* @throws MWException
*/
*
* @param Title $title
* @param FileRepo $repo
- * @param $unused
+ * @param null $unused
*
* @return LocalFile
*/
/**
* Constructor.
* Do not call this except from inside a repo class.
+ * @param Title $title
+ * @param FileRepo $repo
*/
function __construct( $title, $repo ) {
parent::__construct( $title, $repo );
}
/**
- * @param $prefix string
+ * @param string $prefix
* @return array
*/
function getCacheFields( $prefix = 'img_' ) {
/**
* Decode a row from the database (either object or array) to an array
* with timestamps and MIME types decoded, and the field prefix removed.
- * @param $row
- * @param $prefix string
+ * @param object $row
+ * @param string $prefix
* @throws MWException
* @return array
*/
/**
* Load file metadata from a DB result row
+ *
+ * @param object $row
+ * @param string $prefix
*/
function loadFromRow( $row, $prefix = 'img_' ) {
$this->dataLoaded = true;
/**
* Load file metadata from cache or DB, unless already loaded
- * @param integer $flags
+ * @param int $flags
*/
function load( $flags = 0 ) {
if ( !$this->dataLoaded ) {
*
* If 'mime' is given, it will be split into major_mime/minor_mime.
* If major_mime/minor_mime are given, $this->mime will also be set.
+ *
+ * @param array $info
*/
function setProps( $info ) {
$this->dataLoaded = true;
* @todo Do we still care about this? Perhaps a maintenance script
* can be made instead. Enabling this code results in a serious
* RTT regression for wikis without 404 handling.
+ *
+ * @param string $thumbName
*/
function migrateThumbFile( $thumbName ) {
/* Old code for bug 2532
* current time
* @param User|null $user User object or null to use $wgUser
*
- * @return FileRepoStatus object. On success, the value member contains the
+ * @return FileRepoStatus On success, the value member contains the
* archive name, or an empty string if it was a new file.
*/
function upload( $srcPath, $comment, $pageText, $flags = 0, $props = false,
*
* May throw database exceptions on error.
*
- * @param array $versions set of record ids of deleted items to restore,
+ * @param array $versions Set of record ids of deleted items to restore,
* or empty to restore all revisions.
* @param bool $unsuppress
* @return FileRepoStatus
/**
* Removes non-existent files from a deletion batch.
- * @param $batch array
+ * @param array $batch
* @return array
*/
function removeNonexistentFiles( $batch ) {
/**
* Constructor.
*
- * @param $siteName
- * @param $admin
- * @param $option Array
+ * @param string $siteName
+ * @param string $admin
+ * @param array $option
*/
function __construct( $siteName, $admin = null, array $option = array() ) {
global $wgContLang;
}
/**
- * @param $params array
+ * @param array $params
*
* @return string
*/
/**
* Get the DBMS-specific options for LocalSettings.php generation.
*
- * @return String
+ * @return string
*/
abstract public function getLocalSettings();
/**
* Perform database upgrades
*
- * @return Boolean
+ * @return bool
*/
public function doUpgrade() {
$this->setupSchemaVars();
/**
* Construct and initialise parent.
* This is typically only called from Installer::getDBInstaller()
- * @param $parent
+ * @param WebInstaller $parent
*/
public function __construct( $parent ) {
$this->parent = $parent;
* Convenience function.
* Check if a named extension is present.
*
- * @param $name
+ * @param string $name
* @return bool
*/
protected static function checkExtension( $name ) {
/**
* Get the internationalised name for this DBMS.
- * @return String
+ * @return string
*/
public function getReadableName() {
// Messages: config-type-mysql, config-type-postgres, config-type-sqlite,
/**
* Get a variable, taking local defaults into account.
- * @param $var string
- * @param $default null
+ * @param string $var
+ * @param mixed|null $default
* @return mixed
*/
public function getVar( $var, $default = null ) {
/**
* Convenience alias for $this->parent->setVar()
- * @param $name string
- * @param $value mixed
+ * @param string $name
+ * @param mixed $value
*/
public function setVar( $name, $value ) {
$this->parent->setVar( $name, $value );
/**
* Get a labelled text box to configure a local variable.
*
- * @param $var string
- * @param $label string
- * @param $attribs array
- * @param $helpData string
+ * @param string $var
+ * @param string $label
+ * @param array $attribs
+ * @param string $helpData
* @return string
*/
public function getTextBox( $var, $label, $attribs = array(), $helpData = "" ) {
* Get a labelled password box to configure a local variable.
* Implements password hiding.
*
- * @param $var string
- * @param $label string
- * @param $attribs array
- * @param $helpData string
+ * @param string $var
+ * @param string $label
+ * @param array $attribs
+ * @param string $helpData
* @return string
*/
public function getPasswordBox( $var, $label, $attribs = array(), $helpData = "" ) {
/**
* Get a set of labelled radio buttons.
*
- * @param $params Array:
- * Parameters are:
+ * @param array $params Parameters are:
* var: The variable to be configured (required)
* label: The message name for the label (required)
* itemLabelPrefix: The message name prefix for the item labels (required)
* Convenience function to set variables based on form data.
* Assumes that variables containing "password" in the name are (potentially
* fake) passwords.
- * @param $varNames Array
+ * @param array $varNames
* @return array
*/
public function setVarsFromRequest( $varNames ) {
* Traditionally, this is done by testing for the existence of either
* the revision table or the cur table.
*
- * @return Boolean
+ * @return bool
*/
public function needsUpgrade() {
$status = $this->getConnection();
/**
* Get a standard install-user fieldset.
*
- * @return String
+ * @return string
*/
public function getInstallUserBox() {
return Html::openElement( 'fieldset' ) .
* @param string|bool $noCreateMsg Message to display instead of the creation checkbox.
* Set this to false to show a creation checkbox (default).
*
- * @return String
+ * @return string
*/
public function getWebUserBox( $noCreateMsg = false ) {
$wrapperStyle = $this->getVar( '_SameAccount' ) ? 'display: none' : '';
/**
* @since 1.19
*
- * @param $tableName string
- * @param $indexName string
- * @param $sqlPath string
+ * @param string $tableName
+ * @param string $indexName
+ * @param string $sqlPath
*/
public function addExtensionIndex( $tableName, $indexName, $sqlPath ) {
$this->extensionUpdates[] = array( 'addIndex', $tableName, $indexName, $sqlPath, true );
*
* @since 1.19
*
- * @param $tableName string
- * @param $columnName string
- * @param $sqlPath string
+ * @param string $tableName
+ * @param string $columnName
+ * @param string $sqlPath
*/
public function addExtensionField( $tableName, $columnName, $sqlPath ) {
$this->extensionUpdates[] = array( 'addField', $tableName, $columnName, $sqlPath, true );
*
* @since 1.20
*
- * @param $tableName string
- * @param $columnName string
- * @param $sqlPath string
+ * @param string $tableName
+ * @param string $columnName
+ * @param string $sqlPath
*/
public function dropExtensionField( $tableName, $columnName, $sqlPath ) {
$this->extensionUpdates[] = array( 'dropField', $tableName, $columnName, $sqlPath, true );
*
* @since 1.20
*
- * @param $tableName string
- * @param $sqlPath string
+ * @param string $tableName
+ * @param string $sqlPath
*/
public function dropExtensionTable( $tableName, $sqlPath ) {
$this->extensionUpdates[] = array( 'dropTable', $tableName, $sqlPath, true );
* @param string $tableName The table name
* @param string $oldIndexName The old index name
* @param string $newIndexName The new index name
- * @param $skipBothIndexExistWarning Boolean: Whether to warn if both the old
+ * @param bool $skipBothIndexExistWarning Whether to warn if both the old
* and the new indexes exist. [facultative; by default, false]
* @param string $sqlPath The path to the SQL change path
*/
*
* @since 1.20
*
- * @param $tableName string
+ * @param string $tableName
* @return bool
*/
public function tableExists( $tableName ) {
/**
* Get the list of extension-defined updates
*
- * @return Array
+ * @return array
*/
protected function getExtensionUpdates() {
return $this->extensionUpdates;
* @since 1.21
*
* Writes the schema updates desired to a file for the DB Admin to run.
+ * @param array $schemaUpdate
*/
private function writeSchemaUpdateFile( $schemaUpdate = array() ) {
$updates = $this->updatesSkipped;
/**
* Helper function for doUpdates()
*
- * @param array $updates of updates to run
- * @param bool $passSelf Whether to pass this object we calling external
- * functions
+ * @param array $updates Array of updates to run
+ * @param bool $passSelf Whether to pass this object we calling external functions
*/
private function runUpdates( array $updates, $passSelf ) {
$updatesDone = array();
* class does). Pre-1.17 wikis won't have this column, and really old wikis
* might not even have updatelog at all
*
- * @return boolean
+ * @return bool
*/
protected function canUseNewUpdatelog() {
return $this->db->tableExists( 'updatelog', __METHOD__ ) &&
* Applies a SQL patch
*
* @param string $path Path to the patch file
- * @param $isFullPath Boolean Whether to treat $path as a relative or not
+ * @param bool $isFullPath Whether to treat $path as a relative or not
* @param string $msg Description of the patch
* @return bool False if patch is skipped.
*/
* @param string $table Name of the table to modify
* @param string $oldIndex Old name of the index
* @param string $newIndex New name of the index
- * @param $skipBothIndexExistWarning Boolean: Whether to warn if both the
+ * @param bool $skipBothIndexExistWarning Whether to warn if both the
* old and the new indexes exist.
* @param string $patch Path to the patch file
* @param bool $fullpath Whether to treat $patch path as a relative or not
/**
* Minimum memory size in MB.
*
- * @var integer
+ * @var int
*/
protected $minMemorySize = 50;
* The parameters are like parameters to wfMessage().
* The messages will be in wikitext format, which will be converted to an
* output format such as HTML or text before being sent to the user.
- * @param $msg
+ * @param string $msg
*/
abstract public function showMessage( $msg /*, ... */ );
/**
* Same as showMessage(), but for displaying errors
- * @param $msg
+ * @param string $msg
*/
abstract public function showError( $msg /*, ... */ );
/**
* Show a message to the installing user by using a Status object
- * @param $status Status
+ * @param Status $status
*/
abstract public function showStatusMessage( Status $status );
/**
* Set a MW configuration variable, or internal installer configuration variable.
*
- * @param $name String
- * @param $value Mixed
+ * @param string $name
+ * @param mixed $value
*/
public function setVar( $name, $value ) {
$this->settings[$name] = $value;
* The defaults come from $GLOBALS (ultimately DefaultSettings.php).
* Installer variables are typically prefixed by an underscore.
*
- * @param $name String
- * @param $default Mixed
+ * @param string $name
+ * @param mixed $default
*
* @return mixed
*/
/**
* Get an instance of DatabaseInstaller for the specified DB type.
*
- * @param $type Mixed: DB installer for which is needed, false to use default.
+ * @param mixed $type DB installer for which is needed, false to use default.
*
* @return DatabaseInstaller
*/
/**
* Determine if LocalSettings.php exists. If it does, return its variables.
*
- * @return Array
+ * @return array
*/
public static function getExistingLocalSettings() {
global $IP;
* This is a security mechanism to avoid compromise of the password in the
* event of session ID compromise.
*
- * @param $realPassword String
+ * @param string $realPassword
*
* @return string
*/
* Set a variable which stores a password, except if the new value is a
* fake password in which case leave it as it is.
*
- * @param $name String
- * @param $value Mixed
+ * @param string $name
+ * @param mixed $value
*/
public function setPassword( $name, $value ) {
if ( !preg_match( '/^\*+$/', $value ) ) {
* whatever, this function is guarded to catch the attempted DB access and to present
* some fallback text.
*
- * @param $text String
- * @param $lineStart Boolean
- * @return String
+ * @param string $text
+ * @param bool $lineStart
+ * @return string
*/
public function parse( $text, $lineStart = false ) {
global $wgParser;
* Install step which adds a row to the site_stats table with appropriate
* initial values.
*
- * @param $installer DatabaseInstaller
+ * @param DatabaseInstaller $installer
*
* @return Status
*/
/**
* Helper function to be called from envCheckServer()
- * @return String
+ * @return string
*/
abstract protected function envGetDefaultServer();
/**
* Convert a hex string representing a Unicode code point to that code point.
- * @param $c String
+ * @param string $c
* @return string
*/
protected function unicodeChar( $c ) {
* of known Unix-like defaults, as well as the PATH environment variable
* (which should maybe make it work for Windows?)
*
- * @return Array
+ * @return array
*/
protected static function getPossibleBinPaths() {
return array_merge(
*
* @param string $path path to search
* @param array $names of executable names
- * @param $versionInfo Boolean false or array with two members:
- * 0 => Command to run for version check, with $1 for the full executable name
- * 1 => String to compare the output with
+ * @param array|bool $versionInfo False or array with two members:
+ * 0 => Command to run for version check, with $1 for the full executable name
+ * 1 => String to compare the output with
*
* If $versionInfo is not false, only executables with a version
* matching $versionInfo[1] will be returned.
* @see locateExecutable()
* @param array $names Array of possible names.
* @param array|bool $versionInfo Default: false or array with two members:
- * 0 => Command to run for version check, with $1 for the full executable name
- * 1 => String to compare the output with
+ * 0 => Command to run for version check, with $1 for the full executable name
+ * 1 => String to compare the output with
*
* If $versionInfo is not false, only executables with a version
* matching $versionInfo[1] will be returned.
* Checks if scripts located in the given directory can be executed via the given URL.
*
* Used only by environment checks.
- * @param $dir string
- * @param $url string
+ * @param string $dir
+ * @param string $url
* @return bool|int|string
*/
public function dirIsExecutable( $dir, $url ) {
/**
* ParserOptions are constructed before we determined the language, so fix it
*
- * @param $lang Language
+ * @param Language $lang
*/
public function setParserLanguage( $lang ) {
$this->parserOptions->setTargetLanguage( $lang );
/**
* Overridden by WebInstaller to provide lastPage parameters.
- * @param $page string
+ * @param string $page
* @return string
*/
protected function getDocUrl( $page ) {
* There must be a config-install-$name message defined per step, which will
* be shown on install.
*
- * @param $installer DatabaseInstaller so we can make callbacks
+ * @param DatabaseInstaller $installer DatabaseInstaller so we can make callbacks
* @return array
*/
protected function getInstallSteps( DatabaseInstaller $installer ) {
* @param array $startCB A callback array for the beginning of each step
* @param array $endCB A callback array for the end of each step
*
- * @return Array of Status objects
+ * @return array Array of Status objects
*/
public function performInstallation( $startCB, $endCB ) {
$installResults = array();
* Generate a secret value for variables using our CryptRand generator.
* Produce a warning if the random source was insecure.
*
- * @param $keys Array
+ * @param array $keys
* @return Status
*/
protected function doGenerateKeys( $keys ) {
}
/**
- * @param $s Status
+ * @param Status $s
*/
private function subscribeToMediaWikiAnnounce( Status $s ) {
$params = array(
/**
* Insert Main Page with default content.
*
- * @param $installer DatabaseInstaller
+ * @param DatabaseInstaller $installer
* @return Status
*/
protected function createMainpage( DatabaseInstaller $installer ) {
*
* @param array $callback A valid installation callback array, in this form:
* array( 'name' => 'some-unique-name', 'callback' => array( $obj, 'function' ) );
- * @param string $findStep the step to find. Omit to put the step at the beginning
+ * @param string $findStep The step to find. Omit to put the step at the beginning
*/
public function addInstallStep( $callback, $findStep = 'BEGINNING' ) {
$this->extraInstallSteps[$findStep][] = $callback;
/**
* Constructor.
*
- * @param $installer Installer subclass
+ * @param Installer $installer
*/
public function __construct( Installer $installer ) {
$this->installer = $installer;
/**
* Returns the escaped version of a string of php code.
*
- * @param $string String
+ * @param string $string
*
- * @return String
+ * @return string
*/
public static function escapePhpString( $string ) {
if ( is_array( $string ) || is_object( $string ) ) {
* Return the full text of the generated LocalSettings.php file,
* including the extensions
*
- * @return String
+ * @return string
*/
public function getText() {
$localSettings = $this->getDefaultText();
}
/**
- * @return String
+ * @return string
*/
protected function buildMemcachedServerList() {
$servers = $this->values['_MemCachedServers'];
}
/**
- * @return String
+ * @return string
*/
protected function getDefaultText() {
if ( !$this->values['wgImageMagickConvertCommand'] ) {
}
/**
- * @return Bool
+ * @return bool
*/
public function isCompiled() {
return self::checkExtension( 'sqlsrv' );
/**
* Try to see if the login exists
* @param string $user Username to check
- * @return boolean
+ * @return bool
*/
private function loginExists( $user ) {
$res = $this->db->selectField( 'sys.sql_logins', 1, array( 'name' => $user ) );
* Try to see if the user account exists
* We assume we already have the appropriate database selected
* @param string $user Username to check
- * @return boolean
+ * @return bool
*/
private function userExists( $user ) {
$res = $this->db->selectField( 'sys.sysusers', 1, array( 'name' => $user ) );
/**
* Try to see if a given database exists
* @param string $dbName Database name to check
- * @return boolean
+ * @return bool
*/
private function databaseExists( $dbName ) {
$res = $this->db->selectField( 'sys.databases', 1, array( 'name' => $dbName ) );
* Try to see if a given schema exists
* We assume we already have the appropriate database selected
* @param string $schemaName Schema name to check
- * @return boolean
+ * @return bool
*/
private function schemaExists( $schemaName ) {
$res = $this->db->selectField( 'sys.schemas', 1, array( 'name' => $schemaName ) );
* Try to see if a given fulltext catalog exists
* We assume we already have the appropriate database selected
* @param string $schemaName Catalog name to check
- * @return boolean
+ * @return bool
*/
private function catalogExists( $catalogName ) {
$res = $this->db->selectField( 'sys.fulltext_catalogs', 1, array( 'name' => $catalogName ) );
}
/**
- * @return Bool
+ * @return bool
*/
public function isCompiled() {
return self::checkExtension( 'mysql' ) || self::checkExtension( 'mysqli' );
* Return a formal 'User'@'Host' username for use in queries
* @param string $name Username, quotes will be added
* @param string $host Hostname, quotes will be added
- * @return String
+ * @return string
*/
private function buildFullUserName( $name, $host ) {
return $this->db->addQuotes( $name ) . '@' . $this->db->addQuotes( $host );
* access to mysql.user, so false means "no" or "maybe"
* @param string $host Hostname to check
* @param string $user Username to check
- * @return boolean
+ * @return bool
*/
private function userDefinitelyExists( $host, $user ) {
try {
* Return any table options to be applied to all tables that don't
* override them.
*
- * @return String
+ * @return string
*/
protected function getTableOptions() {
$options = array();
/**
* Overload: after this action field info table has to be rebuilt
*
- * @param $what array
+ * @param array $what
*/
public function doUpdates( $what = array( 'core', 'extensions', 'purge', 'stats' ) ) {
parent::doUpdates( $what );
* - create-tables: A connection with a role suitable for creating tables.
*
* @throws MWException
- * @return Status object. On success, a connection object will be in the
- * value member.
+ * @return Status On success, a connection object will be in the value member.
*/
protected function openPgConnection( $type ) {
switch ( $type ) {
/**
* Recursive helper for canCreateObjectsForWebUser().
- * @param $conn DatabaseBase object
+ * @param DatabaseBase $conn
* @param int $targetMember Role ID of the member to look for
* @param int $group Role ID of the group to look for
* @param int $maxDepth Maximum recursive search depth
/**
*
- * @return Status:
+ * @return Status
*/
public function checkPrerequisites() {
$result = Status::newGood();
/**
* Safe wrapper for PHP's realpath() that fails gracefully if it's unable to canonicalize the path.
*
- * @param $path string
+ * @param string $path
*
* @return string
*/
}
/**
- * @param $dir
- * @param $create bool
+ * @param string $dir
+ * @param bool $create
* @return Status
*/
private static function dataDirOKmaybeCreate( $dir, $create = false ) {
}
/**
- * @param $status Status
+ * @param Status $status
* @return Status
*/
public function setupSearchIndex( &$status ) {
/**
* Show an error message in a box. Parameters are like wfMessage().
- * @param $msg
+ * @param string $msg
*/
public function showError( $msg /*...*/ ) {
$args = func_get_args();
* Get small text indented help for a preceding form field.
* Parameters like wfMessage().
*
- * @param $msg
+ * @param string $msg
* @return string
*/
public function getHelpBox( $msg /*, ... */ ) {
* Label a control by wrapping a config-input div around it and putting a
* label before it.
*
- * @param $msg
- * @param $forId
- * @param $contents
+ * @param string $msg
+ * @param string $forId
+ * @param string $contents
* @param string $helpData
* @return string
*/
}
/**
- * @return String
+ * @return string
*/
protected function envGetDefaultServer() {
return WebRequest::detectServer();
/**
* Buffered contents that haven't been output yet
- * @var String
+ * @var string
*/
private $contents = '';
*
* @param string $dir 'ltr' or 'rtl'
*
- * @return String
+ * @return string
*/
public function getCSS( $dir ) {
// All CSS files these modules reference will be concatenated in sequence
/**
* "<link>" to index.php?css=foobar for the "<head>"
*
- * @return String
+ * @return string
*/
private function getCssUrl() {
return Html::linkedStyle( $_SERVER['PHP_SELF'] . '?css=' . $this->getDir() );
* @return string
*/
public function getJQuery() {
- return Html::linkedScript( "../resources/src/jquery/jquery.js" );
+ return Html::linkedScript( "../resources/lib/jquery/jquery.js" );
}
}
* @since 1.22
*/
class JobQueueFederated extends JobQueue {
- /** @var array (partition name => weight) reverse sorted by weight */
- protected $partitionMap = array();
-
- /** @var array (partition name => JobQueue) reverse sorted by weight */
- protected $partitionQueues = array();
-
+ /** @var HashRing */
+ protected $partitionRing;
/** @var HashRing */
protected $partitionPushRing;
+ /** @var array (partition name => JobQueue) reverse sorted by weight */
+ protected $partitionQueues = array();
/** @var BagOStuff */
protected $cache;
? $params['maxPartitionsTry']
: 2;
// Get the full partition map
- $this->partitionMap = $params['partitionsBySection'][$section];
- arsort( $this->partitionMap, SORT_NUMERIC );
+ $partitionMap = $params['partitionsBySection'][$section];
+ arsort( $partitionMap, SORT_NUMERIC );
// Get the partitions jobs can actually be pushed to
- $partitionPushMap = $this->partitionMap;
+ $partitionPushMap = $partitionMap;
if ( isset( $params['partitionsNoPush'] ) ) {
foreach ( $params['partitionsNoPush'] as $partition ) {
unset( $partitionPushMap[$partition] );
unset( $baseConfig[$o] ); // partition queue doesn't care about this
}
// Get the partition queue objects
- foreach ( $this->partitionMap as $partition => $w ) {
+ foreach ( $partitionMap as $partition => $w ) {
if ( !isset( $params['configByPartition'][$partition] ) ) {
throw new MWException( "No configuration for partition '$partition'." );
}
$this->partitionQueues[$partition] = JobQueue::factory(
$baseConfig + $params['configByPartition'][$partition] );
}
+ // Ring of all partitions
+ $this->partitionRing = new HashRing( $partitionMap );
// Get the ring of partitions to push jobs into
- $this->partitionPushRing = new HashRing( $partitionPushMap );
+ if ( count( $partitionPushMap ) === count( $partitionMap ) ) {
+ $this->partitionPushRing = clone $this->partitionRing; // faster
+ } else {
+ $this->partitionPushRing = new HashRing( $partitionPushMap );
+ }
// Aggregate cache some per-queue values if there are multiple partition queues
- $this->cache = count( $this->partitionMap ) > 1 ? wfGetMainCache() : new EmptyBagOStuff();
+ $this->cache = count( $partitionMap ) > 1 ? wfGetMainCache() : new EmptyBagOStuff();
}
protected function supportedOrders() {
// Retry to insert any remaning jobs again, ignoring the bad partitions.
$jobsLeft = $jobs;
for ( $i = $this->maxPartitionsTry; $i > 0 && count( $jobsLeft ); --$i ) {
+ try {
+ $partitionRing->getLiveRing();
+ } catch ( UnexpectedValueException $e ) {
+ break; // all servers down; nothing to insert to
+ }
$jobsLeft = $this->tryJobInsertions( $jobsLeft, $partitionRing, $flags );
}
if ( count( $jobsLeft ) ) {
foreach ( $jobs as $key => $job ) {
if ( $job->ignoreDuplicates() ) {
$sha1 = sha1( serialize( $job->getDeduplicationInfo() ) );
- $uJobsByPartition[$partitionRing->getLocation( $sha1 )][] = $job;
+ $uJobsByPartition[$partitionRing->getLiveLocation( $sha1 )][] = $job;
unset( $jobs[$key] );
}
}
$key = $this->getCacheKey( 'empty' );
$this->cache->set( $key, 'false', JobQueueDB::CACHE_TTL_LONG );
} else {
- $partitionRing = $partitionRing->newWithoutLocation( $partition ); // blacklist
- if ( !$partitionRing ) {
+ if ( !$partitionRing->ejectFromLiveRing( $partition, 5 ) ) { // blacklist
throw new JobQueueError( "Could not insert job(s), no partitions available." );
}
$jobsLeft = array_merge( $jobsLeft, $jobBatch ); // not inserted
// Insert the jobs that are not de-duplicated into the queues...
foreach ( $nuJobBatches as $jobBatch ) {
- $partition = ArrayUtils::pickRandom( $partitionRing->getLocationWeights() );
+ $partition = ArrayUtils::pickRandom( $partitionRing->getLiveLocationWeights() );
$queue = $this->partitionQueues[$partition];
try {
$ok = true;
$key = $this->getCacheKey( 'empty' );
$this->cache->set( $key, 'false', JobQueueDB::CACHE_TTL_LONG );
} else {
- $partitionRing = $partitionRing->newWithoutLocation( $partition ); // blacklist
- if ( !$partitionRing ) {
+ if ( !$partitionRing->ejectFromLiveRing( $partition, 5 ) ) { // blacklist
throw new JobQueueError( "Could not insert job(s), no partitions available." );
}
$jobsLeft = array_merge( $jobsLeft, $jobBatch ); // not inserted
return false;
}
- $partitionsTry = $this->partitionMap; // (partition => weight)
+ $partitionsTry = $this->partitionRing->getLiveLocationWeights(); // (partition => weight)
$failed = 0;
while ( count( $partitionsTry ) ) {
protected function doIsRootJobOldDuplicate( Job $job ) {
$params = $job->getRootJobParams();
- $partitions = $this->partitionPushRing->getLocations( $params['rootJobSignature'], 2 );
+ $sigature = $params['rootJobSignature'];
+ $partition = $this->partitionPushRing->getLiveLocation( $sigature );
try {
- return $this->partitionQueues[$partitions[0]]->doIsRootJobOldDuplicate( $job );
+ return $this->partitionQueues[$partition]->doIsRootJobOldDuplicate( $job );
} catch ( JobQueueError $e ) {
- if ( isset( $partitions[1] ) ) { // check fallback partition
- return $this->partitionQueues[$partitions[1]]->doIsRootJobOldDuplicate( $job );
+ if ( $this->partitionPushRing->ejectFromLiveRing( $partition, 5 ) ) {
+ $partition = $this->partitionPushRing->getLiveLocation( $sigature );
+ return $this->partitionQueues[$partition]->doIsRootJobOldDuplicate( $job );
}
}
protected function doDeduplicateRootJob( Job $job ) {
$params = $job->getRootJobParams();
- $partitions = $this->partitionPushRing->getLocations( $params['rootJobSignature'], 2 );
+ $sigature = $params['rootJobSignature'];
+ $partition = $this->partitionPushRing->getLiveLocation( $sigature );
try {
- return $this->partitionQueues[$partitions[0]]->doDeduplicateRootJob( $job );
+ return $this->partitionQueues[$partition]->doDeduplicateRootJob( $job );
} catch ( JobQueueError $e ) {
- if ( isset( $partitions[1] ) ) { // check fallback partition
- return $this->partitionQueues[$partitions[1]]->doDeduplicateRootJob( $job );
+ if ( $this->partitionPushRing->ejectFromLiveRing( $partition, 5 ) ) {
+ $partition = $this->partitionPushRing->getLiveLocation( $sigature );
+ return $this->partitionQueues[$partition]->doDeduplicateRootJob( $job );
}
}
public function getCoalesceLocationInternal() {
return "JobQueueFederated:wiki:{$this->wiki}" .
- sha1( serialize( array_keys( $this->partitionMap ) ) );
+ sha1( serialize( array_keys( $this->partitionQueues ) ) );
}
protected function doGetSiblingQueuesWithJobs( array $types ) {
/** @var Array (location => (start, end)) */
protected $ring = array();
+ /** @var Array (location => (start, end)) */
+ protected $liveRing;
+ /** @var Array (location => UNIX timestamp) */
+ protected $ejectionExpiries = array();
+ /** @var integer UNIX timestamp */
+ protected $ejectionNextExpiry = INF;
+
const RING_SIZE = 268435456; // 2^28
/**
}
/**
- * Get the location of an item on the ring, as well as the next clockwise locations
+ * Get the location of an item on the ring, as well as the next locations
*
* @param string $item
* @param integer $limit Maximum number of locations to return
public function newWithoutLocation( $location ) {
$map = $this->sourceMap;
unset( $map[$location] );
- if ( count( $map ) ) {
- return new self( $map );
+
+ return count( $map ) ? new self( $map ) : false;
+ }
+
+ /**
+ * Remove a location from the "live" hash ring
+ *
+ * @param string $location
+ * @param integer $ttl Seconds
+ * @return bool Whether some non-ejected locations are left
+ */
+ public function ejectFromLiveRing( $location, $ttl ) {
+ if ( !isset( $this->sourceMap[$location] ) ) {
+ throw new UnexpectedValueException( "No location '$location' in the ring." );
+ }
+ $expiry = time() + $ttl;
+ $this->liveRing = null; // stale
+ $this->ejectionExpiries[$location] = $expiry;
+ $this->ejectionNextExpiry = min( $expiry, $this->ejectionNextExpiry );
+
+ return ( count( $this->ejectionExpiries ) < count( $this->sourceMap ) );
+ }
+
+ /**
+ * Get the "live" hash ring (which does not include ejected locations)
+ *
+ * @return HashRing
+ * @throws UnexpectedValueException
+ */
+ public function getLiveRing() {
+ $now = time();
+ if ( $this->liveRing === null || $this->ejectionNextExpiry <= $now ) {
+ $this->ejectionExpiries = array_filter(
+ $this->ejectionExpiries,
+ function( $expiry ) use ( $now ) {
+ return ( $expiry > $now );
+ }
+ );
+ if ( count( $this->ejectionExpiries ) ) {
+ $map = array_diff_key( $this->sourceMap, $this->ejectionExpiries );
+ $this->liveRing = count( $map ) ? new self( $map ) : false;
+
+ $this->ejectionNextExpiry = min( $this->ejectionExpiries );
+ } else { // common case; avoid recalculating ring
+ $this->liveRing = clone $this;
+ $this->liveRing->ejectionExpiries = array();
+ $this->liveRing->ejectionNextExpiry = INF;
+ $this->liveRing->liveRing = null;
+
+ $this->ejectionNextExpiry = INF;
+ }
+ }
+ if ( !$this->liveRing ) {
+ throw UnexpectedValueException( "The live ring is currently empty." );
}
- return false;
+ return $this->liveRing;
+ }
+
+ /**
+ * Get the location of an item on the "live" ring
+ *
+ * @param string $item
+ * @return string Location
+ * @throws UnexpectedValueException
+ */
+ public function getLiveLocation( $item ) {
+ return $this->getLiveRing()->getLocation( $item );
+ }
+
+ /**
+ * Get the location of an item on the "live" ring, as well as the next locations
+ *
+ * @param string $item
+ * @param integer $limit Maximum number of locations to return
+ * @return array List of locations
+ * @throws UnexpectedValueException
+ */
+ public function getLiveLocations( $item ) {
+ return $this->getLiveRing()->getLocations( $item );
+ }
+
+ /**
+ * Get the map of "live" locations to weight (ignores 0-weight items)
+ *
+ * @return array
+ * @throws UnexpectedValueException
+ */
+ public function getLiveLocationWeights() {
+ return $this->getLiveRing()->getLocationWeights();
}
}
public function getDeleted();
/**
- * @param $field Integer: one of LogPage::DELETED_* bitfield constants
- * @return Boolean
+ * @param int $field One of LogPage::DELETED_* bitfield constants
+ * @return bool
*/
public function isDeleted( $field );
}
*
* @since 1.19
*
- * @param integer $deleted
+ * @param int $deleted
*/
public function setDeleted( $deleted ) {
$this->deleted = $deleted;
/**
* Publishes the log entry.
- * @param int $newId id of the log entry.
- * @param string $to rcandudp (default), rc, udp
+ * @param int $newId Id of the log entry.
+ * @param string $to One of: rcandudp (default), rc, udp
*/
public function publish( $newId, $to = 'rcandudp' ) {
$log = new LogPage( $this->getType() );
public $flags;
/**
- * @var Array
+ * @var array
*/
protected $mDefaultQuery;
}
/**
- * @param $pattern
+ * @param string $pattern
* @return string Checkbox
*/
private function getTitlePattern( $pattern ) {
/**
* Handy shortcut for constructing a formatter directly from
* database row.
- * @param $row
+ * @param object $row
* @see DatabaseLogEntry::getSelectQueryData
* @return LogFormatter
*/
/** @var LogEntryBase */
protected $entry;
- /** @var Integer Constant for handling log_deleted */
+ /** @var int Constant for handling log_deleted */
protected $audience = self::FOR_PUBLIC;
/** @var bool Whether to output user tool links */
*
* @param LogEventsList $list
* @param string|array $types Log types to show
- * @param string $performer the user who made the log entries
- * @param string|Title $title the page title the log entries are for
- * @param string $pattern do a prefix search rather than an exact title match
- * @param array $conds extra conditions for the query
+ * @param string $performer The user who made the log entries
+ * @param string|Title $title The page title the log entries are for
+ * @param string $pattern Do a prefix search rather than an exact title match
+ * @param array $conds Extra conditions for the query
* @param int|bool $year The year to start from. Default: false
* @param int|bool $month The month to start from. Default: false
- * @param string $tagFilter tag
+ * @param string $tagFilter Tag
*/
public function __construct( $list, $types = array(), $performer = '', $title = '', $pattern = '',
$conds = array(), $year = false, $month = false, $tagFilter = '' ) {
/**
* Checks if $this->mConds has $field matched to a *single* value
- * @param $field
+ * @param string $field
* @return bool
*/
protected function hasEqualsClause( $field ) {
*/
class APCBagOStuff extends BagOStuff {
/**
- * @param $key string
- * @param $casToken[optional] int
+ * @param string $key
+ * @param int $casToken [optional]
* @return mixed
*/
public function get( $key, &$casToken = null ) {
}
/**
- * @param $key string
- * @param $value mixed
- * @param $exptime int
+ * @param string $key
+ * @param mixed $value
+ * @param int $exptime
* @return bool
*/
public function set( $key, $value, $exptime = 0 ) {
}
/**
- * @param $casToken mixed
- * @param $key string
- * @param $value mixed
- * @param $exptime int
+ * @param mixed $casToken
+ * @param string $key
+ * @param mixed $value
+ * @param int $exptime
* @return bool
*/
public function cas( $casToken, $key, $value, $exptime = 0 ) {
}
/**
- * @param $key string
- * @param $time int
+ * @param string $key
+ * @param int $time
* @return bool
*/
public function delete( $key, $time = 0 ) {
}
/**
- * @param $key string
- * @param $callback closure Callback method to be executed
+ * @param string $key
+ * @param Closure $callback Callback method to be executed
* @param int $exptime Either an interval in seconds or a unix timestamp for expiry
* @param int $attempts The amount of times to attempt a merge in case of failure
- * @return bool success
+ * @return bool Success
*/
- public function merge( $key, closure $callback, $exptime = 0, $attempts = 10 ) {
+ public function merge( $key, Closure $callback, $exptime = 0, $attempts = 10 ) {
return $this->mergeViaLock( $key, $callback, $exptime, $attempts );
}
const ERR_UNEXPECTED = 3; // response gave some error
/**
- * @param $bool bool
+ * @param bool $bool
*/
public function setDebug( $bool ) {
$this->debugMode = $bool;
/**
* Get an item with the given key. Returns false if it does not exist.
- * @param $key string
- * @param $casToken[optional] mixed
+ * @param string $key
+ * @param mixed $casToken [optional]
* @return mixed Returns false on failure
*/
abstract public function get( $key, &$casToken = null );
/**
* Set an item.
- * @param $key string
- * @param $value mixed
+ * @param string $key
+ * @param mixed $value
* @param int $exptime Either an interval in seconds or a unix timestamp for expiry
- * @return bool success
+ * @return bool Success
*/
abstract public function set( $key, $value, $exptime = 0 );
/**
* Check and set an item.
- * @param $casToken mixed
- * @param $key string
- * @param $value mixed
+ * @param mixed $casToken
+ * @param string $key
+ * @param mixed $value
* @param int $exptime Either an interval in seconds or a unix timestamp for expiry
- * @return bool success
+ * @return bool Success
*/
abstract public function cas( $casToken, $key, $value, $exptime = 0 );
/**
* Delete an item.
- * @param $key string
+ * @param string $key
* @param int $time Amount of time to delay the operation (mostly memcached-specific)
* @return bool True if the item was deleted or not found, false on failure
*/
* The callback function returns the new value given the current value (possibly false),
* and takes the arguments: (this BagOStuff object, cache key, current value).
*
- * @param $key string
- * @param $callback closure Callback method to be executed
+ * @param string $key
+ * @param Closure $callback Callback method to be executed
* @param int $exptime Either an interval in seconds or a unix timestamp for expiry
* @param int $attempts The amount of times to attempt a merge in case of failure
- * @return bool success
+ * @return bool Success
*/
- public function merge( $key, closure $callback, $exptime = 0, $attempts = 10 ) {
+ public function merge( $key, Closure $callback, $exptime = 0, $attempts = 10 ) {
return $this->mergeViaCas( $key, $callback, $exptime, $attempts );
}
/**
* @see BagOStuff::merge()
*
- * @param $key string
- * @param $callback closure Callback method to be executed
+ * @param string $key
+ * @param Closure $callback Callback method to be executed
* @param int $exptime Either an interval in seconds or a unix timestamp for expiry
* @param int $attempts The amount of times to attempt a merge in case of failure
- * @return bool success
+ * @return bool Success
*/
- protected function mergeViaCas( $key, closure $callback, $exptime = 0, $attempts = 10 ) {
+ protected function mergeViaCas( $key, Closure $callback, $exptime = 0, $attempts = 10 ) {
do {
$casToken = null; // passed by reference
$currentValue = $this->get( $key, $casToken ); // get the old value
/**
* @see BagOStuff::merge()
*
- * @param $key string
- * @param $callback closure Callback method to be executed
+ * @param string $key
+ * @param Closure $callback Callback method to be executed
* @param int $exptime Either an interval in seconds or a unix timestamp for expiry
* @param int $attempts The amount of times to attempt a merge in case of failure
- * @return bool success
+ * @return bool Success
*/
- protected function mergeViaLock( $key, closure $callback, $exptime = 0, $attempts = 10 ) {
+ protected function mergeViaLock( $key, Closure $callback, $exptime = 0, $attempts = 10 ) {
if ( !$this->lock( $key, 6 ) ) {
return false;
}
}
/**
- * @param $key string
- * @param $timeout integer [optional]
- * @return bool success
+ * @param string $key
+ * @param int $timeout [optional]
+ * @return bool Success
*/
public function lock( $key, $timeout = 6 ) {
$this->clearLastError();
}
/**
- * @param $key string
- * @return bool success
+ * @param string $key
+ * @return bool Success
*/
public function unlock( $key ) {
return $this->delete( "{$key}:lock" );
/**
* Delete all objects expiring before a certain date.
* @param string $date The reference date in MW format
- * @param $progressCallback callback|bool Optional, a function which will be called
+ * @param callable|bool $progressCallback Optional, a function which will be called
* regularly during long-running operations with the percentage progress
* as the first parameter.
*
- * @return bool on success, false if unimplemented
+ * @return bool Success, false if unimplemented
*/
public function deleteObjectsExpiringBefore( $date, $progressCallback = false ) {
// stub
/**
* Get an associative array containing the item for each of the keys that have items.
* @param array $keys List of strings
- * @return Array
+ * @return array
*/
public function getMulti( array $keys ) {
$res = array();
}
/**
- * @param $key string
- * @param $value mixed
- * @param $exptime integer
- * @return bool success
+ * @param string $key
+ * @param mixed $value
+ * @param int $exptime
+ * @return bool Success
*/
public function add( $key, $value, $exptime = 0 ) {
if ( $this->get( $key ) === false ) {
}
/**
- * @param $key string
- * @param $value mixed
- * @param $exptime int
- * @return bool success
+ * @param string $key
+ * @param mixed $value
+ * @param int $exptime
+ * @return bool Success
* @deprecated since 1.23
*/
public function replace( $key, $value, $exptime = 0 ) {
/**
* Increase stored value of $key by $value while preserving its TTL
* @param string $key Key to increase
- * @param $value Integer: Value to add to $key (Default 1)
- * @return integer|bool New value or false on failure
+ * @param int $value Value to add to $key (Default 1)
+ * @return int|bool New value or false on failure
*/
public function incr( $key, $value = 1 ) {
if ( !$this->lock( $key ) ) {
/**
* Decrease stored value of $key by $value while preserving its TTL
- * @param $key String
- * @param $value Integer
- * @return integer
+ * @param string $key
+ * @param int $value
+ * @return int
*/
public function decr( $key, $value = 1 ) {
return $this->incr( $key, - $value );
/**
* Get the "last error" registered; clearLastError() should be called manually
- * @return integer ERR_* constant for the "last error" registry
+ * @return int ERR_* constant for the "last error" registry
* @since 1.23
*/
public function getLastError() {
/**
* Set the "last error" registry
- * @param $err integer ERR_* constant
+ * @param int $err ERR_* constant
* @since 1.23
*/
protected function setLastError( $err ) {
}
/**
- * @param $text string
+ * @param string $text
*/
public function debug( $text ) {
if ( $this->debugMode ) {
/**
* Convert an optionally relative time to an absolute time
- * @param $exptime integer
+ * @param int $exptime
* @return int
*/
protected function convertExpiry( $exptime ) {
* Convert an optionally absolute expiry time to a relative time. If an
* absolute time is specified which is in the past, use a short expiry time.
*
- * @param $exptime integer
- * @return integer
+ * @param int $exptime
+ * @return int
*/
protected function convertToRelative( $exptime ) {
if ( $exptime >= 86400 * 3650 /* 10 years */ ) {
/**
* Check if a value is an integer
*
- * @param $value mixed
+ * @param mixed $value
* @return bool
*/
protected function isInteger( $value ) {
class EmptyBagOStuff extends BagOStuff {
/**
- * @param $key string
- * @param $casToken[optional] mixed
+ * @param string $key
+ * @param mixed $casToken [optional]
* @return bool
*/
function get( $key, &$casToken = null ) {
}
/**
- * @param $key string
- * @param $value mixed
- * @param $exp int
+ * @param string $key
+ * @param mixed $value
+ * @param int $exp
* @return bool
*/
function set( $key, $value, $exp = 0 ) {
}
/**
- * @param $casToken mixed
- * @param $key string
- * @param $value mixed
- * @param $exp int
+ * @param mixed $casToken
+ * @param string $key
+ * @param mixed $value
+ * @param int $exp
* @return bool
*/
function cas( $casToken, $key, $value, $exp = 0 ) {
}
/**
- * @param $key string
- * @param $time int
+ * @param string $key
+ * @param int $time
* @return bool
*/
function delete( $key, $time = 0 ) {
}
/**
- * @param $key string
- * @param $callback closure Callback method to be executed
+ * @param string $key
+ * @param Closure $callback Callback method to be executed
* @param int $exptime Either an interval in seconds or a unix timestamp for expiry
* @param int $attempts The amount of times to attempt a merge in case of failure
- * @return bool success
+ * @return bool Success
*/
- public function merge( $key, closure $callback, $exptime = 0, $attempts = 10 ) {
+ public function merge( $key, Closure $callback, $exptime = 0, $attempts = 10 ) {
return true;
}
}
}
/**
- * @param $key string
+ * @param string $key
* @return bool
*/
protected function expire( $key ) {
}
/**
- * @param $key string
- * @param $casToken[optional] mixed
+ * @param string $key
+ * @param mixed $casToken [optional]
* @return bool|mixed
*/
function get( $key, &$casToken = null ) {
}
/**
- * @param $key string
- * @param $value mixed
- * @param $exptime int
+ * @param string $key
+ * @param mixed $value
+ * @param int $exptime
* @return bool
*/
function set( $key, $value, $exptime = 0 ) {
}
/**
- * @param $casToken mixed
- * @param $key string
- * @param $value mixed
- * @param $exptime int
+ * @param mixed $casToken
+ * @param string $key
+ * @param mixed $value
+ * @param int $exptime
* @return bool
*/
function cas( $casToken, $key, $value, $exptime = 0 ) {
}
/**
- * @param $key string
- * @param $time int
+ * @param string $key
+ * @param int $time
* @return bool
*/
function delete( $key, $time = 0 ) {
/**
* Fill in the defaults for any parameters missing from $params, using the
* backwards-compatible global variables
+ * @param array $params
+ * @return array
*/
protected function applyDefaultParams( $params ) {
if ( !isset( $params['servers'] ) ) {
}
/**
- * @param $key string
- * @param $casToken[optional] mixed
- * @return Mixed
+ * @param string $key
+ * @param mixed $casToken [optional]
+ * @return mixed
*/
public function get( $key, &$casToken = null ) {
return $this->client->get( $this->encodeKey( $key ), $casToken );
}
/**
- * @param $key string
- * @param $value
- * @param $exptime int
+ * @param string $key
+ * @param mixed $value
+ * @param int $exptime
* @return bool
*/
public function set( $key, $value, $exptime = 0 ) {
}
/**
- * @param $key string
- * @param $casToken mixed
- * @param $value
- * @param $exptime int
+ * @param string $key
+ * @param mixed $casToken
+ * @param mixed $value
+ * @param int $exptime
* @return bool
*/
public function cas( $casToken, $key, $value, $exptime = 0 ) {
}
/**
- * @param $key string
- * @param $time int
+ * @param string $key
+ * @param int $time
* @return bool
*/
public function delete( $key, $time = 0 ) {
}
/**
- * @param $key string
- * @param $value int
+ * @param string $key
+ * @param int $value
* @param int $exptime (default 0)
- * @return Mixed
+ * @return mixed
*/
public function add( $key, $value, $exptime = 0 ) {
return $this->client->add( $this->encodeKey( $key ), $value,
/**
* Get the underlying client object. This is provided for debugging
* purposes.
+ * @return BagOStuff
*/
public function getClient() {
return $this->client;
* the other control characters for compatibility with libmemcached
* verify_key. We leave other punctuation alone, to maximise backwards
* compatibility.
- * @param $key string
+ * @param string $key
* @return string
*/
public function encodeKey( $key ) {
}
/**
- * @param $m array
+ * @param array $m
* @return string
*/
protected function encodeKeyCallback( $m ) {
* discarded immediately because the expiry is in the past.
* Clamp expiries >30d at 30d, unless they're >=1e9 in which
* case they are likely to really be absolute (1e9 = 2011-09-09)
+ * @param int $expiry
+ * @return int
*/
function fixExpiry( $expiry ) {
if ( $expiry > 2592000 && $expiry < 1000000000 ) {
* Decode a key encoded with encodeKey(). This is provided as a convenience
* function for debugging.
*
- * @param $key string
+ * @param string $key
*
* @return string
*/
/**
* Send a debug message to the log
+ * @param string $text
*/
protected function debugLog( $text ) {
wfDebugLog( 'memcached', $text );
/**
* Current debug status; 0 - none to 9 - profiling
*
- * @var boolean
+ * @var bool
* @access private
*/
var $_debug;
/**
* Is compression available?
*
- * @var boolean
+ * @var bool
* @access private
*/
var $_have_zlib;
/**
* Do we want to use compression?
*
- * @var boolean
+ * @var bool
* @access private
*/
var $_compress_enable;
/**
* At how many bytes should we compress?
*
- * @var integer
+ * @var int
* @access private
*/
var $_compress_threshold;
/**
* Are we using persistent links?
*
- * @var boolean
+ * @var bool
* @access private
*/
var $_persistent;
/**
* Total # of bit buckets we have
*
- * @var integer
+ * @var int
* @access private
*/
var $_bucketcount;
/**
* # of total servers we have
*
- * @var integer
+ * @var int
* @access private
*/
var $_active;
/**
* Stream timeout in seconds. Applies for example to fread()
*
- * @var integer
+ * @var int
* @access private
*/
var $_timeout_seconds;
/**
* Stream timeout in microseconds
*
- * @var integer
+ * @var int
* @access private
*/
var $_timeout_microseconds;
* Adds a key/value to the memcache server if one isn't already set with
* that key
*
- * @param string $key key to set with data
- * @param $val Mixed: value to store
- * @param $exp Integer: (optional) Expiration time. This can be a number of seconds
+ * @param string $key Key to set with data
+ * @param mixed $val Value to store
+ * @param int $exp (optional) Expiration time. This can be a number of seconds
* to cache for (up to 30 days inclusive). Any timespans of 30 days + 1 second or
* longer must be the timestamp of the time at which the mapping should expire. It
* is safe to use timestamps in all cases, regardless of expiration
* eg: strtotime("+3 hour")
*
- * @return Boolean
+ * @return bool
*/
public function add( $key, $val, $exp = 0 ) {
return $this->_set( 'add', $key, $val, $exp );
/**
* Decrease a value stored on the memcache server
*
- * @param string $key key to decrease
- * @param $amt Integer: (optional) amount to decrease
+ * @param string $key Key to decrease
+ * @param int $amt (optional) amount to decrease
*
- * @return Mixed: FALSE on failure, value on success
+ * @return mixed False on failure, value on success
*/
public function decr( $key, $amt = 1 ) {
return $this->_incrdecr( 'decr', $key, $amt );
/**
* Deletes a key from the server, optionally after $time
*
- * @param string $key key to delete
- * @param $time Integer: (optional) how long to wait before deleting
+ * @param string $key Key to delete
+ * @param int $time (optional) how long to wait before deleting
*
- * @return Boolean: TRUE on success, FALSE on failure
+ * @return bool True on success, false on failure
*/
public function delete( $key, $time = 0 ) {
if ( !$this->_active ) {
}
/**
- * @param $key
- * @param $timeout int
+ * @param string $key
+ * @param int $timeout
* @return bool
*/
public function lock( $key, $timeout = 0 ) {
}
/**
- * @param $key
+ * @param string $key
* @return bool
*/
public function unlock( $key ) {
/**
* Enable / Disable compression
*
- * @param $enable Boolean: TRUE to enable, FALSE to disable
+ * @param bool $enable True to enable, false to disable
*/
public function enable_compress( $enable ) {
$this->_compress_enable = $enable;
* Retrieves the value associated with the key from the memcache server
*
* @param array|string $key key to retrieve
- * @param $casToken[optional] Float
+ * @param float $casToken [optional]
*
- * @return Mixed
+ * @return mixed
*/
public function get( $key, &$casToken = null ) {
wfProfileIn( __METHOD__ );
/**
* Get multiple keys from the server(s)
*
- * @param array $keys keys to retrieve
+ * @param array $keys Keys to retrieve
*
- * @return Array
+ * @return array
*/
public function get_multi( $keys ) {
if ( !$this->_active ) {
/**
* Increments $key (optionally) by $amt
*
- * @param string $key key to increment
- * @param $amt Integer: (optional) amount to increment
+ * @param string $key Key to increment
+ * @param int $amt (optional) amount to increment
*
- * @return Integer: null if the key does not exist yet (this does NOT
+ * @return int|null Null if the key does not exist yet (this does NOT
* create new mappings if the key does not exist). If the key does
* exist, this returns the new value for that key.
*/
/**
* Overwrites an existing value for key; only works if key is already set
*
- * @param string $key key to set value as
- * @param $value Mixed: value to store
- * @param $exp Integer: (optional) Expiration time. This can be a number of seconds
+ * @param string $key Key to set value as
+ * @param mixed $value Value to store
+ * @param int $exp (optional) Expiration time. This can be a number of seconds
* to cache for (up to 30 days inclusive). Any timespans of 30 days + 1 second or
* longer must be the timestamp of the time at which the mapping should expire. It
* is safe to use timestamps in all cases, regardless of exipration
* eg: strtotime("+3 hour")
*
- * @return Boolean
+ * @return bool
*/
public function replace( $key, $value, $exp = 0 ) {
return $this->_set( 'replace', $key, $value, $exp );
* Passes through $cmd to the memcache server connected by $sock; returns
* output as an array (null array if no output)
*
- * @param $sock Resource: socket to send command on
- * @param string $cmd command to run
+ * @param Resource $sock Socket to send command on
+ * @param string $cmd Command to run
*
- * @return Array: output array
+ * @return array Output array
*/
public function run_command( $sock, $cmd ) {
if ( !is_resource( $sock ) ) {
* Unconditionally sets a key to a given value in the memcache. Returns true
* if set successfully.
*
- * @param string $key key to set value as
- * @param $value Mixed: value to set
- * @param $exp Integer: (optional) Expiration time. This can be a number of seconds
+ * @param string $key Key to set value as
+ * @param mixed $value Value to set
+ * @param int $exp (optional) Expiration time. This can be a number of seconds
* to cache for (up to 30 days inclusive). Any timespans of 30 days + 1 second or
* longer must be the timestamp of the time at which the mapping should expire. It
* is safe to use timestamps in all cases, regardless of exipration
* eg: strtotime("+3 hour")
*
- * @return Boolean: TRUE on success
+ * @return bool True on success
*/
public function set( $key, $value, $exp = 0 ) {
return $this->_set( 'set', $key, $value, $exp );
* Sets a key to a given value in the memcache if the current value still corresponds
* to a known, given value. Returns true if set successfully.
*
- * @param $casToken Float: current known value
- * @param string $key key to set value as
- * @param $value Mixed: value to set
- * @param $exp Integer: (optional) Expiration time. This can be a number of seconds
+ * @param float $casToken Current known value
+ * @param string $key Key to set value as
+ * @param mixed $value Value to set
+ * @param int $exp (optional) Expiration time. This can be a number of seconds
* to cache for (up to 30 days inclusive). Any timespans of 30 days + 1 second or
* longer must be the timestamp of the time at which the mapping should expire. It
* is safe to use timestamps in all cases, regardless of exipration
* eg: strtotime("+3 hour")
*
- * @return Boolean: TRUE on success
+ * @return bool True on success
*/
public function cas( $casToken, $key, $value, $exp = 0 ) {
return $this->_set( 'cas', $key, $value, $exp, $casToken );
/**
* Sets the compression threshold
*
- * @param $thresh Integer: threshold to compress if larger than
+ * @param int $thresh Threshold to compress if larger than
*/
public function set_compress_threshold( $thresh ) {
$this->_compress_threshold = $thresh;
/**
* Sets the debug flag
*
- * @param $dbg Boolean: TRUE for debugging, FALSE otherwise
+ * @param bool $dbg True for debugging, false otherwise
*
- * @see MWMemcached::__construct
+ * @see MWMemcached::__construct
*/
public function set_debug( $dbg ) {
$this->_debug = $dbg;
/**
* Sets the server list to distribute key gets and puts between
*
- * @param array $list of servers to connect to
+ * @param array $list Array of servers to connect to
*
- * @see MWMemcached::__construct()
+ * @see MWMemcached::__construct()
*/
public function set_servers( $list ) {
$this->_servers = $list;
/**
* Sets the timeout for new connections
*
- * @param $seconds Integer: number of seconds
- * @param $microseconds Integer: number of microseconds
+ * @param int $seconds Number of seconds
+ * @param int $microseconds Number of microseconds
*/
public function set_timeout( $seconds, $microseconds ) {
$this->_timeout_seconds = $seconds;
/**
* Close the specified socket
*
- * @param string $sock socket to close
+ * @param string $sock Socket to close
*
* @access private
*/
/**
* Connects $sock to $host, timing out after $timeout
*
- * @param $sock Integer: socket to connect
+ * @param int $sock Socket to connect
* @param string $host Host:IP to connect to
*
- * @return boolean
+ * @return bool
* @access private
*/
function _connect_sock( &$sock, $host ) {
/**
* Marks a host as dead until 30-40 seconds in the future
*
- * @param string $sock socket to mark as dead
+ * @param string $sock Socket to mark as dead
*
* @access private
*/
}
/**
- * @param $host
+ * @param string $host
*/
function _dead_host( $host ) {
$parts = explode( ':', $host );
/**
* get_sock
*
- * @param string $key key to retrieve value for;
+ * @param string $key Key to retrieve value for;
*
- * @return Mixed: resource on success, false on failure
+ * @return Resource|bool Resource on success, false on failure
* @access private
*/
function get_sock( $key ) {
/**
* Creates a hash integer based on the $key
*
- * @param string $key key to hash
+ * @param string $key Key to hash
*
- * @return Integer: hash value
+ * @return int Hash value
* @access private
*/
function _hashfunc( $key ) {
/**
* Perform increment/decriment on $key
*
- * @param string $cmd command to perform
- * @param string|array $key key to perform it on
- * @param $amt Integer amount to adjust
+ * @param string $cmd Command to perform
+ * @param string|array $key Key to perform it on
+ * @param int $amt Amount to adjust
*
- * @return Integer: new value of $key
+ * @return int New value of $key
* @access private
*/
function _incrdecr( $cmd, $key, $amt = 1 ) {
/**
* Load items into $ret from $sock
*
- * @param $sock Resource: socket to read from
+ * @param Resource $sock Socket to read from
* @param array $ret returned values
- * @param $casToken[optional] Float
- * @return boolean True for success, false for failure
+ * @param float $casToken [optional]
+ * @return bool True for success, false for failure
*
* @access private
*/
/**
* Performs the requested storage operation to the memcache server
*
- * @param string $cmd command to perform
- * @param string $key key to act on
- * @param $val Mixed: what we need to store
- * @param $exp Integer: (optional) Expiration time. This can be a number of seconds
+ * @param string $cmd Command to perform
+ * @param string $key Key to act on
+ * @param mixed $val What we need to store
+ * @param int $exp (optional) Expiration time. This can be a number of seconds
* to cache for (up to 30 days inclusive). Any timespans of 30 days + 1 second or
* longer must be the timestamp of the time at which the mapping should expire. It
* is safe to use timestamps in all cases, regardless of exipration
* eg: strtotime("+3 hour")
- * @param $casToken[optional] Float
+ * @param float $casToken [optional]
*
- * @return Boolean
+ * @return bool
* @access private
*/
function _set( $cmd, $key, $val, $exp, $casToken = null ) {
*
* @param string $host Host:IP to get socket for
*
- * @return Mixed: IO Stream or false
+ * @return Resource|bool IO Stream or false
* @access private
*/
function sock_to_host( $host ) {
}
/**
- * @param $text string
+ * @param string $text
*/
function _debugprint( $text ) {
wfDebugLog( 'memcached', $text );
}
/**
- * @param $text string
+ * @param string $text
*/
function _error_log( $text ) {
wfDebugLog( 'memcached-serious', "Memcached error: $text" );
/**
* Write to a stream. If there is an error, mark the socket dead.
*
- * @param $sock The socket
- * @param $buf The string to write
+ * @param Resource $sock The socket
+ * @param string $buf The string to write
* @return bool True on success, false on failure
*/
function _fwrite( $sock, $buf ) {
/**
* Handle an I/O error. Mark the socket dead and log an error.
+ *
+ * @param Resource $sock
+ * @param string $msg
*/
function _handle_error( $sock, $msg ) {
$peer = stream_socket_get_name( $sock, true /** remote **/ );
* Read the specified number of bytes from a stream. If there is an error,
* mark the socket dead.
*
- * @param $sock The socket
- * @param $len The number of bytes to read
- * @return The string on success, false on failure.
+ * @param Resource $sock The socket
+ * @param int $len The number of bytes to read
+ * @return string|bool The string on success, false on failure.
*/
function _fread( $sock, $len ) {
$buf = '';
* Read a line from a stream. If there is an error, mark the socket dead.
* The \r\n line ending is stripped from the response.
*
- * @param $sock The socket
- * @return The string on success, false on failure
+ * @param Resource $sock The socket
+ * @return string|bool The string on success, false on failure
*/
function _fgets( $sock ) {
$result = fgets( $sock );
/**
* Flush the read buffer of a stream
- * @param $f Resource
+ * @param Resource $f
*/
function _flush_read_buffer( $f ) {
if ( !is_resource( $f ) ) {
* - serializer: May be either "php" or "igbinary". Igbinary produces more compact
* values, but serialization is much slower unless the php.ini option
* igbinary.compact_strings is off.
+ * @param array $params
*/
function __construct( $params ) {
$params = $this->applyDefaultParams( $params );
}
/**
- * @param $key string
- * @param $casToken[optional] float
- * @return Mixed
+ * @param string $key
+ * @param float $casToken [optional]
+ * @return mixed
*/
public function get( $key, &$casToken = null ) {
wfProfileIn( __METHOD__ );
}
/**
- * @param $key string
- * @param $value
- * @param $exptime int
+ * @param string $key
+ * @param mixed $value
+ * @param int $exptime
* @return bool
*/
public function set( $key, $value, $exptime = 0 ) {
}
/**
- * @param $casToken float
- * @param $key string
- * @param $value
- * @param $exptime int
+ * @param float $casToken
+ * @param string $key
+ * @param mixed $value
+ * @param int $exptime
* @return bool
*/
public function cas( $casToken, $key, $value, $exptime = 0 ) {
}
/**
- * @param $key string
- * @param $time int
+ * @param string $key
+ * @param int $time
* @return bool
*/
public function delete( $key, $time = 0 ) {
}
/**
- * @param $key string
- * @param $value int
- * @param $exptime int
- * @return Mixed
+ * @param string $key
+ * @param int $value
+ * @param int $exptime
+ * @return mixed
*/
public function add( $key, $value, $exptime = 0 ) {
$this->debugLog( "add($key)" );
}
/**
- * @param $key string
- * @param $value int
- * @return Mixed
+ * @param string $key
+ * @param int $value
+ * @return mixed
*/
public function incr( $key, $value = 1 ) {
$this->debugLog( "incr($key)" );
}
/**
- * @param $key string
- * @param $value int
- * @return Mixed
+ * @param string $key
+ * @param int $value
+ * @return mixed
*/
public function decr( $key, $value = 1 ) {
$this->debugLog( "decr($key)" );
* different.
*
* @param string $key The key used by the caller, or false if there wasn't one.
- * @param $result Mixed The return value
- * @return Mixed
+ * @param mixed $result The return value
+ * @return mixed
*/
protected function checkResult( $key, $result ) {
if ( $result !== false ) {
}
/**
- * @param $keys Array
- * @return Array
+ * @param array $keys
+ * @return array
*/
public function getMulti( array $keys ) {
wfProfileIn( __METHOD__ );
* - timeout: The read timeout in microseconds
* - connect_timeout: The connect timeout in seconds
*
- * @param $params array
+ * @param array $params
*/
function __construct( $params ) {
$params = $this->applyDefaultParams( $params );
}
/**
- * @param $debug bool
+ * @param bool $debug
*/
public function setDebug( $debug ) {
$this->client->set_debug( $debug );
}
/**
- * @param $keys Array
- * @return Array
+ * @param array $keys
+ * @return array
*/
public function getMulti( array $keys ) {
$callback = array( $this, 'encodeKey' );
}
/**
- * @param $key
- * @param $timeout int
+ * @param string $key
+ * @param int $timeout
* @return bool
*/
public function lock( $key, $timeout = 0 ) {
}
/**
- * @param $key string
- * @return Mixed
+ * @param string $key
+ * @return mixed
*/
public function unlock( $key ) {
return $this->client->unlock( $this->encodeKey( $key ) );
}
/**
- * @param $key string
- * @param $value int
- * @return Mixed
+ * @param string $key
+ * @param int $value
+ * @return mixed
*/
public function incr( $key, $value = 1 ) {
return $this->client->incr( $this->encodeKey( $key ), $value );
}
/**
- * @param $key string
- * @param $value int
- * @return Mixed
+ * @param string $key
+ * @param int $value
+ * @return mixed
*/
public function decr( $key, $value = 1 ) {
return $this->client->decr( $this->encodeKey( $key ), $value );
* structures, in the style required by $wgObjectCaches. See
* the documentation of $wgObjectCaches for more detail.
*
- * @param $params array
+ * @param array $params
* @throws MWException
*/
public function __construct( $params ) {
}
/**
- * @param $debug bool
+ * @param bool $debug
*/
public function setDebug( $debug ) {
$this->doWrite( 'setDebug', $debug );
}
/**
- * @param $key string
- * @param $casToken[optional] mixed
+ * @param string $key
+ * @param mixed $casToken [optional]
* @return bool|mixed
*/
public function get( $key, &$casToken = null ) {
}
/**
- * @param $casToken mixed
- * @param $key string
- * @param $value mixed
- * @param $exptime int
+ * @param mixed $casToken
+ * @param string $key
+ * @param mixed $value
+ * @param mixed $exptime
* @return bool
*/
public function cas( $casToken, $key, $value, $exptime = 0 ) {
}
/**
- * @param $key string
- * @param $value mixed
- * @param $exptime int
+ * @param string $key
+ * @param mixed $value
+ * @param int $exptime
* @return bool
*/
public function set( $key, $value, $exptime = 0 ) {
}
/**
- * @param $key string
- * @param $time int
+ * @param string $key
+ * @param int $time
* @return bool
*/
public function delete( $key, $time = 0 ) {
}
/**
- * @param $key string
- * @param $value mixed
- * @param $exptime int
+ * @param string $key
+ * @param mixed $value
+ * @param int $exptime
* @return bool
*/
public function add( $key, $value, $exptime = 0 ) {
}
/**
- * @param $key string
- * @param $value mixed
- * @param $exptime int
+ * @param string $key
+ * @param mixed $value
+ * @param int $exptime
* @return bool
*/
public function replace( $key, $value, $exptime = 0 ) {
}
/**
- * @param $key string
- * @param $value int
+ * @param string $key
+ * @param int $value
* @return bool|null
*/
public function incr( $key, $value = 1 ) {
}
/**
- * @param $key string
- * @param $value int
+ * @param string $key
+ * @param int $value
* @return bool
*/
public function decr( $key, $value = 1 ) {
}
/**
- * @param $key string
- * @param $timeout int
+ * @param string $key
+ * @param int $timeout
* @return bool
*/
public function lock( $key, $timeout = 0 ) {
}
/**
- * @param $key string
+ * @param string $key
* @return bool
*/
public function unlock( $key ) {
}
/**
- * @param $key string
- * @param $callback closure Callback method to be executed
+ * @param string $key
+ * @param Closure $callback Callback method to be executed
* @param int $exptime Either an interval in seconds or a unix timestamp for expiry
* @param int $attempts The amount of times to attempt a merge in case of failure
- * @return bool success
+ * @return bool Success
*/
- public function merge( $key, closure $callback, $exptime = 0, $attempts = 10 ) {
+ public function merge( $key, Closure $callback, $exptime = 0, $attempts = 10 ) {
return $this->doWrite( 'merge', $key, $callback, $exptime );
}
}
/**
- * @param $method string
+ * @param string $method
* @return bool
*/
protected function doWrite( $method /*, ... */ ) {
* Delete objects expiring before a certain date.
*
* Succeed if any of the child caches succeed.
- * @param $date string
- * @param $progressCallback bool|callback
+ * @param string $date
+ * @param bool|callable $progressCallback
* @return bool
*/
public function deleteObjectsExpiringBefore( $date, $progressCallback = false ) {
/**
* Get a cached instance of the specified type of cache object.
*
- * @param $id string
+ * @param string $id
*
* @return BagOStuff
*/
/**
* Create a new cache object of the specified type.
*
- * @param $id string
+ * @param string $id
*
* @throws MWException
* @return BagOStuff
/**
* Create a new cache object from parameters
*
- * @param $params array
+ * @param array $params
*
* @throws MWException
* @return BagOStuff
* be an alias to the configured cache choice for that.
* If no cache choice is configured (by default $wgMainCacheType is CACHE_NONE),
* then CACHE_ANYTHING will forward to CACHE_DB.
- * @param $params array
+ * @param array $params
* @return BagOStuff
*/
static function newAnything( $params ) {
/**
* Factory function referenced from DefaultSettings.php for CACHE_ACCEL.
*
- * @param $params array
+ * @param array $params
* @throws MWException
* @return BagOStuff
*/
* hashing scheme and a different interpretation of the flags bitfield, so
* switching between the two clients randomly would be disastrous.
*
- * @param $params array
+ * @param array $params
*
* @return MemcachedPhpBagOStuff
*/
/**
* Get the cache storage object to use for session storage
+ * @return ObjectCache
*/
static function getCache() {
global $wgSessionCacheType;
/**
* Get a cache key for the given session id.
*
- * @param string $id session id
- * @return String: cache key
+ * @param string $id Session id
+ * @return string Cache key
*/
static function getKey( $id ) {
return wfMemcKey( 'session', $id );
/**
* Callback when opening a session.
*
- * @param $save_path String: path used to store session files, unused
- * @param $session_name String: session name
- * @return Boolean: success
+ * @param string $save_path Path used to store session files, unused
+ * @param string $session_name Session name
+ * @return bool Success
*/
static function open( $save_path, $session_name ) {
return true;
* Callback when closing a session.
* NOP.
*
- * @return Boolean: success
+ * @return bool Success
*/
static function close() {
return true;
/**
* Callback when reading session data.
*
- * @param string $id session id
- * @return Mixed: session data
+ * @param string $id Session id
+ * @return mixed Session data
*/
static function read( $id ) {
$data = self::getCache()->get( self::getKey( $id ) );
/**
* Callback when writing session data.
*
- * @param string $id session id
- * @param $data Mixed: session data
- * @return Boolean: success
+ * @param string $id Session id
+ * @param mixed $data Session data
+ * @return bool Success
*/
static function write( $id, $data ) {
global $wgObjectCacheSessionExpiry;
/**
* Callback to destroy a session when calling session_destroy().
*
- * @param string $id session id
- * @return Boolean: success
+ * @param string $id Session id
+ * @return bool Success
*/
static function destroy( $id ) {
self::getCache()->delete( self::getKey( $id ) );
* Callback to execute garbage collection.
* NOP: Object caches perform garbage collection implicitly
*
- * @param $maxlifetime Integer: maximum session life time
- * @return Boolean: success
+ * @param int $maxlifetime Maximum session life time
+ * @return bool Success
*/
static function gc( $maxlifetime ) {
return true;
class RedisBagOStuff extends BagOStuff {
/** @var RedisConnectionPool */
protected $redisPool;
- /** @var Array List of server names */
+ /** @var array List of server names */
protected $servers;
/** @var bool */
protected $automaticFailover;
* consistent hashing algorithm). True by default. This has the
* potential to create consistency issues if a server is slow enough to
* flap, for example if it is in swap death.
+ * @param array $params
*/
function __construct( $params ) {
$redisConf = array( 'serializer' => 'none' ); // manage that in this class
* command. But we are constrained by the memcached-like interface to
* return null in that case. Once the key exists, further increments are
* atomic.
+ * @param string $key
+ * @param int $value
+ * @param bool|mixed
*/
public function incr( $key, $value = 1 ) {
$section = new ProfileSection( __METHOD__ );
/**
* Get a Redis object with a connection suitable for fetching the specified key
- * @return Array (server, RedisConnRef) or (false, false)
+ * @return array (server, RedisConnRef) or (false, false)
*/
protected function getConnection( $key ) {
if ( count( $this->servers ) === 1 ) {
/**
* Log a fatal error
+ * @param string $msg
*/
protected function logError( $msg ) {
wfDebugLog( 'redis', "Redis error: $msg" );
* and protocol errors. Sometimes it also closes the connection, sometimes
* not. The safest response for us is to explicitly destroy the connection
* object and let it be reopened during the next request.
+ * @param RedisConnRef $conn
+ * @param Exception $e
*/
protected function handleException( RedisConnRef $conn, $e ) {
$this->setLastError( BagOStuff::ERR_UNEXPECTED );
/**
* Send information about a single request to the debug log
+ * @param string $method
+ * @param string $key
+ * @param string $server
+ * @param bool $result
*/
public function logRequest( $method, $key, $server, $result ) {
$this->debug( "$method $key on $server: " .
* distributed across all tables by key hash. This is for
* MySQL bugs 61735 and 61736.
*
- * @param $params array
+ * @param array $params
*/
public function __construct( $params ) {
if ( isset( $params['servers'] ) ) {
/**
* Get a connection to the specified database
*
- * @param $serverIndex integer
+ * @param int $serverIndex
* @return DatabaseBase
*/
protected function getDB( $serverIndex ) {
/**
* Get the server index and table name for a given key
- * @param $key string
- * @return Array: server index and table name
+ * @param string $key
+ * @return array Server index and table name
*/
protected function getTableByKey( $key ) {
if ( $this->shards > 1 ) {
/**
* Get the table name for a given shard index
- * @param $index int
+ * @param int $index
* @return string
*/
protected function getTableNameByShard( $index ) {
}
/**
- * @param $key string
- * @param $casToken[optional] mixed
+ * @param string $key
+ * @param mixed $casToken [optional]
* @return mixed
*/
public function get( $key, &$casToken = null ) {
}
/**
- * @param $keys array
- * @return Array
+ * @param array $keys
+ * @return array
*/
public function getMulti( array $keys ) {
$values = array(); // array of (key => value)
}
/**
- * @param $key string
- * @param $value mixed
- * @param $exptime int
+ * @param string $key
+ * @param mixed $value
+ * @param int $exptime
* @return bool
*/
public function set( $key, $value, $exptime = 0 ) {
}
/**
- * @param $casToken mixed
- * @param $key string
- * @param $value mixed
- * @param $exptime int
+ * @param mixed $casToken
+ * @param string $key
+ * @param mixed $value
+ * @param int $exptime
* @return bool
*/
public function cas( $casToken, $key, $value, $exptime = 0 ) {
}
/**
- * @param $key string
- * @param $time int
+ * @param string $key
+ * @param int $time
* @return bool
*/
public function delete( $key, $time = 0 ) {
}
/**
- * @param $key string
- * @param $step int
+ * @param string $key
+ * @param int $step
* @return int|null
*/
public function incr( $key, $step = 1 ) {
}
/**
- * @param $exptime string
+ * @param string $exptime
* @return bool
*/
protected function isExpired( $db, $exptime ) {
}
/**
+ * @param DatabaseBase $db
* @return string
*/
protected function getMaxDateTime( $db ) {
/**
* Delete objects from the database which expire before a certain date.
- * @param $timestamp string
- * @param $progressCallback bool|callback
+ * @param string $timestamp
+ * @param bool|callable $progressCallback
* @return bool
*/
public function deleteObjectsExpiringBefore( $timestamp, $progressCallback = false ) {
* On typical message and page data, this can provide a 3X decrease
* in storage requirements.
*
- * @param $data mixed
+ * @param mixed $data
* @return string
*/
protected function serialize( &$data ) {
/**
* Unserialize and, if necessary, decompress an object.
- * @param $serial string
+ * @param string $serial
* @return mixed
*/
protected function unserialize( $serial ) {
/**
* Handle a DBError which occurred during a read operation.
+ *
+ * @param DBError $exception
+ * @param int $serverIndex
*/
protected function handleReadError( DBError $exception, $serverIndex ) {
if ( $exception instanceof DBConnectionError ) {
/**
* Handle a DBQueryError which occurred during a write operation.
+ *
+ * @param DBError $exception
+ * @param int $serverIndex
*/
protected function handleWriteError( DBError $exception, $serverIndex ) {
if ( $exception instanceof DBConnectionError ) {
/**
* Mark a server down due to a DBConnectionError exception
+ *
+ * @param DBError $exception
+ * @param int $serverIndex
*/
protected function markServerDown( $exception, $serverIndex ) {
if ( isset( $this->connFailureTimes[$serverIndex] ) ) {
/**
* Get a value from the WinCache object cache
*
- * @param string $key cache key
- * @param $casToken[optional] int: cas token
+ * @param string $key Cache key
+ * @param int $casToken [optional] Cas token
* @return mixed
*/
public function get( $key, &$casToken = null ) {
/**
* Store a value in the WinCache object cache
*
- * @param string $key cache key
- * @param $value Mixed: object to store
- * @param int $expire expiration time
+ * @param string $key Cache key
+ * @param mixed $valueObject to store
+ * @param int $expire Expiration time
* @return bool
*/
public function set( $key, $value, $expire = 0 ) {
/**
* Store a value in the WinCache object cache, race condition-safe
*
- * @param int $casToken cas token
- * @param string $key cache key
- * @param int $value object to store
- * @param int $exptime expiration time
+ * @param int $casToken Cas token
+ * @param string $key Cache key
+ * @param int $value Object to store
+ * @param int $exptime Expiration time
* @return bool
*/
public function cas( $casToken, $key, $value, $exptime = 0 ) {
/**
* Remove a value from the WinCache object cache
*
- * @param string $key cache key
- * @param int $time not used in this implementation
+ * @param string $key Cache key
+ * @param int $time Not used in this implementation
* @return bool
*/
public function delete( $key, $time = 0 ) {
/**
* Get a value from the XCache object cache
*
- * @param string $key cache key
- * @param $casToken mixed: cas token
+ * @param string $key Cache key
+ * @param mixed $casToken Cas token
* @return mixed
*/
public function get( $key, &$casToken = null ) {
/**
* Store a value in the XCache object cache
*
- * @param string $key cache key
- * @param $value Mixed: object to store
- * @param int $expire expiration time
+ * @param string $key Cache key
+ * @param mixed $value Object to store
+ * @param int $expire Expiration time
* @return bool
*/
public function set( $key, $value, $expire = 0 ) {
}
/**
- * @param $casToken mixed
- * @param $key string
- * @param $value mixed
- * @param $exptime int
+ * @param mixed $casToken
+ * @param string $key
+ * @param mixed $value
+ * @param int $exptime
* @return bool
*/
public function cas( $casToken, $key, $value, $exptime = 0 ) {
/**
* Remove a value from the XCache object cache
*
- * @param string $key cache key
- * @param int $time not used in this implementation
+ * @param string $key Cache key
+ * @param int $time Not used in this implementation
* @return bool
*/
public function delete( $key, $time = 0 ) {
* XCache does not seem to support any way of performing CAS - this however will
* provide a way to perform CAS-like functionality.
*
- * @param $key string
- * @param $callback closure Callback method to be executed
+ * @param string $key
+ * @param Closure $callback Callback method to be executed
* @param int $exptime Either an interval in seconds or a unix timestamp for expiry
* @param int $attempts The amount of times to attempt a merge in case of failure
- * @return bool success
+ * @return bool Cuccess
*/
- public function merge( $key, closure $callback, $exptime = 0, $attempts = 10 ) {
+ public function merge( $key, Closure $callback, $exptime = 0, $attempts = 10 ) {
return $this->mergeViaLock( $key, $callback, $exptime, $attempts );
}
* about the methods available in PPFrame and PPNode.
*
* @throws MWException
- * @return string|callback The old callback function for this name, if any
+ * @return string|callable The old callback function for this name, if any
*/
public function setFunctionHook( $id, $callback, $flags = 0 ) {
global $wgContLang;
/** @var string All workers with the same key share the lock */
protected $key;
- /** @var integer Maximum number of workers doing the task simultaneously */
+ /** @var int Maximum number of workers doing the task simultaneously */
protected $workers;
- /** @var integer If this number of workers are already working/waiting, fail instead of wait */
+ /** @var int If this number of workers are already working/waiting, fail instead of wait */
protected $maxqueue;
/** @var float Maximum time in seconds to wait for the lock */
protected $timeout;
/**
* Create a Pool counter. This should only be called from the PoolWorks.
*
- * @param $type
- * @param $key
+ * @param string $type
+ * @param string $key
*
* @return PoolCounter
*/
protected $serversByLabel;
/** @var string SHA-1 of the key */
protected $keySha1;
- /** @var integer TTL for locks to expire (work should finish in this time) */
+ /** @var int TTL for locks to expire (work should finish in this time) */
protected $lockTTL;
/** @var RedisConnRef */
protected $conn;
/** @var string Pool slot value */
protected $slot;
- /** @var integer AWAKE_* constant */
+ /** @var int AWAKE_* constant */
protected $onRelease;
/** @var string Unique string to identify this process */
protected $session;
- /** @var integer UNIX timestamp */
+ /** @var int UNIX timestamp */
protected $slotTime;
const AWAKE_ONE = 1; // wake-up if when a slot can be taken from an existing process
const AWAKE_ALL = 2; // wake-up if an existing process finishes and wake up such others
- /** @var Array List of active PoolCounterRedis objects in this script */
+ /** @var array List of active PoolCounterRedis objects in this script */
protected static $active = null;
function __construct( $conf, $type, $key ) {
/**
* Actually perform the work, caching it if needed
- * @return mixed work result or false
+ * @return mixed Work result or false
*/
abstract public function doWork();
/**
* Retrieve the work from cache
- * @return mixed work result or false
+ * @return mixed Work result or false
*/
public function getCachedWork() {
return false;
/**
* A work not so good (eg. expired one) but better than an error
* message.
- * @return mixed work result or false
+ * @return mixed Work result or false
*/
public function fallback() {
return false;
/**
* Log an error
*
- * @param $status Status
+ * @param Status $status
* @return void
*/
public function logError( $status ) {
* - c) fallback() : Applies for all remaining cases.
* If these all fall through (by returning false), then the result of error() is returned.
*
- * @param $skipcache bool
+ * @param bool $skipcache
* @return mixed
*/
public function execute( $skipcache = false ) {
/** @var float seconds */
protected $mDBLockThreshold = 5.0;
- /** @var Array DB/server name => (active trx count,timestamp) */
+ /** @var array DB/server name => (active trx count,timestamp) */
protected $mDBTrxHoldingLocks = array();
- /** @var Array DB/server name => list of (function name, elapsed time) */
+ /** @var array DB/server name => list of (function name, elapsed time) */
protected $mDBTrxMethodTimes = array();
/** @var Profiler */
/**
* Set the profiler to a specific profiler instance. Mostly for dumpHTML
- * @param $p Profiler object
+ * @param Profiler $p
*/
public static function setInstance( Profiler $p ) {
self::$__instance = $p;
/**
* Return whether this a stub profiler
*
- * @return Boolean
+ * @return bool
*/
public function isStub() {
return false;
* Return whether this profiler stores data
*
* @see Profiler::logData()
- * @return Boolean
+ * @return bool
*/
public function isPersistent() {
return false;
/**
* Whether to internally just track aggregates and ignore the full stack trace
*
- * @return boolean
+ * @return bool
*/
protected function collateOnly() {
return false;
* @param string $name
* @param float $elapsedCpu
* @param float $elapsedReal
- * @param integer $memChange
- * @param integer $subcalls
+ * @param int $memChange
+ * @param int $subcalls
* @param array|null $period Map of ('start','end','memory','subcalls')
*/
protected function updateEntry(
/**
* Called by wfProfieIn()
*
- * @param $functionname String
+ * @param string $functionname
*/
public function profileIn( $functionname ) {
global $wgDebugFunctionEntry;
/**
* Called by wfProfieOut()
*
- * @param $functionname String
+ * @param string $functionname
*/
public function profileOut( $functionname ) {
global $wgDebugFunctionEntry;
/**
* Mark this call as templated or not
*
- * @param $t Boolean
+ * @param bool $t
*/
public function setTemplated( $t ) {
$this->mTemplated = $t;
/**
* Returns a profiling output to be stored in debug file
*
- * @return String
+ * @return string
*/
public function getOutput() {
global $wgDebugFunctionEntry, $wgProfileCallTree;
* Get the initial time of the request, based either on $wgRequestTime or
* $wgRUstart. Will return null if not able to find data.
*
- * @param string|false $metric metric to use, with the following possibilities:
+ * @param string|false $metric Metric to use, with the following possibilities:
* - user: User CPU time (without system calls)
* - cpu: Total CPU time (user and system calls)
* - wall (or any other string): elapsed time
* Get the initial time of the request, based either on $wgRequestTime or
* $wgRUstart. Will return null if not able to find data.
*
- * @param string|false $metric metric to use, with the following possibilities:
+ * @param string|false $metric Metric to use, with the following possibilities:
* - user: User CPU time (without system calls)
* - cpu: Total CPU time (user and system calls)
* - wall (or any other string): elapsed time
/**
* Dummy calls to wfProfileIn/wfProfileOut to calculate its overhead
+ *
+ * @param int $profileCount
*/
protected static function calculateOverhead( $profileCount ) {
wfProfileIn( '-overhead-total' );
* Counts the number of profiled function calls sitting under
* the given point in the call graph. Not the most efficient algo.
*
- * @param $stack Array:
- * @param $start Integer:
- * @return Integer
+ * @param array $stack
+ * @param int $start
+ * @return int
*/
protected function calltreeCount( $stack, $start ) {
$level = $stack[$start][1];
/**
* Add an entry in the debug log file
*
- * @param string $s to output
+ * @param string $s String to output
*/
protected function debug( $s ) {
if ( function_exists( 'wfDebug' ) ) {
* Add an entry in the debug log group
*
* @param string $group Group to send the message to
- * @param string $s to output
+ * @param string $s String to output
*/
protected function debugGroup( $group, $s ) {
if ( function_exists( 'wfDebugLog' ) ) {
public static function getLESSVars() {
global $wgResourceLoaderLESSVars;
- static $lessVars = null;
- if ( $lessVars === null ) {
- $lessVars = $wgResourceLoaderLESSVars;
- // Sort by key to ensure consistent hashing for cache lookups.
- ksort( $lessVars );
- }
+ $lessVars = $wgResourceLoaderLESSVars;
+ // Sort by key to ensure consistent hashing for cache lookups.
+ ksort( $lessVars );
return $lessVars;
}
}
}
/**
- * @param $db DatabaseBase
+ * @param DatabaseBase $db
* @return mixed
*/
public function doQuery( $db ) {
}
/**
- * @param $db DatabaseBase
+ * @param DatabaseBase $db
* @return mixed
*/
public function doQuery( $db ) {
var $storeBatch, $deleteBatch, $cleanupBatch;
/**
- * @param $db DatabaseBase
+ * @param DatabaseBase $db
* @return mixed
*/
public function doQuery( $db ) {
}
/**
- * @param $db DatabaseBase
+ * @param DatabaseBase $db
* @return mixed
*/
public function doQuery( $db ) {
}
/**
- * @param $db DatabaseBase
+ * @param DatabaseBase $db
* @return mixed
*/
public function doQuery( $db ) {
* If the update fails because it did not match, the function should return
* false. This prevents concurrency problems.
*
- * @return boolean success
+ * @return bool Success
*/
abstract public function setBits( $newBits );
/**
* Update *_deleted bitfields in various tables to hide or unhide usernames
- * @param $name String username
- * @param $userId Int user id
- * @param $op String operator '|' or '&'
- * @param $dbw null|DatabaseBase, if you happen to have one lying around
+ * @param string $name Username
+ * @param int $userId User id
+ * @param string $op Operator '|' or '&'
+ * @param null|DatabaseBase $dbw If you happen to have one lying around
* @return bool
*/
private static function setUsernameBitfields( $name, $userId, $op, $dbw ) {
*
* @param string $desc description to add to the array if the option was
* enabled / disabled.
- * @param $field Integer: the bitmask describing the single option.
- * @param $diff Integer: the xor of the old and new bitfields.
- * @param $new Integer: the new bitfield
- * @param array $arr the array to update.
+ * @param int $field The bitmask describing the single option.
+ * @param int $diff The xor of the old and new bitfields.
+ * @param int $new The new bitfield
+ * @param array $arr The array to update.
*/
protected static function checkItem( $desc, $field, $diff, $new, &$arr ) {
if ( $diff & $field ) {
* You can turn the keys in $arr[0] and $arr[1] into message keys by
* appending -hid and and -unhid to the keys respectively.
*
- * @param $n Integer: the new bitfield.
- * @param $o Integer: the old bitfield.
+ * @param int $n The new bitfield.
+ * @param int $o The old bitfield.
* @return array An array as described above.
* @since 1.19 public
*/
* If it doesn't, returns the corresponding ar_timestamp field
* so that this key can be used instead.
*
- * @param $title Title
- * @param $revid
+ * @param Title $title
+ * @param int $revid
* @return bool|mixed
*/
public static function checkRevisionExistence( $title, $revid ) {
/**
* Put together a rev_deleted bitfield
* @since 1.22
- * @param array $bitPars extractBitParams() params
- * @param int $oldfield current bitfield
+ * @param array $bitPars ExtractBitParams() params
+ * @param int $oldfield Current bitfield
* @return array
*/
public static function extractBitfield( $bitPars, $oldfield ) {
* @since 1.21
* @deprecated Just use the constructor or the factory Site::newForType
*
- * @param integer $globalId
+ * @param int $globalId
*
* @return MediaWikiSite
*/
*
* @since 1.21
*
- * @param string $title the target page's title, in normalized form.
+ * @param string $title The target page's title, in normalized form.
*
- * @return String
+ * @return string
*/
public function toDBKey( $title ) {
return str_replace( ' ', '_', $title );
* @param array $externalData A reply from the API on a external server.
* @param string $pageTitle Identifies the page at the external site, needing normalization.
*
- * @return array|boolean a 'page' structure representing the page identified by $pageTitle.
+ * @return array|bool A 'page' structure representing the page identified by $pageTitle.
*/
private static function extractPageRecord( $externalData, $pageTitle ) {
// If there is a special case with only one returned page
*
* @since 1.21
*
- * @param string|boolean $pageName Page name or false (default: false)
+ * @param string|bool $pageName Page name or false (default: false)
*
* @return string
*/
*
* @since 1.21
*
- * @param string|boolean $path
+ * @param string|bool $path
*
* @return string
*/
*
* @since 1.21
*
- * @return boolean
+ * @return bool
*/
public function shouldForward() {
return $this->forward;
*
* @since 1.21
*
- * @param boolean $shouldForward
+ * @param bool $shouldForward
*
* @throws MWException
*/
*
* @since 1.21
*
- * @param bool|String $pageName
+ * @param bool|string $pageName
*
- * @return string|boolean false
+ * @return string|bool
*/
public function getPageUrl( $pageName = false ) {
$url = $this->getLinkPath();
*
* @since 1.21
*
- * @var array of integer
+ * @var array Array of integer
*/
protected $byInternalId = array();
*
* @since 1.21
*
- * @var array of string
+ * @var array Array of string
*/
protected $byGlobalId = array();
*
* @since 1.23
*
- * @var array of string
+ * @var array Array of string
*/
protected $byNavigationId = array();
* @param int|string $index
* @param Site $site
*
- * @return boolean
+ * @return bool
*/
protected function preSetElement( $index, $site ) {
if ( $this->hasSite( $site->getGlobalId() ) ) {
*
* @param string $globalSiteId
*
- * @return boolean
+ * @return bool
*/
public function hasSite( $globalSiteId ) {
return array_key_exists( $globalSiteId, $this->byGlobalId );
*
* @since 1.21
*
- * @return boolean
+ * @return bool
*/
public function isEmpty() {
return $this->byGlobalId === array();
/**
* Returns if the list contains the site with the provided site id.
*
- * @param integer $id
+ * @param int $id
*
- * @return boolean
+ * @return bool
*/
public function hasInternalId( $id ) {
return array_key_exists( $id, $this->byInternalId );
*
* @since 1.21
*
- * @param integer $id
+ * @param int $id
*
* @return Site
*/
*
* @since 1.21
*
- * @param integer $id
+ * @param int $id
*/
public function removeSiteByInternalId( $id ) {
$this->offsetUnset( $this->byInternalId[$id] );
*
* @param string $id
*
- * @return boolean
+ * @return bool
*/
public function hasNavigationId( $id ) {
return array_key_exists( $id, $this->byNavigationId );
*
* @see SiteList::getSerialVersionId
*
- * @return String The cache key.
+ * @return string The cache key.
*/
protected function getCacheKey() {
wfProfileIn( __METHOD__ );
*
* @since 1.21
*
- * @param string $source either 'cache' or 'recache'
+ * @param string $source Either 'cache' or 'recache'
*
* @return SiteList
*/
*
* @param Site $site
*
- * @return boolean Success indicator
+ * @return bool Success indicator
*/
public function saveSite( Site $site ) {
return $this->saveSites( array( $site ) );
*
* @param Site[] $sites
*
- * @return boolean Success indicator
+ * @return bool Success indicator
*/
public function saveSites( array $sites ) {
wfProfileIn( __METHOD__ );
*
* @see SiteStore::clear()
*
- * @return bool success
+ * @return bool Success
*/
public function clear() {
wfProfileIn( __METHOD__ );
* @since 1.21
* @deprecated
*
- * @param string|boolean false $globalId
+ * @param string|bool $globalId
*
* @return Site
*/
/**
* @deprecated
+ * @param string $group
* @return SiteList
*/
public function getSiteGroup( $group ) {
*
* @param Site $site
*
- * @return boolean Success indicator
+ * @return bool Success indicator
*/
public function saveSite( Site $site );
*
* @param Site[] $sites
*
- * @return boolean Success indicator
+ * @return bool Success indicator
*/
public function saveSites( array $sites );
* @since 1.21
*
* @param string $globalId
- * @param string $source either 'cache' or 'recache'.
+ * @param string $source Either 'cache' or 'recache'.
* If 'cache', the values are allowed (but not obliged) to come from a cache.
*
* @return Site|null
*
* @since 1.21
*
- * @param string $source either 'cache' or 'recache'.
+ * @param string $source Either 'cache' or 'recache'.
* If 'cache', the values are allowed (but not obliged) to come from a cache.
*
* @return SiteList
*
* Intended for subclassing, e.g. to add a backwards-compatibility layer.
*
- * @param FormOptions $parameters
+ * @param FormOptions $opts
* @return FormOptions
*/
protected function fetchOptionsFromRequest( $opts ) {
* @todo This should not be static, then we can drop the parameter
* @todo Not called by anything, should be called by doHeader()
*
- * @param $context the object available as $this in non-static functions
+ * @param IContextSource $context The object available as $this in non-static functions
* @return string
*/
public static function makeLegend( IContextSource $context ) {
/**
* Get an HTMLForm descriptor array
- * @return Array
+ * @return array
*/
abstract protected function getFormFields();
/**
* Add pre-text to the form
- * @return String HTML which will be sent to $form->addPreText()
+ * @return string HTML which will be sent to $form->addPreText()
*/
protected function preText() {
return '';
/**
* Add post-text to the form
- * @return String HTML which will be sent to $form->addPostText()
+ * @return string HTML which will be sent to $form->addPostText()
*/
protected function postText() {
return '';
/**
* Play with the HTMLForm if you need to more substantially
- * @param $form HTMLForm
+ * @param HTMLForm $form
*/
protected function alterForm( HTMLForm $form ) {
}
/**
* Process the form on POST submission.
- * @param $data Array
- * @return Bool|Array true for success, false for didn't-try, array of errors on failure
+ * @param array $data
+ * @return bool|array True for success, false for didn't-try, array of errors on failure
*/
abstract public function onSubmit( array $data );
/**
* Called from execute() to check if the given user can perform this action.
* Failures here must throw subclasses of ErrorPageError.
- * @param $user User
+ * @param User $user
* @throws UserBlockedError
- * @return Bool true
+ * @return bool True
*/
protected function checkExecutePermissions( User $user ) {
$this->checkPermissions();
/**
* Whether this action requires the wiki not to be locked
- * @return Bool
+ * @return bool
*/
public function requiresWrite() {
return true;
/**
* Whether this action cannot be executed by a blocked user
- * @return Bool
+ * @return bool
*/
public function requiresUnblock() {
return true;
* Return part of the request string for a special redirect page
* This allows passing, e.g. action=history to Special:Mypage, etc.
*
- * @return String
+ * @return string
*/
public function getRedirectQuery() {
$params = array();
* aliases; the first in the array is the canonical alias. All registered special
* pages are guaranteed to have a property entry, and for that property array to
* contain at least one entry (English fallbacks will be added if necessary).
- * @return Object
+ * @return object
*/
static function getAliasList() {
if ( !is_object( self::$aliases ) ) {
* Return categorised listable special pages which are available
* for the current user, and everyone.
*
- * @param $user User object to check permissions, $wgUser will be used if
+ * @param User $user User object to check permissions, $wgUser will be used if
* if not provided
* @return array ( string => Specialpage )
*/
protected $opts;
/**
- * @var Array
+ * @var array
*/
protected $hideGroups = array();
/**
- * @var Array
+ * @var array
*/
protected $hideRights = array();
/**
- * @param $context IContextSource
- * @param $group null Unused
+ * @param IContextSource $context
+ * @param null $group Unused
* @param string $par Parameter passed to the page
*/
function __construct( IContextSource $context = null, $group = null, $par = null ) {
/**
* Show the special page
*
- * @param $par Mixed: parameter passed to the page or null
+ * @param string $par Parameter passed to the page or null
*/
public function execute( $par ) {
global $wgActiveUserDays;
}
/**
- * @param integer $period Seconds (do updates no more often than this)
- * @return integer How many seconds old the cache is
+ * @param intr $period Seconds (do updates no more often than this)
+ * @return int How many seconds old the cache is
*/
public static function mergeActiveUsers( $period ) {
global $wgActiveUserDays;
* Update the query cache as needed
*
* @param DatabaseBase $dbw
- * @param integer $window Maximum time range of new data to scan (in seconds)
+ * @param int $window Maximum time range of new data to scan (in seconds)
* @return bool Success
*/
protected static function doQueryCacheUpdate( DatabaseBase $dbw, $window ) {
/**
* Show the special page
*
- * @param $par Mixed: parameter passed to the page or null
+ * @param string $par Parameter passed to the page or null
*/
public function execute( $par ) {
$request = $this->getRequest();
$this->lang = ( $langObj ? $langObj : $wgContLang );
$this->langcode = $this->lang->getCode();
- $this->foreign = $this->langcode != $wgContLang->getCode();
+ $this->foreign = $this->langcode !== $wgContLang->getCode();
$request = $this->getRequest();
if ( $this->filter === 'all' ) {
$this->custom = null; // So won't match in either case
} else {
- $this->custom = ( $this->filter == 'unmodified' );
+ $this->custom = ( $this->filter === 'unmodified' );
}
$prefix = $this->getLanguage()->ucfirst( $request->getVal( 'prefix', '' ) );
- $prefix = $prefix != '' ? Title::makeTitleSafe( NS_MEDIAWIKI, $request->getVal( 'prefix', null ) ) : null;
+ $prefix = $prefix !== '' ?
+ Title::makeTitleSafe( NS_MEDIAWIKI, $request->getVal( 'prefix', null ) ) :
+ null;
+
if ( $prefix !== null ) {
$this->displayPrefix = $prefix->getDBkey();
$this->prefix = '/^' . preg_quote( $this->displayPrefix ) . '/i';
$msg = wfMessage( 'allmessages-language' );
$langSelect = Xml::languageSelector( $this->langcode, false, null, $attrs, $msg );
- $out = Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript, 'id' => 'mw-allmessages-form' ) ) .
+ $out = Xml::openElement( 'form', array(
+ 'method' => 'get',
+ 'action' => $wgScript,
+ 'id' => 'mw-allmessages-form'
+ ) ) .
Xml::fieldset( $this->msg( 'allmessages-filter-legend' )->text() ) .
Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
Xml::openElement( 'table', array( 'class' => 'mw-allmessages-table' ) ) . "\n" .
Xml::label( $this->msg( 'allmessages-prefix' )->text(), 'mw-allmessages-form-prefix' ) .
"</td>\n
<td class=\"mw-input\">" .
- Xml::input( 'prefix', 20, str_replace( '_', ' ', $this->displayPrefix ), array( 'id' => 'mw-allmessages-form-prefix' ) ) .
+ Xml::input(
+ 'prefix',
+ 20,
+ str_replace( '_', ' ', $this->displayPrefix ),
+ array( 'id' => 'mw-allmessages-form-prefix' )
+ ) .
"</td>\n
</tr>
<tr>\n
'filter',
'unmodified',
'mw-allmessages-form-filter-unmodified',
- ( $this->filter == 'unmodified' )
+ ( $this->filter === 'unmodified' )
) .
Xml::radioLabel( $this->msg( 'allmessages-filter-all' )->text(),
'filter',
'all',
'mw-allmessages-form-filter-all',
- ( $this->filter == 'all' )
+ ( $this->filter === 'all' )
) .
Xml::radioLabel( $this->msg( 'allmessages-filter-modified' )->text(),
'filter',
'modified',
'mw-allmessages-form-filter-modified',
- ( $this->filter == 'modified' )
+ ( $this->filter === 'modified' )
) .
"</td>\n
</tr>
* @param array $messageNames
* @param string $langcode What language code
* @param bool $foreign Whether the $langcode is not the content language
- * @return array: a 'pages' and 'talks' array with the keys of existing pages
+ * @return array A 'pages' and 'talks' array with the keys of existing pages
*/
public static function getCustomisedStatuses( $messageNames, $langcode = 'en', $foreign = false ) {
// FIXME: This function should be moved to Language:: or something.
$exists = false;
if ( $foreign ) {
$title = explode( '/', $s->page_title );
- if ( count( $title ) === 2 && $langcode == $title[1]
+ if ( count( $title ) === 2 && $langcode === $title[1]
&& isset( $xNames[$title[0]] )
) {
$exists = $title[0];
} elseif ( isset( $xNames[$s->page_title] ) ) {
$exists = $s->page_title;
}
- if ( $exists && $s->page_namespace == NS_MEDIAWIKI ) {
+ if ( $exists && $s->page_namespace === NS_MEDIAWIKI ) {
$pageFlags[$exists] = true;
- } elseif ( $exists && $s->page_namespace == NS_MEDIAWIKI_TALK ) {
+ } elseif ( $exists && $s->page_namespace === NS_MEDIAWIKI_TALK ) {
$talkFlags[$exists] = true;
}
}
$count++;
}
- if ( $count == $limit ) {
+ if ( $count === $limit ) {
break;
}
}
}
function getStartBody() {
- return Xml::openElement( 'table', array( 'class' => 'mw-datatable TablePager', 'id' => 'mw-allmessagestable' ) ) . "\n" .
+ return Xml::openElement( 'table', array(
+ 'class' => 'mw-datatable TablePager',
+ 'id' => 'mw-allmessagestable'
+ ) ) .
+ "\n" .
"<thead><tr>
<th rowspan=\"2\">" .
$this->msg( 'allmessagesname' )->escaped() . "
case 'am_actual' :
return Sanitizer::escapeHtmlAllowEntities( $value, ENT_QUOTES );
}
+
return '';
}
if ( $row->am_customised ) {
$s .= Xml::openElement( 'tr', $this->getRowAttrs( $row, true ) );
$formatted = strval( $this->formatValue( 'am_actual', $row->am_actual ) );
- if ( $formatted == '' ) {
+
+ if ( $formatted === '' ) {
$formatted = ' ';
}
+
$s .= Xml::tags( 'td', $this->getCellAttrs( 'am_actual', $row->am_actual ), $formatted )
. "</tr>\n";
}
function getRowAttrs( $row, $isSecond = false ) {
$arr = array();
+
if ( $row->am_customised ) {
$arr['class'] = 'allmessages-customised';
}
+
if ( !$isSecond ) {
$arr['id'] = Sanitizer::escapeId( 'msg_' . $this->getLanguage()->lcfirst( $row->am_title ) );
}
}
function getCellAttrs( $field, $value ) {
- if ( $this->mCurrentRow->am_customised && $field == 'am_title' ) {
+ if ( $this->mCurrentRow->am_customised && $field === 'am_title' ) {
return array( 'rowspan' => '2', 'class' => $field );
- } elseif ( $field == 'am_title' ) {
+ } elseif ( $field === 'am_title' ) {
return array( 'class' => $field );
} else {
return array( 'lang' => $this->langcode, 'dir' => $this->lang->getDir(), 'class' => $field );
/**
* HTML for the top form
*
- * @param $namespace Integer: a namespace constant (default NS_MAIN).
- * @param string $from dbKey we are starting listing at.
- * @param string $to dbKey we are ending listing at.
- * @param bool $hideredirects dont show redirects (default FALSE)
+ * @param int $namespace A namespace constant (default NS_MAIN).
+ * @param string $from DbKey we are starting listing at.
+ * @param string $to DbKey we are ending listing at.
+ * @param bool $hideredirects Dont show redirects (default false)
* @return string
*/
function namespaceForm( $namespace = NS_MAIN, $from = '', $to = '', $hideredirects = false ) {
}
/**
- * @param $namespace Integer (default NS_MAIN)
- * @param string $from list all pages from this name
- * @param string $to list all pages to this name
- * @param bool $hideredirects dont show redirects (default FALSE)
+ * @param int $namespace (default NS_MAIN)
+ * @param string $from List all pages from this name
+ * @param string $to List all pages to this name
+ * @param bool $hideredirects Dont show redirects (default false)
*/
function showToplevel( $namespace = NS_MAIN, $from = '', $to = '', $hideredirects = false ) {
$output = $this->getOutput();
/**
* Show a line of "ABC to DEF" ranges of articles
*
- * @param string $inpoint lower limit of pagenames
- * @param string $outpoint upper limit of pagenames
- * @param $namespace Integer (Default NS_MAIN)
- * @param bool $hideRedirects don't show redirects. Default: false
+ * @param string $inpoint Lower limit of pagenames
+ * @param string $outpoint Upper limit of pagenames
+ * @param int $namespace (Default NS_MAIN)
+ * @param bool $hideRedirects Don't show redirects. Default: false
* @return string
*/
function showline( $inpoint, $outpoint, $namespace = NS_MAIN, $hideRedirects = false ) {
/**
* @param int $namespace Namespace (Default NS_MAIN)
- * @param string $from list all pages from this name (default FALSE)
- * @param string $to list all pages to this name (default FALSE)
- * @param bool $hideredirects dont show redirects (default FALSE)
+ * @param string $from List all pages from this name (default FALSE)
+ * @param string $to List all pages to this name (default FALSE)
+ * @param bool $hideredirects Dont show redirects (default FALSE)
*/
function showChunk( $namespace = NS_MAIN, $from = false, $to = false, $hideredirects = false ) {
$output = $this->getOutput();
}
/**
- * @param $ns Integer: the namespace of the article
- * @param string $text the name of the article
+ * @param int $ns The namespace of the article
+ * @param string $text The name of the article
* @return array( int namespace, string dbkey, string pagename ) or NULL on error
*/
protected function getNamespaceKeyAndText( $ns, $text ) {
* or as subpage (Special:Block/Foo) */
protected $target;
- /** @var Integer Block::TYPE_ constant */
+ /** @var int Block::TYPE_ constant */
protected $type;
- /** @var User|String the previous block target */
+ /** @var User|string The previous block target */
protected $previousTarget;
- /** @var Bool whether the previous submission of the form asked for HideUser */
+ /** @var bool Whether the previous submission of the form asked for HideUser */
protected $requestedHideUser;
- /** @var Bool */
+ /** @var bool */
protected $alreadyBlocked;
- /** @var Array */
+ /** @var array */
protected $preErrors = array();
public function __construct() {
/**
* Handle some magic here
*
- * @param $par String
+ * @param string $par
*/
protected function setParameter( $par ) {
# Extract variables from the request. Try not to get into a situation where we
/**
* Customizes the HTMLForm a bit
*
- * @param $form HTMLForm
+ * @param HTMLForm $form
*/
protected function alterForm( HTMLForm $form ) {
$form->setWrapperLegendMsg( 'blockip-legend' );
/**
* Get the HTMLForm descriptor array for the block form
- * @return Array
+ * @return array
*/
protected function getFormFields() {
global $wgBlockAllowsUTEdit;
* If the user has already been blocked with similar settings, load that block
* and change the defaults for the form fields to match the existing settings.
* @param array $fields HTMLForm descriptor array
- * @return Bool whether fields were altered (that is, whether the target is
+ * @return bool Whether fields were altered (that is, whether the target is
* already blocked)
*/
protected function maybeAlterFormDefaults( &$fields ) {
/**
* Add header elements like block log entries, etc.
- * @return String
+ * @return string
*/
protected function preText() {
$this->getOutput()->addModules( 'mediawiki.special.block' );
/**
* Get a user page target for things like logs.
* This handles account and IP range targets.
- * @param $target User|string
+ * @param User|string $target
* @return Title|null
*/
protected static function getTargetUserTitle( $target ) {
* TODO: should be in Block.php?
* @param string $par subpage parameter passed to setup, or data value from
* the HTMLForm
- * @param $request WebRequest optionally try and get data from a request too
+ * @param WebRequest $request Optionally try and get data from a request too
* @return array( User|string|null, Block::TYPE_ constant|null )
*/
public static function getTargetAndType( $par, WebRequest $request = null ) {
/**
* HTMLForm field validation-callback for Target field.
* @since 1.18
- * @param $value String
- * @param $alldata Array
- * @param $form HTMLForm
+ * @param string $value
+ * @param array $alldata
+ * @param HTMLForm $form
* @return Message
*/
public static function validateTargetField( $value, $alldata, $form ) {
/**
* Submit callback for an HTMLForm object, will simply pass
- * @param $data array
- * @param $form HTMLForm
- * @return Bool|String
+ * @param array $data
+ * @param HTMLForm $form
+ * @return bool|string
*/
public static function processUIForm( array $data, HTMLForm $form ) {
return self::processForm( $data, $form->getContext() );
/**
* Given the form data, actually implement a block
- * @param $data Array
- * @param $context IContextSource
- * @return Bool|String
+ * @param array $data
+ * @param IContextSource $context
+ * @return bool|string
*/
public static function processForm( array $data, IContextSource $context ) {
global $wgBlockAllowsUTEdit, $wgHideUserContribLimit;
* Get an array of suggested block durations from MediaWiki:Ipboptions
* @todo FIXME: This uses a rather odd syntax for the options, should it be converted
* to the standard "**<duration>|<displayname>" format?
- * @param $lang Language|null the language to get the durations in, or null to use
+ * @param Language|null $lang The language to get the durations in, or null to use
* the wiki's content language
- * @return Array
+ * @return array
*/
public static function getSuggestedDurations( $lang = null ) {
$a = array();
/**
* Convert a submitted expiry time, which may be relative ("2 weeks", etc) or absolute
* ("24 May 2034", etc), into an absolute timestamp we can put into the database.
- * @param string $expiry whatever was typed into the form
- * @return String: timestamp or "infinity" string for the DB implementation
+ * @param string $expiry Whatever was typed into the form
+ * @return string Timestamp or "infinity" string for the DB implementation
*/
public static function parseExpiryInput( $expiry ) {
static $infinity;
/**
* Can we do an email block?
- * @param $user User: the sysop wanting to make a block
- * @return Boolean
+ * @param User $user The sysop wanting to make a block
+ * @return bool
*/
public static function canBlockEmail( $user ) {
global $wgEnableUserEmail, $wgSysopEmailBans;
* bug 15810: blocked admins should not be able to block/unblock
* others, and probably shouldn't be able to unblock themselves
* either.
- * @param $user User|Int|String
- * @param $performer User user doing the request
- * @return Bool|String true or error message key
+ * @param User|int|string $user
+ * @param User $performer User doing the request
+ * @return bool|string True or error message key
*/
public static function checkUnblockSelf( $user, User $performer ) {
if ( is_int( $user ) ) {
/**
* Return a comma-delimited list of "flags" to be passed to the log
* reader for this block, to provide more information in the logs
- * @param array $data from HTMLForm data
- * @param $type Block::TYPE_ constant (USER, RANGE, or IP)
+ * @param array $data From HTMLForm data
+ * @param int $type Block::TYPE_ constant (USER, RANGE, or IP)
* @return string
*/
protected static function blockLogFlags( array $data, $type ) {
/**
* Process the form on POST submission.
- * @param $data Array
- * @return Bool|Array true for success, false for didn't-try, array of errors on failure
+ * @param array $data
+ * @return bool|array True for success, false for didn't-try, array of errors on failure
*/
public function onSubmit( array $data ) {
// This isn't used since we need that HTMLForm that's passed in the
/**
* Main execution point
*
- * @param string $par title fragment
+ * @param string $par Title fragment
*/
public function execute( $par ) {
$this->setHeaders();
protected $page;
/**
- * @param $page SpecialPage
- * @param $conds Array
+ * @param SpecialPage $page
+ * @param array $conds
*/
function __construct( $page, $conds ) {
$this->page = $page;
* Basically don't do any validation. If it's a number that's fine. Also,
* add it to the list if it's not there already
*
- * @param $value
- * @param $alldata
+ * @param string $value
+ * @param array $alldata
* @return bool
*/
function validate( $value, $alldata ) {
* If the cache is enabled or not.
*
* @since 1.20
- * @var boolean
+ * @var bool
*/
protected $cacheEnabled = true;
*
* @since 1.20
*
- * @param $subPage string|null
+ * @param string|null $subPage
*/
protected function afterExecute( $subPage ) {
$this->saveCache();
* Sets if the cache should be enabled or not.
*
* @since 1.20
- * @param boolean $cacheEnabled
+ * @param bool $cacheEnabled
*/
public function setCacheEnabled( $cacheEnabled ) {
$this->cacheHelper->setCacheEnabled( $cacheEnabled );
*
* @since 1.20
*
- * @param integer|null $cacheExpiry Sets the cache expiry, either ttl in seconds or unix timestamp.
- * @param boolean|null $cacheEnabled Sets if the cache should be enabled or not.
+ * @param int|null $cacheExpiry Sets the cache expiry, either ttl in seconds or unix timestamp.
+ * @param bool|null $cacheEnabled Sets if the cache should be enabled or not.
*/
public function startCache( $cacheExpiry = null, $cacheEnabled = null ) {
if ( !isset( $this->cacheHelper ) ) {
*
* @since 1.20
*
- * @param integer $cacheExpiry
+ * @param int $cacheExpiry
*/
public function setExpiry( $cacheExpiry ) {
$this->cacheHelper->setExpiry( $cacheExpiry );
*
* @since 1.20
*
- * @param boolean $hasCached
+ * @param bool $hasCached
*/
public function onCacheInitialized( $hasCached ) {
if ( $hasCached ) {
}
/**
- * @return Bool
+ * @return bool
*/
function isListed() {
global $wgAuth;
/**
* Main execution point
+ * @param string $par
*/
function execute( $par ) {
global $wgAuth;
}
/**
- * @param $type string
+ * @param string $type
*/
protected function doReturnTo( $type = 'hard' ) {
$titleObj = Title::newFromText( $this->getRequest()->getVal( 'returnto' ) );
}
/**
- * @param $msg string
+ * @param string $msg
*/
protected function error( $msg ) {
$this->getOutput()->wrapWikiMsg( "<p class='error'>\n$1\n</p>", $msg );
}
/**
- * @param $fields array
+ * @param array $fields
* @return string
*/
protected function pretty( $fields ) {
}
/**
- * @param $user User
- * @param $pass string
- * @param $newaddr string
- * @return bool|string true or string on success, false on failure
+ * @param User $user
+ * @param string $pass
+ * @param string $newaddr
+ * @return bool|string True or string on success, false on failure
*/
protected function attemptChange( User $user, $pass, $newaddr ) {
global $wgAuth, $wgPasswordAttemptThrottle;
/**
* Show a form for filtering namespace and username
*
- * @param $par String
- * @return String
+ * @param string $par
+ * @return string
*/
public function execute( $par ) {
$this->setHeaders();
/**
* Generates the subheading with links
- * @param $userObj User object for the target
- * @return String: appropriately-escaped HTML to be output literally
+ * @param User $userObj User object for the target
+ * @return string Appropriately-escaped HTML to be output literally
* @todo FIXME: Almost the same as getSubTitle in SpecialDeletedContributions.php.
* Could be combined.
*/
/**
* Links to different places.
- * @param $userpage Title: Target user page
- * @param $talkpage Title: Talk page
- * @param $target User: Target user object
+ * @param Title $userpage Target user page
+ * @param Title $talkpage Talk page
+ * @param User $target Target user object
* @return array
*/
public function getUserLinks( Title $userpage, Title $talkpage, User $target ) {
/**
* Generates the namespace selector form with hidden attributes.
- * @return String: HTML fragment
+ * @return string HTML fragment
*/
protected function getForm() {
global $wgScript;
* This method basically executes the exact same code as the parent class, though with
* a hook added, to allow extentions to add additional queries.
*
- * @param string $offset index offset, inclusive
- * @param $limit Integer: exact query limit
- * @param $descending Boolean: query direction, false for ascending, true for descending
+ * @param string $offset Index offset, inclusive
+ * @param int $limit Exact query limit
+ * @param bool $descending Query direction, false for ascending, true for descending
* @return ResultWrapper
*/
function reallyDoQuery( $offset, $limit, $descending ) {
* was not written by the target user.
*
* @todo This would probably look a lot nicer in a table.
- * @param $row
+ * @param object $row
* @return string
*/
function formatRow( $row ) {
* written by the target user.
*
* @todo This would probably look a lot nicer in a table.
- * @param $row
+ * @param stdClass $row
* @return string
*/
function formatRow( $row ) {
/**
* Generates the subheading with links
- * @param $userObj User object for the target
- * @return String: appropriately-escaped HTML to be output literally
+ * @param User $userObj User object for the target
+ * @return string Appropriately-escaped HTML to be output literally
* @todo FIXME: Almost the same as contributionsSub in SpecialContributions.php. Could be combined.
*/
function getSubTitle( $userObj ) {
/**
* Generates the namespace selector form with hidden attributes.
- * @param array $options the options to be included.
+ * @param array $options The options to be included.
* @return string
*/
function getForm( $options ) {
/**
* Main execution point
*
- * @param $mode int
+ * @param int $mode
*/
public function execute( $mode ) {
$this->setHeaders();
* Extract a list of titles from a blob of text, returning
* (prefixed) strings; unwatchable titles are ignored
*
- * @param $list String
+ * @param string $list
* @return array
*/
private function extractTitles( $list ) {
* $titles can be an array of strings or Title objects; the former
* is preferred, since Titles are very memory-heavy
*
- * @param array $titles of strings, or Title objects
- * @param $output String
+ * @param array $titles Array of strings, or Title objects
+ * @param string $output
*/
private function showTitles( $titles, &$output ) {
$talk = $this->msg( 'talkpagelinktext' )->escaped();
* @param Title $title
* @param int $namespace
* @param string $dbKey
- * @return bool: Whether this item is valid
+ * @return bool Whether this item is valid
*/
private function checkTitle( $title, $namespace, $dbKey ) {
if ( $title
* $titles can be an array of strings or Title objects; the former
* is preferred, since Titles are very memory-heavy
*
- * @param array $titles of strings, or Title objects
+ * @param array $titles Array of strings, or Title objects
*/
private function watchTitles( $titles ) {
$dbw = wfGetDB( DB_MASTER );
* $titles can be an array of strings or Title objects; the former
* is preferred, since Titles are very memory-heavy
*
- * @param array $titles of strings, or Title objects
+ * @param array $titles Array of strings, or Title objects
*/
private function unwatchTitles( $titles ) {
$dbw = wfGetDB( DB_MASTER );
/**
* Build the label for a checkbox, with a link to the title, and various additional bits
*
- * @param $title Title
+ * @param Title $title
* @return string
*/
private function buildRemoveLine( $title ) {
* Determine whether we are editing the watchlist, and if so, what
* kind of editing operation
*
- * @param $request WebRequest
- * @param $par mixed
+ * @param WebRequest $request
+ * @param string $par
* @return int
*/
public static function getMode( $request, $par ) {
* Build a set of links for convenient navigation
* between watchlist viewing and editing modes
*
- * @param $unused
+ * @param null $unused
* @return string
*/
public static function buildTools( $unused ) {
*
* @param string $value the value the field was submitted with
* @param array $alldata the data collected from the form
- * @return Mixed Bool true on success, or String error to display.
+ * @return bool|string Bool true on success, or String error to display.
*/
function validate( $value, $alldata ) {
// Need to call into grandparent to be a good citizen. :)
* Validate target User
*
* @param string $target target user name
- * @return User object on success or a string on error
+ * @return User User object on success or a string on error
*/
public static function getTarget( $target ) {
if ( $target == '' ) {
/**
* Check whether a user is allowed to send email
*
- * @param $user User object
- * @param string $editToken edit token
- * @return null on success or string on error
+ * @param User $user
+ * @param string $editToken Edit token
+ * @return string|null Null on success or string on error
*/
public static function getPermissionsError( $user, $editToken ) {
global $wgEnableEmail, $wgEnableUserEmail;
/**
* Form to ask for target user name.
*
- * @param string $name user name submitted.
- * @return String: form asking for user name.
+ * @param string $name User name submitted.
+ * @return string Form asking for user name.
*/
protected function userForm( $name ) {
global $wgScript;
* Submit callback for an HTMLForm object, will simply call submit().
*
* @since 1.20
- * @param $data array
- * @param $form HTMLForm object
+ * @param array $data
+ * @param HTMLForm $form
* @return Status|string|bool
*/
public static function uiSubmit( array $data, HTMLForm $form ) {
*
* @param array $data
* @param IContextSource $context
- * @return Mixed: Status object, or potentially a String on error
+ * @return Status|string|bool Status object, or potentially a String on error
* or maybe even true on success if anything uses the EmailUser hook.
*/
public static function submit( array $data, IContextSource $context ) {
*/
class SpecialExpandTemplates extends SpecialPage {
- /** @var boolean whether or not to show the XML parse tree */
+ /** @var bool Whether or not to show the XML parse tree */
protected $generateXML;
- /** @var boolean whether or not to show the raw HTML code */
+ /** @var bool Whether or not to show the raw HTML code */
protected $generateRawHtml;
- /** @var boolean whether or not to remove comments in the expanded wikitext */
+ /** @var bool Whether or not to remove comments in the expanded wikitext */
protected $removeComments;
- /** @var boolean whether or not to remove <nowiki> tags in the expanded wikitext */
+ /** @var bool Whether or not to remove <nowiki> tags in the expanded wikitext */
protected $removeNowiki;
/** @var maximum size in bytes to include. 50MB allows fixing those huge pages */
* Do the actual page exporting
*
* @param string $page user input on what page(s) to export
- * @param $history Mixed: one of the WikiExporter history export constants
- * @param $list_authors Boolean: Whether to add distinct author list (when
- * not returning full history)
- * @param $exportall Boolean: Whether to export everything
+ * @param int $history One of the WikiExporter history export constants
+ * @param bool $list_authors Whether to add distinct author list (when
+ * not returning full history)
+ * @param bool $exportall Whether to export everything
*/
private function doExport( $page, $history, $list_authors, $exportall ) {
}
/**
- * @param $title Title
+ * @param Title $title
* @return array
*/
private function getPagesFromCategory( $title ) {
}
/**
- * @param $nsindex int
+ * @param int $nsindex
* @return array
*/
private function getPagesFromNamespace( $nsindex ) {
/**
* Expand a list of pages to include templates used in those pages.
- * @param $inputPages array, list of titles to look up
- * @param $pageSet array, associative array indexed by titles for output
- * @return array associative array index by titles
+ * @param array $inputPages List of titles to look up
+ * @param array $pageSet Associative array indexed by titles for output
+ * @return array Associative array index by titles
*/
private function getTemplates( $inputPages, $pageSet ) {
return $this->getLinks( $inputPages, $pageSet,
/**
* Validate link depth setting, if available.
- * @param $depth int
+ * @param int $depth
* @return int
*/
private function validateLinkDepth( $depth ) {
/**
* Expand a list of pages to include pages linked to from that page.
- * @param $inputPages array
- * @param $pageSet array
- * @param $depth int
+ * @param array $inputPages
+ * @param array $pageSet
+ * @param int $depth
* @return array
*/
private function getPageLinks( $inputPages, $pageSet, $depth ) {
/**
* Expand a list of pages to include images used in those pages.
*
- * @param $inputPages array, list of titles to look up
- * @param $pageSet array, associative array indexed by titles for output
+ * @param array $inputPages List of titles to look up
+ * @param array $pageSet Associative array indexed by titles for output
*
* @return array associative array index by titles
*/
/**
* @param Skin $skin
* @param object $result Database row
- * @return String
+ * @return string
*/
function formatResult( $skin, $result ) {
global $wgContLang;
/**
* @param WikiImporter $importer
- * @param $upload
- * @param $interwiki
+ * @param bool $upload
+ * @param string $interwiki
* @param string|bool $reason
*/
function __construct( $importer, $upload, $interwiki, $reason = false ) {
* @param Title $title
* @param Title $origTitle
* @param int $revisionCount
- * @param $successCount
- * @param $pageInfo
+ * @param int $successCount
+ * @param array $pageInfo
* @return void
*/
function reportPage( $title, $origTitle, $revisionCount, $successCount, $pageInfo ) {
/**
* Return an appropriately formatted LIKE query and the clause
*
- * @param String $query Search pattern to search for
- * @param String $prot Protocol, e.g. 'http://'
+ * @param string $query Search pattern to search for
+ * @param string $prot Protocol, e.g. 'http://'
*
* @return array
*/
* Build the where clause of the query.
*
* Replaces the older mQueryConds member variable.
- * @param $table String Either "image" or "oldimage"
+ * @param string $table Either "image" or "oldimage"
* @return array The query conditions.
*/
protected function buildQueryConds( $table ) {
}
/**
- * @return Array
+ * @return array
*/
function getFieldNames() {
if ( !$this->mFieldNames ) {
*
* This is a bit hacky.
*
- * @param $table String Either 'image' or 'oldimage'
+ * @param string $table Either 'image' or 'oldimage'
* @return array Query info
*/
protected function getQueryInfoReal( $table ) {
* @note $asc is named $descending in IndexPager base class. However
* it is true when the order is ascending, and false when the order
* is descending, so I renamed it to $asc here.
+ * @param int $offset
+ * @param int $limit
+ * @param bool $asc
*/
function reallyDoQuery( $offset, $limit, $asc ) {
$prevTableName = $this->mTableName;
*
* Note: This will throw away some results
*
- * @param $res1 ResultWrapper
- * @param $res2 ResultWrapper
- * @param $limit int
- * @param $ascending boolean See note about $asc in $this->reallyDoQuery
+ * @param ResultWrapper $res1
+ * @param ResultWrapper $res2
+ * @param int $limit
+ * @param bool $ascending See note about $asc in $this->reallyDoQuery
* @return FakeResultWrapper $res1 and $res2 combined
*/
protected function combineResult( $res1, $res2, $limit, $ascending ) {
class UsersPager extends AlphabeticPager {
/**
- * @param $context IContextSource
+ * @param IContextSource $context
* @param array $par (Default null)
- * @param $including boolean Whether this page is being transcluded in
+ * @param bool $including Whether this page is being transcluded in
* another page
*/
function __construct( IContextSource $context = null, $par = null, $including = null ) {
}
/**
- * @return Array
+ * @return array
*/
function getQueryInfo() {
$dbr = wfGetDB( DB_SLAVE );
}
/**
- * @param $row Object
- * @return String
+ * @param stdClass $row
+ * @return string
*/
function formatRow( $row ) {
if ( $row->user_id == 0 ) { #Bug 16487
/**
* Get a list of groups the specified user belongs to
*
- * @param $uid Integer: user id
+ * @param int $uid User id
* @return array
*/
protected static function getGroups( $uid ) {
/**
* Format a link to a group description page
*
- * @param string $group group name
+ * @param string $group Group name
* @param string $username Username
* @return string
*/
/**
* Set page title and show header for this log type
- * @param $type string
+ * @param string $type
* @since 1.19
*/
protected function addHeader( $type ) {
}
/**
- * @param $type string
+ * @param string $type
* @return bool
*/
protected static function isValidType( $type ) {
}
/**
- * @param $skin Skin
- * @param $result
+ * @param Skin $skin
+ * @param object $result
* @return string
*/
function formatResult( $skin, $result ) {
/**
* Make a link to "what links here" for the specified title
*
- * @param $title Title being queried
- * @param string $caption text to display on the link
- * @return String
+ * @param Title $title Title being queried
+ * @param string $caption Text to display on the link
+ * @return string
*/
function makeWlhLink( $title, $caption ) {
$wlh = SpecialPage::getTitleFor( 'Whatlinkshere', $title->getPrefixedDBkey() );
/**
* Is this report expensive, i.e should it be cached?
*
- * @return Boolean
+ * @return bool
*/
public function isExpensive() {
return true;
/**
* Is there a feed available?
*
- * @return Boolean
+ * @return bool
*/
public function isSyndicated() {
return false;
/**
* Sort the results in descending order?
*
- * @return Boolean
+ * @return bool
*/
public function sortDescending() {
return true;
/**
* Pre-cache page existence to speed up link generation
*
- * @param $db DatabaseBase connection
+ * @param DatabaseBase $db
* @param ResultWrapper $res
*/
public function preprocessResults( $db, $res ) {
*
* @param Title $title Title to make the link for
* @param object $result Result row
- * @return String
+ * @return string
*/
private function makeWlhLink( $title, $result ) {
$wlh = SpecialPage::getTitleFor( 'Whatlinkshere', $title->getPrefixedText() );
/**
* Show a form for filtering namespace and username
*
- * @param $par String
- * @return String
+ * @param string $par
+ * @return string
*/
public function execute( $par ) {
$out = $this->getOutput();
* size, user links, and a comment
*
* @param object $result Result row
- * @return String
+ * @return string
*/
public function formatRow( $result ) {
$title = Title::newFromRow( $result );
* Should a specific result row provide "patrollable" links?
*
* @param object $result Result row
- * @return Boolean
+ * @return bool
*/
protected function patrollable( $result ) {
return ( $this->getUser()->useNPPatrol() && !$result->rc_patrolled );
/**
* Output a subscription feed listing recent edits to this page.
*
- * @param $type String
+ * @param string $type
*/
protected function feed( $type ) {
global $wgFeed, $wgFeedClasses, $wgFeedLimit;
* Process the form. At this point we know that the user passes all the criteria in
* userCanExecute(), and if the data array contains 'Username', etc, then Username
* resets are allowed.
- * @param $data array
+ * @param array $data
* @throws MWException
* @throws ThrottledError|PermissionsError
- * @return Bool|Array
+ * @return bool|array
*/
public function onSubmit( array $data ) {
global $wgAuth;
/**
* Hide the password reset page if resets are disabled.
- * @return Bool
+ * @return bool
*/
function isListed() {
if ( $this->canChangePassword( $this->getUser() ) === true ) {
/**
* Entry point : initialise variables and call subfunctions.
- * @param string $par becomes "FOO" when called like Special:Prefixindex/FOO (default null)
+ * @param string $par Becomes "FOO" when called like Special:Prefixindex/FOO (default null)
*/
function execute( $par ) {
global $wgContLang;
/**
* HTML for the top form
- * @param $namespace Integer: a namespace constant (default NS_MAIN).
- * @param string $from dbKey we are starting listing at.
+ * @param int $namespace A namespace constant (default NS_MAIN).
+ * @param string $from DbKey we are starting listing at.
* @return string
*/
protected function namespacePrefixForm( $namespace = NS_MAIN, $from = '' ) {
}
/**
- * @param $namespace Integer, default NS_MAIN
- * @param $prefix String
- * @param string $from list all pages from this name (default FALSE)
+ * @param int $namespace Default NS_MAIN
+ * @param string $prefix
+ * @param string $from List all pages from this name (default FALSE)
*/
protected function showPrefixChunk( $namespace = NS_MAIN, $prefix, $from = null ) {
global $wgContLang;
* @param bool $indefOnly Only indefinite protection
* @param bool $cascadeOnly Only cascading protection
* @param bool $noRedirect Don't show redirects
- * @return String: input form
+ * @return string Input form
*/
protected function showOptions( $namespace, $type = 'edit', $level, $sizetype,
$size, $indefOnly, $cascadeOnly, $noRedirect
* Prepare the namespace filter drop-down; standard namespace
* selector, sans the MediaWiki namespace
*
- * @param $namespace Mixed: pre-select namespace
- * @return String
+ * @param string|null $namespace Pre-select namespace
+ * @return string
*/
protected function getNamespaceMenu( $namespace = null ) {
return Html::rawElement( 'span', array( 'style' => 'white-space: nowrap;' ),
/**
* Creates the input label of the restriction type
- * @param $pr_type string Protection type
+ * @param string $pr_type Protection type
* @return string Formatted HTML
*/
protected function getTypeMenu( $pr_type ) {
/**
* Creates the input label of the restriction level
- * @param $pr_level string Protection level
+ * @param string $pr_level Protection level
* @return string Formatted HTML
*/
protected function getLevelMenu( $pr_level ) {
}
/**
- * @param $namespace Integer:
- * @param $type string
- * @param $level string
+ * @param int $namespace
+ * @param string $type
+ * @param string $level
* @return string
* @private
*/
* Prepare the namespace filter drop-down; standard namespace
* selector, sans the MediaWiki namespace
*
- * @param $namespace Mixed: pre-select namespace
+ * @param string|null $namespace Pre-select namespace
* @return string
*/
function getNamespaceMenu( $namespace = null ) {
/**
* Choose a random title.
- * @return Title object (or null if nothing to choose from)
+ * @return Title|null Title object (or null if nothing to choose from)
*/
public function getRandomTitle() {
// Convert to float, since we do math with the random number.
* was a large gap in the distribution of cl_timestamp values. This way instead
* of things to the right of the gap being favoured, both sides of the gap
* are favoured.
- * @return Array Query information.
+ * @return array Query information.
*/
protected function getQueryInfo( $rand, $offset, $up ) {
$op = $up ? '>=' : '<=';
* Get the lowest and highest timestamp for a category.
*
* @param Title $category
- * @return Array The lowest and highest timestamp
+ * @return array The lowest and highest timestamp
* @throws MWException if category has no entries.
*/
protected function getMinAndMaxForCat( Title $category ) {
* @param float $rand A random number that is converted to a random timestamp
* @param int $offset A small offset to make the result seem more "random"
* @param bool $up Get the result above the random value
- * @param String $fname The name of the calling method
- * @return Array Info for the title selected.
+ * @param string $fname The name of the calling method
+ * @return array Info for the title selected.
*/
private function selectRandomPageFromDB( $rand, $offset, $up, $fname = __METHOD__ ) {
$dbr = wfGetDB( DB_SLAVE );
/**
* Get a comma-delimited list of namespaces we don't have
* any pages in
- * @return String
+ * @return string
*/
private function getNsList() {
global $wgContLang;
/**
* Choose a random title.
- * @return Title object (or null if nothing to choose from)
+ * @return Title|null Title object (or null if nothing to choose from)
*/
public function getRandomTitle() {
$randstr = wfRandom();
/** @var string Edit token for securing image views against XSS */
private $token;
- /** @var Title object for target parameter */
+ /** @var Title Title object for target parameter */
private $targetObj;
/** @var string Deletion type, may be revision, archive, oldimage, filearchive, logging. */
private $typeName;
- /** @var array of checkbox specs (message, name, deletion bits) */
+ /** @var array Array of checkbox specs (message, name, deletion bits) */
private $checks;
/** @var array UI Labels about the current type */
private $typeLabels;
- /** @var RevDel_List object, storing the list of items to be deleted/undeleted */
+ /** @var RevDel_List RevDel_List object, storing the list of items to be deleted/undeleted */
private $revDelList;
/** @var bool Whether user is allowed to perform the action */
/**
* Show a deleted file version requested by the visitor.
* TODO Mostly copied from Special:Undelete. Refactor.
+ * @param string $archiveName
*/
protected function tryShowFile( $archiveName ) {
$repo = RepoGroup::singleton()->getLocalRepo();
/**
* Get the list object for this request
+ * @return RevDel_List
*/
protected function getList() {
if ( is_null( $this->revDelList ) ) {
}
/**
- * @return String: HTML
+ * @return string HTML
*/
protected function buildCheckBoxes() {
$html = '<table>';
/**
* Do the write operations. Simple wrapper for RevDel_*List::setVisibility().
- * @param $bitfield
- * @param $reason
- * @param $title
+ * @param int $bitfield
+ * @param string $reason
+ * @param Title $title
* @return Status
*/
protected function save( $bitfield, $reason, $title ) {
*
* @note: also called from Wiki.php
*
- * @param integer $maxJobs Maximum number of jobs to run
+ * @param int $maxJobs Maximum number of jobs to run
* @return void
*/
public static function executeJobs( $maxJobs ) {
/** @var SearchEngine Search engine */
protected $searchEngine;
- /** @var String Search engine type, if not default */
+ /** @var string Search engine type, if not default */
protected $searchEngineType;
- /** @var Array For links */
+ /** @var array For links */
protected $extraParams = array();
- /** @var String No idea, apparently used by some other classes */
+ /** @var string No idea, apparently used by some other classes */
protected $mPrefix;
/**
/**
* Entry point
*
- * @param string $par or null
+ * @param string $par
*/
public function execute( $par ) {
$this->setHeaders();
/**
* If an exact title match can be found, jump straight ahead to it.
*
- * @param $term String
+ * @param string $term
*/
public function goResult( $term ) {
$this->setupPage( $term );
# If there's an exact or very near match, jump right there.
$title = SearchEngine::getNearMatch( $term );
- if ( !wfRunHooks( 'SpecialSearchGo', array( &$title, &$term ) ) ) {
- # Hook requested termination
- return;
- }
-
if ( !is_null( $title ) ) {
$this->getOutput()->redirect( $title->getFullURL() );
}
/**
- * @param $term String
+ * @param string $term
*/
public function showResults( $term ) {
global $wgDisableTextSearch, $wgSearchForwardUrl, $wgContLang, $wgScript;
if ( $num || $this->offset ) {
$out->addHTML( "<p class='mw-search-pager-bottom'>{$prevnext}</p>\n" );
}
- wfRunHooks( 'SpecialSearchResultsAppend', array( $this, $out, $term ) );
}
/**
- * @param $title Title
+ * @param Title $title
* @param int $num The number of search results found
- * @param $titleMatches null|SearchResultSet results from title search
- * @param $textMatches null|SearchResultSet results from text search
+ * @param null|SearchResultSet $titleMatches Results from title search
+ * @param null|SearchResultSet $textMatches Results from text search
*/
protected function showCreateLink( $title, $num, $titleMatches, $textMatches ) {
// show direct page/create link if applicable
}
/**
- * @param $term string
+ * @param string $term
*/
protected function setupPage( $term ) {
# Should advanced UI be used?
* Extract "power search" namespace settings from the request object,
* returning a list of index numbers to search.
*
- * @param $request WebRequest
- * @return Array
+ * @param WebRequest $request
+ * @return array
*/
protected function powerSearch( &$request ) {
$arr = array();
/**
* Reconstruct the 'power search' options for links
*
- * @return Array
+ * @return array
*/
protected function powerSearchOptions() {
$opt = array();
/**
* Show whole set of results
*
- * @param $matches SearchResultSet
+ * @param SearchResultSet $matches
*
* @return string
*/
/**
* Format a single hit result
*
- * @param $result SearchResult
- * @param array $terms terms to highlight
+ * @param SearchResult $result
+ * @param array $terms Terms to highlight
*
* @return string
*/
/**
* Show results from other wikis
*
- * @param $matches SearchResultSet|array
- * @param $query String
+ * @param SearchResultSet|array $matches
+ * @param string $query
*
* @return string
*/
/**
* Show single interwiki link
*
- * @param $result SearchResult
- * @param $lastInterwiki String
- * @param $query String
+ * @param SearchResult $result
+ * @param string $lastInterwiki
+ * @param string $query
* @param array $customCaptions iw prefix -> caption
*
* @return string
}
/**
- * @param $profile
- * @param $term
- * @return String
+ * @param string $profile
+ * @param string $term
+ * @return string
*/
protected function getProfileForm( $profile, $term ) {
// Hidden stuff
/**
* Generates the power search box at [[Special:Search]]
*
- * @param string $term search term
- * @param $opts array
- * @return String: HTML form
+ * @param string $term Search term
+ * @param array $opts
+ * @return string HTML form
*/
protected function powerSearchBox( $term, $opts ) {
global $wgContLang;
}
/**
- * @param $term
- * @param $resultsShown
- * @param $totalNum
+ * @param string $term
+ * @param int $resultsShown
+ * @param int $totalNum
* @return string
*/
protected function formHeader( $term, $resultsShown, $totalNum ) {
}
/**
- * @param $term string
+ * @param string $term
* @return string
*/
protected function shortDialog( $term ) {
/**
* Make a search link with some target namespaces
*
- * @param $term String
- * @param array $namespaces ignored
- * @param string $label link's text
- * @param string $tooltip link's tooltip
- * @param array $params query string parameters
- * @return String: HTML fragment
+ * @param string $term
+ * @param array $namespaces Ignored
+ * @param string $label Link's text
+ * @param string $tooltip Link's tooltip
+ * @param array $params Query string parameters
+ * @return string HTML fragment
*/
protected function makeSearchLink( $term, $namespaces, $label, $tooltip, $params = array() ) {
$opt = $params;
/**
* Check if query starts with image: prefix
*
- * @param string $term the string to check
- * @return Boolean
+ * @param string $term The string to check
+ * @return bool
*/
protected function startsWithImage( $term ) {
global $wgContLang;
/**
* Check if query starts with all: prefix
*
- * @param string $term the string to check
- * @return Boolean
+ * @param string $term The string to check
+ * @return bool
*/
protected function startsWithAll( $term ) {
* user navigates search results.
* @since 1.18
*
- * @param $key
- * @param $value
+ * @param string $key
+ * @param mixed $value
*/
public function setExtraParam( $key, $value ) {
$this->extraParams[$key] = $value;
}
/**
- * @param $db DatabaseBase
+ * @param DatabaseBase $db
* @param ResultWrapper $res
*/
function preprocessResults( $db, $res ) {
* Submit callback for an HTMLForm object
* @param array $data
* @param HTMLForm $form
- * @return Array( Array(message key, parameters)
+ * @return array|bool Array(message key, parameters)
*/
public static function processUIUnblock( array $data, HTMLForm $form ) {
return self::processUnblock( $data, $form->getContext() );
/**
* Process the form
*
- * @param $data Array
- * @param $context IContextSource
+ * @param array $data
+ * @param IContextSource $context
* @throws ErrorPageError
- * @return Array( Array(message key, parameters) ) on failure, True on success
+ * @return array|bool Array(message key, parameters) on failure, True on success
*/
public static function processUnblock( array $data, IContextSource $context ) {
$performer = $context->getUser();
/**
* Quick check if any archived revisions are present for the page.
*
- * @return boolean
+ * @return bool
*/
function isDeleted() {
$dbr = wfGetDB( DB_SLAVE );
* @param bool $unsuppress Remove all ar_deleted/fa_deleted restrictions of seletected revs
* @param string $comment
* @throws ReadOnlyError
- * @return Status Object containing the number of revisions restored on success
+ * @return Status Status object containing the number of revisions restored on success
*/
private function undeleteRevisions( $timestamps, $unsuppress = false, $comment = '' ) {
global $wgContentHandlerUseDB;
/**
* Show a form confirming whether a tokenless user really wants to see a file
+ * @param string $key
*/
private function showFileConfirmationForm( $key ) {
$out = $this->getOutput();
/**
* Show a deleted file version requested by the visitor.
+ * @param string $key
*/
private function showFile( $key ) {
$this->getOutput()->disable();
* @param File|ArchivedFile $file
* @param Title $titleObj
* @param string $ts A timestamp
- * @param string $key a storage key
+ * @param string $key A storage key
*
* @return string HTML fragment
*/
/**
* Constructor : initialise object
* Get data POSTed through the form and assign them to the object
- * @param $request WebRequest : data posted.
+ * @param WebRequest $request Data posted.
*/
public function __construct( $request = null ) {
parent::__construct( 'Upload', 'upload' );
* Handle permission checking elsewhere in order to be able to show
* custom error messages.
*
- * @param $user User object
- * @return Boolean
+ * @param User $user
+ * @return bool
*/
public function userCanExecute( User $user ) {
return UploadBase::isEnabled() && parent::userCanExecute( $user );
/**
* Special page entry point
+ * @param string $par
*/
public function execute( $par ) {
$this->setHeaders();
/**
* Show the main upload form
*
- * @param $form Mixed: an HTMLForm instance or HTML string to show
+ * @param HTMLForm|string $form An HTMLForm instance or HTML string to show
*/
protected function showUploadForm( $form ) {
# Add links if file was previously deleted
* Get an UploadForm instance with title and text properly set.
*
* @param string $message HTML string to add to the form
- * @param string $sessionKey session key in case this is a stashed upload
- * @param $hideIgnoreWarning Boolean: whether to hide "ignore warning" check box
+ * @param string $sessionKey Session key in case this is a stashed upload
+ * @param bool $hideIgnoreWarning Whether to hide "ignore warning" check box
* @return UploadForm
*/
protected function getUploadForm( $message = '', $sessionKey = '', $hideIgnoreWarning = false ) {
* Stashes the upload, shows the main form, but adds a "continue anyway button".
* Also checks whether there are actually warnings to display.
*
- * @param $warnings Array
- * @return boolean true if warnings were displayed, false if there are no
- * warnings and it should continue processing
+ * @param array $warnings
+ * @return bool True if warnings were displayed, false if there are no
+ * warnings and it should continue processing
*/
protected function showUploadWarning( $warnings ) {
# If there are no warnings, or warnings we can ignore, return early.
*
* Note that the page target can be changed *on the form*, so our check
* state can get out of sync.
- * @return Bool|String
+ * @return bool|string
*/
protected function getWatchCheck() {
if ( $this->getUser()->getOption( 'watchdefault' ) ) {
/**
* Provides output to the user for a result of UploadBase::verifyUpload
*
- * @param array $details result of UploadBase::verifyUpload
+ * @param array $details Result of UploadBase::verifyUpload
* @throws MWException
*/
protected function processVerificationError( $details ) {
/**
* Remove a temporarily kept file stashed by saveTempUploadedFile().
*
- * @return Boolean: success
+ * @return bool Success
*/
protected function unsaveUploadedFile() {
if ( !( $this->mUpload instanceof UploadFromStash ) ) {
* Formats a result of UploadBase::getExistsWarning as HTML
* This check is static and can be done pre-upload via AJAX
*
- * @param array $exists the result of UploadBase::getExistsWarning
- * @return String: empty string if there is no warning or an HTML fragment
+ * @param array $exists The result of UploadBase::getExistsWarning
+ * @return string Empty string if there is no warning or an HTML fragment
*/
public static function getExistsWarning( $exists ) {
if ( !$exists ) {
/**
* Construct a warning and a gallery from an array of duplicate files.
- * @param $dupes array
+ * @param array $dupes
* @return string
*/
public function getDupeWarning( $dupes ) {
* Get the descriptor of the fieldset that contains the file source
* selection. The section is 'source'
*
- * @return Array: descriptor array
+ * @return array Descriptor array
*/
protected function getSourceSection() {
global $wgCopyUploadsFromSpecialUpload;
/**
* Get the messages indicating which extensions are preferred and prohibitted.
*
- * @return String: HTML string containing the message
+ * @return string HTML string containing the message
*/
protected function getExtensionsMessage() {
# Print a list of allowed file extensions, if so configured. We ignore
* Get the descriptor of the fieldset that contains the file description
* input. The section is 'description'
*
- * @return Array: descriptor array
+ * @return array Descriptor array
*/
protected function getDescriptionSection() {
if ( $this->mSessionKey ) {
* Get the descriptor of the fieldset that contains the upload options,
* such as "watch this file". The section is 'options'
*
- * @return Array: descriptor array
+ * @return array Descriptor array
*/
protected function getOptionsSection() {
$user = $this->getUser();
class UploadSourceField extends HTMLTextField {
/**
- * @param $cellAttributes array
+ * @param array $cellAttributes
* @return string
*/
function getLabelHtml( $cellAttributes = array() ) {
*
* @param string $subPage subpage, e.g. in
* http://example.com/wiki/Special:UploadStash/foo.jpg, the "foo.jpg" part
- * @return Boolean: success
+ * @return bool Success
*/
public function execute( $subPage ) {
$this->checkPermissions();
/**
* Get a thumbnail for file, either generated locally or remotely, and stream it out
*
- * @param $file
- * @param $params array
+ * @param File $file
+ * @param array $params
*
- * @return boolean success
+ * @return bool Success
*/
private function outputThumbFromStash( $file, $params ) {
// this global, if it exists, points to a "scaler", as you might find in
/**
* Scale a file (probably with a locally installed imagemagick, or similar)
* and output it to STDOUT.
- * @param $file File
+ * @param File $file
* @param array $params Scaling parameters ( e.g. array( width => '50' ) );
* @param int $flags Scaling flags ( see File:: constants )
* @throws MWException|UploadStashFileNotFoundException
- * @return boolean success
+ * @return bool Success
*/
private function outputLocallyScaledThumb( $file, $params, $flags ) {
// n.b. this is stupid, we insist on re-transforming the file every time we are invoked. We rely
* @param array $params Scaling parameters ( e.g. array( width => '50' ) );
* @param int $flags Scaling flags ( see File:: constants )
* @throws MWException
- * @return boolean success
+ * @return bool success
*/
private function outputRemoteScaledThumb( $file, $params, $flags ) {
// This global probably looks something like
/**
* Output HTTP response of raw content
* Side effect: writes HTTP response to STDOUT.
- * @param string $content content
- * @param string $contentType mime type
+ * @param string $content Content
+ * @param string $contentType Mime type
* @throws SpecialUploadStashTooLargeException
* @return bool
*/
}
/*
- * @param $subPage string|null
+ * @param string|null $subPage
*/
public function execute( $subPage ) {
if ( session_id() == '' ) {
* Actually add a user to the database.
* Give it a User object that has been initialised with a name.
*
- * @param $u User object.
- * @param $autocreate boolean -- true if this is an autocreation via auth plugin
- * @return Status object, with the User object in the value member on success
+ * @param User $u
+ * @param bool $autocreate True if this is an autocreation via auth plugin
+ * @return Status Status object, with the User object in the value member on success
* @private
*/
function initUser( $u, $autocreate ) {
* Increment the login attempt throttle hit count for the (username,current IP)
* tuple unless the throttle was already reached.
* @param string $username The user name
- * @return Bool|Integer The integer hit count or True if it is already at the limit
+ * @return bool|int The integer hit count or True if it is already at the limit
*/
public static function incLoginThrottle( $username ) {
global $wgPasswordAttemptThrottle, $wgMemc, $wgRequest;
* Attempt to automatically create a user on login. Only succeeds if there
* is an external authentication method which allows it.
*
- * @param $user User
+ * @param User $user
*
- * @return integer Status code
+ * @return int Status code
*/
function attemptAutoCreate( $user ) {
global $wgAuth;
}
/**
- * @param $u User object
- * @param $throttle Boolean
- * @param string $emailTitle message name of email title
- * @param string $emailText message name of email text
- * @return Status object
+ * @param User $u
+ * @param bool $throttle
+ * @param string $emailTitle Message name of email title
+ * @param string $emailText Message name of email text
+ * @return Status
*/
function mailPasswordInternal( $u, $throttle = true, $emailTitle = 'passwordremindertitle',
$emailText = 'passwordremindertext'
/**
* Display an "successful action" page.
*
- * @param string|Message $title page's title
- * @param $msgname string
- * @param $injected_html string
+ * @param string|Message $title Page's title
+ * @param string $msgname
+ * @param string $injected_html
*/
private function displaySuccessfulAction( $title, $msgname, $injected_html ) {
$out = $this->getOutput();
* there is a block on them or their IP which prevents account creation. Note that
* User::isBlockedFromCreateAccount(), which gets this block, ignores the 'hardblock'
* setting on blocks (bug 13611).
- * @param $block Block the block causing this error
+ * @param Block $block The block causing this error
* @throws ErrorPageError
*/
function userBlockedMessage( Block $block ) {
* Extensions can use this to reuse the "return to" logic after
* inject steps (such as redirection) into the login process.
*
- * @param $type string, one of the following:
+ * @param string $type One of the following:
* - error: display a return to link ignoring $wgRedirectOnLogin
* - success: display a return to link using $wgRedirectOnLogin if needed
* - successredirect: send an HTTP redirect using $wgRedirectOnLogin if needed
/**
* Add a "return to" link or redirect to it.
*
- * @param $type string, one of the following:
+ * @param string $type One of the following:
* - error: display a return to link ignoring $wgRedirectOnLogin
* - success: display a return to link using $wgRedirectOnLogin if needed
* - successredirect: send an HTTP redirect using $wgRedirectOnLogin if needed
* Whether the login/create account form should display a link to the
* other form (in addition to whatever the skin provides).
*
- * @param $user User
+ * @param User $user
* @return bool
*/
private function showCreateOrLoginLink( &$user ) {
/**
* Get the login token from the current session
- * @return Mixed
+ * @return mixed
*/
public static function getLoginToken() {
global $wgRequest;
/**
* Get the createaccount token from the current session
- * @return Mixed
+ * @return mixed
*/
public static function getCreateaccountToken() {
global $wgRequest;
* Save user groups changes in the database.
* Data comes from the editUserGroupsForm() form function
*
- * @param string $username username to apply changes to.
- * @param string $reason reason for group change
+ * @param string $username Username to apply changes to.
+ * @param string $reason Reason for group change
* @param User|UserRightsProxy $user Target user object.
* @return null
*/
/**
* Add a rights log entry for an action.
+ * @param User $user
+ * @param array $oldGroups
+ * @param array $newGroups
+ * @param array $reason
*/
function addLogEntry( $user, $oldGroups, $newGroups, $reason ) {
$logEntry = new ManualLogEntry( 'rights', 'rights' );
/**
* Edit user groups membership
- * @param string $username name of the user.
+ * @param string $username Name of the user.
*/
function editUserGroupsForm( $username ) {
$status = $this->fetchUser( $username );
*
* Side effects: error output for invalid access
* @param string $username
- * @return Status object
+ * @return Status
*/
public function fetchUser( $username ) {
global $wgUserrightsInterwikiDelimiter;
* Make a list of group names to be stored as parameter for log entries
*
* @deprecated since 1.21; use LogFormatter instead.
- * @param $ids array
+ * @param array $ids
* @return string
*/
function makeGroupNameListForLog( $ids ) {
/**
* Format a link to a group description page
*
- * @param $group string
+ * @param string $group
* @return string
*/
private static function buildGroupLink( $group ) {
/**
* Format a link to a group member description page
*
- * @param $group string
+ * @param string $group
* @return string
*/
private static function buildGroupMemberLink( $group ) {
* Adds a table with checkboxes where you can select what groups to add/remove
*
* @todo Just pass the username string?
- * @param array $usergroups groups the user belongs to
- * @param $user User a user object
+ * @param array $usergroups Groups the user belongs to
+ * @param User $user
* @return string XHTML table element with checkboxes
*/
private function groupCheckboxes( $usergroups, $user ) {
}
/**
- * @param string $group the name of the group to check
+ * @param string $group The name of the group to check
* @return bool Can we add the group?
*/
private function canAdd( $group ) {
/**
* Show a rights log fragment for the specified user
*
- * @param $user User to show log for
- * @param $output OutputPage to use
+ * @param User $user User to show log for
+ * @param OutputPage $output OutputPage to use
*/
protected function showLogFragment( $user, $output ) {
$rightsLogPage = new LogPage( 'rights' );
/**
* Get the "MediaWiki is copyright 2001-20xx by lots of cool guys" text
*
- * @return String
+ * @return string
*/
public static function getCopyrightAndAuthorList() {
global $wgLang;
/**
* Return a string of the MediaWiki version with SVN revision if available.
*
- * @param $flags String
+ * @param string $flags
* @return mixed
*/
public static function getVersion( $flags = '' ) {
*
* @since 1.17
*
- * @param $type String
+ * @param string $type
*
* @return string
*/
*
* @since 1.17
*
- * @param $type String
- * @param $message String
+ * @param string $type
+ * @param string $message
*
* @return string
*/
/**
* Callback to sort extensions by type.
- * @param $a array
- * @param $b array
+ * @param array $a
+ * @param array $b
* @return int
*/
function compare( $a, $b ) {
* - Description of extension (descriptionmsg or description)
* - List of authors (author) and link to a ((AUTHORS)|(CREDITS))(\.txt)? file if it exists
*
- * @param $extension Array
+ * @param array $extension
*
- * @return string raw HTML
+ * @return string Raw HTML
*/
function getCreditsForExtension( array $extension ) {
$out = $this->getOutput();
* @return string
*/
function listToText( $list, $sort = true ) {
- $cnt = count( $list );
-
- if ( $cnt == 1 ) {
- // Enforce always returning a string
- return (string)self::arrayToString( $list[0] );
- } elseif ( $cnt == 0 ) {
+ if ( !count( $list ) ) {
return '';
- } else {
- if ( $sort ) {
- sort( $list );
- }
-
- return $this->getLanguage()
- ->listToText( array_map( array( __CLASS__, 'arrayToString' ), $list ) );
}
+ if ( $sort ) {
+ sort( $list );
+ }
+
+ return $this->getLanguage()
+ ->listToText( array_map( array( __CLASS__, 'arrayToString' ), $list ) );
}
/**
* Convert an array or object to a string for display.
*
- * @param mixed $list will convert an array to string if given and return
+ * @param mixed $list Will convert an array to string if given and return
* the paramater unaltered otherwise
*
* @return mixed
* url The subversion URL of the directory
* repo-url The base URL of the repository
* viewvc-url A ViewVC URL pointing to the checked-out revision
- * @param $dir string
+ * @param string $dir
* @return array|bool
*/
public static function getSvnInfo( $dir ) {
/**
* Retrieve the revision number of a Subversion working directory.
*
- * @param string $dir directory of the svn checkout
+ * @param string $dir Directory of the svn checkout
*
* @return int Revision number
*/
}
/**
- * @param string $dir directory of the git checkout
- * @return bool|String sha1 of commit HEAD points to
+ * @param string $dir Directory of the git checkout
+ * @return bool|string Sha1 of commit HEAD points to
*/
public static function getGitHeadSha1( $dir ) {
$repo = new GitInfo( $dir );
* Maps old pre-1.23 request parameters Watchlist used to use (different from Recentchanges' ones)
* to the current ones.
*
- * @param FormOptions $parameters
+ * @param FormOptions $opts
* @return FormOptions
*/
protected function fetchOptionsFromRequest( $opts ) {
* Count the number of items on a user's watchlist
*
* @param DatabaseBase $dbr A database connection
- * @return Integer
+ * @return int
*/
protected function countItems( $dbr ) {
# Fetch the raw count
* @param string $text
*
* @throws InvalidArgumentException if the namespace is invalid
- * @return String
+ * @return string
*/
public function getNamespaceName( $namespace, $text ) {
if ( $this->language->needsGenderDistinction() &&
* Parses the given text and constructs a TitleValue. Normalization
* is applied according to the rules appropriate for the form specified by $form.
*
- * @param string $text the text to parse
- * @param int $defaultNamespace namespace to assume per default (usually NS_MAIN)
+ * @param string $text The text to parse
+ * @param int $defaultNamespace Namespace to assume per default (usually NS_MAIN)
*
* @throws MalformedTitleException
* @return TitleValue
* @param string $text
*
* @throws InvalidArgumentException
- * @return String
+ * @return string
*/
public function getNamespaceName( $namespace, $text );
}
* un-normalized text when constructing TitleValues. For constructing a TitleValue from
* user input or external sources, use a TitleParser.
*
- * @param $namespace int The namespace ID. This is not validated.
- * @param $dbkey string The page title in valid DBkey form. No normalization is applied.
- * @param $fragment string The fragment title. Use '' to represent the whole page.
- * No validation or normalization is applied.
+ * @param int $namespace The namespace ID. This is not validated.
+ * @param string $dbkey The page title in valid DBkey form. No normalization is applied.
+ * @param string $fragment The fragment title. Use '' to represent the whole page.
+ * No validation or normalization is applied.
*
* @throws InvalidArgumentException
*/
const SESSION_STATUS_KEY = 'wsUploadStatusData';
/**
- * @param $error int
+ * @param int $error
* @return string
*/
public function getVerificationErrorCode( $error ) {
* identifying the missing permission.
* Can be overridden by subclasses.
*
- * @param $user User
+ * @param User $user
* @return bool
*/
public static function isAllowed( $user ) {
/**
* Create a form of UploadBase depending on wpSourceType and initializes it
*
- * @param $request WebRequest
- * @param $type
- * @return null
+ * @param WebRequest $request
+ * @param string|null $type
+ * @return null|UploadBase
*/
public static function createFromRequest( &$request, $type = null ) {
$type = $type ? $type : $request->getVal( 'wpSourceType', 'File' );
/**
* Check whether a request if valid for this handler
- * @param $request
+ * @param WebRequest $request
* @return bool
*/
public static function isValidRequest( $request ) {
/**
* Initialize the path information
- * @param string $name the desired destination name
- * @param string $tempPath the temporary path
- * @param int $fileSize the file size
+ * @param string $name The desired destination name
+ * @param string $tempPath The temporary path
+ * @param int $fileSize The file size
* @param bool $removeTempFile (false) remove the temporary file?
* @throws MWException
*/
/**
* Initialize from a WebRequest. Override this in a subclass.
+ *
+ * @param WebRequest $request
*/
abstract public function initializeFromRequest( &$request );
/**
* Return the file size
- * @return integer
+ * @return int
*/
public function getFileSize() {
return $this->mFileSize;
}
/**
- * @param string $srcPath the source path
- * @return string|bool the real path if it was a virtual URL Returns false on failure
+ * @param string $srcPath The source path
+ * @return string|bool The real path if it was a virtual URL Returns false on failure
*/
function getRealPath( $srcPath ) {
wfProfileIn( __METHOD__ );
/**
* Verify that the name is valid and, if necessary, that we can overwrite
*
- * @return mixed true if valid, otherwise and array with 'status'
+ * @return mixed True if valid, otherwise and array with 'status'
* and other keys
- **/
+ */
public function validateName() {
$nt = $this->getTitle();
if ( is_null( $nt ) ) {
*
* @note Only checks that it is not an evil mime. The does it have
* correct extension given its mime type check is in verifyFile.
- * @param string $mime representing the mime
- * @return mixed true if the file is verified, an array otherwise
+ * @param string $mime Representing the mime
+ * @return mixed True if the file is verified, an array otherwise
*/
protected function verifyMimeType( $mime ) {
global $wgVerifyMimeType;
/**
* Verifies that it's ok to include the uploaded file
*
- * @return mixed true of the file is verified, array otherwise.
+ * @return mixed True of the file is verified, array otherwise.
*/
protected function verifyFile() {
global $wgVerifyMimeType;
* Runs the blacklist checks, but not any checks that may
* assume the entire file is present.
*
- * @return Mixed true for valid or array with error message key.
+ * @return mixed True for valid or array with error message key.
*/
protected function verifyPartialFile() {
global $wgAllowJavaUploads, $wgDisableUploadScriptChecks;
/**
* Callback for ZipDirectoryReader to detect Java class files.
+ *
+ * @param array $entry
*/
function zipEntryCallback( $entry ) {
$names = array( $entry['name'] );
/**
* Alias for verifyTitlePermissions. The function was originally 'verifyPermissions'
* but that suggests it's checking the user, when it's really checking the title + user combination.
- * @param $user User object to verify the permissions against
+ * @param User $user User object to verify the permissions against
* @return mixed An array as returned by getUserPermissionsErrors or true
- * in case the user has proper permissions.
+ * in case the user has proper permissions.
*/
public function verifyPermissions( $user ) {
return $this->verifyTitlePermissions( $user );
* isAllowed() should be called as well for generic is-user-blocked or
* can-user-upload checking.
*
- * @param $user User object to verify the permissions against
+ * @param User $user object to verify the permissions against
* @return mixed An array as returned by getUserPermissionsErrors or true
- * in case the user has proper permissions.
+ * in case the user has proper permissions.
*/
public function verifyTitlePermissions( $user ) {
/**
*
* This should not assume that mTempPath is set.
*
- * @return Array of warnings
+ * @return array Array of warnings
*/
public function checkWarnings() {
global $wgLang;
* Really perform the upload. Stores the file in the local repo, watches
* if necessary and runs the UploadComplete hook.
*
- * @param $comment
- * @param $pageText
- * @param $watch
- * @param $user User
+ * @param string $comment
+ * @param string $pageText
+ * @param bool $watch
+ * @param User $user
*
- * @return Status indicating the whether the upload succeeded.
+ * @return Status Indicating the whether the upload succeeded.
*/
public function performUpload( $comment, $pageText, $watch, $user ) {
wfProfileIn( __METHOD__ );
* This method returns the file object, which also has a 'fileKey' property which can be passed through a form or
* API request to find this stashed file again.
*
- * @param $user User
- * @return UploadStashFile stashed file
+ * @param User $user
+ * @return UploadStashFile Stashed file
*/
public function stashFile( User $user = null ) {
// was stashSessionFile
/**
* Stash a file in a temporary directory, returning a key which can be used to find the file again. See stashFile().
*
- * @return String: file key
+ * @return string File key
*/
public function stashFileGetKey() {
return $this->stashFile()->getFileKey();
/**
* alias for stashFileGetKey, for backwards compatibility
*
- * @return String: file key
+ * @return string File key
*/
public function stashSession() {
return $this->stashFileGetKey();
* earlier pseudo-'extensions' to determine type and execute
* scripts, so the blacklist needs to check them all.
*
- * @param $filename string
+ * @param string $filename
* @return array
*/
public static function splitExtensions( $filename ) {
* Perform case-insensitive match against a list of file extensions.
* Returns true if the extension is in the list.
*
- * @param $ext String
- * @param $list Array
- * @return Boolean
+ * @param string $ext
+ * @param array $list
+ * @return bool
*/
public static function checkFileExtension( $ext, $list ) {
return in_array( strtolower( $ext ), $list );
* Perform case-insensitive match against a list of file extensions.
* Returns an array of matching extensions.
*
- * @param $ext Array
- * @param $list Array
- * @return Boolean
+ * @param array $ext
+ * @param array $list
+ * @return bool
*/
public static function checkFileExtensionList( $ext, $list ) {
return array_intersect( array_map( 'strtolower', $ext ), $list );
/**
* Checks if the mime type of the uploaded file matches the file extension.
*
- * @param string $mime the mime type of the uploaded file
- * @param string $extension the filename extension that the file is to be served with
- * @return Boolean
+ * @param string $mime The mime type of the uploaded file
+ * @param string $extension The filename extension that the file is to be served with
+ * @return bool
*/
public static function verifyExtension( $mime, $extension ) {
$magic = MimeMagic::singleton();
* potentially harmful. The present implementation will produce false
* positives in some situations.
*
- * @param string $file pathname to the temporary upload file
- * @param string $mime the mime type of the file
- * @param string $extension the extension of the file
- * @return Boolean: true if the file contains something looking like embedded scripts
+ * @param string $file Pathname to the temporary upload file
+ * @param string $mime The mime type of the file
+ * @param string $extension The extension of the file
+ * @return bool True if the file contains something looking like embedded scripts
*/
public static function detectScript( $file, $mime, $extension ) {
global $wgAllowTitlesInSVG;
* Check a whitelist of xml encodings that are known not to be interpreted differently
* by the server's xml parser (expat) and some common browsers.
*
- * @param string $file pathname to the temporary upload file
- * @return Boolean: true if the file contains an encoding that could be misinterpreted
+ * @param string $file Pathname to the temporary upload file
+ * @return bool True if the file contains an encoding that could be misinterpreted
*/
public static function checkXMLEncodingMissmatch( $file ) {
global $wgSVGMetadataCutoff;
}
/**
- * @param $filename string
- * @return mixed false of the file is verified (does not contain scripts), array otherwise.
+ * @param string $filename
+ * @return mixed False of the file is verified (does not contain scripts), array otherwise.
*/
protected function detectScriptInSvg( $filename ) {
$this->mSVGNSError = false;
/**
* Callback to filter SVG Processing Instructions.
- * @param $target string processing instruction name
- * @param $data string processing instruction attribute and value
+ * @param string $target processing instruction name
+ * @param string $data processing instruction attribute and value
* @return bool (true if the filter identified something bad)
*/
public static function checkSvgPICallback( $target, $data ) {
/**
* @todo Replace this with a whitelist filter!
- * @param $element string
- * @param $attribs array
+ * @param string $element
+ * @param array $attribs
* @return bool
*/
public function checkSvgScriptCallback( $element, $attribs ) {
/**
* Divide the element name passed by the xml parser to the callback into URI and prifix.
- * @param $name string
- * @return array containing the namespace URI and prefix
+ * @param string $name
+ * @return array Containing the namespace URI and prefix
*/
private static function splitXmlNamespace( $element ) {
// 'http://www.w3.org/2000/svg:script' -> array( 'http://www.w3.org/2000/svg', 'script' )
}
/**
- * @param $name string
+ * @param string $name
* @return string
*/
private function stripXmlNamespace( $name ) {
* This relies on the $wgAntivirus and $wgAntivirusSetup variables.
* $wgAntivirusRequired may be used to deny upload if the scan fails.
*
- * @param string $file pathname to the temporary upload file
- * @return mixed false if not virus is found, NULL if the scan fails or is disabled,
- * or a string containing feedback from the virus scanner if a virus was found.
- * If textual feedback is missing but a virus was found, this function returns true.
+ * @param string $file Pathname to the temporary upload file
+ * @return mixed False if not virus is found, NULL if the scan fails or is disabled,
+ * or a string containing feedback from the virus scanner if a virus was found.
+ * If textual feedback is missing but a virus was found, this function returns true.
*/
public static function detectVirus( $file ) {
global $wgAntivirus, $wgAntivirusSetup, $wgAntivirusRequired, $wgOut;
* Check if there's an overwrite conflict and, if so, if restrictions
* forbid this user from performing the upload.
*
- * @param $user User
+ * @param User $user
*
- * @return mixed true on success, array on failure
+ * @return mixed True on success, array on failure
*/
private function checkOverwrite( $user ) {
// First check whether the local file can be overwritten
/**
* Check if a user is the last uploader
*
- * @param $user User object
- * @param string $img image name
- * @return Boolean
+ * @param User $user
+ * @param string $img Image name
+ * @return bool
*/
public static function userCanReUpload( User $user, $img ) {
if ( $user->isAllowed( 'reupload' ) ) {
* - File exists with normalized extension
* - The file looks like a thumbnail and the original exists
*
- * @param $file File The File object to check
+ * @param File $file The File object to check
* @return mixed False if the file does not exists, else an array
*/
public static function getExistsWarning( $file ) {
/**
* Helper function that checks whether the filename looks like a thumbnail
- * @param $filename string
+ * @param string $filename
* @return bool
*/
public static function isThumbName( $filename ) {
/**
* Get a list of blacklisted filename prefixes from [[MediaWiki:Filename-prefix-blacklist]]
*
- * @return array list of prefixes
+ * @return array List of prefixes
*/
public static function getFilenamePrefixBlacklist() {
$blacklist = array();
* 'metadata' was requested. Oddly, we have to pass the "result" object down just so it can do that
* with the appropriate format, presumably.
*
- * @param $result ApiResult:
- * @return Array: image info
+ * @param ApiResult $result
+ * @return array Image info
*/
public function getImageInfo( $result ) {
$file = $this->getLocalFile();
}
/**
- * @param $error array
+ * @param array $error
* @return Status
*/
public function convertVerifyErrorToStatus( $error ) {
}
/**
- * @param $forType null|string
+ * @param null|string $forType
* @return int
*/
public static function getMaxUploadSize( $forType = null ) {
/**
* Get the current status of a chunked upload (used for polling).
* The status will be read from the *current* user session.
- * @param $statusKey string
- * @return Array|bool
+ * @param string $statusKey
+ * @return array|bool
*/
public static function getSessionStatus( $statusKey ) {
return isset( $_SESSION[self::SESSION_STATUS_KEY][$statusKey] )
/**
* Set the current status of a chunked upload (used for polling).
* The status will be stored in the *current* user session.
- * @param $statusKey string
- * @param $value array|false
+ * @param string $statusKey
+ * @param array|bool $value
* @return void
*/
public static function setSessionStatus( $statusKey, $value ) {
/**
* Setup local pointers to stash, repo and user (similar to UploadFromStash)
*
- * @param $user User|null Default: null
- * @param $stash UploadStash|bool Default: false
- * @param $repo FileRepo|bool Default: false
+ * @param User|null $user Default: null
+ * @param UploadStash|bool $stash Default: false
+ * @param FileRepo|bool $repo Default: false
*/
public function __construct( $user = null, $stash = false, $repo = false ) {
// user object. sometimes this won't exist, as when running from cron.
/**
* Calls the parent stashFile and updates the uploadsession table to handle "chunks"
*
+ * @param User|null $user
* @return UploadStashFile stashed file
*/
public function stashFile( User $user = null ) {
/**
* Continue chunk uploading
+ *
+ * @param string $name
+ * @param string $key
+ * @param WebRequestUpload $webRequestUpload
*/
public function continueChunks( $name, $key, $webRequestUpload ) {
$this->mFileKey = $key;
/**
* Perform the upload, then remove the temp copy afterward
- * @param $comment string
- * @param $pageText string
- * @param $watch bool
- * @param $user User
+ * @param string $comment
+ * @param string $pageText
+ * @param bool $watch
+ * @param User $user
* @return Status
*/
public function performUpload( $comment, $pageText, $watch, $user ) {
/**
* Returns the virtual chunk location:
- * @param $index
+ * @param int $index
* @return string
*/
function getVirtualChunkLocation( $index ) {
/**
* Get the current Chunk index
- * @return Integer index of the current chunk
+ * @return int Index of the current chunk
*/
private function getChunkIndex() {
if ( $this->mChunkIndex !== null ) {
/**
* Gets the current offset in fromt the stashedupload table
- * @return Integer current byte offset of the chunk file set
+ * @return int Current byte offset of the chunk file set
*/
private function getOffset() {
if ( $this->mOffset !== null ) {
/**
* Output the chunk to disk
*
- * @param $chunkPath string
+ * @param string $chunkPath
* @throws UploadChunkFileException
* @return FileRepoStatus
*/
protected $mUpload = null;
/**
- * @param $request WebRequest
+ * @param WebRequest $request
*/
function initializeFromRequest( &$request ) {
$upload = $request->getUpload( 'wpUploadFile' );
/**
* Initialize from a filename and a WebRequestUpload
- * @param $name
- * @param $webRequestUpload
+ * @param string $name
+ * @param WebRequestUpload $webRequestUpload
*/
function initialize( $name, $webRequestUpload ) {
$this->mUpload = $webRequestUpload;
}
/**
- * @param $request
+ * @param WebRequest $request
* @return bool
*/
static function isValidRequest( $request ) {
* user is not allowed, return the name of the user right as a string. If
* the user is allowed, have the parent do further permissions checking.
*
- * @param $user User
+ * @param User $user
*
* @return bool|string
*/
* The domains in the whitelist can include wildcard characters (*) in place
* of any of the domain levels, e.g. '*.flickr.com' or 'upload.*.gov.uk'.
*
- * @param $url string
+ * @param string $url
* @return bool
*/
public static function isAllowedHost( $url ) {
/**
* Checks whether the URL is not allowed.
*
- * @param $url string
+ * @param string $url
* @return bool
*/
public static function isAllowedUrl( $url ) {
/**
* Entry point for API upload
*
- * @param $name string
- * @param $url string
- * @param $async mixed Whether the download should be performed
+ * @param string $name
+ * @param string $url
+ * @param bool|string $async Whether the download should be performed
* asynchronous. False for synchronous, async or async-leavemessage for
* asynchronous download.
* @throws MWException
/**
* Entry point for SpecialUpload
- * @param $request WebRequest object
+ * @param WebRequest $request
*/
public function initializeFromRequest( &$request ) {
$desiredDestName = $request->getText( 'wpDestFile' );
}
/**
- * @param $request WebRequest object
+ * @param WebRequest $request
* @return bool
*/
public static function isValidRequest( $request ) {
/**
* Download the file (if not async)
*
- * @param Array $httpOptions Array of options for MWHttpRequest. Ignored if async.
+ * @param array $httpOptions Array of options for MWHttpRequest. Ignored if async.
* This could be used to override the timeout on the http request.
* @return Status
*/
/**
* Callback: save a chunk of the result of a HTTP request to the temporary file
*
- * @param $req mixed
- * @param $buffer string
- * @return int number of bytes handled
+ * @param mixed $req
+ * @param string $buffer
+ * @return int Number of bytes handled
*/
public function saveTempFileChunk( $req, $buffer ) {
$nbytes = fwrite( $this->mTmpHandle, $buffer );
* Download the file, save it to the temporary file and update the file
* size and set $mRemoveTempFile to true.
*
- * @param Array $httpOptions Array of options for MWHttpRequest
+ * @param array $httpOptions Array of options for MWHttpRequest
* @return Status
*/
protected function reallyFetchFile( $httpOptions = array() ) {
/**
* Wrapper around the parent function in order to defer checking warnings
* until the file really has been fetched.
- * @return Array
+ * @return array
*/
public function checkWarnings() {
if ( $this->mAsync ) {
/**
* Wrapper around the parent function in order to defer checking protection
* until we are sure that the file can actually be uploaded
- * @param $user User
+ * @param User $user
* @return bool|mixed
*/
public function verifyTitlePermissions( $user ) {
/**
* Wrapper around the parent function in order to defer uploading to the
* job queue for asynchronous uploads
- * @param $comment string
- * @param $pageText string
- * @param $watch bool
- * @param $user User
+ * @param string $comment
+ * @param string $pageText
+ * @param bool $watch
+ * @param User $user
* @return Status
*/
public function performUpload( $comment, $pageText, $watch, $user ) {
}
/**
- * @param $comment
- * @param $pageText
- * @param $watch
- * @param $user User
- * @return String
+ * @param string $comment
+ * @param string $pageText
+ * @param bool $watch
+ * @param User $user
+ * @return string
*/
protected function insertJob( $comment, $pageText, $watch, $user ) {
$sessionKey = $this->stashSession();
* Designed to be compatible with the session stashing code in UploadBase
* (should replace it eventually).
*
- * @param $repo FileRepo
- * @param $user User (default null)
+ * @param FileRepo $repo
+ * @param User $user (default null)
*/
public function __construct( FileRepo $repo, $user = null ) {
// this might change based on wiki's configuration.
* Get a file and its metadata from the stash.
* The noAuth param is a bit janky but is required for automated scripts which clean out the stash.
*
- * @param string $key key under which file information is stored
- * @param $noAuth Boolean (optional) Don't check authentication. Used by maintenance scripts.
+ * @param string $key Key under which file information is stored
+ * @param bool $noAuth (optional) Don't check authentication. Used by maintenance scripts.
* @throws UploadStashFileNotFoundException
* @throws UploadStashNotLoggedInException
* @throws UploadStashWrongOwnerException
* Getter for file metadata.
*
* @param string $key key under which file information is stored
- * @return Array
+ * @return array
*/
public function getMetadata( $key ) {
$this->getFile( $key );
* Getter for fileProps
*
* @param string $key key under which file information is stored
- * @return Array
+ * @return array
*/
public function getFileProps( $key ) {
$this->getFile( $key );
* Does not clean up files in the repo, just the record of them.
*
* @throws UploadStashNotLoggedInException
- * @return bool success
+ * @return bool Success
*/
public function clear() {
if ( !$this->isLoggedIn ) {
* List all files in the stash.
*
* @throws UploadStashNotLoggedInException
- * @return Array
+ * @return array
*/
public function listFiles() {
if ( !$this->isLoggedIn ) {
* with an extension.
* XXX this is somewhat redundant with the checks that ApiUpload.php does with incoming
* uploads versus the desired filename. Maybe we can get that passed to us...
- * @param $path
+ * @param string $path
* @throws UploadStashFileException
* @return string
*/
*
* @param string $key
* @param int $readFromDB Constant (default: DB_SLAVE)
- * @return boolean
+ * @return bool
*/
protected function fetchFileMetadata( $key, $readFromDB = DB_SLAVE ) {
// populate $fileMetadata[$key]
"tog-showtoolbar": "إظهار شريط التحرير",
"tog-editondblclick": "تعديل الصفحات بالنقر المزدوج",
"tog-editsectiononrightclick": "تفعيل تعديل الأقسام بالنقر باليمين على عناوين الأقسام",
- "tog-rememberpassword": "تذكر دخولي بهذا المتصفح (لمدة أقصاها {{PLURAL:$1||يوم واحد|يومان|$1 أيام|$1 يوما|$1 يوم}})",
"tog-watchcreations": "أضف الصفحات التي أنشئها والملفات التي أرفعها إلى قائمة مراقبتي.",
"tog-watchdefault": "أضف الصفحات والملفات التي أعدلها إلى قائمة مراقبتي",
"tog-watchmoves": "أضف الصفحات والملفات التي أنقلها إلى قائمة مراقبتي",
"november-date": "تشرين الثاني/نوفمبر $1",
"december-date": "كانون الأول/ديسمبر $1",
"pagecategories": "{{PLURAL:$1|بلا تصنيف|تصنيف|تصنيفان|تصنيفات}}",
- "category_header": "صفحات تصنيف \"$1\"",
+ "category_header": "صفحات تصنيف «$1»",
"subcategories": "تصنيفات فرعية",
"category-media-header": "ملفات تصنيف \"$1\"",
"category-empty": "هذا التصنيف لا يحتوي حاليا على صفحات أو ملفات.",
"searchprofile-articles": "صفحات المحتوى",
"searchprofile-project": "صفحات المساعدة والمشروع",
"searchprofile-images": "الوسائط المتعددة",
- "searchprofile-everything": "كل شيء",
+ "searchprofile-everything": "الكل",
"searchprofile-advanced": "متقدم",
"searchprofile-articles-tooltip": "ابحث في $1",
"searchprofile-project-tooltip": "ابحث في $1",
"listgrouprights-removegroup-self": "можа выдаліць уласны рахунак з {{PLURAL:$2|1=групы|групаў}}: $1",
"listgrouprights-addgroup-self-all": "Можа дадаць уласны рахунак да ўсіх груп",
"listgrouprights-removegroup-self-all": "Можа выдаліць уласны рахунак з ўсіх груп",
+ "listgrouprights-namespaceprotection-header": "Абмежаваньні прасторы назваў",
"trackingcategories": "Катэгорыі, якія патрабуюць увагі",
"trackingcategories-summary": "На гэтай старонцы пералічаныя катэгорыя, які патрабуюць увагі і якія аўтаматычна запаўняюцца праграмным забесьяпчэньнем MediaWiki. Іх назвы могуць быць зьмененыя рэдагаваньнем сыстэмных паведамленьняў у прасторы назваў {{ns:8}}.",
"mailnologin": "Няма адрасу атрымальніка",
"tog-showtoolbar": "সম্পাদনা টুলবার দেখাও",
"tog-editondblclick": "দুইবার ক্লিক করে পাতা সম্পাদনা",
"tog-editsectiononrightclick": "পরিচ্ছেদের শিরোনামে ডান ক্লিকের মাধ্যমে সম্পাদনা করার ক্ষমতা দেয়া হোক",
- "tog-rememberpassword": "এই ব্রাউজারে আমার লগ ইন তথ্য (শব্দচাবি) মনে রাখো (সর্বোচ্চ $1 {{PLURAL:$1|দিনের|দিনের}} জন্য)",
"tog-watchcreations": "আমার তৈরি পাতা এবং আপলোড করা ফাইলগুললো আমার নজরতালিকায় যোগ করা হোক",
"tog-watchdefault": "আমার সম্পাদিত পাতা এবং ফাইলগুলো আমার নজরতালিকায় যোগ করা হোক",
"tog-watchmoves": "আমার সরিয়ে ফেলা পাতা এবং ফাইলগুলো আমার নজরতালিকায় যোগ করা হোক",
"permalink": "স্থায়ী সংযোগ",
"print": "মুদ্রণ",
"view": "দেখাও",
+ "view-foreign": "$1ে দেখুন",
"edit": "সম্পাদনা",
+ "edit-local": "স্থানীয় বিবরণ সম্পাদনা করুন",
"create": "তৈরি",
+ "create-local": "স্থানীয় বিবরণ যোগ করুন",
"editthispage": "সম্পাদনা করুন",
"create-this-page": "পাতাটি তৈরি করো",
"delete": "অপসারণ",
"revdelete-no-file": "নির্ধারিত ফাইলটি নেই।",
"revdelete-show-file-confirm": "আপনি কি নিশ্চিত যে \"<nowiki>$1</nowiki>\" ফাইলের $2 তারিখের $3 টার অপসারণ লগ দেখানো হবে?",
"revdelete-show-file-submit": "হ্যাঁ",
+ "revdelete-selected-text": "[[:$2]] পাতার {{PLURAL:$1|নির্বাচিত সংশোধন|নির্বাচিত সংশোধনসমূহ}}:",
"logdelete-selected": "{{PLURAL:$1|টি নির্বাচিত লগ-ঘটনা|টি নির্বাচিত লগ-ঘটনা}}:",
"revdelete-confirm": "অনুগ্রহ করে নিশ্চিত করুন যে আপনি এটি করতে চাচ্ছিলেন, আপনি এর ফলাফল সম্পর্কে অবগত আছেন, এবং [[{{MediaWiki:Policy-url}}|নীতিমালার]] উপর ভিত্তি করেই এই কাজটি করছেন।",
"revdelete-suppress-text": "নিচের বিষয়গুলোর ক্ষেত্রেই '''কেবলমাত্র''' চাপাচাপি করা যাবে:\n* সম্ভাব্য মানহানিকর তথ্য\n* ভুল ব্যক্তিগত তথ্য\n*: ''বাসার ঠিকানা এবং ফোন নম্বর, সোসাল সিকিউরিটি নম্বর, ইত্যাদি।''",
"download": "ডাউনলোড",
"unwatchedpages": "নজরে না রাখা পাতাগুলি",
"listredirects": "তালিকা পুনর্নির্দেশগুলি",
+ "listduplicatedfiles": "সদৃশ ফাইলের তালিকা",
+ "listduplicatedfiles-summary": "এটি ফাইলসমূহের একটি তালিকা যেখানে একটি ফাইলের সাম্প্রতিকতম সংস্করণ অন্য আরেকটি ফাইলের সাম্প্রতিকতম সংস্করণের প্রতিলিপি। শুধু স্থানীয় ফাইল বিবেচনা করা হয়েছে।",
+ "listduplicatedfiles-entry": "[[:File:$1|$1]]-এর [[$3|{{PLURAL:$2|একটি প্রতিলিপি|$2টি প্রতিলিপি}}]] রয়েছে।",
"unusedtemplates": "অব্যবহৃত টেমপ্লেটগুলি",
"unusedtemplatestext": "{{ns:template}} নামস্থানের যে সমস্ত পাতা অন্য কোন পাতায় অন্তর্ভুক্ত নয়, তাদের সবগুলির তালিকা এই পাতায় দেওয়া হল। টেমপ্লেটগুলি মুছে ফেলার আগে পরীক্ষা করে দেখুন অন্য কোথাও থেকে এগুলিতে সংযোগ আছে কি না।",
"unusedtemplateswlh": "অন্যান্য সংযোগগুলি",
"listgrouprights-removegroup-self": "নিজের অ্যাকাউন্ট থেকে {{PLURAL:$2|দল|দলসমূহ}} অপসারণ: $1",
"listgrouprights-addgroup-self-all": "নিজের অ্যাকাউন্টে সকল দল সংযোজন",
"listgrouprights-removegroup-self-all": "নিজের অ্যাকাউন্ট থেকে সকল দল অপসারণ",
+ "listgrouprights-namespaceprotection-namespace": "নামস্থান",
+ "trackingcategories-name": "বার্তা নাম",
"mailnologin": "প্রাপকের ঠিকানা নেই",
"mailnologintext": "অন্য ব্যবহারকারীদেরকে ই-মেইল পাঠাতে হলে আপনাকে অবশ্যই আগে [[Special:UserLogin|লগ-ইন]] করতে হবে এবং ''[[Special:Preferences|আপনার পছন্দ তালিকায়]] আপনার ই-মেইল ঠিকানাটি ঠিকমত দিতে হবে।",
"emailuser": "ইমেইল করো",
"unwatchthispage": "নজর সরিয়ে নিন",
"notanarticle": "বিষয়বস্তু পাতা নয়",
"notvisiblerev": "অপর একজন ব্যবহারকারী কর্তৃক প্রণীত সর্বশেষ সংস্করণটি অপসারিত হয়েছে",
- "watchlist-details": "নà¦\9cরতালিà¦\95াতà§\87 {{PLURAL:$1|$1à¦\9fি পাতা|$1টি পাতা}} আছে (আলাপ পাতাগুলি গণনায় না ধরে)।",
+ "watchlist-details": "à¦\86পনার নà¦\9cরতালিà¦\95াতà§\87 {{PLURAL:$1|$1টি পাতা}} আছে (আলাপ পাতাগুলি গণনায় না ধরে)।",
"wlheader-enotif": "ইমেল বিজ্ঞপ্তি সক্রিয় করা আছে।",
"wlheader-showupdated": "আপনার শেষ আগমনের পর থেকে যেসব পাতায় পরিবর্তন হয়েছে সেগুলি '''গাঢ়''' করে দেখানো হয়েছে।",
"watchmethod-recent": "নজরে রাখা পাতাগুলিতে সাম্প্রতিক পরিবর্তন পরীক্ষা করা হচ্ছে",
"protect-locked-blocked": "বাধাপ্রাপ্ত অবস্থায় আপনি পাতাটির সুরক্ষা স্তর পরিবর্তন করতে পারবেন না। এখানে '''$1''' পাতাটির বর্তমান সেটিংস দেওয়া হল:",
"protect-locked-dblock": "ডাটাবেজ বন্ধ থাকায় সুরক্ষা স্তর পরিবর্তন করা যাবে না।\nএখানে '''$1''' পাতাটির বর্তমান সেটিংস দেওয়া হল:",
"protect-locked-access": "আপনার অ্যাকাউন্ট থেকে পাতার সুরক্ষা স্তর পরিবর্তন করার অনুমতি নেই।\nএখানে '''$1''' পাতাটির বর্তমান সেটিংস দেওয়া হল:",
- "protect-cascadeon": "à¦\8fà¦\87 পাতাà¦\9fি বরà§\8dতমানà§\87 সà§\81রà¦\95à§\8dষিত à¦\86à¦\9bà§\87, à¦\95ারণ পাতাà¦\9fি নিà¦\9aà§\87র {{PLURAL:$1|à¦\9fি পাতায়|à¦\9fি পাতায়}} à¦\85নà§\8dতরà§\8dà¦à§\81à¦\95à§\8dত, যাতà§\87 (যà§\87à¦\97à§\81লিতà§\87) পà§\8dরপাতাà¦\95ারà§\87 সুরক্ষা চালু আছে। আপনি এই পাতাটির সুরক্ষা স্তর পরিবর্তন করতে পারেন, তবে এটি প্রপাতাকার সুরক্ষাটিতে কোন পরিবর্তন সাধন করবে না।",
+ "protect-cascadeon": "à¦\8fà¦\87 পাতাà¦\9fি বরà§\8dতমানà§\87 সà§\81রà¦\95à§\8dষিত à¦\86à¦\9bà§\87, à¦\95ারণ পাতাà¦\9fি নিà¦\9aà§\87র {{PLURAL:$1|পাতায়|পাতাà¦\97à§\81লিতà§\87}} à¦\85নà§\8dতরà§\8dà¦à§\81à¦\95à§\8dত, {{PLURAL:$1|যাতà§\87|যà§\87à¦\97à§\81লিতà§\87}} পà§\8dরপাতাà¦\95ার সুরক্ষা চালু আছে। আপনি এই পাতাটির সুরক্ষা স্তর পরিবর্তন করতে পারেন, তবে এটি প্রপাতাকার সুরক্ষাটিতে কোন পরিবর্তন সাধন করবে না।",
"protect-default": "সমস্ত ব্যবহারকারীর জন্য",
"protect-fallback": "\"$1\" অধিকার রয়েছে এমন ব্যবহারকারীদের জন্য অনুমতি",
"protect-level-autoconfirmed": "কেবলমাত্র সয়ংক্রিয় পরীক্ষিত ব্যবহারকারীদের জন্য",
"post-expand-template-argument-category": "Кепашан аргументаш юкъахь йитина агӀонаш",
"parser-template-loop-warning": "Карийна кепаш юкъахь хилла шад: [[$1]]",
"parser-template-recursion-depth-warning": "Дозанал хьаладаьлла кӀоргенца юх юха дина кеп ($1)",
+ "expansion-depth-exceeded-category": "Схьаелларан кӀоргалла тӀех даьккхина агӀонаш",
+ "expansion-depth-exceeded-warning": "АгӀонгахь чуйихкар тӀехдаьккхина",
"parser-unstrip-loop-warning": "ДӀачӀагӀанца pre карина",
"undo-success": "Нисйинарг а тlе цалаца мега. Дехар до, хьажа цхьатерра йуй башхо, тешна хила, баккъалла иза хийцам буйте хьуна безарг, тlакха тlе таlайе «дlайазйе агlо», хийцам хlотта ба.",
"undo-failure": "Юккъера хийцамаш бахьнехь нисдар юхадаккха йиш яц.",
"feedback-close": "Кийчча ю",
"searchsuggest-search": "Лаха",
"searchsuggest-containing": "чуьраниг…",
+ "api-error-duplicate": "Иштта чулацам болу {{PLURAL:$1|1=[$2 кхин файл]|[$2 кхин файлаш]}} йолуш ю",
"api-error-duplicate-popup-title": "{{PLURAL:$1|1=Файлан|Файлийн}} дубликат.",
"api-error-empty-file": "Ахьа яхьийтина файл еса ю.",
"duration-seconds": "$1 {{PLURAL:$1|секунд}}",
"group-user-member": "{{GENDER:$1|بەکارھێنەر}}",
"group-autoconfirmed-member": "{{GENDER:$1|بەکارھێنەرانی پەسندکراوی خۆگەڕ}}",
"group-bot-member": "بۆت",
- "group-sysop-member": "{{GENDER:$1|بەڕێوبەر}}",
+ "group-sysop-member": "{{GENDER:$1|بەڕێوەبەر}}",
"group-bureaucrat-member": "{{GENDER:$1|بیوروکرات}}",
"group-suppress-member": "{{GENDER:$1|چاودێر}}",
"grouppage-user": "{{ns:project}}:بەکارھێنەران",
"grouppage-autoconfirmed": "{{ns:project}}:بەکارھێنەرانی پەسندکراوی خۆگەڕ",
"grouppage-bot": "{{ns:project}}:بۆت",
- "grouppage-sysop": "{{ns:project}}:بەڕێوبەران",
+ "grouppage-sysop": "{{ns:project}}:بەڕێوەبەران",
"grouppage-bureaucrat": "{{ns:project}}:بیوروکراتەکان",
"grouppage-suppress": "{{ns:project}}:چاودێر",
"right-read": "خوێندنەوەی پەڕەکان",
"statistics-pages": "پەڕەکان",
"statistics-pages-desc": "گشت پەڕەکانی ویکی، بە لەخۆگرتنی پەڕەکانی لێدوان، ڕەوانەکەرەکان و ھتد.",
"statistics-files": "پەڕگە بارکراوەکان",
- "statistics-edits": "دەستکارییەکانی پەڕەکان لە کاتی دامەزراندنی {{SITENAME}}ەوە",
+ "statistics-edits": "دەستکارییەکانی پەڕەکان لە کاتی دامەزراندنی {{SITENAME}}",
"statistics-edits-average": "ناونجیی دەستکارییەکان بۆ ھەر پەڕە",
"statistics-views-total": "دیتنی هەموو",
"statistics-views-peredit": "دیتنی هەر دەستکارییەک",
"prefs-edits": "Amarê vurnayışan:",
"prefsnologintext2": "Reca kem sazé tercihané karberi $1.",
"prefs-skin": "Çerme",
- "skin-preview": "Verasayış",
+ "skin-preview": "Verqayt",
"datedefault": "Tercih çıniyo",
"prefs-labs": "Xacetê labs",
"prefs-user-pages": "Pela Karberi",
"tooltip-diff": "Metni sero vurnayışan mocneno",
"tooltip-compareselectedversions": "Ena per de ferqê rewziyonan de dı weçinaya bıvinê",
"tooltip-watch": "Ena pele lista xoya seyrkerdışi ke",
- "tooltip-watchlistedit-normal-submit": "Sernuşteya hewad",
+ "tooltip-watchlistedit-normal-submit": "Sernuşteyan wedare",
"tooltip-watchlistedit-raw-submit": "Listeyê seyri newen ke",
"tooltip-recreate": "pel hewn a bışiyo zi tepiya biya",
"tooltip-upload": "Sergen de bari be",
"metadata-langitem": "'''$2:''' $1",
"metadata-langitem-default": "$1",
"exif-imagewidth": "Herayey",
- "exif-imagelength": "Dergi",
+ "exif-imagelength": "Berziye",
"exif-bitspersample": "yew parçe de biti",
"exif-compression": "Planê kompresyoni",
"exif-photometricinterpretation": "Compozisyonê pixeli",
"watchlistedit-normal-title": "Listeyê seyirkerdişi bivurne",
"watchlistedit-normal-legend": "Listeyê seyr kerdişê tu de seroğ biwedarna.",
"watchlistedit-normal-explain": "Listeyê seyr kerdîşî ti de serogî cor de mucnayiyo.\nEka ti wazeno seroğ biwedarne, kuti ke kistê de, ay işaret bike u \"{{int:Watchlistedit-normal-submit}}\" klik bike.\nTi hem zi eşkeno [[Special:EditWatchlist/raw|edit the raw list]].",
- "watchlistedit-normal-submit": "Seroğî biwedarnê",
+ "watchlistedit-normal-submit": "Sernuşteyan wedare",
"watchlistedit-normal-done": "{{PLURAL:$1|1 seroğ|$1 seroğî}} seyr kerdişê tu ra wedarno.",
"watchlistedit-raw-title": "Listeyê seyirkerdişi ye hami bivurne",
"watchlistedit-raw-legend": "Listeyê seyirkerdişi ye hami bivurne",
"redirect-value": "Erc:",
"redirect-user": "Kamiya Karberi:",
"redirect-page": "Kamiya pele",
- "redirect-revision": "Rewizyona pela",
+ "redirect-revision": "Çımraviyarnayışê pele",
"redirect-file": "Namey dosya",
"redirect-not-exists": "Erc nêvineyê",
"fileduplicatesearch": "Dosyayanê zey pêyan cı geyrê",
"api-error-unclassified": "Yew xeteyê nizanyeni biya.",
"api-error-unknown-code": "$1'dı jew xeta vıciye",
"api-error-unknown-error": "Zerre xırabin:Dasoya barkerdış de tay çi raşt nêşı.",
- "api-error-unknown-warning": "$1'dı ikazo xırab:",
+ "api-error-unknown-warning": "İqazo nêzanaye: \"$1\".",
"api-error-unknownerror": "$1'dı jew xeta vıciye",
"api-error-uploaddisabled": "BArkerdış ena wikide qefılneyayo",
"api-error-verification-error": "Dosya xırabiya yana derganiya cı xıraba.",
"history-show-deleted": "Sōl quî scanşlê",
"histfirst": "préma",
"histlast": "ûltma",
+ "historysize": "({{PLURAL:$1|1 byte|$1 bytes}})",
"historyempty": "(vōda)",
"history-feed-title": "Stòria dal mudéfichi",
"history-feed-description": "Stòria 'd la pàgina in sém a cól sî ché",
"rev-suppressed-text-unhide": "Cla versiòun ché 'd la pàgina l'é stêda <strong> scanşlêda </strong>. Consultêr al [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} log dal canşladûri] per nōv particulêr.\nS' l' é necesâri a j aministradōr a gh'é incòra permés [$1 ed guardêr cla versiòun ché].",
"rev-deleted-text-view": "Cla versiòun ché 'd la pàgina l'é stêda <strong> scanşlêda </strong>. J aministradōr a pōlen incòra guardêrla; \nconsultêr al [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} log dal canşladûri] per nōv particulêr.",
"rev-suppressed-text-view": "Cla versiòun ché 'd la pàgina l'é stêda <strong> scanşlêda </strong>. J aministradōr a pōlen incòra guardêrla; \nconsultêr al [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} log dal canşladûri] per nōv particulêr.",
+ "rev-deleted-no-diff": "An n'é mìa pusébil guardêr cól cunfrûnt ché tra 'l versiòun perchè óna dal revisiòun l'é stêda <strong> scanşlêda </strong>. Consûlta al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log dal scanşladûri] per i particulêr.",
+ "rev-suppressed-no-diff": "An n'é mìa pusébil guardêr cól cunfrûnt ché tra 'l versiòun perchè óna dal revisiòun l'é stêda <strong> scanşlêda </strong>.",
+ "rev-deleted-unhide-diff": "Ó dal revisiòun de sté cunfrûnt l'é stêda <strong> scanşlêda </strong>. Consultêr al [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} log dal scanşladûri] per i particulêr.\nS' l' é necesâri a j aministradōr a gh'é incòra permés [$1 ed guardêr cla versiòun ché].",
"rev-delundel": "Guêrda/nascònd",
"revdelete-radio-set": "Nascònd",
"revdelete-radio-unset": "Fà vèder",
"doubleredirects": "Double redirects",
"doubleredirects-summary": "",
"doubleredirectstext": "This page lists pages that redirect to other redirect pages.\nEach row contains links to the first and second redirect, as well as the target of the second redirect, which is usually the \"real\" target page to which the first redirect should point.\n<del>Crossed out</del> entries have been solved.",
- "double-redirect-fixed-move": "[[$1]] has been moved.\nIt now redirects to [[$2]].",
- "double-redirect-fixed-maintenance": "Fixing double redirect from [[$1]] to [[$2]].",
+ "double-redirect-fixed-move": "[[$1]] has been moved.\nIt was automatically updated and now it redirects to [[$2]].",
+ "double-redirect-fixed-maintenance": "Automatically fixing double redirect from [[$1]] to [[$2]] in a maintenance job.",
"double-redirect-fixer": "Redirect fixer",
"brokenredirects": "Broken redirects",
"brokenredirects-summary": "",
"revdelete-no-file": "El archivo especificado no existe.",
"revdelete-show-file-confirm": "¿Quieres ver la revisión borrada del archivo «<nowiki>$1</nowiki>» del $2 a las $3?",
"revdelete-show-file-submit": "Sí",
+ "revdelete-selected-text": "{{PLURAL:$1|Revisión seleccionada|Revisiones seleccionadas}} de [[:$2]]:",
+ "revdelete-selected-file": "{{PLURAL:$1|Versión de archivo seleccionada|Versiones de archivo seleccionadas}} de [[:$2]]:",
"logdelete-selected": "{{PLURAL:$1|Seleccionado un evento|Seleccionados eventos}}:",
"revdelete-text-text": "Las revisiones eliminadas aún aparecerán en el historial de la página, pero parte de su contenido será inaccesible para el público.",
"revdelete-text-file": "Las versiones de los archivos eliminados aún aparecerán en el historial del archivo, pero partes de su contenido serán inaccesibles para el público.",
"unwatchedpages": "Páginas no vigiladas",
"listredirects": "Lista de redirecciones",
"listduplicatedfiles": "Lista de archivos con duplicados",
+ "listduplicatedfiles-summary": "Esta es una lista de archivos donde la versión más reciente es un duplicado de la versión más reciente de un archivo con otro nombre. Solo se tienen en cuenta archivos locales.",
"listduplicatedfiles-entry": "[[:File:$1|$1]] tiene [[$3|{{PLURAL:$2|un duplicado|$2 duplicados}}]].",
"unusedtemplates": "Plantillas sin uso",
"unusedtemplatestext": "Aquí se enumeran todas las páginas en el espacio de nombres {{ns:template}} que no están incluidas en otras páginas. Recuerda mirar lo que enlaza a las plantillas antes de borrarlas.",
"protectedpages-unknown-timestamp": "Desconocido",
"protectedpages-unknown-performer": "Usuario desconocido",
"protectedtitles": "Títulos protegidos",
- "protectedtitles-summary": "Esta página enumera títulos que actualmente están protegidos desde su creación. Para una lista de las páginas existentes que están protegidos, véase [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
+ "protectedtitles-summary": "Esta página enumera títulos que actualmente están protegidos desde su creación. Para una lista de las páginas existentes que están protegidas, véase [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
"protectedtitlesempty": "Actualmente no existen entradas protegidas con esos parámetros.",
"listusers": "Lista de usuarios",
"listusers-editsonly": "Muestra sólo usuarios con ediciones",
"listgrouprights-namespaceprotection-namespace": "Espacio de nombre",
"listgrouprights-namespaceprotection-restrictedto": "Derechos de usuario para editar",
"trackingcategories": "Categorías de seguimiento",
+ "trackingcategories-summary": "Esta página lista categorías de seguimiento que han sido generadas automáticamente por el software MediaWiki. Sus nombres pueden cambiarse editando su mensaje correspondiente en el espacio de nombres {{ns:8}}.",
"trackingcategories-msg": "Categoría de seguimiento",
"trackingcategories-name": "Nombre del mensaje",
"trackingcategories-desc": "Criterios de inclusión de categoría",
"noindex-category-desc": "La página contiene la palabra mágica <code><nowiki>__NOINDEX__</nowiki></code> (y está en un espacio de nombres donde la función está activada); y por ello los robots no la indizan.",
+ "index-category-desc": "La página contiene la palabra mágica <code><nowiki>__INDEX__</nowiki></code> (y está en un espacio de nombres donde la función está activada); y por ello los robots la indizarán.",
"post-expand-template-inclusion-category-desc": "Después de expandir todas las plantillas, el tamaño de la página es más grande que <code>$wgMaxArticleSize</code>, así que algunas plantillas no se expandieron.",
"post-expand-template-argument-category-desc": "Después de expandir un argumento de plantilla (algunos en tres llaves, como <code>{{{Foo}}})</code>, la página es más grande que <code>$wgMaxArticleSize</code>.",
+ "expensive-parserfunction-category-desc": "Páginas que contienen demasiadas funciones sintácticas muy costosas (como <code>#ifexist</code>). Consulta [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+ "broken-file-category-desc": "Categoría añadida cuando una página contiene enlaces rotos a archivos (enlaces a archivos incrustados cuando el archivo no existe).",
"hidden-category-category-desc": "Esta es una categoría con <code><nowiki>__HIDDENCAT__</nowiki></code> en ella, que evita que aparezca en el cuadro de enlace de la categoría en las páginas, de forma predeterminada.",
"trackingcategories-nodesc": "No hay descripción disponible.",
"trackingcategories-disabled": "La categoría está desactivada",
"contributions-title": "Contribuciones {{GENDER:$1|del usuario|de la usuaria}} $1",
"mycontris": "Contribuciones",
"contribsub2": "Para {{GENDER:$3|$1}} ($2)",
+ "contributions-userdoesnotexist": "La cuenta de usuario «$1» no está registrada.",
"nocontribs": "No se encontraron cambios que cumplieran estos criterios.",
"uctop": "(edición actual)",
"month": "Desde el mes (y anteriores):",
"tog-showtoolbar": "显示编辑工具栏(JavaScript)",
"tog-editondblclick": "按两下改吖(JavaScript)",
"tog-editsectiononrightclick": "可以按右键来编写只把子段落(JavaScript)",
- "tog-rememberpassword": "到个只电脑记到我𠮶密码(至多$1{{PLURAL:$1|日|日}})",
"tog-watchcreations": "拿偶开嘞𠮶页面加到偶𠮶监视列表",
"tog-watchdefault": "拿偶改嘞𠮶页面加到偶𠮶监视列表",
"tog-watchmoves": "拿偶动嘞𠮶页面加到偶𠮶监视列表",
"page-atom-feed": "\"$1\" Atom Feed",
"red-link-title": "$1 (哈冇开始写)",
"nstab-main": "文章",
- "nstab-user": "用户页",
+ "nstab-user": "用户页面",
"nstab-media": "媒体页",
"nstab-special": "特殊页",
"nstab-project": "项目页",
"permalink": "この版への固定リンク",
"print": "印刷",
"view": "閲覧",
+ "view-foreign": "$1で閲覧",
"edit": "編集",
+ "edit-local": "ローカルの解説を編集",
"create": "作成",
+ "create-local": "ローカルの解説を作成",
"editthispage": "このページを編集",
"create-this-page": "このページを作成",
"delete": "削除",
"download": "ダウンロード",
"unwatchedpages": "ウォッチされていないページ",
"listredirects": "転送ページの一覧",
+ "listduplicatedfiles": "重複ファイル一覧",
+ "listduplicatedfiles-summary": "以下のファイルの最新版は、他の1件以上のファイルの最新版と重複しています。ローカルに存在するファイルのみを挙げています。",
"listduplicatedfiles-entry": "[[:File:$1|$1]] には [[$3|{{PLURAL:$2|$2 件の重複ファイル}}]]があります。",
"unusedtemplates": "使われていないテンプレート",
"unusedtemplatestext": "このページでは{{ns:template}}名前空間にあって他のページに読み込まれていないページを一覧にしています。\n削除する前にリンク元で他のリンクがないか確認してください。",
"tog-showtoolbar": "ಸಂಪಾದನೆಯ ಉಪಕರಣಗಳ ಪಟ್ಟಿಯನ್ನು ತೋರು",
"tog-editondblclick": "ಎರಡು ಬಾರಿ ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ ಪುಟವು ಸಂಪಾದಿಸುವಂತಾಗಲಿ",
"tog-editsectiononrightclick": "ಪುಟದ ವಿಭಾಗಗಳನ್ನು ಅವುಗಳ ಶೀರ್ಷಿಕೆಯನ್ನು ಎರಡು ಬಾರಿ ಕ್ಲಿಕ್ ಮಾಡಿ ಸಂಪಾದನೆ ಮಾಡುವಂತೆ ಇರಲಿ",
- "tog-rememberpassword": "ಈ ಗಣಕಯಂತ್ರದಲ್ಲಿ ನನ್ನ ಲಾಗಿನ್ ನೆನಪಿನಲ್ಲಿಟ್ಟುಕೊ (ಗರಿಷ್ಠ $1 {{PLURAL:$1|ದಿನದ|ದಿನಗಳ}}ವರೆಗೆ)",
"tog-watchcreations": "ನಾನು ಪ್ರಾರಂಭಿಸುವ ಲೇಖನಗಳನ್ನು ನನ್ನ ವೀಕ್ಷಣಾಪಟ್ಟಿಗೆ ಸೇರಿಸು",
"tog-watchdefault": "ನಾನು ಸಂಪಾದಿಸುವ ಪುಟಗಳನ್ನು ವೀಕ್ಷಣಾಪಟ್ಟಿಗೆ ಸೇರಿಸು",
"tog-watchmoves": "ನಾನು ಸ್ಥಳಾಂತರಿಸುವ ಪುಟಗಳನ್ನು ನನ್ನ ವೀಕ್ಷಣಾಪಟ್ಟಿಗೆ ಸೇರಿಸು",
"permalink": "ಸ್ಥಿರ ಸಂಪರ್ಕ",
"print": "ಮುದ್ರಿಸು",
"view": "ನೋಟ",
+ "view-foreign": "$1 ರಲ್ಲಿ ನೋಡಿ",
"edit": "ಸಂಪಾದಿಸಿ",
+ "edit-local": "ಸ್ಥಳೀಯ ವಿವರಣೆಯನ್ನು ಸಂಪಾದಿಸಿ",
"create": "ಸೃಷ್ಟಿಸು",
+ "create-local": "ಸ್ಥಳೀಯ ವಿವರಣೆಯನ್ನು ಸೇರಿಸಿ",
"editthispage": "ಈ ಪುಟವನ್ನು ಬದಲಾಯಿಸಿ",
"create-this-page": "ಈ ಪುಟವನ್ನು ಸೃಷ್ಟಿಸು",
"delete": "ಅಳಿಸಿ",
"gotaccountlink": "ಲಾಗ್ ಇನ್",
"userlogin-resetlink": "ನಿಮ್ಮ ಲಾಗಿನ್ ವಿವರಗಳನ್ನು ಮರೆತಿದ್ದೀರಾ?",
"userlogin-resetpassword-link": "ನಿಮ್ಮ ಪ್ರವೇಶಪದ ಮರೆತಿರೇ?",
+ "userlogin-helplink2": "ಲಾಗಿನ್ ಆಗಲು ಸಹಾಯ",
+ "userlogin-createanother": "ಇನ್ನೊಂದು ಖಾತೆಯನ್ನು ಸೃಷ್ಟಿಸಿ",
"createacct-join": "ನಿಮ್ಮ ಮಾಹಿತಿಯನ್ನು ಕೆಳಗೆ ನಮೂದಿಸಿ",
+ "createacct-another-join": "ಹೊಸ ಖಾತೆಯ ವಿವರಗಳನ್ನು ಈ ಕೆಳಗೆ ನಮೂದಿಸಿ.",
"createacct-emailrequired": "ಇ-ಮೇಲ್ ವಿಳಾಸ:",
+ "createacct-emailoptional": "ಮಿಂಚಂಚೆ ವಿಳಾಸ (ಐಚ್ಛಿಕ)",
"createacct-email-ph": "ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ",
+ "createacct-another-email-ph": "ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ",
"createaccountmail": "(ರಾಂಡಮ್) ತಾತ್ಕಾಲಿಕವಾಗಿ ಯಾದೃಚ್ಛಿಕ ಪಾಸ್ವರ್ಡ್ ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಸೂಚಿಸಿ: ಕಳುಹಿಸಿ",
"createacct-realname": "ನಿಜವಾದ ಹೆಸರು (ಐಚ್ಛಿಕ)",
"createaccountreason": "ಕಾರಣ:",
"nosuchuser": "\"$1\" ಹೆಸರಿನ ಯಾವ ಸದಸ್ಯರೂ ಇಲ್ಲ.\nಕಾಗುಣಿತವನ್ನು ಪರೀಕ್ಷಿಸಿ, ಅಥವಾ [[Special:UserLogin/signup|ಹೊಸ ಸದಸ್ಯತ್ವ ಖಾತೆಯನ್ನು ಸೃಷ್ಟಿಸಿ]].",
"nosuchusershort": "\"$1\" ಹೆಸರಿನ ಸದಸ್ಯರು ಯಾರೂ ಇಲ್ಲ.\nಹೆಸರಲ್ಲಿ ಕಾಗುಣಿತ ತಪ್ಪಿದೆಯೆ ಎಂದು ಪರೀಕ್ಷಿಸಿ.",
"nouserspecified": "ನೀವು ಒಂದು ಸದಸ್ಯತ್ವದ ಹೆಸರನ್ನು ಸೂಚಿಸಬೇಕು.",
+ "login-userblocked": "ಈ ಬಳಕೆದಾರರನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ. ಲಾಗಿನ್ ಆಗಲು ಸಾದ್ಯವಿಲ್ಲ.",
"wrongpassword": "ತಪ್ಪು ಪ್ರವೇಶ ಪದ ನೀಡಿರುವಿರಿ. ಮತ್ತೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ.",
"wrongpasswordempty": "ಖಾಲಿ ಪ್ರವೇಶ ಪದವನ್ನು ನೀಡಿರುವಿರಿ. ಮತ್ತೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ.",
"passwordtooshort": "ಪ್ರವೇಶಪದ ಕನಿಷ್ಟ {{PLURAL:$1|೧ ಅಕ್ಷರವನ್ನು|$1 ಅಕ್ಷರಗಳನ್ನು}} ಹೊಂದಿರಬೇಕು.",
+ "password-name-match": "ನಿಮ್ಮ ಬಳಕೆದಾರ ಹೆಸರಿನಿಂದ ಪ್ರವೇಶಪದ ವಿಭಿನ್ನವಾಗಿರಬೇಕು.",
+ "password-login-forbidden": "ಈ ಬಳಕೆದಾರರ ಹೆಸರು ಮತ್ತು ಪ್ರವೇಶಪದವನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ.",
"mailmypassword": "ಹೊಸ ಪ್ರವೇಶ ಪದವನ್ನು ಇ-ಅಂಚೆ ಮೂಲಕ ಕಳುಹಿಸಿ",
"passwordremindertitle": "{{SITENAME}}ಗೆ ಹೊಸ ತಾತ್ಕಾಲಿಕ ಪ್ರವೇಶ ಪದ",
"passwordremindertext": "{{SITENAME}} ($4) ಸೈಟಿಗೆ ಹೊಸ ಪ್ರವೇಶಪದವನ್ನು $1 ಐ.ಪಿ. ವಿಳಾಸದಿಂದ ಕೋರಲಾಗಿದೆ.\nಸದಸ್ಯ \"$2\" ಅವರ ಹೊಸ ಪ್ರವೇಶಪದ ಈಗ \"$3\".\nನೀವು ಲಾಗ್ ಇನ್ ಆಗಿ ತಮ್ಮ ಪ್ರವೇಶಪದವನ್ನು ಬದಲಾಯಿಸಿ.\n\nನೀವು ಈ ಕೋರಿಕೆಯನ್ನು ಮಾಡಿಲ್ಲದಿದ್ದರೆ, ಅಥವ ನೀವು ನಿಮ್ಮ ಹಳೆಯ ಪ್ರವೇಶಪದವನ್ನು ನೆನಪಿಸಿಕೊಂಡರೆ ಈ ಮಾಹಿತಿಗೆ ಗಮನ ನೀಡದೆ ನಿಮ್ಮ ಹಳೆಯ ಪ್ರವೇಶಪದವನ್ನು ಉಪಯೋಗಿಸಲು ಮುಂದುವರೆಸಿರಿ.",
"noemail": "ಸದಸ್ಯ \"$1\" ಅವರ ಹೆಸರಿನಲ್ಲಿ ಯಾವ ಇ-ಅಂಚೆ ವಿಳಾಸವೂ ದಾಖಲಾಗಿಲ್ಲ.",
+ "noemailcreate": "ನೀವು ಬಳಕೆಯಲ್ಲಿರುವ ಮಿಂಚಂಚೆ ವಿಳಾಸ ನೀಡಬೇಕಾಗುವುದು.",
"passwordsent": "\"$1\" ಅವರ ಹೆಸರಿನಲ್ಲಿ ನೋಂದಾಯಿತವಾದ ಇ-ಅಂಚೆ ವಿಳಾಸಕ್ಕೆ ಹೊಸ ಪ್ರವೇಶಪದವನ್ನು ಕಳುಹಿಸಲಾಗಿದೆ.\nಅದನ್ನು ಪಡೆದ ಮೇಲೆ ಮತ್ತೆ ಲಾಗಿನ್ ಆಗಿ.",
"blocked-mailpassword": "ನಿಮ್ಮ IP ವಿಳಾಸವನ್ನು ಸಂಪಾದನೆ ಮಾಡದಂತೆ ತಡೆ ಹಿಡಿಯಲಾಗಿದೆ. ದುರ್ಬಳಕೆ ಆಗದಿರಲೆಂದು ಈ ವಿಳಾಸದಿಂದ ಪ್ರವೇಶಪದ ಹಿಂಪಡೆಯುವ ಸೌಲಭ್ಯವನ್ನು ತಡೆ ಹಿಡಿಯಲಾಗಿದೆ.",
"eauthentsent": "ನೀವು ನೊಂದಾಯಿಸಿದ ಇ-ಅಂಚೆ ವಿಳಾಸಕ್ಕೆ ಧೃಡೀಕರಣ ಅಂಚೆಯನ್ನು ಕಳುಹಿಸಲಾಗಿದೆ.\nಈ ವಿಳಾಸಕ್ಕೆ ಮುಂದೆ ಯಾವುದೇ ಇ-ಅಂಚೆ ಕಳುಹಿಸಲ್ಪಡುವ ಮುನ್ನ ನೀವು ಈ ಕಳುಹಿಸಿರುವ ಅಂಚೆಯಲ್ಲಿನ ನಿರ್ದೇಶನಗಳನ್ನು ಪಾಲಿಸಿ, ಈ ವಿಳಾಸವು ನಿಮ್ಮದೇ ಎಂದು ಧೃಡೀಕರಿಸಬೇಕು.",
"noemailprefs": "ಈ ಸೌಲಭ್ಯಗಳು ಕೆಲಸ ಮಾಡಬೇಕಾದರೆ ಒಂದು ಇ-ಅಂಚೆ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ.",
"emailconfirmlink": "ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸವನ್ನು ಧೃಡೀಕರಿಸಿ",
"invalidemailaddress": "ಈ ಇ-ಅಂಚೆ ವಿಳಾಸವು ಸರಿಯಾದ ಪ್ರಕಾರದಲ್ಲಿ ಇಲ್ಲದಿರುವುದರಿಂದ ಇದನ್ನು ಸ್ವೀಕಾರ ಮಾಡಲಾಗುವುದಿಲ್ಲ.\nದಯವಿಟ್ಟು ಸರಿಯಾದ ಪ್ರಕಾರದ ವಿಳಾಸವನ್ನು ಸೇರಿಸಿ ಅಥವ ಆ ಚೌಕವನ್ನು ಖಾಲಿ ಬಿಡಿ.",
+ "emaildisabled": "ಈ ಜಾಲತಾಣವು ಮಿಂಚಂಚೆ ಕಳುಹಿಸಲು ಸಾದ್ಯವಿಲ್ಲ.",
"accountcreated": "ಖಾತೆಯನ್ನು ಸೃಷ್ಟಿಸಲಾಯಿತು",
"accountcreatedtext": "$1 ಅವರ ಬಳಕೆದಾರ ಖಾತೆ ಸೃಷ್ಟಿಸಲ್ಪಟ್ಟಿದೆ.",
"createaccount-title": "{{SITENAME}} ತಾಣಕ್ಕೆ ಬಳಕೆದಾರ ಖಾತೆ ಸೃಷ್ಟಿ ಮಾಡುವಿಕೆ",
"createaccount-text": "ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸ ನೀಡಿ {{SITENAME}} ($4) ಅಲ್ಲಿ ಯಾರೊ \"$2\" ಹೆಸರಿನ ಖಾತೆಯೊಂದನ್ನು ತೆಗೆದಿದ್ದಾರೆ, ಮತ್ತು ಅದರ ಪ್ರವೇಶ ಪದ \"$3\".\nನೀವು ಲಾಗ್ ಇನ್ ಆಗಿ ನಿಮ್ಮ ಪ್ರವೇಶ ಪದವನ್ನು ಬದಲಾಯಿಸಬೇಕು.\n\nಆ ಖಾತೆ ತಪ್ಪಾಗಿ ತೆಗೆದಿದ್ದಲ್ಲಿ, ಈ ಸಂದೇಶವನ್ನು ನೀವು ಅಲಕ್ಷಿಸಬಹುದು.",
+ "login-abort-generic": "ನಿಮ್ಮ ಲಾಗಿನ್ ಪಲಪ್ರದವಾಗಿಲ್ಲ-ವಿಫಲವಾಗಿದೆ",
"loginlanguagelabel": "ಭಾಷೆ: $1",
+ "createacct-another-realname-tip": "ಹೆಸರು ನೀಡುವುದು ಐಚ್ಛಿಕ. ನೀವು ಅದನ್ನು ನೀಡಿದಲ್ಲಿ ನಿಮ್ಮ ಕಾಣಿಕೆಗಳಿಗೆ ನಿಮಗೆ ಮನ್ನಣೆ ನೀಡಲಾಗುವುದು.",
+ "pt-login": "ಲಾಗ್ ಇನ್",
+ "pt-login-button": "ಲಾಗ್ ಇನ್",
+ "pt-createaccount": "ಹೊಸ ಖಾತೆ ತೆರೆಯಿರಿ",
+ "pt-userlogout": "ಲಾಗ್ ಔಟ್",
"changepassword": "ಪ್ರವೇಶ ಪದ ಬದಲಾಯಿಸಿ",
"resetpass_announce": "ನೀವು ತಾತ್ಕಾಲಿಕ ಇ-ಅಂಚೆ ಕೋಡ್ ಅನ್ನು ಉಪಯೋಗಿಸಿ ಲಾಗ್ ಇನ್ ಆಗಿರುವಿರಿ.\nಲಾಗ್ ಇನ್ ಪೂರ್ಣಗೊಳಿಸಲು ನೀವಿಲ್ಲ ಹೊಸ ಪ್ರವೇಶಪದ ನೀಡಬೇಕು:",
"resetpass_header": "ಖಾತೆಯ ಪ್ರವೇಶಪದ ಬದಲಾಯಿಸಿ",
"resetpass_submit": "ಪ್ರವೇಶ ಪದವನ್ನು ನಿಶ್ಚಯಿಸಿ ಲಾಗ್ ಇನ್ ಆಗಿ",
"changepassword-success": "ನಿಮ್ಮ ಪ್ರವೇಶ ಪದವನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಬದಲಾಯಿಸಲಾಗಿದೆ. ಈಗ ನಿಮ್ಮನ್ನು ಲಾಗ್ ಇನ್ ಮಾಡಲಾಗುತ್ತಿದೆ...",
"resetpass_forbidden": "ಪ್ರವೇಶಪದಗಳನ್ನು ಬದಲಾಯಿಸುವಂತಿಲ್ಲ.",
+ "resetpass-no-info": "ನೀವು ಈ ಪುಟವನ್ನು ನೇರತಲುಪಲು ಲಾಗಿನ್ ಆಗಿರುವುದು ಆವಶ್ಯಕ.",
"resetpass-submit-loggedin": "ಪ್ರವೇಶಪದ ಬದಲಾಯಿಸು",
"resetpass-submit-cancel": "ರದ್ದು ಮಾಡು",
+ "resetpass-recycled": "ದಯವಿಟ್ಟು ಈಗಿನ ಪ್ರವೇಶಪದದ ಬದಲು ಹೊಸಪ್ರವೇಶಪದ ಬದಲಾಯಿಸಿ ಮರುಚಾಲನೆ ನೀಡಿ.",
"resetpass-temp-password": "ತಾತ್ಕಾಲಿಕ ಪ್ರವೇಶಪದ:",
+ "passwordreset": "ಪ್ರವೇಶಪದವನ್ನು ಪುನಃಸ್ಥಾಪಿಸಿ.",
+ "passwordreset-legend": "ಪ್ರವೇಶಪದವನ್ನು ಪುನಃಸ್ಥಾಪಿಸಿ.",
+ "passwordreset-username": "ಬಳಕೆದಾರ ಹೆಸರು:",
+ "passwordreset-domain": "ಕ್ಷೇತ್ರ:",
+ "passwordreset-email": "ಇ-ಮೇಲ್ ವಿಳಾಸ:",
+ "passwordreset-emailsent": "ಪ್ರವೇಶಪದವನ್ನು ಪುನಃಸ್ಥಾಪಿಸಿದ ಮಿಂಚಂಚೆಯನ್ನು ಕಳುಹಿಸಲಾಗಿದೆ.",
+ "passwordreset-emailsent-capture": "ಪ್ರವೇಶಪದವನ್ನು ಪುನಃಸ್ಥಾಪಿಸಿದ ಮಿಂಚಂಚೆಯನ್ನು ಕಳುಹಿಸಲಾಗಿದೆ,ಇದನ್ನು ಈ ಕೆಳಗೆ ತೋರಿಸಲಾಗಿದೆ.",
+ "changeemail": "ಮಿಂಚಂಚೆ ವಿಳಾಸವನ್ನು ಬದಲಾಯಿಸಿ",
+ "changeemail-no-info": "ನೀವು ಈ ಪುಟವನ್ನು ನೇರತಲುಪಲು ಲಾಗಿನ್ ಆಗಿರುವುದು ಆವಶ್ಯಕ.",
+ "changeemail-oldemail": "ಪ್ರಸ್ತುತ ಮಿಂಚಂಚೆ ವಿಳಾಸ:",
"changeemail-newemail": "ಹೊಸ ಇ-ಅಂಚೆ ವಿಳಾಸ:",
+ "changeemail-none": "(ಯಾವೂ ಇಲ್ಲ)",
"changeemail-submit": "ಇಮೇಲ್ ಬದಲಾಯಿಸಿ",
"changeemail-cancel": "ರದ್ದುಗೊಳಿಸಿ",
"bold_sample": "ದಪ್ಪಗಿನ ಅಚ್ಚು",
"previewnote": "'''ಇದು ಕೇವಲ ಮುನ್ನೋಟ.'''\nಪುಟವನ್ನು ಇನ್ನೂ ಉಳಿಸಲಾಗಿಲ್ಲ ಎಂಬುದನ್ನು ಮರೆಯದಿರಿ!",
"continue-editing": "ಸಂಪಾದನೆಯ ಪ್ರದೇಶಕ್ಕೆ ಹೋಗಿ",
"editing": "'$1' ಲೇಖನ ಬದಲಾಯಿಸಲಾಗುತ್ತಿದೆ",
+ "creating": "$1 ನ್ನು ಸೃಷ್ಟಿಸಲಾಗುತ್ತಿದೆ",
"editingsection": "$1 (ವಿಭಾಗ) ಅನ್ನು ಸಂಪಾದಿಸುತ್ತಿರುವಿರಿ",
"editingcomment": "$1 (ಹೊಸ ವಿಭಾಗ) ಸಂಪಾದಿಸಲಾಗುತ್ತಿದೆ",
+ "editconflict": "ಸಂಪಾದನಾ ಘರ್ಷಣೆ: $1",
"explainconflict": "ನೀವು ಈ ಪುಟವನ್ನು ಸಂಪಾದಿಸಲು ಪ್ರಾರಂಭ ಮಾಡಿದ ಮೇಲೆ ಬೇರೊಬ್ಬರು ಯಾರೊ ಪುಟವನ್ನು ಬದಲಾಯಿಸಿದ್ದಾರೆ.\nಮೇಲಿನ ಬರವಣಗೆ ಚೌಕದಲ್ಲಿ ಪುಟದ ಪ್ರಸಕ್ತ ಸ್ವರೂಪ ತೋರಿಸಲಾಗಿದೆ.\nನೀವು ಮಾಡಿದ ಸಂಪಾದನೆಗಳನ್ನು ಕೆಳಗಿನ ಬರವಣಗೆ ಚೌಕದಲ್ಲಿ ತೋರಿಸಲಾಗಿದೆ.\nನಿಮ್ಮ ಸಂಪಾದನೆಗಳನ್ನು ಪ್ರಸಕ್ತ ಸ್ವರೂಪದ ಲೇಖನದಲ್ಲಿ ನೀವು ಸೇರಿಸಬೇಕಾಗುತ್ತದೆ.\nನೀವು ಪುಟವನ್ನು ಉಳಿಸಿದಾಗ '''ಮೇಲಿನ ಚೌಕದಲ್ಲಿ ನೀವು ಮಾಡುವ ಬದಲಾವಣೆಗಳನ್ನು ಮಾತ್ರ''' ಉಳಿಸಲಾಗುತ್ತದೆ.",
"yourtext": "ನಿಮ್ಮ ಸಂಪಾದನೆ",
"storedversion": "ಈಗಾಗಲೇ ಉಳಿಸಲಾಗಿರುವ ಆವೃತ್ತಿ",
"hiddencategories": "ಈ ಪುಟವು {{PLURAL:$1|೧ ಗುಪ್ತ ವರ್ಗಕ್ಕೆ|$1 ಗುಪ್ತ ವರ್ಗಗಳಿಗೆ}} ಸೇರಿದೆ:",
"nocreatetext": "{{SITENAME}} ಅಲ್ಲಿ ಹೊಸ ಪುಟಗಳನ್ನು ಸೃಷ್ಟಿಸಲು ಕೆಲವು ನಿಬಂಧನೆಗಳಿವೆ.\nನೀವು ಹಿಂದಿರುಗಿ ಆಗಲೇ ಅಸ್ಥಿತ್ವದಲ್ಲಿರುವ ಪುಟವೊಂದನ್ನು ಸಂಪಾದಿಸಿ, ಅಥವ [[Special:UserLogin|ಲಾಗ್ ಇನ್ ಆಗಿ ಅಥವ ಹೊಸ ಸದಸ್ಯರಾಗಿ]].",
"nocreate-loggedin": "ಹೊಸ ಪುಟಗಳನ್ನು ಸೃಷ್ಟಿಸಲು ನಿಮಗೆ ಅನುಮತಿ ಇಲ್ಲ.",
- "permissionserrors": "ಅನುಮತಿಗಳ ದೋಷಗಳು",
+ "permissionserrors": "ಅನುಮತಿ ದೋಷ",
"permissionserrorstext": "ನಿಮಗೆ ಅದನ್ನು ಮಾಡಲು ಅನುಮತಿ ಇಲ್ಲ, ಅದಕ್ಕೆ {{PLURAL:$1|ಕಾರಣ|ಕಾರಣಗಳು}}:",
"permissionserrorstext-withaction": "$2 ನಿಮಗೆ ಅನುಮತಿ ಇಲ್ಲ, ಅದಕ್ಕೆ {{PLURAL:$1|ಕಾರಣ|ಕಾರಣಗಳು}}:",
"recreate-moveddeleted-warn": "'''ಎಚ್ಚರಿಕೆ: ಹಿಂದೆ ಅಳಿಸಲಾದ ಪುಟವನ್ನು ನೀವು ಮತ್ತೆ ಸೃಷ್ಟಿಸುತ್ತಿರುವಿರಿ.'''\n\nಈ ಪುಟವನ್ನು ಸಂಪಾದಿಸಲು ಸಮರ್ಪಕ ಕಾರಣವಿದೆಯೆ ಎಂದು ದಯವಿಟ್ಟು ಆಲೋಚಿಸಿ.\nಪುಟದ ಅಳಿಸುವಿಕೆ ದಿನಚರಿಯನ್ನು ಈ ಕೆಳಗೆ ನೀಡಲಾಗಿದೆ:",
"edit-gone-missing": "ಪುಟವನ್ನು ಪ್ರಸ್ತುತಗೊಳಿಸಲು ಸಾದ್ಯವಿಲ್ಲ, ಪುಟವು ಬಹುಶ: ಅಳಿಸಲ್ಪಟ್ಟಿರಬಹುದು",
"edit-conflict": "ಸಂಪಾದನಾ ಘರ್ಷಣೆ.",
"edit-no-change": "ನಿಮ್ಮ ಸಂಪಾದನೆಯನ್ನು ಕಡೆಗಣಿಸಲಾಗಿದೆ ಏಕೆಂದರೆ ಪಠ್ಯದಲ್ಲಿ ಯಾವುದೇ ಬದಲಾವಣೆ ಮಾಡಲಾಗಿಲ್ಲ್ಲ",
+ "postedit-confirmation": "ನಿಮ್ಮ ಸಂಪಾದನೆಯನ್ನು ಉಳಿಸಲಾಗಿದೆ.",
"edit-already-exists": "ಹೊಸ ಪುಟವನ್ನು ಸೃಷ್ಟಿಸಲಾಗಲಿಲ್ಲ.\nಅದು ಆಗಲೆ ಅಸ್ಥಿತ್ವದಲ್ಲಿದೆ.",
+ "content-model-javascript": "ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್",
+ "content-model-css": "ಸಿಎಸ್ಎಸ್",
"expensive-parserfunction-warning": "ಎಚ್ಚರಿಕೆ: ಈ ಪುಟದಲ್ಲಿ ಬಹುತೇಕ ದುಬಾರಿ parser function ಕರೆಗಳಿವೆ.\n\nಈಗ {{PLURAL:$1|$1 ಕರೆ|$1 ಕರೆಗಳು}} ಇದ್ದು, $2 {{PLURAL:$2|ಕರೆಗಿಂತ|ಕರೆಗಳಿಗಿಂತ}} ಕಡಿಮೆ ಇರಬೇಕು.",
"expensive-parserfunction-category": "ಬಹುತೇಕ ದುಬಾರಿ parser function ಕರೆಗಳಿರುವ ಪುಟಗಳು",
"post-expand-template-inclusion-warning": "' ' 'ಎಚ್ಚರಿಕೆ:' ' ' ಪುಟದಲ್ಲಿ ಹಕುವ ಛಿತ್ರ ಥೊದಥು. \nಕೆಲವು ಟೆಂಪ್ಲೇಟುಗಳು ಹಕಲಗುದಿಲ್ಲ.",
"revdelete-hide-comment": "ಸಂಪಾದನೆ ವಿವರಣೆ ಅಡಗಿಸು",
"revdelete-hide-user": "ಸಂಪಾದಕರ ಬಳಕೆಯ ಹೆಸರು/IP ಅಡಗಿಸು",
"revdelete-hide-restricted": "ಈ ನಿಬಂಧನೆಗಳನ್ನು ನಿರ್ವಾಹಕರಿಗೂ ಅನ್ವಯಿಸು ಮತ್ತು ಈ interface ಗೆ ಬೀಗ ಹಾಕು",
+ "revdelete-radio-same": "(ಬದಲಾಯಿಸಬೇಡಿ)",
"revdelete-radio-set": "ಹೌದು",
"revdelete-radio-unset": "ಇಲ್ಲ",
"revdelete-suppress": "ನಿರ್ವಾಹಕರಿಂದ ಮತ್ತಿತರರಿಂದ ಬಂದ ಮಾಹಿತಿಯನ್ನು ಅಡಗಿಸು",
"powersearch-legend": "ಮುಂದುವರೆದ ಹುಡುಕಾಟ",
"powersearch-ns": "ಈ ಪುಟ ಪ್ರಬೇಧಗಳಲ್ಲಿ ಹುಡುಕು:",
"powersearch-redir": "ಪುನರ್ನಿರ್ದೇಶನಗಳ ಪಟ್ಟಿ",
+ "powersearch-togglelabel": "ಪರೀಕ್ಷಿಸಿ:",
"powersearch-toggleall": "ಎಲ್ಲಾ",
"powersearch-togglenone": "ಯಾವುದೂ ಇಲ್ಲ",
"search-external": "ಬಾಹ್ಯ ಹುಡುಕಾಟ",
"prefs-skin": "ಚರ್ಮ",
"skin-preview": "ಮುನ್ನೋಟ",
"datedefault": "ಯಾವುದೇ ಪ್ರಾಶಸ್ತ್ಯ ಇಲ್ಲ",
+ "prefs-user-pages": "ಸದಸ್ಯರ ಪುಟಗಳು",
"prefs-personal": "ಬಳಕೆದಾರರ ಬಗ್ಗೆ",
"prefs-rc": "ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳು",
"prefs-watchlist": "ವೀಕ್ಷಣಾಪಟ್ಟಿ",
"prefs-watchlist-edits-max": "ಗರಿಷ್ಠ ಸಂಖ್ಯೆ: ೧೦೦೦",
"prefs-misc": "ಇತರೆ",
"prefs-resetpass": "ಪ್ರವೇಶಪದ ಬದಲಾಯಿಸಿ",
+ "prefs-changeemail": "ಮಿಂಚಂಚೆ ವಿಳಾಸವನ್ನು ಬದಲಾಯಿಸಿ",
+ "prefs-setemail": "ಇ-ಅಂಚೆ ವಿಳಾಸವನ್ನು ಸ್ಥಾಪಿಸಿ",
"prefs-email": "ಇ-ಅಂಚೆ ಇಚ್ಛೆಗಳು",
"saveprefs": "ಉಳಿಸಿ",
"prefs-editing": "ಸಂಪಾದನೆ",
"rows": "ಸಾಲುಗಳು:",
+ "columns": "ಸಾಲುಗಳು:",
"searchresultshead": "ಹುಡುಕು",
+ "stub-threshold-disabled": "ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ.",
"recentchangesdays": "ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳಲ್ಲಿ ತೋರಿಸಬೇಕಾದ ದಿನಗಳು:",
"recentchangescount": "ಇತ್ತೀಚೆಗಿನ ಬದಲಾವಣೆಗಳಲ್ಲಿರುವ ವಿಷಯಗಳ ಸಂಖ್ಯೆ",
"savedprefs": "ನಿಮ್ಮ ಇಚ್ಛೆಗಳನ್ನು ಉಳಿಸಲಾಯಿತು.",
"timezoneregion-indian": "ಹಿಂದೂ ಮಹಾಸಾಗರ",
"timezoneregion-pacific": "ಪೆಸಿಫಿಕ್ ಮಹಾಸಾಗರ",
"allowemail": "ಬೇರೆ ಸದಸ್ಯರಿಂದ ಈ-ಮೈಲ್ಗಳನ್ನು ಸ್ವೀಕರಿಸು",
+ "prefs-searchoptions": "ಹುಡುಕು",
"prefs-namespaces": "ನಾಮವರ್ಗಗಳು",
"defaultns": "ಮೂಲಸ್ಥಿತಿಯಲ್ಲಿ ಈ ಪುಟಪ್ರಬೇಧಗಳಲ್ಲಿ ಹುಡುಕಿ:",
"default": "ಮೂಲಸ್ಥಿತಿ",
"yournick": "ಸಹಿ:",
"badsiglength": "ನಿಮ್ಮ ಅಡ್ಡಹೆಸರು ತುಂಬಾ ಉದ್ದವಾಗಿದೆ.\nಅದು $1 {{PLURAL:$1|ಅಕ್ಷರಕ್ಕಿಂತ|ಅಕ್ಷರಗಳಿಗಿಂತ}} ಕಡಿಮೆ ಇರಬೇಕು.",
"yourgender": "ಲಿಂಗ:",
+ "gender-unknown": "ನಾನು ಹೇಳಲಿಚ್ಛಿಸುವುದಿಲ್ಲ",
"gender-male": "ಗಂಡಸು",
"gender-female": "ಸ್ತ್ರೀ",
"email": "ಇ-ಅಂಚೆ",
"prefs-help-realname": "ನಿಜ ಹೆಸರು ನೀಡುವುದು ಐಚ್ಛಿಕ. ನೀವು ಅದನ್ನು ನೀಡಿದಲ್ಲಿ ನಿಮ್ಮ ಕಾಣಿಕೆಗಳಿಗೆ ನಿಮಗೆ ಮನ್ನಣೆ ನೀಡಲಾಗುವುದು.",
"prefs-help-email": "ಇ-ಅಂಚೆ ವಿಳಾಸ ಕಡ್ಡಾಯವಲ್ಲ, ಆದರೆ ನೀವು ಅದನ್ನು ನೀಡಿದರೆ ನೀವು ನಿಮ್ಮ ಪ್ರವೇಶ ಪದವನ್ನು ಮರೆತರೆ ಅದನ್ನು ನಿಮಗೆ ಇ-ಅಂಚೆಯಿಂದ ಕಳುಹಿಸಿಬಹುದು.",
"prefs-help-email-required": "ಇ-ಅಂಚೆ ವಿಳಾಸ ಬೇಕಾಗಿದೆ.",
+ "prefs-info": "ಮೂಲಭೂತ ಮಾಹಿತಿ",
"prefs-i18n": "ಅಂತರರಾಷ್ಟ್ರೀಕರಣ",
"prefs-signature": "ಸಹಿ",
+ "prefs-dateformat": "ದಿನಾಂಕ ಶೈಲಿ",
"prefs-advancedediting": "ಪರಿಣತ ಇಚ್ಛೆಗಳು",
+ "prefs-editor": "ಸಂಪಾದಕ",
+ "prefs-preview": "ಮುನ್ನೋಟ",
"prefs-advancedrc": "ಪರಿಣತ ಇಚ್ಛೆಗಳು",
"prefs-advancedrendering": "ಪರಿಣತ ಇಚ್ಛೆಗಳು",
"prefs-advancedsearchoptions": "ಪರಿಣತ ಇಚ್ಛೆಗಳು",
"prefs-displayrc": "ಪ್ರದರ್ಶನ ಆಯ್ಕೆಗಳು",
"prefs-displaysearchoptions": "ಪ್ರದರ್ಶನ ಆಯ್ಕೆಗಳು",
"prefs-displaywatchlist": "ಪ್ರದರ್ಶನ ಆಯ್ಕೆಗಳು",
+ "email-address-validity-valid": "ಮಿಂಚಂಚೆ ವಿಳಾಸವು ಸಿಂಧುವೆಂದು ತೋರುತ್ತದೆ",
+ "email-address-validity-invalid": "ಸಿಂಧುವಾದ ಮಿಂಚಂಚೆ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ",
"userrights": "ಬಳಕೆದಾರ ಹಕ್ಕುಗಳ ನಿರ್ವಹಣೆ",
"userrights-lookup-user": "ಬಳಕೆದಾರ ಗುಂಪುಗಳನ್ನು ನಿರ್ವಹಿಸು",
"userrights-user-editname": "ಬಳಕೆದಾರ ಹೆಸರನ್ನು ಸೂಚಿಸಿ:",
"right-read": "ಪುಟಗಳನ್ನು ಓದಿ",
"right-edit": "ಪುಟಗಳನ್ನು ಬದಲಾಯಿಸಿ",
"right-createpage": "ಪುಟಗಳನ್ನು ಸೃಷ್ಟಿಸಿ (ಚರ್ಚಾ ಪುಟಗಳಲ್ಲಿ ಇಲ್ಲದ್ದು)",
+ "right-createtalk": "ಚರ್ಚಾ ಪುಟಗಳನ್ನು ಸೃಷ್ಟಿಸು",
+ "right-createaccount": "ಹೊಸ ಬಳಕೆದಾರ ಖಾತೆಯನ್ನು ರಚಿಸಿ",
+ "right-move": "ಪುಟಗಳನ್ನು ಸ್ಥಳಾಂತರಿಸಿ",
+ "right-move-subpages": "ಪುಟಗಳನ್ನು ಅವುಗಳ ಉಪಪುಟಗಳೊಂದಿಗೆ ಸ್ಥಾಳಾಂತರಿಸಿ",
+ "right-movefile": "ಕಡತಗಳನ್ನು ಸ್ಥಳಾಂತರಿಸಿ",
"right-upload": "ಕಡತಗಳನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡು",
"right-reupload": "ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಫೈಲ್ ಗಳ ಕಡತಗಳ ಮೇಲೆ ಬರೆಯಿರಿ",
"right-reupload-own": "ವತಃ ತಾವೇ ನಕಲೆರಿಸಿರುವ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಫೈಲ್ ಗಳ ಕಡತಗಳ ಮೇಲೆ ಬರೆಯಿರಿ",
"right-deletedtext": "ಆಳಿಸಿದ ಪಠ್ಯ ಮತ್ತು ಅಳಿಸಿದ ಆವೃತ್ತಿಗಳ ನಡುವಿನ ಬದಲಾವಣೆಗಳನ್ನು ನೋಡಿ",
"right-browsearchive": "ಅಳಿಸಲಾಗಿರುವ ಪುಟಗಳನ್ನು ಹುಡುಕಿ",
"right-undelete": "ಆಳಿಸಿದ ಪುಟವನ್ನು ಉಳಿಸಿ",
+ "right-block": "ಬೇರೆ ಬಳಕೆದಾರರು ಸಂಪಾದಿಸದಂತೆ ನಿರ್ಬಂಧಿಸು",
+ "right-blockemail": "ಬಳಕೆದಾರನು ಇ-ಅಂಚೆ ಕಳುಹಿಸುವುದನ್ನು ತಡೆಗಟ್ಟು",
+ "right-import": "ಬೇರೆ ವಿಕಿಗಳಿಂದ ಪುಟಗಳನ್ನು ಆಮದು ಮಾಡು",
"right-unwatchedpages": "ಪಹರೆಯಿಲ್ಲದ ಪುಟಗಳ ಪಟ್ಟಿಯನ್ನು ವೀಕ್ಷಿಸಿ",
"right-mergehistory": "ಪುಟಗಳು ಇತಿಹಾಸದಲ್ಲಿ ವಿಲೀನಗೊಳಿಸಿ",
"right-userrights": "ಎಲ್ಲಾ ಬಳಕೆದಾರ ಹಕ್ಕುಗಳನ್ನು ತಿದ್ದುಪಡಿಸಿ",
"action-delete": "ಈ ಪುಟವನ್ನು ಅಳಿಸು",
"action-deleterevision": "ಈ ಆವೃತ್ತಿಯನ್ನು ಅಳಿಸು",
"action-browsearchive": "ಅಳಿಸಲಾಗಿರುವ ಪುಟಗಳನ್ನು ಹುಡುಕು",
+ "action-undelete": "ಈ ಪುಟವನ್ನು ಅಳಿಸಬೇಡ",
"action-block": "ಈ ಸದಸ್ಯರನ್ನು ಸಂಪಾದಿಸಲು ಆಗದಂತೆ ನಿರ್ಭಂಧಿಸಿ",
"action-protect": "ಈ ಪುಟದ ಸಂರಕ್ಷಣೆ ಮಟ್ಟಗಳನ್ನು ಬದಲಾಯಿಸಲು",
+ "action-import": "ಇನ್ನೊಂದು ವಿಕಿಯಿಂದ ಪುಟಗಳನ್ನು ಆಮದು ಮಾಡು",
"action-unwatchedpages": "ಪಹರೆಯಿಲ್ಲದ ಪುಟಗಳ ಪಟ್ಟಿಯನ್ನು ವೀಕ್ಷಿಸಿ",
"action-userrights": "ಎಲ್ಲಾ ಬಳಕೆದಾರ ಹಕ್ಕುಗಳನ್ನು ತಿದ್ದುಪಡಿಸಿ",
+ "action-userrights-interwiki": "ಬೇರೆ ವಿಕಿಗಳ ಮೇಲೆ ಎಲ್ಲಾ ಬಳಕೆದಾರ ಹಕ್ಕುಗಳನ್ನು ತಿದ್ದುಪಡಿಸಿ",
"action-sendemail": "ಇ-ಅಂಚೆ ಕಳುಹಿಸಿ",
+ "action-editmywatchlist": "ನಿಮ್ಮ ನಿಗಾಪುಟವನ್ನು ಸಂಪಾದಿಸಿ",
+ "action-viewmywatchlist": "ನಿಮ್ಮ ನಿಗಾಪುಟವನ್ನು ನೋಡಿ",
+ "action-viewmyprivateinfo": "ನಿಮ್ಮ ಖಾಸಗಿ ಮಾಹಿತಿಗಳನ್ನು ನೋಡಿ",
+ "action-editmyprivateinfo": "ನಿಮ್ಮ ಖಾಸಗಿ ಮಾಹಿತಿಯನ್ನು ಮಾರ್ಪಡಿಸಿ",
"nchanges": "$1 {{PLURAL:$1|ಬದಲಾವಣೆ|ಬದಲಾವಣೆಗಳು}}",
+ "enhancedrc-history": "ಇತಿಹಾಸ",
"recentchanges": "ಇತ್ತೀಚೆಗಿನ ಬದಲಾವಣೆಗಳು",
"recentchanges-legend": "ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳ ಆಯ್ಕೆಗಳು",
"recentchanges-summary": "ವಿಕಿಗೆ ಮಾಡಲ್ಪಟ್ಟ ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳನ್ನು ಈ ಪುಟದಲ್ಲಿ ನೀವು ಕಾಣಬಹುದು.",
"rcnotefrom": "'''$2''' ಇಂದ ಆಗಿರುವ ಬದಲಾವಣೆಗಳು ಕೆಳಗಿವೆ (ಕೊನೆಯ '''$1'''ರವರೆಗೆ ತೋರಿಸಲಾಗಿದೆ).",
"rclistfrom": "$1 ಇಂದ ಪ್ರಾರಂಭಿಸಿ ಮಾಡಲಾದ ಬದಲಾವಣೆಗಳನ್ನು ನೋಡಿ",
"rcshowhideminor": "ಚಿಕ್ಕಪುಟ್ಟ ಬದಲಾವಣೆಗಳನ್ನು $1",
+ "rcshowhideminor-show": "ತೊರಿಸಿ",
+ "rcshowhideminor-hide": "ಮರೆ ಮಾಡಿ",
"rcshowhidebots": "ಬಾಟ್ಗಳನ್ನು $1",
+ "rcshowhidebots-show": "ತೊರಿಸಿ",
+ "rcshowhidebots-hide": "ಮರೆ ಮಾಡಿ",
"rcshowhideliu": "ಲಾಗ್-ಇನ್ ಆಗಿರುವ ಸದಸ್ಯರು $1",
+ "rcshowhideliu-show": "ತೊರಿಸಿ",
+ "rcshowhideliu-hide": "ಮರೆ ಮಾಡಿ",
"rcshowhideanons": "ಅನಾಮಧೇಯ ಸದಸ್ಯರು $1",
+ "rcshowhideanons-show": "ತೊರಿಸಿ",
+ "rcshowhideanons-hide": "ಮರೆ ಮಾಡಿ",
"rcshowhidepatr": "$1 ಪರೀಕ್ಷಿತ ಸಂಪಾದನೆಗಳು",
+ "rcshowhidepatr-show": "ತೊರಿಸಿ",
+ "rcshowhidepatr-hide": "ಮರೆ ಮಾಡಿ",
"rcshowhidemine": "ನನ್ನ ಸಂಪಾದನೆಗಳನ್ನು $1",
+ "rcshowhidemine-show": "ತೊರಿಸಿ",
+ "rcshowhidemine-hide": "ಮರೆ ಮಾಡಿ",
"rclinks": "ಕೊನೆಯ $2 ದಿನಗಳಲ್ಲಿ ಮಾಡಿದ $1 ಕೊನೆಯ ಬದಲಾವಣೆಗಳನ್ನು ನೋಡಿ <br />$3",
"diff": "ವ್ಯತ್ಯಾಸ",
"hist": "ಇತಿಹಾಸ",
"filename": "ಕಡತದ ಹೆಸರು",
"filedesc": "ಸಾರಾಂಶ",
"fileuploadsummary": "ತಾತ್ಪರ್ಯ:",
+ "filereuploadsummary": "ಕಡತ ಬದಲಾವಣೆಗಳು:",
"filestatus": "ಕೃತಿಸ್ವಾಮ್ಯತೆಯ ಸ್ಥಿತಿ:",
"filesource": "ಆಕರ:",
"ignorewarning": "ಎಚ್ಚರಿಕೆಯನ್ನು ಕಡೆಗಣಿಸಿ ಫೈಲನ್ನು ಉಳಿಸಿ",
"filetype-banned-type": "'''\".$1\"''' ಒಂದು ನಿರ್ಬಂಧಿತ ಫೈಲಿನ ಮಾದರಿ. ನಿರ್ಬಂಧನೆಯಿಲ್ಲದ ಫೈಲಿನ {{PLURAL:$3|ಮಾದರಿಯು|ಮಾದರಿಗಳು}} $2.",
"filetype-missing": "ಈ ಫೈಲಿಗೆ ಉಪನಾಮ (extension ಉದಾ \".jpg\") ಇಲ್ಲ.",
"empty-file": "ನೀವು ಸಮರ್ಪಿಸಿದ ಕಡತವು ಖಾಲಿಯಾಗಿತ್ತು.",
+ "file-too-large": "ನೀವು ಸಮರ್ಪಿಸಿದ ಕಡತವು ಬಹಳ ಉದ್ದವಾಗಿತ್ತು.",
+ "filename-tooshort": "ಕಡತದ ಹೆಸರು ತೀರಾ ಚಿಕ್ಕದಾಯಿತು.",
+ "filetype-banned": "ಈ ಮಾದರಿಯ ಕಡತವನ್ನು ನಿಷೇಧಿಸಲಾಗಿದೆ.",
+ "verification-error": "ಈ ಕಡತವು ಕಡತ ಪರೀಕ್ಷೆಯಲ್ಲಿ ತೇರ್ಗಡೆಯಾಗಿಲ್ಲ.",
+ "illegal-filename": "ಈ ಕಡತದ ಹೆಸರನ್ನು ಅನುಮತಿಸುವುದಿಲ್ಲ.",
+ "overwrite": "ಪ್ರಸ್ತುತದಲ್ಲಿರುವ ಕಡತವನ್ನು ಪುನರ್ಲೇಖಿಸಲು ಅನುಮತಿ ಇಲ್ಲ.",
"unknown-error": "ಒಂದು ಅಜ್ಞಾತ ದೋಷ ಸಂಭವಿಸಿದೆ.",
"tmp-create-error": "ತಾತ್ಕಾಲಿಕ ಕಡತವನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ",
"tmp-write-error": "ತಾತ್ಕಾಲಿಕ ಕಡತವನ್ನು ಬರೆಯುವಾಗ ದೋಷ ಉಂಟಾಗಿದೆ",
"watchthisupload": "ಈ ಪುಟವನ್ನು ವೀಕ್ಷಿಸಿ",
"filewasdeleted": "ಈ ಹೆಸರಿನ ಫೈಲು ಮುಂಚೆ ಅಪ್ಲೋಡ್ ಮಾಡಲಾಗಿ ಅದನ್ನು ಆನಂತರ ಅಳಿಸಲಾಗಿತ್ತು.\nಇದನ್ನು ಮತ್ತೊಮ್ಮೆ ಅಪ್ಲೋಡ್ ಮಾಡುವ ಮುನ್ನ ನೀವು $1 ಅನ್ನು ಪರೀಕ್ಷಿಸಬೇಕು.",
"upload-success-subj": "ಯಶಸ್ವಿ ಅಪ್ಲೋಡ್",
+ "upload-warning-subj": "ಅಪ್ಲೋಡ್ ಎಚ್ಚರಿಕೆ",
"upload-file-error": "ಆಂತರಿಕ ದೋಷ",
"upload-file-error-text": "ಸರ್ವರ್ನಲ್ಲಿ ತಾತ್ಕಾಲಿಕ ಫೈಲನ್ನು ಸೃಷ್ಟಿಸುವಲ್ಲಿ ಒಂದು ಆಂತರಿಕ ದೋಷವಾಯಿತು.\nದಯವಿಟ್ಟು ವ್ಯವಸ್ಥಾಪಕರೊಬ್ಬರನ್ನು ಸಂಪರ್ಕಿಸಿ.",
"upload-misc-error": "ತಿಳಿದಿಲ್ಲದ ಅಪ್ಲೋಡ್ ದೋಷ",
+ "backend-fail-delete": "\"$1\" ಫೈಲ್ ಅನ್ನು ಅಳಿಸಲಾಗಲಿಲ್ಲ.",
+ "backend-fail-alreadyexists": " \"$1\" ಕಡತವು ಪ್ರಸ್ತುತವಿದೆ.",
+ "backend-fail-copy": "\"$1\" ಫೈಲ್ ಅನ್ನು \"$2\" ಗೆ ನಕಲಿಸಲಾಗಲಿಲ್ಲ.",
+ "backend-fail-move": "\"$1\"ನ್ನು\"$2\" ರೊಂದಿಗೆ ಸೇರಿಸಲಾಗಿಲ್ಲ",
+ "backend-fail-opentemp": "ತಾತ್ಕಾಲಿಕ ಕಡತವನ್ನು ತೆರೆಯಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ",
+ "backend-fail-writetemp": "ತಾತ್ಕಾಲಿಕ ಕಡತವನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ",
+ "backend-fail-closetemp": "ತಾತ್ಕಾಲಿಕ ಕಡತವನ್ನು ಮುಚ್ಚಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ.",
+ "backend-fail-read": " \"$1\"ಕಡತವನ್ನು ಓದಲಾಗಲಿಲ್ಲ.",
+ "backend-fail-create": " \"$1\"ಕಡತದಲ್ಲಿ ಬರೆಯಲಾಗಲಿಲ್ಲ.",
"zip-file-open-error": "ZIP ಚೆಕ್ಗಳಿಗೆ ಕಡತವನ್ನು ತೆರೆಯುವಾಗ ಒಂದು ದೋಷ ಸಂಭವಿಸಿದೆ.",
"zip-wrong-format": "ಸೂಚಿಸಲಾದ ಕಡತ ZIP ಫೈಲ್ ಅಲ್ಲ.",
"uploadstash-badtoken": "ಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸುವಾಗ ನಿಮ್ಮ ಸಂಪಾದನೆಯನ್ನು ರುಜುವಾತುಗಳು ಅವಧಿ ಬಹುಶಃ, ಯಶಸ್ವಿಯಾಗಿಲ್ಲ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.",
"listfiles-summary": "ಈ ವಿಶೇಷ ಪುಟವು ಎಲ್ಲಾ ಅಪ್ಲೋಡ್ ಆಗಿರುವ ಫೈಲುಗಳನ್ನು ತೋರುತ್ತದೆ.\nವಸ್ತುಸ್ಥಿತಿಯಲ್ಲಿ, ಕೊನೆಯದಾಗಿ ಅಪ್ಲೋಡ್ ಆಗಿರುವ ಫೈಲುಗಳು ಪಟ್ಟಿಯ ಪ್ರಾರಂಭದಲ್ಲಿ ಕಾಣುತ್ತವೆ.\nಪಟ್ಟಿಯ ವಿಭಾಗದ ತಲೆಬರಹವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿದರೆ ಪಟ್ಟಿಯ ರಚನೆ ಬದಲಾಗುತ್ತದೆ.",
"imgfile": "ಫೈಲು",
"listfiles": "ಚಿತ್ರಗಳ ಪಟ್ಟಿ",
+ "listfiles_thumb": "ಕಿರುನೋಟ",
"listfiles_date": "ದಿನಾಂಕ",
"listfiles_name": "ಹೆಸರು",
"listfiles_user": "ಸದಸ್ಯ",
"listfiles_size": "ಗಾತ್ರ",
"listfiles_description": "ವಿವರ",
"listfiles_count": "ಆವೃತ್ತಿಗಳು",
+ "listfiles-latestversion": "ಪ್ರಸಕ್ತ ಆವೃತ್ತಿ",
+ "listfiles-latestversion-yes": "ಹೌದು",
+ "listfiles-latestversion-no": "ಇಲ್ಲ",
"file-anchor-link": "ಚಿತ್ರ",
"filehist": "ಕಡತದ ಇತಿಹಾಸ",
"filehist-help": "ದಿನ/ಕಾಲ ಒತ್ತಿದರೆ ಆ ಸಮಯದಲ್ಲಿ ಈ ಕಡತದ ವಸ್ತುಸ್ಥಿತಿ ತೋರುತ್ತದೆ.",
"filehist-datetime": "ದಿನ/ಕಾಲ",
"filehist-thumb": "ಕಿರುನೋಟ",
"filehist-thumbtext": "$1 ವರೆಗಿನ ಆವೃತ್ತಿಯ ಕಿರುನೋಟ",
+ "filehist-nothumb": "ಕಿರುನೋಟ ಇಲ್ಲ",
"filehist-user": "ಸದಸ್ಯ",
"filehist-dimensions": "ಆಯಾಮಗಳು",
"filehist-filesize": "ಫೈಲಿನ ಗಾತ್ರ",
"filepage-nofile": "ಈ ಹೆಸರಿನ ಫೈಲ್ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ",
"filepage-nofile-link": "ಈ ಹೆಸರಿನ ಫೈಲ್ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ ಆದರೆ ನೀವು ಇದನ್ನು [$1 ನಕಲೆರಿಸಬಹುದು ]",
"uploadnewversion-linktext": "ಈ ಫೈಲಿನ ಹೊಸ ಆವೃತ್ತಿಯನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಿ",
+ "upload-disallowed-here": "ನೀವು ಈ ಕಡತವನ್ನು ಪುನರ್ಲೇಖಿಸಲು ಸಾದ್ಯವಿಲ್ಲ.",
"filerevert": "$1 ಹಿಂದಿನಂತಾಗಿಸು",
"filerevert-comment": "ಕಾರಣ:",
"filerevert-submit": "ಹಿಂದಿನಂತಾಗಿಸು",
"unusedtemplateswlh": "ಇತರ ಕೊಂಡಿಗಳು",
"randompage": "ಯಾದೃಚ್ಛಿಕ ಪುಟ",
"randompage-nopages": "ಈ ಪುಟಪ್ರಬೇಧದಲ್ಲಿ ಯಾವ ಪುಟವೂ ಇಲ್ಲ.",
+ "randomincategory-selectcategory-submit": "ಹೋಗು",
"randomredirect": "ಯದೃಚ್ಛಿಕ ಪುನರ್ನಿರ್ದೇಶಿತ ಪುಟ",
"randomredirect-nopages": "ಈ ಪುಟಪ್ರಬೇಧದಲ್ಲಿ ಯಾವ ಪುನರ್ನಿರ್ದೇಶನಗಳೂ ಇಲ್ಲ.",
"statistics": "ಅಂಕಿ ಅಂಶಗಳು",
"statistics-header-hooks": "ಇತರ ಅಂಕಿಅಂಶಗಳು",
"statistics-articles": "ಲೇಖನ ಪುಟ",
"statistics-pages": "ಪುಟಗಳು",
+ "statistics-files": "ಅಪ್ಲೋಡ್ ಆಗಿರುವ ಫೈಲುಗಳು",
+ "statistics-edits-average": "ಪುಟದ ಸರಾಸರಿ ಮಾರ್ಪಡಿಕೆಗಳು",
"statistics-views-total": "ಒಟ್ಟು ವೀಕ್ಷಣೆಗಳು",
+ "statistics-users-active": "ಸಕ್ರಿಯ ಬಳಕೆದಾರರು",
"statistics-mostpopular": "ಅತ್ಯಂತ ಹೆಚ್ಚು ವೀಕ್ಷಿತ ಪುಟಗಳು",
+ "pageswithprop-submit": "ಹೋಗು",
"doubleredirects": "ಮರುಕಳಿಸಿದ ಪುನರ್ನಿರ್ದೇಶನಗಳು",
"brokenredirects": "ಮುರಿದ ರಿಡೈರೆಕ್ಟ್ಗಳು",
"brokenredirectstext": "ಕೆಳಗಿನ ರಿಡೈರೆಕ್ಟುಗಳು ವಿಕಿಯಲ್ಲಿ ಇಲ್ಲದ ಪುಟಗಳಿಗೆ ಸಂಪರ್ಕ ಹೊಂದಿವೆ:",
"mostlinkedtemplates": "ಅತ್ಯಂತ ಹೆಚ್ಚು ಸಂಪರ್ಕಗಳನ್ನು ಹೊಂದಿರುವ ಟೆಂಪ್ಲೇಟುಗಳು",
"mostcategories": "ಅತ್ಯಂತ ಹೆಚ್ಚು ವರ್ಗಗಳನ್ನು ಹೊಂದಿರುವ ಪುಟಗಳು",
"mostimages": "ಅತಿ ಹೆಚ್ಚು ಸಂಪರ್ಕಗಳನ್ನು ಹೊಂದಿರುವ ಫೈಲುಗಳು",
+ "mostinterwikis": "ಅತ್ಯಂತ ಹೆಚ್ಚು ಅಂತರ್ವಿಕಿಗಳನ್ನು ಹೊಂದಿದ ಪುಟಗಳು",
"mostrevisions": "ಅತ್ಯಂತ ಹೆಚ್ಚು ಬದಲಾವಣೆಗಳಾಗಿವು ಪುಟಗಳು",
"prefixindex": "ಈ ಪೂರ್ವನಾಮವನ್ನು ಹೊಂದಿರುವ ಎಲ್ಲಾ ಪುಟಗಳು",
"shortpages": "ಪುಟ್ಟ ಪುಟಗಳು",
"deadendpagestext": "ಈ ಕೆಳಗಿನ ಪುಟಗಳು {{SITENAME}} ಅಲ್ಲಿ ಇರುವ ಇತರ ಪುಟಗಳಿಗೆ ಕೊಂಡಿಯನ್ನು ಹೊಂದಿಲ್ಲ.",
"protectedpages": "ಸಂರಕ್ಷಿತ ಪುಟಗಳು",
"protectedpages-indef": "ಅನಿಯಮಿತ ಸಂರಕ್ಷಣೆಗಳು ಮಾತ್ರ",
+ "protectedpages-noredirect": "ಪುನರ್ನಿದೇಶನಗಳನ್ನು ಅಡಗಿಸಿ",
"protectedpagesempty": "ಈ ನಿಯಮಾವಳಿಗಳಲ್ಲಿ ಯಾವ ಪುಟವೂ ಸಂರಕ್ಷಿತವಾಗಿಲ್ಲ.",
+ "protectedpages-page": "ಪುಟ",
+ "protectedpages-reason": "ಕಾರಣ",
+ "protectedpages-unknown-timestamp": "ಅಜ್ಞಾತ",
+ "protectedpages-unknown-performer": "ಅಜ್ಞಾತ ಬಳಕೆದಾರ",
"protectedtitles": "ಸಂರಕ್ಷಿತ ಶೀರ್ಷಿಕೆಗಳು",
+ "protectedtitlesempty": "ಈ ನಿಯಮಾವಳಿಗಳಲ್ಲಿ ಯಾವ ಪುಟವೂ ಸಂರಕ್ಷಿತವಾಗಿಲ್ಲ.",
"listusers": "ಸದಸ್ಯರ ಪಟ್ಟಿ",
+ "usereditcount": "$1{{PLURAL:$1|ಸಂಪಾದನೆ|ಸಂಪಾದನೆಗಳು}}",
"usercreated": "$1 ರಂದು $2 ಸಮಯಕ್ಕೆ {{GENDER:$3|ಸೃಷ್ಟಿಸಿದರು}}",
"newpages": "ಹೊಸ ಪುಟಗಳು",
"newpages-username": "ಬಳಕೆದಾರ ಹೆಸರು:",
"allinnamespace": "ಎಲ್ಲಾ ಪುಟಗಳೂ ($1 ಪುಟಪ್ರಬೇಧ)",
"allpagessubmit": "ಹೋಗು",
"allpagesprefix": "ಈ ಪೂರ್ವಪದವನ್ನು ಹೊಂದಿರುವ ಪುಟಗಳನ್ನು ತೋರಿಸು:",
+ "allpagesbadtitle": "ನೀವು ಕೋರಿದ ಪುಟದ ಶೀರ್ಷಿಕೆ ಸಿಂಧುವಲ್ಲದ್ದು ಅಥವ ಖಾಲಿ ಅಥವ ಸರಿಯಾದ ಕೊಂಡಿಯಲ್ಲದ ಅಂತರ-ಭಾಷೆ/ಅಂತರ-ವಿಕಿ ಸಂಪರ್ಕವಾಗಿದೆ.\nಅದರಲ್ಲಿ ಒಂದು ಅಥವ ಹೆಚ್ಚು ಶೀರ್ಷಿಕೆಯಲ್ಲಿ ಬಳಸಲು ನಿಷಿದ್ಧವಾಗಿರುವ ಅಕ್ಷರಗಳು ಇರಬಹುದು.",
"allpages-bad-ns": "{{SITENAME}} ಅಲ್ಲಿ \"$1\" ಪುಟಪ್ರಬೇಧ ಇಲ್ಲ.",
+ "allpages-hide-redirects": "ಪುನರ್ನಿದೇಶನಗಳನ್ನು ಅಡಗಿಸಿ",
"categories": "ವರ್ಗಗಳು",
"categoriespagetext": "ಈ ಕೆಳಗಿನ ವರ್ಗಗಳು ಪುಟಗಳನ್ನು ಅಥವ ಮೀಡಿಯಗಳನ್ನು ಹೊಂದಿವೆ.\n[[Special:UnusedCategories|ಅನುಪಯೋಗಿತ ವರ್ಗಗಳು]] ಇಲ್ಲಿ ತೋರಲಾಗಿಲ್ಲ.\nಇದನ್ನೂ ನೋಡಿ: [[Special:WantedCategories|ಬೇಕಾಗಿರುವ ವರ್ಗಗಳು]].",
+ "categoriesfrom": "ಇದರಿಂದ ಪ್ರಾರಂಭವಾಗುವ ವರ್ಗಗಳನ್ನು ತೋರಿಸು:",
"special-categories-sort-count": "ಎಣಿಕೆಯ ಪ್ರಕಾರ ಜೋಡಿಸು",
"special-categories-sort-abc": "ಅಕ್ಷರಮಾಲೆಯ ಪ್ರಕಾರ ಜೋಡಿಸು",
"sp-deletedcontributions-contribs": "ಕಾಣಿಕೆಗಳು",
"listgrouprights-helppage": "Help:ಗುಂಪು ಹಕ್ಕುಗಳು",
"listgrouprights-members": "(ಸದಸ್ಯರ ಪಟ್ಟಿ)",
"listgrouprights-addgroup-all": "ಎಲ್ಲಾ ಗುಂಪುಗಳನ್ನು ಸೇರಿಸಿ",
+ "listgrouprights-namespaceprotection-namespace": "ನಾಮವರ್ಗ",
+ "trackingcategories-name": "ಸಂದೇಶದ ಹೆಸರು",
+ "trackingcategories-nodesc": "ಯಾವುದೇ ವಿವರಣೆಯಿಲ್ಲ.",
"mailnologin": "ಕಳುಹಿಸುವ ವಿಳಾಸ ಇಲ್ಲ",
"mailnologintext": "ಇತರ ಬಳಕೆದಾರರಿಗೆ ಇ-ಅಂಚೆ ಕಳುಹಿಸಲು ನೀವು [[Special:UserLogin|ಲಾಗ್ ಇನ್]] ಆಗಿರಬೇಕು ಮತ್ತು ನಿಮ್ಮ [[Special:Preferences|ಪ್ರಾಶಸ್ತ್ಯಗಳ ಪುಟದಲ್ಲಿ]] ಒಂದು ಧೃಡೀಕೃತ ಇ-ಅಂಚೆ ವಿಳಾಸ ನೀಡಿರಬೇಕು.",
"emailuser": "ಈ ಸದಸ್ಯರಿಗೆ ಇ-ಅಂಚೆ ಕಳಿಸಿ",
"emailuser-title-notarget": "ಸದಸ್ಯರಿಗೆ ವಿ-ಅ೦ಚೆ ಕಳಿಸಿ",
"emailpage": "ಸದಸ್ಯರಿಗೆ ವಿ-ಅ೦ಚೆ ಕಳಿಸಿ",
"defemailsubject": "ವಿಕಿಪೀಡಿಯ ವಿ-ಅ೦ಚೆ",
+ "usermaildisabled": "ಬಳಕೆದಾರರ ಮಿಂಚಂಚೆಯನ್ನು ನಿಷ್ಕ್ತಿಯಗೊಳಿಸಲಾಗಿದೆ",
"noemailtitle": "ಯಾವುದೇ ಇ-ಅಂಚೆ ವಿಳಾಸ ಇಲ್ಲ",
"noemailtext": "ಈ ಸದಸ್ಯ ಯಾವುದೇ ಇ-ಅಂಚೆ ವಿಳಾಸ ನೀಡಿಲ್ಲ, ಅಥವ ಬೇರೆ ಸದಸ್ಯರಿಂದ ಇ-ಅಂಚೆ ಪಡೆಯಲು ಒಪ್ಪಿಕೊಂಡಿಲ್ಲ.",
+ "emailusername": "ಬಳಕೆದಾರ ಹೆಸರು:",
+ "emailusernamesubmit": "ಒಪ್ಪಿಸು",
"emailfrom": "ಇಂದ:",
"emailto": "ಗೆ:",
"emailsubject": "ವಿಷಯ:",
"nowatchlist": "ನಿಮ್ಮ ವೀಕ್ಷಣಾಪಟ್ಟಿಯಲ್ಲಿ ಯಾವುದೇ ಪುಟಗಳಿಲ್ಲ",
"watchlistanontext": "ನಿಮ್ಮ ವೀಕ್ಷಣಾಪಟ್ಟಿಯನ್ನು ನೋಡಲು ಅಥವ ಸಂಪಾದಿಸಲು ದಯವಿಟ್ಟು $1 ಮಾಡಿ.",
"watchnologin": "ಲಾಗಿನ್ ಆಗಿಲ್ಲ",
+ "addwatch": "ವೀಕ್ಷಣಾಪಟ್ಟಿಗೆ ಸೇರಿಸು",
"addedwatchtext": "\"[[:$1]]\" ಪುಟವನ್ನು ನಿಮ್ಮ [[Special:Watchlist|ವೀಕ್ಷಣಾಪಟ್ಟಿಗೆ]] ಸೇರಿಸಲಾಗಿದೆ. ಈ ಪುಟದ ಮತ್ತು ಇದರ ಚರ್ಚಾ ಪುಟದ ಮುಂದಿನ ಬದಲಾವಣೆಗಳು ವೀಕ್ಷಣಾ ಪಟ್ಟಿಯಲ್ಲಿ ಕಾಣಸಿಗುತ್ತವೆ, ಮತ್ತು [[Special:RecentChanges|ಇತ್ತೀಚೆಗಿನ ಬದಲಾವಣೆಗಳ]] ಪಟ್ಟಿಯಲ್ಲಿ ಈ ಪುಟಗಳನ್ನು ದಪ್ಪಕ್ಷರಗಳಲ್ಲಿ ಕಾಣಿಸಲಾಗುವುದು.\n\n<p>ಈ ಪುಟವನ್ನು ವೀಕ್ಷಣಾ ಪಟ್ಟಿಯಿಂದ ತೆಗೆಯಬಯಸಿದಲ್ಲಿ, ಮೇಲ್ಪಟ್ಟಿಯಲ್ಲಿ ಕಾಣಿಸಿರುವ \"ವೀಕ್ಷಣಾ ಪುಟದಿಂದ ತೆಗೆ\" ಅನ್ನು ಕ್ಲಿಕ್ಕಿಸಿ.",
+ "removewatch": "ವೀಕ್ಷಣಾಪಟ್ಟಿಯಿಂದ ತೆಗೆ",
"removedwatchtext": "\"[[:$1]]\" ಪುಟವನ್ನು ನಿಮ್ಮ [[Special:Watchlist|ವೀಕ್ಷಣಾಪಟ್ಟಿಯಿಂದ]] ತೆಗೆಯಲಾಗಿದೆ.",
"watch": "ವೀಕ್ಷಿಸಿ",
"watchthispage": "ಈ ಪುಟವನ್ನು ವೀಕ್ಷಿಸಿ",
"unwatchthispage": "ವೀಕ್ಷಣೆ ನಿಲ್ಲಿಸು",
"notvisiblerev": "ಆವೃತ್ತಿಯನ್ನು ಅಳಿಸಲಾಗಿದೆ",
"watchlist-details": "ಚರ್ಚೆ ಪುಟಗಳನ್ನು ಹೊರತುಪಡಿಸಿ, ನಿಮ್ಮ ವೀಕ್ಷಣಾಪಟ್ಟಿಯಲ್ಲಿ {{PLURAL:$1|$1 ಪುಟ ಇದೆ|$1 ಪುಟಗಳು ಇವೆ}}.",
+ "wlheader-enotif": "ಮಿಂಚಂಚೆ ಸೂಚನೆಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ.",
"wlheader-showupdated": "ನೀವು ಕೊನೆಯ ಬಾರಿ ಭೇಟಿ ನೀಡಿದ ನಂತರ ಬದಲಾವಣೆಗಳು ಆಗಿರುವ ಪುಟಗಳು '''ದಪ್ಪ ಅಕ್ಷರಗಳಲ್ಲಿ''' ತೋರಿಸಲಾಗಿದೆ",
"watchmethod-recent": "ಇತ್ತೀಚಿನ ಸಂಪಾದನೆಗಳಲ್ಲಿ ವೀಕ್ಷಣಾಪಟ್ಟಿಗೆ ಸೇರುವ ಪುಟಗಳ ಹುಡುಕು",
"watchmethod-list": "ವೀಕ್ಷಣಾಪಟ್ಟಿಗೆ ಸೇರುವ ಪುಟಗಳಲ್ಲಿ ಇತ್ತೀಚಿನ ಸಂಪಾದನೆಗಳಿಗೆ ಹುಡುಕು",
"modifiedarticleprotection": "\"[[$1]]\" ಪುಟದ ಸಂರಕ್ಷಣೆ ಮಟ್ಟವನ್ನು ಬದಲಾಯಿಸಲಾಯಿತು",
"unprotectedarticle": "\"[[$1]]\" ಪುಟದ ಸಂರಕ್ಷಣೆ ತೆಗೆಯಲಾಯಿತು",
"protect-title": "\"$1\" ಪುಟದ ಸಂರಕ್ಷಣೆ ಮಟ್ಟವನ್ನು ಬದಲಾಯಿಸು",
+ "protect-title-notallowed": "\"$1\" ಪುಟದ ಸಂರಕ್ಷಣೆ ಮಟ್ಟವನ್ನು ವೀಕ್ಷಿಸು",
"prot_1movedto2": "[[$1]] - [[$2]] ಪುಟಕ್ಕೆ ಸ್ಥಳಾಂತರಿಸಲಾಗಿದೆ",
"protect-legend": "ಸಂರಕ್ಷಣೆ ಧೃಡಪಡಿಸಿ",
"protectcomment": "ಕಾರಣ:",
"restriction-edit": "ಸಂಪಾದನೆ",
"restriction-move": "ಸ್ಥಳಾಂತರ",
"restriction-create": "ಸೃಷ್ಟಿ",
+ "restriction-upload": "ನಕಲೇರಿಸು",
"restriction-level-sysop": "ಪೂರ್ಣವಾಗಿ ಸಂರಕ್ಷಿತ",
"restriction-level-autoconfirmed": "ಅರೆ ಸಂರಕ್ಷಿತ",
"restriction-level-all": "ಯಾವುದೇ ಮಟ್ಟ",
"whatlinkshere-hidelinks": "$1 ಕೊಂಡಿಗಳು",
"whatlinkshere-hideimages": "$1 ಚಿತ್ರದ ಕೊಂಡಿಗಳು",
"whatlinkshere-filters": "ಶೋಧಕಗಳು",
+ "block": "ಬಳಕೆದಾರನನ್ನು ತಡೆಹಿಡಿ",
+ "unblock": "ಬಳಕೆದಾರನ ತಡೆಯನ್ನು ತೆಗೆ",
"blockip": "ಈ ಸದಸ್ಯನನ್ನು ತಡೆ ಹಿಡಿಯಿರಿ",
"blockip-legend": "ಬಳಕೆದಾರನನ್ನು ತಡೆಹಿಡಿ",
"ipadressorusername": "IP ವಿಳಾಸ ಅಥವ ಬಳಕೆಯ ಹೆಸರು:",
"ipusubmit": "ಈ ವಿಳಾಸದ ತಡೆಯನ್ನು ತೆಗೆ",
"unblocked": "[[User:$1|$1]] ಖಾತೆಯ ತಡೆಯನ್ನು ತೆಗೆಯಲಾಗಿದೆ",
"unblocked-id": "$1 ತಡೆಯನ್ನು ತೆಗೆಯಲಾಗಿದೆ",
+ "blocklist": "ನಿರ್ಬಂಧಿಸಲಾಗಿರುವ ಸದಸ್ಯರು",
"ipblocklist": "ನಿರ್ಬಂಧಿಸಲಾಗಿರುವ ಸದಸ್ಯರು",
"ipblocklist-legend": "ತಡೆಹಿಡಿಯಲಾದ ಬಳಕೆದಾರನನ್ನು ಹುಡುಕು",
+ "blocklist-reason": "ಕಾರಣ",
"ipblocklist-submit": "ಹುಡುಕು",
"infiniteblock": "ಅನಂತ",
"anononlyblock": "ಅನಾಮಧೇಯ ಮಾತ್ರ",
"unblocklink": "ತಡೆಯನ್ನು ತಗೆ",
"change-blocklink": "ತಡೆಹಿಡಿತವನ್ನು ಬದಲಾಯಿಸು",
"contribslink": "ಕಾಣಿಕೆಗಳು",
+ "emaillink": "ಇ-ಅಂಚೆ ಕಳುಹಿಸಿ",
"blocklogpage": "ತಡೆಹಿಡಿದ ಸದಸ್ಯರ ದಿನಚರಿ",
"blocklogentry": "[[$1]] ಖಾತೆಯನ್ನು $2 $3 ಸಮಯದವರೆಗೆ ತಡೆಹಿಡಿಯಲಾಗಿದೆ",
"unblocklogentry": "$1 ಖಾತೆಯ ತಡೆ ತೆಗೆಯಲಾಗಿದೆ",
"allmessages-filter-modified": "ಬದಲಾಯಿಸಲಾದ",
"allmessages-language": "ಭಾಷೆ:",
"allmessages-filter-submit": "ಹೋಗು",
+ "allmessages-filter-translate": "ಭಾಷಾಂತರಿಸಿ",
"thumbnail-more": "ದೊಡ್ಡದಾಗಿಸು",
"filemissing": "ಫೈಲು ಕಾಣೆಯಾಗಿದೆ",
"thumbnail_error": "ಮುನ್ನೋಟ ಚಿತ್ರವನ್ನು ಸೃಷ್ಟಿಸುವಲ್ಲಿ ದೋಷ: $1",
"exif-gpsspeedref": "ವೇಗದ ಘಟಕ",
"exif-gpsareainformation": "GPS ಪ್ರದೇಶದ ಹೆಸರು",
"exif-gpsdatestamp": "GPS ದಿನಾಂಕ",
+ "exif-iimcategory": "ವರ್ಗ",
+ "exif-label": "ಗುರುತು ಪಟ್ಟಿ",
+ "exif-copyrighted": "ಕೃತಿಸ್ವಾಮ್ಯತೆಯ ಸ್ಥಿತಿ",
+ "exif-copyrightowner": "ಕೃತಿಸ್ವಾಮ್ಯತೆಯನ್ನು ಹೊಂದಿರುವವರು",
"exif-unknowndate": "ದಿನಾಂಕ ತಿಳಿದಿಲ್ಲ",
"exif-orientation-3": "180° ತಿರುಗಿಸಲ್ಪಟ್ಟಿದೆ",
"exif-componentsconfiguration-0": "ಅಸ್ಥಿತ್ವದಲ್ಲಿ ಇಲ್ಲ",
"version-software": "ಸಂಸ್ಥಾಪಿಸಲಾಗಿರುವ ತಂತ್ರಾಂಶ",
"version-software-product": "ಉತ್ಪನ್ನ",
"version-software-version": "ಆವೃತ್ತಿ",
+ "redirect-submit": "ಹೋಗು",
+ "redirect-value": "ಮೌಲ್ಯ:",
+ "redirect-user": "ಬಳಕೆದಾರ ID",
+ "redirect-page": "ಪುಟದ ID",
+ "redirect-file": "ಕಡತದ ಹೆಸರು",
"fileduplicatesearch": "ದ್ವಿಪ್ರತಿ ಫೈಲುಗಳಿಗೆ ಹುಡುಕು",
"fileduplicatesearch-legend": "ದ್ವಿಪ್ರತಿಯನ್ನು ಹುಡುಕು",
"fileduplicatesearch-filename": "ಫೈಲಿನ ಹೆಸರು:",
"specialpages-group-redirects": "ವಿಶೇಷ ಪುಟಗಳನ್ನು ಪುನರ್ನಿರ್ದೇಶಿಸಲಾಗುತ್ತಿದೆ",
"blankpage": "ಖಾಲಿ ಪುಟ",
"tag-filter": "[[ವಿಶೇಷ:ತಳುಕುಗಳು|ತಳುಕು]] ಶೋಧಕ:",
+ "tag-filter-submit": "ಶೋಧಕ",
+ "tags-title": "ಅಂಕಿತಗಳು",
+ "tags-tag": "ಅಂಕಿತ ನಾಮ",
+ "tags-active-header": "ಸಕ್ರಿಯ?",
+ "tags-active-yes": "ಹೌದು",
+ "tags-active-no": "ಇಲ್ಲ",
"tags-edit": "ಸಂಪಾದಿಸಿ",
"comparepages": "ಪುಟಗಳನ್ನು ಹೋಲಿಸು",
"compare-page1": "ಪುಟ ೧",
"compare-rev2": "ಆವೃತ್ತಿ ೨",
"compare-submit": "ಹೋಲಿಸು",
"htmlform-selectorother-other": "ಇತರ",
+ "htmlform-no": "ಇಲ್ಲ",
+ "htmlform-yes": "ಹೌದು",
"revdelete-restricted": "ನಿರ್ವಾಹಕರಿಗೆ ನಿಬಂಧನೆಗಳನ್ನು ಅನ್ವಯಿಸಲಾಯಿತು",
"revdelete-unrestricted": "ನಿರ್ವಾಹಕರ ನಿಬಂಧನೆಗಳನ್ನು ತೆಗೆಯಲಾಯಿತು",
"rightsnone": "(ಯಾವೂ ಇಲ್ಲ)",
+ "feedback-subject": "ವಿಷಯ:",
+ "feedback-message": "ಸಂದೇಶ:",
"duration-seconds": "$1 {{PLURAL:$1|ಕ್ಷಣ|ಕ್ಷಣಗಳು}}",
"duration-minutes": "$1 {{PLURAL:$1|ನಿಮಿಷ|ನಿಮಿಷಗಳು}}",
"duration-hours": "$1 {{PLURAL:$1|ಘಂಟೆ|ಘಂಟೆಗಳು}}",
"pool-timeout": "잠금 대기 중 타임아웃",
"pool-queuefull": "풀 대기열이 가득 찼습니다",
"pool-errorunknown": "알 수 없는 오류",
+ "pool-servererror": "풀 카운터 서비스는 사용할 수 없습니다 ($1).",
"aboutsite": "{{SITENAME}} 소개",
"aboutpage": "Project:소개",
"copyright": "내용은 별도로 명시하지 않을 경우 $1에 따라 사용할 수 있습니다.",
"subject": "주제/제목:",
"minoredit": "사소한 편집입니다",
"watchthis": "이 문서 주시하기",
- "savearticle": "저장",
+ "savearticle": "문서 저장",
"preview": "미리 보기",
"showpreview": "미리 보기",
"showlivepreview": "실시간 미리 보기",
"listgrouprights-namespaceprotection-namespace": "이름공간",
"listgrouprights-namespaceprotection-restrictedto": "사용자가 편집할 수 있는 권한",
"trackingcategories": "분류 추적",
+ "trackingcategories-summary": "이 페이지는 미디어위키 소프트웨어에 의해 자동으로 채워지는 분류 추적을 나열합니다. 그들의 이름은 {{ns:8}} 이름공간에 관련된 시스템 메시지를 바꾸어서 바꿀 수 있습니다.",
"trackingcategories-msg": "분류 추적",
"trackingcategories-name": "메시지 이름",
"trackingcategories-desc": "분류 포함 기준",
+ "noindex-category-desc": "문서는 그것과 그 플래그가 허용된 곳에 있는 이름공간에서 <code><nowiki>__NOINDEX__</nowiki></code> 특수 명령이 있기 때문에 로봇이 색인하지 않습니다.",
+ "index-category-desc": "문서는 그것(과 플래그가 허용된 곳에 있는 이름공간에 있는 것)에 <code><nowiki>__INDEX__</nowiki></code>가 있어서, 정상적이지 않을 곳에 로봇에 의해 색인됩니다.",
"trackingcategories-nodesc": "사용할 수 있는 설명이 없습니다.",
"trackingcategories-disabled": "분류가 비활성화되어 있습니다",
"mailnologin": "보낼 이메일 주소가 없음",
"unwatchthispage": "주시 해제하기",
"notanarticle": "문서가 아님",
"notvisiblerev": "이 판은 삭제되었습니다.",
- "watchlist-details": "토론을 제외하고 {{PLURAL:$1|문서 $1개}}를 주시하고 있습니다.",
+ "watchlist-details": "별도의 토론 문서를 세지 않고, 주시문서 목록에 {{PLURAL:$1|문서 $1개}}가 있습니다.",
"wlheader-enotif": "이메일 알림 기능이 활성화되었습니다.",
"wlheader-showupdated": "마지막으로 방문한 이후에 바뀐 문서는 '''굵은 글씨'''로 보입니다.",
"watchmethod-recent": "주시된 문서를 확인하고자 최근 편집을 확인",
"exif-filesource-3": "디지털 정지 카메라",
"exif-scenetype-1": "직접 촬영한 그림",
"exif-customrendered-0": "일반",
- "exif-customrendered-1": "ì\82¬ì\9a©ì\9e\90 ì \95ì\9d\98",
+ "exif-customrendered-1": "ì\82¬ì\9a©ì\9e\90 ì§\80ì \95 ì²\98리",
"exif-exposuremode-0": "자동 노출",
"exif-exposuremode-1": "수동 노출",
"exif-exposuremode-2": "자동 노출 브래킷",
"livepreview-error": "연결에 실패하였습니다: $1 \"$2\"\n일반 미리 보기를 이용하세요.",
"lag-warn-normal": "최근 $1{{PLURAL:$1|초}} 안에 바뀐 문서는 이 목록에서 빠졌을 수 있습니다.",
"lag-warn-high": "데이터베이스 서버의 과도한 부하 때문에 최근 $1{{PLURAL:$1|초}} 안에 바뀐 문서 목록은 보이지 않을 수 있습니다.",
- "watchlistedit-numitems": "토론 문서를 제외하고 {{PLURAL:$1|문서 1개|문서 $1개}}를 주시하고 있습니다.",
+ "watchlistedit-numitems": "주시문서 목록에 토론 문서를 제외하고, {{PLURAL:$1|문서 1개|문서 $1개}}가 들어 있습니다.",
"watchlistedit-noitems": "주시문서 목록이 비어 있습니다.",
"watchlistedit-normal-title": "주시문서 목록 편집하기",
"watchlistedit-normal-legend": "주시문서 목록에서 문서 제거하기",
"htmlform-int-toolow": "지정한 값은 최소값 $1 미만입니다.",
"htmlform-int-toohigh": "지정한 값은 최대값 $1 이상입니다.",
"htmlform-required": "이 값은 필수 항목입니다",
- "htmlform-submit": "ì \80ì\9e¥",
+ "htmlform-submit": "ì \9cì¶\9c",
"htmlform-reset": "바뀜을 되돌리기",
"htmlform-selectorother-other": "기타",
"htmlform-no": "아니오",
"permalink": "Zitéierfäege Link",
"print": "Drécken",
"view": "Weisen",
+ "view-foreign": "Op $1 kucken",
"edit": "Änneren",
"edit-local": "Lokal Beschreiwung änneren",
"create": "Uleeën",
"revdelete-no-file": "De Fichier deen ugi war gëtt et net.",
"revdelete-show-file-confirm": "Sidd Dir sécher datt Dir déi geläschte Versioun vum Fichier \"<nowiki>$1</nowiki>\" vum $2 ëm $3 gesi wëllt?",
"revdelete-show-file-submit": "Jo",
+ "revdelete-selected-text": "{{PLURAL:$1|Erausgesicht Versioun|Erausgesicht Versioune}} vu(n) [[:$2]]:",
+ "revdelete-selected-file": "{{PLURAL:$1|Erausgesicht Versioun|Erausgesicht Versioune}} vum Fichier vu(n) [[:$2]]:",
"logdelete-selected": "Ausgewielten {{PLURAL:$1|Evenement|Evenementer}} aus dem Logbuch:",
"revdelete-text-others": "Aner Administrateuren op {{SITENAME}} kënnen nach ëmmer de verstoppten Inhalt gesinn an en iwwer deeselwechten Interface nees restauréieren, ausser wann zousätzlech Limitatiounen agestallt sinn.",
"revdelete-confirm": "Confirméiert w.e.g. datt Dir dat maache wëllt, datt Dir d'Konsequenze verstitt an datt Dir dëst an Aklang mat de [[{{MediaWiki:Policy-url}}|Richtlinne]] maacht.",
"contributions-title": "Kontributioune vum $1",
"mycontris": "Kontributiounen",
"contribsub2": "Fir {{GENDER:$3|den $1|d'$1|de Benotzer $1}} ($2)",
+ "contributions-userdoesnotexist": "De Benotzerkont \"$1\" ass net registréiert.",
"nocontribs": "Et goufe keng Ännerunge fonnt, déi dëse Kritèren entspriechen.",
"uctop": "(aktuell)",
"month": "Vum Mount (a virdrun):",
"content-model-javascript": "ജാവാസ്ക്രിപ്റ്റ്",
"content-model-css": "സി.എസ്.എസ്.",
"expensive-parserfunction-warning": "'''മുന്നറിയിപ്പ്:''' ഈ താളിൽ വളരെക്കൂടുതൽ പാഴ്സർ ഫങ്ഷനുകൾ വിളിച്ചിരിക്കുന്നു.\n\n{{PLURAL:$2|ഒരു വിളി|$2 വിളികൾ}} മാത്രമുണ്ടാകേണ്ടയിടത്ത്, ഇപ്പോൾ {{PLURAL:$1|ഒരു വിളി|$1 വിളികൾ}} ഉണ്ട്.",
- "expensive-parserfunction-category": "വളരàµ\86യധിà´\95à´\82 വിലയàµ\87റിയ à´µàµ\8dയാà´\95à´°à´£ നിർദàµ\8dà´¦àµ\87à´¶à´\99àµ\8dà´\99ൾ à´\85à´\9fà´\99àµ\8dà´\99à´¿à´¯ താളുകൾ",
+ "expensive-parserfunction-category": "വളരàµ\86യധിà´\95à´\82 à´\9aിലവàµ\87റിയ പാഴàµ\8dസർ à´«à´\99àµ\8dഷൻ വിളിà´\95ൾ à´\89ൾà´\95àµ\8dà´\95àµ\8aà´³àµ\8dà´³àµ\81à´¨àµ\8dà´¨ താളുകൾ",
"post-expand-template-inclusion-warning": "'''അറിയിപ്പ്:''' ഫലകം ഉൾപ്പെടുത്താവുന്ന വലിപ്പത്തിലും വളരെ കൂടുതൽ ആയിരിക്കുന്നു.\nചില ഫലകങ്ങൾ ഉൾപ്പെടുത്തുകയില്ല.",
"post-expand-template-inclusion-category": "ഫലകം ഉൾപ്പെടുത്താവുന്ന വലിപ്പത്തിലും കൂടുതലുള്ള താളുകൾ",
"post-expand-template-argument-warning": "'''അറിയിപ്പ്:''' ഈ താളിൽ വളരെയധികം വികസിപ്പിക്കപ്പെട്ടേക്കാവുന്ന ഒരു ഫലകമെങ്കിലും ഉണ്ട്.\nഅതിനായുള്ള ഘടകങ്ങൾ ഒഴിവാക്കിയിരിക്കുന്നു.",
"listgrouprights-removegroup-self": "സ്വന്തം അംഗത്വത്തിൽ നിന്ന് {{PLURAL:$2|സംഘത്തെ|സംഘങ്ങളെ}} നീക്കം ചെയ്യുക: $1",
"listgrouprights-addgroup-self-all": "എല്ലാ സംഘങ്ങളേയും സ്വന്തം അംഗത്വത്തിൽ ചേർക്കുക",
"listgrouprights-removegroup-self-all": "സ്വന്തം അംഗത്വത്തിൽ നിന്ന് എല്ലാ സംഘങ്ങളേയും നീക്കംചെയ്യുക",
+ "listgrouprights-namespaceprotection-header": "നാമമേഖലയിലെ നിയന്ത്രണങ്ങൾ",
+ "listgrouprights-namespaceprotection-namespace": "നാമമേഖല",
+ "listgrouprights-namespaceprotection-restrictedto": "ഉപയോക്താവിന് ഉപയോഗിക്കാവുന്ന അവകാശം (അവകാശങ്ങൾ)",
"trackingcategories": "പിന്തുടരൽ വർഗ്ഗങ്ങൾ",
"trackingcategories-summary": "ഈ താളിൽ മീഡിയവിക്കി സോഫ്റ്റ്വേർ സ്വതേ നിർമ്മിക്കുന്ന പിന്തുടരൽ വർഗ്ഗങ്ങളുടെ പട്ടിക കാണാം. അവയുടെ പേരുകൾ {{ns:8}} നാമമേഖലയിലെ ബന്ധപ്പെട്ട വ്യവസ്ഥാസന്ദേശങ്ങൾ തിരുത്തി മാറ്റാവുന്നതാണ്.",
"trackingcategories-msg": "പിന്തുടരൽ വർഗ്ഗം",
"contributions-title": "$1 എന്ന ഉപയോക്താവിന്റെ സംഭാവനകൾ",
"mycontris": "സംഭാവനകൾ",
"contribsub2": "ഉപയോക്താവ് {{GENDER:$3|$1}} ($2)",
+ "contributions-userdoesnotexist": "\"$1\" എന്ന ഉപയോക്തൃ അംഗത്വം നിലവിലില്ല.",
"nocontribs": "ഈ മാനദണ്ഡങ്ങളുമായി യോജിക്കുന്ന മാറ്റങ്ങൾ ഒന്നും കണ്ടില്ല.",
"uctop": "(നിലവിലുള്ളത്)",
"month": "മാസം:",
"tog-hidepatrolled": "Am chòe-kīn sûn koè--ê kái-piàn",
"tog-newpageshidepatrolled": "Sin-ia̍h ê chheng-toaⁿ am sûn koè--ê",
"tog-extendwatchlist": "thián-khui kàm-sī-toaⁿ, khoàⁿ choân-pō͘ kái ê, m̄-nā choè-kīn niā.",
- "tog-usenewrc": "Ka-kiông pán ê chòe-kīn-ê-kái-piàn (su-iàu JavaScript)",
+ "tog-usenewrc": "共文章最近有改的佮監視列表囥做伙",
"tog-numberheadings": "Phiau-tê chū-tōng pian-hō",
- "tog-showtoolbar": "Hián-sī pian-chi̍p ke-si-tiâu (su-iàu JavaScript)",
- "tog-editondblclick": "Siang-ji̍h ia̍h-bīn to̍h ē-tàng pian-chi̍p (su-iàu JavaScript)",
- "tog-editsectiononrightclick": "Chiàⁿ-ji̍h (right click) toāⁿ-lo̍h (section) phiau-tê to̍h ē-tàng pian-chi̍p toāⁿ-lo̍h (su-iàu JavaScript)",
- "tog-watchcreations": "Kā goá khui ê ia̍h ka-ji̍p kàm-sī-toaⁿ lāi-té",
- "tog-watchdefault": "Kā goá pian-chi̍p kòe ê ia̍h ka-ji̍p kàm-sī-toaⁿ lāi-té",
- "tog-watchmoves": "Kā goá soá ê ia̍h ka-ji̍p kàm-sī-toaⁿ",
- "tog-watchdeletion": "Kā goá thâi tiāu ê ia̍h ka-ji̍p kàm-sī-toaⁿ",
+ "tog-showtoolbar": "Hián-sī pian-chi̍p ke-si-tiâu",
+ "tog-editondblclick": "連揤兩个就通編輯",
+ "tog-editsectiononrightclick": "Chiàⁿ ji̍h toāⁿ-lo̍h phiau-tê to̍h ē-tàng pian-chi̍p toāⁿ-lo̍h",
+ "tog-watchcreations": "Kā goá khui ê ia̍h kah chiūⁿ chái ê tóng-àn ka-ji̍p kàm-sī-toaⁿ lāi-té",
+ "tog-watchdefault": "Kā goá pian-chi̍p kòe ê ia̍h kah tóng-àn ka-ji̍p kàm-sī-toaⁿ lāi-té",
+ "tog-watchmoves": "Kā goá soá ê ia̍h kah tóng-àn ka-ji̍p kàm-sī-toaⁿ",
+ "tog-watchdeletion": "Kā goá thâi tiāu ê ia̍h kah tóng-àn ka-ji̍p kàm-sī-toaⁿ",
"tog-minordefault": "Chiām-tēng bī-lâi ê siu-kái lóng sī sió-siu-ká",
"tog-previewontop": "Sûn-khoàⁿ ê lōe-iông tī pian-chi̍p keh-á thâu-chêng",
"tog-previewonfirst": "Thâu-pái pian-chi̍p seng khoàⁿ-māi",
"tog-enotifrevealaddr": "Hō͘ pat-lâng khoàⁿ ê tio̍h oá ê tiān-chú-phoe tē-chí",
"tog-shownumberswatching": "Hián-sī tng leh khoàⁿ ê iōng-chiá sò͘-bo̍k",
"tog-oldsig": "Chit-má ê chhiam-miâ:",
- "tog-fancysig": "Chhiam-miâ mài chò liân-kiat",
- "tog-uselivepreview": "Ēng sui khoàⁿ-māi (ài ū JavaScript) (chhì-giām--ê)",
+ "tog-fancysig": "共我的簽名當做文章文字,(無需要自動連結)",
+ "tog-uselivepreview": "Ēng sui khoàⁿ-māi (chhì-giām--ê)",
"tog-forceeditsummary": "Pian-chi̍p khài-iàu bô thiⁿ ê sî-chūn, kā goá thê-chhéⁿ",
"tog-watchlisthideown": "Kàm-sī-toaⁿ bián hián-sī goá ê pian-chi̍p",
"tog-watchlisthidebots": "Kàm-sī-toaⁿ bián hián-sī ki-khì pian-chi̍p",
"tog-norollbackdiff": "ká tńg-khí liáu bián-koán cheng-chha goā-chē",
"underline-always": "Tiāⁿ-tio̍h",
"underline-never": "Tiāⁿ-tio̍h mài",
- "underline-default": "Tòe liû-lám-khì ê default",
+ "underline-default": "Tòe liû-lám-khì ê siat-piān",
"editfont-style": "Pian-chi̍p sî ēng ê jī-thé hêng-sek:",
"editfont-default": "Tòe liû-lám-khì ê default",
"editfont-monospace": "Monospaced jī-thé",
"newwindow": "(ē khui sin thang-á hián-sī)",
"cancel": "Chhú-siau",
"moredotdotdot": "Iáu-ū",
- "mypage": "Góa ê ia̍h",
+ "mypage": "Ia̍h",
"mytalk": "Góa ê thó-lūn",
"anontalk": "Chit ê IP ê thó-lūn-ia̍h",
"navigation": "Se̍h chām",
"vector-action-move": "Sóa khì",
"vector-action-protect": "Pó-hō·",
"vector-action-undelete": "chhú-siau thâi tiàu",
- "vector-action-unprotect": "Chhú-siau pó-hō·",
+ "vector-action-unprotect": "kái pó-hō·",
"vector-view-create": "Khai-sí siá",
"vector-view-edit": "Siu-kái",
"vector-view-history": "khoàⁿ le̍k-sú",
"create-this-page": "Khai-sí siá chit ia̍h",
"delete": "Thâi",
"deletethispage": "Thâi chit ia̍h",
- "undelete_short": "Kiù {{PLURAL:$1|$1|$1}} ê siu-kái",
+ "undelete_short": "Kiù {{PLURAL:$1|$1|$1}} ê thâi-tiāu ê",
"viewdeleted_short": "Khoàⁿ {{PLURAL:$1|chi̍t-ê thâi tiàu--ê pian-chi̍p|$1 ê thâi tiàu--ê pian-chi̍p}}",
"protect": "Pó-hō·",
"protect_change": "kái-piàn",
"protectthispage": "Pó-hō· chit ia̍h",
- "unprotect": "Chhú-siau pó-hō·",
+ "unprotect": "kái pó-hō·",
"unprotectthispage": "Chhú-siau pó-hō· chit ia̍h",
"newpage": "Sin ia̍h",
"talkpage": "Thó-lūn chit ia̍h",
"nospecialpagetext": "<strong>Bô lí beh tih ê te̍k-sû-ia̍h。</strong>\n\n[[Special:SpecialPages|{{int:specialpages}}]] sī só͘-ū ê te̍k-sû-ia̍h lia̍t-pió.",
"error": "Chhò-gō·",
"databaseerror": "Chu-liāu-khò· chhò-gō·",
- "databaseerror-query": "揣:",
- "databaseerror-function": "功能:",
+ "databaseerror-query": "揣:$1",
+ "databaseerror-function": "功能:$1",
"laggedslavemode": "'''提醒:'''頁內容可能毋是上新的。",
"readonly": "Chu-liāu-khò· só tiâu leh",
"enterlockreason": "Phah beh hong-só ê lí-iû, pau-koah ko͘-kè siáⁿ-mi̍h sî-chūn ē kái-tû hong-só.",
"tog-showtoolbar": "ସମ୍ପାଦନା ଟୁଲବାର ଦେଖାଇବେ",
"tog-editondblclick": "ଦୁଇଥର କ୍ଲିକରେ ପୃଷ୍ଠା ବଦଳାଇବେ",
"tog-editsectiononrightclick": "ବିଭାଗ ନାମରେ ଡାହାଣ କ୍ଲିକ କରି ବିଭାଗ ସମ୍ପାଦନାକୁ ସଚଳ କରିବେ",
- "tog-rememberpassword": "ଏହି ବ୍ରାଉଜରରେ (ସର୍ବାଧିକ $1 {{PLURAL:$1|day|ଦିନ}}) ପାଇଁ ମୋ ଲଗ-ଇନ ମନେରଖିଥିବେ",
"tog-watchcreations": "ମୋ ତିଆରି ପୃଷ୍ଠାସବୁକୁ ଏବଂ ମୋ ଅପଲୋଡ଼ଗୁଡ଼ିକୁ ମୋର ଦେଖଣାତାଲିକାରେ ଯୋଡ଼ନ୍ତୁ",
"tog-watchdefault": "ମୁଁ ବଦଳେଇଥିବା ପୃଷ୍ଠା ଏବଂ ଫାଇଲଗୁଡ଼ିକୁ ମୋର ଦେଖଣାତାଲିକାରେ ଯୋଡ଼ନ୍ତୁ",
"tog-watchmoves": "ମୁଁ ଘୁଞ୍ଚାଇଥିବା ପୃଷ୍ଠା ଏବଂ ଫାଇଲଗୁଡ଼ିକୁ ମୋର ଦେଖଣାତାଲିକାରେ ଯୋଡ଼ନ୍ତୁ",
"permalink": "Link do tej wersji",
"print": "Drukuj",
"view": "Podgląd",
+ "view-foreign": "Zobacz w {{grammar:MS.lp|$1}}",
"edit": "Edytuj",
"edit-local": "Edytuj lokalny opis",
"create": "Utwórz",
"changeemail-submit": "Zapisz nowy",
"changeemail-cancel": "Anuluj",
"changeemail-throttled": "Zbyt wiele razy próbowałeś zalogować się na to konto.\nOdczekaj $1, zanim ponowisz próbę.",
- "resettokens": "Resetuj tokeny",
+ "resettokens": "Resetowanie tokenów",
"resettokens-text": "Na tej stronie możesz zresetować tokeny, które umożliwiają dostęp do pewnych prywatnych danych związanych z Twoim kontem.\n\nNależy to zrobić, jeśli ktoś je poznał lub zdobył hasło do Twojego konta.",
"resettokens-no-tokens": "Brak tokenów do zresetowania.",
- "resettokens-legend": "Resetuj tokeny",
+ "resettokens-legend": "Resetowanie tokenów",
"resettokens-tokens": "Tokeny:",
"resettokens-token-label": "$1 (obecna wartość: $2)",
"resettokens-watchlist-token": "Token kanału internetowego (Atom/RSS) zmian w [[Special:Watchlist|obserwowanych stronach]]",
"permalink": "Link permanente",
"print": "Imprimir",
"view": "Ver",
+ "view-foreign": "Ver no $1",
"edit": "Editar",
"edit-local": "Editar descrição local",
"create": "Criar",
"versionrequired": "This message is not used in the MediaWiki core, but was introduced with the reason that it could be useful for extensions.\n\nParameters:\n* $1 - MediaWiki version number\nSee also:\n* {{msg-mw|Versionrequiredtext}}",
"versionrequiredtext": "This message is not used in the MediaWiki core, but was introduced with the reason that it could be useful for extensions.\n\nParameters:\n* $1 - MediaWiki version number\nSee also:\n* {{msg-mw|Versionrequired}}",
"ok": "{{Identical|OK}}",
- "pagetitle": "{{Optional}}\n{{doc-important|You most probably do not need to translate this message.}}\nDo '''not''' replace SITENAME with a translation of Wikipedia or some encycopedic additions. The message has to be neutral for all projects.\n\nParameters:\n* $1 - page title or any one of the following messages:\n** {{msg-mw|Contributions-title}}\n** {{msg-mw|Searchresults-title}}\n** {{msg-mw|Sp-contributions-newbies-title}}",
+ "pagetitle": "{{Optional}}\n{{doc-important|You most probably do not need to translate this message.}}\nDo '''not''' replace SITENAME with a translation of Wikipedia or some encyclopedic additions. The message has to be neutral for all projects.\n\nParameters:\n* $1 - page title or any one of the following messages:\n** {{msg-mw|Contributions-title}}\n** {{msg-mw|Searchresults-title}}\n** {{msg-mw|Sp-contributions-newbies-title}}",
"pagetitle-view-mainpage": "{{optional}}",
"backlinksubtitle": "{{optional}}\nAppears in subtitle. Parameters:\n* $1 - a link to the page (HTML)",
"retrievedfrom": "Message which appears in the source of every page, but it is hidden. It is shown when printing.\n\nParameters:\n* $1 - a link back to the current page: {{FULLURL:{{FULLPAGENAME}}}}",
"revdelete-failure": "<strong>संस्करणस्य दृश्यता अद्यतना नाभवत् </strong> $1",
"logdelete-success": "<strong>संरक्षिताऽऽवल्याः दृश्यता योग्यतया परिवर्तिता ।</strong>",
"logdelete-failure": "<strong>संरक्षिताऽऽवल्याः दृश्यता न परिवर्तिता ।</strong> $1",
- "revdel-restore": "दृश्यता परिवर्त्यताम्",
+ "revdel-restore": "दृश्यताम्/गोप्यताम्",
"pagehist": "पृष्ठस्य इतिहासः",
"deletedhist": "अपाकृतः इतिहासः",
- "revdelete-hide-current": "$2 दिनाà¤\99à¥\8dà¤\95सà¥\8dय $1 समयà¥\87 à¤\95सà¥\8dयापि वसà¥\8dतà¥\8bà¤\83 निà¤\97à¥\82ढनà¤\82 à¤\95ारà¥\8dयà¤\82 न सफलà¥\80à¤à¥\80तमà¥\8d । à¤\8fततà¥\8d सदà¥\8dयà¤\83à¤\95ालà¥\80न संस्करणमस्ति । एतत् निगूढितुं शक्यते ।",
+ "revdelete-hide-current": "$2 दिनाà¤\99à¥\8dà¤\95सà¥\8dय $1 समयà¥\87 à¤\95सà¥\8dयापि वसà¥\8dतà¥\8bà¤\83 निà¤\97à¥\82ढनà¤\95ारà¥\8dयà¤\82 न सफलà¥\80à¤à¥\80तमà¥\8d । à¤\8fततà¥\8d सदà¥\8dयà¤\83à¤\95ालà¥\80नà¤\82 संस्करणमस्ति । एतत् निगूढितुं शक्यते ।",
"revdelete-show-no-access": "$2 दिनाङ्कस्य $1 समयस्य वस्तुनि दोषः दृष्टः । तत् वस्तुः निषिद्धावल्याम् अस्ति । भवान्/भवती तस्य परिवर्तनं कर्तुं न शक्नोति ।",
"revdelete-modify-no-access": "$2 दिनाङ्कस्य $1 समयस्य परिवर्तितवस्तुनि दोषः दृष्टः । तत् वस्तुः निषिद्धावल्याम् अस्ति । भवान्/भवती तस्य परिवर्तनं कर्तुं न शक्नोति ।",
- "revdelete-modify-missing": " ID $1 इत्यस्य परिवर्तने दोषः : एतत् दत्तांशे न प्राप्तम् !",
+ "revdelete-modify-missing": "ID $1 इत्यस्य परिवर्तने दोषः : एतत् दत्तांशे न प्राप्तम् !",
"revdelete-no-change": "'''पूर्वसूचना :''' $2, $1 इत्यस्मिन् याचितवस्तूनि पूर्वस्मादेव विद्यन्ते ।",
- "revdelete-concurrent-change": "$2, $1:",
- "revdelete-only-restricted": "$2, $1: दिनाङ्कितस्य गोपने दोषाः। अन्यदृश्यविकल्पानां चयनेन विना एतत् निग्रहितुं नैव शक्नोति",
+ "revdelete-concurrent-change": "$2 दिनाङ्कस्य $1 समयस्य परिवर्तनेषु दोषः दृष्टः । अस्य पृष्ठस्य यदा भवान्/भवती सम्पादनं करोति स्म, तदा अन्य कोऽपि अत्र परिवर्तनम् अकरोत् । अतः परिवर्तनस्य इतिहासे अन्यस्य नाम दृश्यते । \nकृपया स्वस्य संरक्षिताऽवलिं पश्यतु ।",
+ "revdelete-only-restricted": "$2 दिनाङ्कस्य $1 समयस्य निगूढनकार्ये दोषः दृष्टः । भावान्/भवती दृश्यता-विकल्पे परिवर्तनं अकृत्वा प्रबन्धकेभ्यः एतत् परिवर्तनं निगूढितुं न शक्नोति ।",
"revdelete-reason-dropdown": "* अपाकरणस्य सामान्यकारणानि\n** प्रतिकृत्यधिकारस्य उल्लङ्घनम्\n** अयोग्या टिप्पणी वैयक्तिकमाहिती वा\n** अयोग्यं सभ्यनाम\n** हानिकारकमाहिती",
"revdelete-otherreason": "अपरं/अतिरिक्तं कारणम् :",
"revdelete-reasonotherlist": "अन्यानि कारणानि",
"revdelete-edit-reasonlist": "सम्पादनस्य अपाकरणाय कारणानि",
"revdelete-offender": "संस्करणकर्ता",
- "suppressionlog": "निà¤\97à¥\8dरहनामाà¤à¤¿à¤²à¥\87à¤\96à¤\83 ।",
- "suppressionlogtext": "à¤\85धà¥\8bनिदà¥\87शितपà¥\8dरशासà¤\95à¥\88à¤\83 सà¤\99à¥\8dà¤\97à¥\81पà¥\8dतसà¥\8dय विà¤à¤¾à¤\97सà¥\8dय निषà¥\8dà¤\95ासितपà¥\81à¤\9fानाà¤\82 सà¥\82à¤\9aà¥\80 ।\nनिषिदà¥\8dधपिहितपà¥\81à¤\9fानि [[Special:BlockList|block list]] पश्यतु ।",
- "mergehistory": "सà¤\82लà¥\80नपà¥\81à¤\9fà¥\87तिहासाà¤\83 ।",
- "mergehistory-header": "à¤\8fततà¥\8dपà¥\81à¤\9fà¤\82 à¤\95सà¥\8dयà¤\9aितà¥\8d सà¥\8dरà¥\8bतपà¥\81à¤\9fसà¥\8dय à¤\87तिहाससà¥\8dय सà¤\82यà¥\8bà¤\9cनारà¥\8dथमसà¥\8dति ।\nà¤\8fततà¥\8dपरिवरà¥\8dतनà¤\82 पà¥\82रà¥\8dवतनपà¥\81à¤\9fà¥\88à¤\83 नà¥\88रनà¥\8dतरà¥\8dयà¤\82 रà¤\95à¥\8dषति à¤\87ति दà¥\83ढयतà¥\81 ।",
- "mergehistory-box": "पà¥\81à¤\9fदà¥\8dवयसà¥\8dय à¤\85वतरणà¤\82 वà¥\8dयलà¥\80यतामà¥\8d ।",
- "mergehistory-from": "मà¥\82लपà¥\81à¤\9fमà¥\8d ।",
- "mergehistory-into": "लà¤\95à¥\8dषितपà¥\81à¤\9fमà¥\8d ।",
- "mergehistory-list": "विलीनयोग्यसम्पादनस्य इतिहासः ।",
- "mergehistory-merge": "[[:$1]] à¤\87तà¥\8dयसà¥\8dय निमà¥\8dनावतरणà¤\82 । [[:$2]] à¤\87तà¥\8dयनà¥\87न सà¤\82यà¥\8bà¤\9cयितà¥\81à¤\82 शà¤\95à¥\8dयतà¥\87 । निरà¥\8dदिषà¥\8dà¤\9fà¤\95ालà¥\87 सरà¥\8dà¤\9cितानि सà¤\82यà¥\8bà¤\9cयितà¥\81à¤\82 रà¥\87डियà¥\8bपिà¤\9eà¥\8dà¤\9cसà¥\8dतमà¥\8dà¤à¤®à¥\8d à¤\89पयà¥\8bà¤\9cयतà¥\81 । \nसà¤\9eà¥\8dà¤\9aलनसà¥\8dय à¤\85नà¥\81बनà¥\8dधाà¤\83 सà¥\8dतमà¥\8dà¤à¤®à¥\87तà¤\82 पà¥\81नà¤\83सà¥\8dथापयति ।",
- "mergehistory-go": "विलीनयोग्यसम्पादनानि दर्शयतु ।",
+ "suppressionlog": "निà¤\97à¥\8dरहणानाà¤\82 सà¤\82रà¤\95à¥\8dषणाऽवलिà¤\83",
+ "suppressionlogtext": "à¤\85धà¤\83 à¤\85वरà¥\8bधितपà¥\83षà¥\8dठानामà¥\8d, à¤\85पाà¤\95रणà¥\80यपà¥\83षà¥\8dठानाà¤\82 à¤\9a à¤\86वलिà¤\83 à¤\85सà¥\8dति । à¤\8fषा à¤\86वलिà¤\83 पà¥\8dरबनà¥\8dधà¤\95à¥\87à¤à¥\8dयà¤\83 निà¤\97à¥\82ढिता à¤\85सà¥\8dति ।\nसदà¥\8dयà¤\83à¤\95ालà¥\80ना à¤\85वरà¥\8bधितपà¥\83षà¥\8dठानामà¥\8d, à¤\85पाà¤\95रणà¥\80यपà¥\83षà¥\8dठानाà¤\82 à¤\9a à¤\86वलिà¤\82 दà¥\8dरषà¥\8dà¤\9fà¥\81मà¥\8d [[Special:BlockList|à¤\85वरà¥\8bधितावलिà¤\83]] पश्यतु ।",
+ "mergehistory": "पà¥\83षà¥\8dठयà¥\8bà¤\83 à¤\87तिहाससà¥\8dय विलà¥\80निà¤\95रणà¤\82 à¤\95रà¥\8bतà¥\81",
+ "mergehistory-header": "à¤\8fà¤\95सà¥\8dय पà¥\83षà¥\8dठसà¥\8dय à¤\87तिहासà¥\87न सह नवà¥\80नपà¥\83षà¥\8dठसà¥\8dय à¤\87तिहासमà¥\8d à¤\8fà¤\95तà¥\8dरà¥\80à¤\95रà¥\8dतà¥\81मà¥\8d à¤\8fततà¥\8d पà¥\83षà¥\8dठà¤\82 साहायà¥\8dयà¤\82 à¤\95रà¥\8bति । à¤\85तà¥\8dर à¤\87तिहासà¤\83 à¤\95à¥\8dरमशà¤\83 à¤à¤µà¥\87तà¥\8d à¤\87ति à¤\85वधà¥\87यमà¥\8d ।",
+ "mergehistory-box": "दà¥\8dवयà¥\8bà¤\83 पà¥\83षà¥\8dठयà¥\8bà¤\83 à¤\87तिहासà¤\83 à¤\8fà¤\95तà¥\8dरà¥\80à¤\95à¥\8dरियतामà¥\8d :",
+ "mergehistory-from": "सà¥\8dरà¥\8bतपà¥\83षà¥\8dठमà¥\8d :",
+ "mergehistory-into": "लà¤\95à¥\8dषितपà¥\83षà¥\8dठमà¥\8d :",
+ "mergehistory-list": "विलीनयोग्यसम्पादनस्य इतिहासः",
+ "mergehistory-merge": "[[:$1]] à¤\87तà¥\8dयसà¥\8dय निमà¥\8dनसà¤\82सà¥\8dà¤\95रणानि [[:$2]] à¤\87तà¥\8dयनà¥\87न सह सà¤\82यà¥\8bà¤\9cयितà¥\81à¤\82 शà¤\95à¥\8dयनà¥\8dतà¥\87 । निरà¥\8dदिषà¥\8dà¤\9fà¤\95ालसà¥\8dय, तसà¥\8dमातà¥\8d पà¥\82रà¥\8dवतनसà¥\8dय à¤\9a सà¤\82सà¥\8dà¤\95रणानि à¤\8fà¤\95तà¥\8dरà¥\80à¤\95रà¥\8dतà¥\81à¤\82 रà¥\87डियà¥\8b-à¤\95à¥\81डà¥\8dमलसà¥\8dय à¤\89पयà¥\8bà¤\97à¤\82 à¤\95रà¥\8bतà¥\81 । \nसà¥\82à¤\9aनायाà¤\83, सà¤\9eà¥\8dà¤\9aरणसà¥\8dय (navigation) à¤\9a à¤\89पयà¥\8bà¤\97à¤\95रà¥\8dतारà¤\83 à¤\8fतà¥\87 सà¥\8dतमà¥\8dà¤à¤¾à¤\83 पà¥\81नà¤\83 पà¥\82रà¥\8dववतà¥\8d à¤à¤µà¤¿à¤·à¥\8dयति ।",
+ "mergehistory-go": "विलीनयोग्यसम्पादनानि दर्शयतु",
"mergehistory-submit": "अवतरणं योजयतु ।",
"mergehistory-empty": "अवतरणानि संयोजयितुं न शक्यते ।",
"mergehistory-success": "$3 {{PLURAL:$3|revision|revisions}} of [[:$1]] successfully merged into [[:$2]].",
"nav-login-createaccount": "Intra / registhrazioni",
"loginprompt": "Pa intrà a {{SITENAME}} è nezzessàriu abirità li cookie.",
"userlogin": "Intra o cria una noba registhrazioni",
+ "userloginnocreate": "Intra",
"logout": "Esci",
"userlogout": "Esci",
"notloggedin": "Intradda no effettuadda",
"gotaccountlink": "Intra",
"userlogin-resetlink": "Hai immintiggaddu li minuddi d'intradda?",
"createaccountmail": "via postha erettrònica",
+ "createaccountreason": "Mutibu:",
+ "createacct-reason": "Mutibu",
"badretype": "Li paràuri d'órdhini insiriddi nò cuinzidhini tra èddi.",
"userexists": "L'innòmu utenti insiriddu è già utirizaddu. Pa pazieri chirria un'innòmu utenti dibessu.",
"loginerror": "Errori i' l'intradda",
"changepassword-success": "La paràura d'órdhini tóia è isthadda mudìfiggadda. Abà sei intrendi...",
"resetpass_forbidden": "No è pussìbiri mudifiggà li paràuri d'órdhini in {{SITENAME}}.",
"passwordreset-username": "Innòmu utenti:",
+ "changeemail-none": "(nisciunu)",
"resettokens-tokens": "Token:",
"bold_sample": "Grassetu",
"bold_tip": "Grassetu",
"rev-deleted-text-permission": "Chistha versioni di la pàgina è isthadda buggadda da l'archìbi visìbiri a lu pùbbriggu.\nCunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigisthru di canzilladdura] pa althri dettàgli.",
"rev-deleted-text-view": "Chistha versioni di la pàgina è isthadda buggadda da l'archìbi visìbiri a lu pùbbriggu.\nLu testhu pò assé visuarizzaddu soru da l'amministhradori di lu situ.\nCunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigisthru di canzilladdura] pa althri dettàgli.",
"rev-delundel": "musthrà/cuà",
+ "rev-showdeleted": "musthra",
"revisiondelete": "Canzella o ricùpara versioni",
"revdelete-nooldid-title": "Versioni nò ippizzificadda",
"revdelete-nooldid-text": "No ài ippizzificaddu la o li versioni di la pàgina i' li quari eseguì chistha funzioni; pò assé chi nò esisthini.",
"revdelete-show-file-submit": "Si",
"logdelete-selected": "{{PLURAL:$1|Eventu di lu rigisthru sciubaraddu|Eventi di lu rigisthru sciubaraddi}}:",
"revdelete-legend": "Impustha li sighenti limitazioni i'li versioni canzilladdi:",
- "revdelete-hide-text": "Cua lu testhu di la versioni",
+ "revdelete-hide-text": "Testhu di la versioni",
"revdelete-hide-image": "Cua li cuntinuddi di lu file",
"revdelete-hide-name": "Cua azioni e oggettu di la matessi",
"revdelete-hide-comment": "Cua l'oggettu di la mudìfigga",
"revdelete-hide-restricted": "Apprica chisthi limitazioni puru a l'amministhradori e brocca chistha interfàccia",
"revdelete-suppress": "Cua l'infuimmazioni puru a l'amministhradori",
"revdelete-unsuppress": "Elimina li limitazioni i' li ribisioni turraddi che primma",
- "revdelete-log": "Cummentu pa lu rigisthru:",
+ "revdelete-log": "Mutibu:",
"revdelete-submit": "Apprica a la ribisioni isciubaradda",
"revdelete-success": "'''Visibiriddai di la ribisioni impusthadda.'''",
"logdelete-success": "'''Visibiriddai di l'eventu impusthadda.'''",
"revdel-restore": "Ciamba la visibiriddai",
+ "revdelete-reasonotherlist": "Althra mutibazioni",
"mergehistory": "Unioni cronologi",
"mergehistory-box": "Unì la cronologia di dui pàgini:",
"mergehistory-from": "Pàgina d'orìgini:",
"mergehistory-no-destination": "La pàgina dI disthinazioni $1 nò isisthi.",
"mergehistory-invalid-source": "La pàgina d'orìgini débi abé un tìturu currettu.",
"mergehistory-invalid-destination": "La pàgina di disthinazioni débi abé un tìturu currettu.",
+ "mergehistory-reason": "Mutibu:",
"mergelog": "Rigisthru di l'unioni",
"pagemerge-logentry": "ha uniddu [[$1]] a [[$2]] (ribisioni finz'a $3)",
"revertmerge": "Anulla unioni",
"servertime": "Ora di lu server:",
"guesstimezone": "Usa l'ora di lu tóiu nabiggadori",
"allowemail": "Cunsenti lu rizzibimentu di postha erettrònica d'althri utenti (1)",
- "prefs-searchoptions": "Opzioni di zercha",
+ "prefs-searchoptions": "Zercha",
"prefs-namespaces": "Tipu di pagina",
"defaultns": "Namespace pridifiniddi pa zirchà:",
"default": "pridifiniddu",
"userrights-editusergroup": "Mudìfigga gruppi utenti",
"saveusergroups": "Sàivva gruppi utenti",
"userrights-groupsmember": "Appartheni a li gruppi:",
- "userrights-reason": "Mutibu di la mudìffiga:",
+ "userrights-reason": "Mutibu:",
"userrights-no-interwiki": "Nò ài lu primmissu pa mudìfiggà li diritti di l'utenti i' althri siti.",
"userrights-nodatabase": "La bancadati $1 nò isisthi o nò è in lucari.",
"userrights-nologin": "Débi [[Special:UserLogin|intrà]] cumenti amministhradori pa assignà li diritti utenti.",
"group-bureaucrat": "Buròcrati",
"group-suppress": "Ibbàgli",
"group-all": "(utenti)",
- "group-user-member": "Utenti",
+ "group-user-member": "{{GENDER:$1|utenti}}",
"group-autoconfirmed-member": "Utenti autocunfèimmaddu",
- "group-bot-member": "Bot",
+ "group-bot-member": "{{GENDER:$1|bot}}",
"group-sysop-member": "Amministhradori",
"group-bureaucrat-member": "Buròcrati",
"group-suppress-member": "Ibbàgliu",
"rightslogtext": "Chisthu è lu rigisthru di lu mudìfigghi a li diritti assignaddi a l'utenti.",
"action-edit": "mudìfiggà chistha pàgina",
"nchanges": "$1 {{PLURAL:$1|mudìfigga|mudìfigghi}}",
+ "enhancedrc-history": "cronologia",
"recentchanges": "Ulthimi mudìfigghi",
"recentchanges-legend": "Opzioni ùlthimi mudìfigghi",
"recentchanges-summary": "Chistha pàgina prisinta li mudìfigghi più rizzenti a li cuntinuddi di lu situ.",
"listfiles_user": "Utenti",
"listfiles_size": "Misuri in byte",
"listfiles_description": "Deschrizioni",
+ "listfiles-latestversion-yes": "Sì",
"file-anchor-link": "Immàgina",
"filehist": "Cronologia di lu file",
"filehist-help": "Fà clic i' un gruppu data/ora pa vidé lu file cumenti era i' lu mamentu indicaddu.",
"filerevert": "Turra che primma $1",
"filerevert-legend": "Ricupara file",
"filerevert-intro": "N'isthai pa ricuparà lu file '''[[Media:$1|$1]]''' a la [versioni $4 di lu $2, $3].",
- "filerevert-comment": "Oggettu:",
+ "filerevert-comment": "Mutibu:",
"filerevert-defaultcomment": "Turradda che primma la versioni di lu $1, $2",
"filerevert-submit": "Turra che primma",
"filerevert-success": "'''Lu file [[Media:$1|$1]]''' è isthaddu ricuparaddu a la [versioni $4 di lu $2, $3].",
"brokenredirects-delete": "canzella",
"withoutinterwiki": "Pàgini chena cullegamenti p'althri linghi",
"withoutinterwiki-summary": "Li sighenti pàgini so chena cullegamenti a versioni in althri linghi (interwiki):",
+ "withoutinterwiki-legend": "Prefissu",
"withoutinterwiki-submit": "Musthra",
"fewestrevisions": "Pàgini cun mancu ribisioni",
"nbytes": "$1 {{PLURAL:$1|byte|byte}}",
"ncategories": "$1 {{PLURAL:$1|categuria|categuri}}",
+ "ninterwikis": "$1 {{PLURAL:$1|interwiki}}",
"nlinks": "$1 {{PLURAL:$1|cullegamentu|cullegamenti}}",
"nmembers": "$1 {{PLURAL:$1|erementu|erementi}}",
"nrevisions": "$1 {{PLURAL:$1|ribisioni|ribisioni}}",
"protectedpages": "Pàgini prutiggiddi",
"protectedpages-noredirect": "Cuà rinvii",
"protectedpagesempty": "Abà nò vi so pàgini prutiggiddi.",
+ "protectedpages-page": "Pàgina",
+ "protectedpages-reason": "Mutibu",
+ "protectedpages-unknown-timestamp": "Ischunisciddu",
"protectedtitles": "Tìturi prutiggiddi",
"protectedtitlesempty": "Abà nò vi so tìturi prutiggiddi.",
"listusers": "Erencu di li utenti",
"protect-level-sysop": "Soru amministhradori",
"protect-summary-cascade": "ricussiba",
"protect-expiring": "ischadènzia: $1 (UTC)",
+ "protect-expiry-indefinite": "infiniddu",
"protect-cascade": "Prutizioni ricussiba (isthendi la prutizioni a tutti li pàgini incrusi in chistha)",
"protect-cantedit": "Nò è pussìbiri mudìfiggà li libelli di prutizioni pa la pàgina parchí nò si diponi di pimmissi nezzessàri pa mudìfiggà la pàgina.",
"protect-expiry-options": "2 ori:2 hours,1 dì:1 day,3 dì:3 days,1 chedda:1 week,2 cheddi:2 weeks,1 mesi:1 month,3 mesi:3 months,6 mesi:6 months,1 anni:1 year,infiniddu:infinite",
"undelete-missing-filearchive": "Impussìbiri ricuparà l'ID $1 di l'archìbiu file parchí nò è prisenti i' la bancadati. Pudia assé isthaddu già ricuparaddu.",
"undelete-error-short": "Errori i' lu ricùparu di lu file: $1",
"undelete-error-long": "Si so verifiggaddi di l'errori annullendi la canzilladdura di lu file:\n\n$1",
+ "undelete-show-file-submit": "Sì",
"namespace": "Tipu di pàgina:",
"invert": "invirthi la isciubaradda",
"blanknamespace": "(Prinzipari)",
"export-submit": "Ippurtha",
"export-addcattext": "Aggiungi pàgini da la categuria:",
"export-addcat": "Aggiungi",
+ "export-addns": "Aggiungì",
"export-download": "Dumanda lu saivvamentu cumenti file",
"allmessages": "Imbasciaddi di sisthema",
"allmessagesname": "Nommu",
"spambot_username": "MediaWiki buggadda spam",
"spam_reverting": "Turradda a l'ulthima versioni chena cullegamenti a $1",
"spam_blanking": "Pàgina ibbiuddadda, tutti li ribisioni abìani cullegamenti a $1",
+ "pageinfo-contentpage-yes": "Sì",
+ "pageinfo-protect-cascading-yes": "Sì",
"markaspatrolleddiff": "Signa la mudìffiga cumenti verifiggadda",
"markaspatrolledtext": "Signa chistha pàgina cumenti verifiggadda",
"markedaspatrolled": "Signaddu cumenti verifiggaddu",
"exif-flash": "Caratterìsthiga e cundizioni di lu lampu",
"exif-flashenergy": "Putènzia di lu lampu",
"exif-contrast": "Cuntrollu cuntrasthu",
+ "exif-languagecode": "Linga",
+ "exif-iimcategory": "Categuria",
"exif-orientation-1": "Noimmari",
"exif-componentsconfiguration-0": "assenti",
"exif-subjectdistance-value": "$1 metri",
"recreate": "Ricrea",
"confirm_purge_button": "Cunfèimma",
"confirm-purge-top": "Vói pulì la mimória cache di chistha pàgina?",
+ "quotation-marks": "«$1»",
"imgmultipageprev": "← pàgina prizzidenti",
"imgmultipagenext": "pàgina sighenti →",
"imgmultigo": "Vai",
"specialpages": "Pagini ippiziari",
"specialpages-group-login": "Intra / registhrazioni",
"tag-filter": "[[Special:Tags|Tag]] filthru:",
+ "tags-active-yes": "Sì",
"tags-edit": "mudifigga",
"htmlform-submit": "Invia",
"htmlform-reset": "Annulla mudifigghi",
"htmlform-selectorother-other": "Althru",
+ "htmlform-yes": "Sì",
"rightsnone": "(nisciunu)"
}
"permalink": "Трајна веза",
"print": "Штампај",
"view": "Погледај",
+ "view-foreign": "Види на $1",
"edit": "Уреди",
+ "edit-local": "Уреди локални опис",
"create": "Направи",
+ "create-local": "Додај локални опис",
"editthispage": "Уреди ову страницу",
"create-this-page": "Направи ову страницу",
"delete": "Обриши",
"uploadnewversion-linktext": "Пошаљи нову верзију ове датотеке",
"shared-repo-from": "из $1",
"shared-repo": "заједничко складиште",
- "shared-repo-name-wikimediacommons": "Викимедијина остава",
+ "shared-repo-name-wikimediacommons": "{{#SWITCH:{{{1|}}}\n|#default=Викимедијина остава\n|dat=Викимедијиној остави\n}}",
"filepage.css": "/* CSS који је постављен овде се налази на страницама за опис датотека, као и на страним викијима */",
"upload-disallowed-here": "Не можете да замените ову датотеку.",
"filerevert": "Врати $1",
"permalink": "Trajna veza",
"print": "Štampaj",
"view": "Pogledaj",
+ "view-foreign": "Vidi na $1",
"edit": "Uredi",
+ "edit-local": "Uredi lokalni opis",
"create": "Napravi",
+ "create-local": "Dodaj lokalni opis",
"editthispage": "Uredi ovu stranicu",
"create-this-page": "Napravi ovu stranicu",
"delete": "Obriši",
"uploadnewversion-linktext": "Pošalji novo izdanje ove datoteke",
"shared-repo-from": "iz $1",
"shared-repo": "zajedničko skladište",
- "shared-repo-name-wikimediacommons": "Vikimedijina ostava",
+ "shared-repo-name-wikimediacommons": "{{#SWITCH:{{{1|}}}\n|#default=Vikimedijina ostava\n|dat=Vikimedijinoj ostavi\n}}",
"filepage.css": "/* CSS koji je postavljen ovde se nalazi na stranicama za opis datoteka, kao i na stranim vikijima */",
"upload-disallowed-here": "Ne možete da zamenite ovu datoteku.",
"filerevert": "Vrati $1",
"undo-summary-username-hidden": "Gör version $1 av en dold användare ogjord",
"cantcreateaccounttitle": "Kan inte skapa konto",
"cantcreateaccount-text": "[[User:$3|$3]] har blockerat den här IP-adressen ('''$1''') från att registrera konton.\n\nAnledningen till blockeringen var \"$2\".",
- "cantcreateaccount-range-text": "IP-adresserna mellan '''$1''', som inkluderar din IP-adress ('''$4'''), har blockerats från att registrera konton av [[User:$3|$3]].\n\nAnledningen enligt $3 var ''$2''",
+ "cantcreateaccount-range-text": "IP-adresserna i intervallet '''$1''', som inkluderar din IP-adress ('''$4'''), har blockerats från att skapa konton av [[User:$3|$3]].\n\nAnledningen enligt $3 var ''$2''",
"viewpagelogs": "Visa loggar för denna sida",
"nohistory": "Den här sidan har ingen versionshistorik.",
"currentrev": "Nuvarande version",
"contributions-title": "Bidrag av $1",
"mycontris": "Bidrag",
"contribsub2": "För {{GENDER:$3|$1}} ($2)",
+ "contributions-userdoesnotexist": "Användarkontot \"$1\" är inte registrerat.",
"nocontribs": "Inga ändringar som motsvarar dessa kriterier hittades.",
"uctop": "(senaste)",
"month": "Från månad (och tidigare):",
"tog-showtoolbar": "Redaktirleme mahalynda gural panelini görkez (JavaScript)",
"tog-editondblclick": "Sahypany jübüt tyklap, redaktirläp başla (JavaScript)",
"tog-editsectiononrightclick": "Bölümleri bölümiň adyna sag tyklap redaktirlemäge mümkinçilik döret (JavaScript)",
- "tog-rememberpassword": "Sessiýamy şu brauzerde ýatda sakla (iň köp $1 {{PLURAL:$1|günläp|günläp}})",
"tog-watchcreations": "Döreden sahypalarymy gözegçilik sanawyma goş",
"tog-watchdefault": "Redaktirlän sahypalarymy gözegçilik sanawyma goş",
"tog-watchmoves": "Adyny üýtgeden sahypalarymy gözegçilik sanawyma goş",
"and": " we",
"qbfind": "Tap",
"qbbrowse": "Göz aýla",
- "qbedit": "Redaktirle",
+ "qbedit": "Düzet",
"qbpageoptions": "Bu sahypa",
"qbmyoptions": "Meniň sahypalarym",
"faq": "KSS",
"tog-showtoolbar": "Düzenleme araç çubuğunu göster",
"tog-editondblclick": "Çift tıklayarak sayfaları düzenle",
"tog-editsectiononrightclick": "Bölüm başlığına sağ tıklayarak bölümleri düzenleyebilme olanağı ver",
- "tog-rememberpassword": "Girişimi bu tarayıcıda hatırla (en fazla $1 {{PLURAL:$1|gün|gün}} için)",
"tog-watchcreations": "Açtığım sayfaları ve yüklediğim dosyaları izleme listeme ekle",
"tog-watchdefault": "Düzenleme yaptığım sayfaları ve dosyaları izleme listeme ekle",
"tog-watchmoves": "Taşıdığım sayfaları ve dosyaları izleme listeme ekle",
"permalink": "Kalıcı bağlantı",
"print": "Yazdır",
"view": "Görüntüle",
+ "view-foreign": "$1 üzerinde gör",
"edit": "Düzenle",
+ "edit-local": "Yerel açıklama düzenle",
"create": "Oluştur",
+ "create-local": "Yerel açıklama ekle",
"editthispage": "Bu sayfayı değiştir",
"create-this-page": "Bu sayfayı oluştur",
"delete": "Sil",
"changed": "o‘zgartirildi",
"deletepage": "Sahifani o'chirish",
"confirm": "Tasdiqlash",
- "excontent": "tarkibi: \"$1\"",
+ "excontent": "tarkibi: „$1“",
+ "excontentauthor": "tarkibi: „$1“ (faqat bitta muallifi bor edi: „[[Special:Contributions/$2|$2]]“)",
+ "exbeforeblank": "tozalashdan oldingi tarkibi: „$1“",
"delete-confirm": "$1 — oʻchirish",
"delete-legend": "O‘chirish",
"actioncomplete": "Bajarildi",
"contributions-title": "Đóng góp của thành viên $1",
"mycontris": "Đóng góp",
"contribsub2": "Của {{GENDER:$3}}$1 ($2)",
+ "contributions-userdoesnotexist": "Chưa có tài khoản với tên “$1”.",
"nocontribs": "Không tìm thấy thay đổi nào khớp với yêu cầu.",
"uctop": "(hiện tại)",
"month": "Từ tháng (trở về trước):",
"tog-showtoolbar": "顯示編傢伙欄",
"tog-editondblclick": "捺兩記編頁",
"tog-editsectiononrightclick": "用右捺標題編段",
- "tog-rememberpassword": "箇流覽器裏記牢我個登錄狀態(記$1{{PLURAL:$1|日|日}})",
"tog-watchcreations": "畀我建个页搭我传个文件加进我个关注表里去",
"tog-watchdefault": "畀我编个页搭文件加进我个关注表里去",
"tog-watchmoves": "畀我移个页搭文件加进我个监控列表里去",
"sort-descending": "倒排",
"sort-ascending": "顺排",
"nstab-main": "页",
- "nstab-user": "用户页",
+ "nstab-user": "用户页面",
"nstab-media": "媒體頁",
"nstab-special": "特別页",
"nstab-project": "項目頁",
"privacypage": "Project:隐私权政策",
"badaccess": "权限错误",
"badaccess-group0": "你被禁止执行你刚才请求的操作。",
- "badaccess-groups": "您刚才请求的操作只对以下$2个用户组开放:$1。",
+ "badaccess-groups": "您请求的操作仅限属于{{PLURAL:$2|该用户组|这些用户组}}的用户执行:$1",
"versionrequired": "需要$1版本的MediaWiki",
"versionrequiredtext": "使用本页需要$1版本的MediaWiki。请见[[Special:Version|版本页面]]。",
"ok": "确定",
"sort-descending": "降序",
"sort-ascending": "升序",
"nstab-main": "页面",
- "nstab-user": "用户页",
+ "nstab-user": "用户页面",
"nstab-media": "媒体文件页面",
"nstab-special": "特殊页面",
"nstab-project": "项目页面",
"content-model-javascript": "JavaScript",
"content-model-css": "CSS",
"expensive-parserfunction-warning": "<strong>警告:</strong>这个页面有太多高昂的语法功能调用。\n\n它应该少过$2次呼叫,现在有$1次呼叫。",
- "expensive-parserfunction-category": "有过多高开销函数解析器调用的页面",
+ "expensive-parserfunction-category": "有过多高开销解析器函数调用的页面",
"post-expand-template-inclusion-warning": "'''警告:'''包含模板大小过大。\n一些模板将不会包含。",
"post-expand-template-inclusion-category": "模板包含大小超限的页面",
"post-expand-template-argument-warning": "'''警告:'''本页面包含至少一个模板参数有过大扩展大小。这些参数会被略过。",
"skin-preview": "预览",
"datedefault": "默认格式",
"prefs-labs": "实验室特性",
- "prefs-user-pages": "用户页",
+ "prefs-user-pages": "用户页面",
"prefs-personal": "用户资料",
"prefs-rc": "最近更改",
"prefs-watchlist": "监视列表",
"ipbother": "其它时间:",
"ipboptions": "2小时:2 hours,1天:1 day,3天:3 days,1周:1 week,2周:2 weeks,1个月:1 month,3个月:3 months,6个月:6 months,1年:1 year,不限期:infinite",
"ipbhidename": "在编辑及列表中隐藏用户名",
- "ipbwatchuser": "监视该用户的用户页和讨论页",
+ "ipbwatchuser": "监视该用户的用户及讨论页面",
"ipb-disableusertalk": "阻止用户在封禁期间编辑自己的讨论页",
"ipb-change-block": "使用这些设置重新封禁用户",
"ipb-confirm": "确认封禁",
*/
class Languages {
/** @var array List of languages */
- protected $mLanguages; #
+ protected $mLanguages;
/** @var array Raw list of the messages in each language */
protected $mRawMessages;
JSDUCK_MWVERSION="$2"
elif [[ "$*" != "" ]]
then
- echo "Usage: $0 [--version <mediawiki version>]"
+ FILENAME=$(basename $0)
+ echo "Usage: $FILENAME [--version <mediawiki version>]"
echo
exit 1
fi
+MWCORE_DIR=$(cd $(dirname $0)/..; pwd)
+
# Support jsduck 4.x and 5.x
JSDUCK_VERSION="$(jsduck --version | sed -e 's/[.].*//')"
if [ "$JSDUCK_VERSION" = "JSDuck 4" ]; then
- JSDUCK_VERSION_OPT="--meta-tags ./maintenance/jsduck/MetaTags.rb --warnings=-no_doc"
+ JSDUCK_VERSION_OPT="--meta-tags $MWCORE_DIR/maintenance/jsduck/MetaTags.rb --warnings=-no_doc"
else
- JSDUCK_VERSION_OPT="--tags ./maintenance/jsduck/CustomTags.rb --warnings=-nodoc(class,public)"
+ JSDUCK_VERSION_OPT="--tags $MWCORE_DIR/maintenance/jsduck/CustomTags.rb --warnings=-nodoc(class,public)"
fi
-MWCORE_DIR=$(cd $(dirname $0)/..; pwd)
-
jsduck \
--config=$MWCORE_DIR/maintenance/jsduck/config.json \
$JSDUCK_VERSION_OPT \
--- /dev/null
+#!/usr/bin/env bash
+
+# This script generates a commit that updates our distribution copy of OOjs UI
+
+if [ -z "$1" ]
+then
+ # Missing required parameter
+ echo >&2 "Usage: $0 path/to/repo/for/oojs-ui"
+ exit 1
+fi
+
+TARGET_REPO=$(cd $(dirname $0)/../..; pwd)
+TARGET_DIR=resources/lib/oojs-ui
+UI_REPO=$1
+
+function oojsuihash() {
+ grep "OOjs UI v" $TARGET_REPO/$TARGET_DIR/oojs-ui.js \
+ | head -n 1 \
+ | grep -Eo '\([a-z0-9]+\)' \
+ | sed 's/^(//' \
+ | sed 's/)$//'
+}
+
+function oojsuitag() {
+ grep "OOjs UI v" $TARGET_REPO/$TARGET_DIR/oojs-ui.js \
+ | head -n 1 \
+ | grep -Eo '\bv[0-9a-z.-]+\b'
+}
+
+function oojsuiversion() {
+ grep "OOjs UI v" $TARGET_REPO/$TARGET_DIR/oojs-ui.js \
+ | head -n 1 \
+ | grep -Eo '\bv[0-9a-z.-]+\b.*$'
+}
+
+# Prepare working tree
+cd $TARGET_REPO &&
+git reset $TARGET_DIR && git checkout $TARGET_DIR && git fetch origin &&
+git checkout -B upstream-oojsui origin/master || exit 1
+
+cd $UI_REPO || exit 1
+
+# Read the old version and check for changes
+OLDHASH=$(oojsuihash)
+if [ -z "$OLDHASH" ]
+then
+ OLDTAG=$(oojsuitag)
+fi
+if [ "$OLDHASH" == "" ]
+then
+ OLDHASH=$(git rev-parse $OLDTAG)
+ if [ $? != 0 ]
+ then
+ echo Could not find OOjs UI version
+ cd -
+ exit 1
+ fi
+fi
+if [ "$(git rev-parse $OLDHASH)" == "$(git rev-parse HEAD)" ]
+then
+ echo "No changes (already at $OLDHASH)"
+ cd -
+ exit 0
+fi
+
+# Build the distribution (using grunt-test instead of grunt-build, because we
+# want to run unit tests first, and because grunt-build is for a release build
+# and wouldn't put a git hash in the file headers)
+npm install && grunt test || exit 1
+
+# Get the list of changes
+NEWCHANGES=$(git log $OLDHASH.. --oneline --no-merges --reverse --color=never)
+NEWCHANGESDISPLAY=$(git log $OLDHASH.. --oneline --no-merges --reverse --color=always)
+
+# Copy files
+# - Exclude the default non-svg stylesheet
+rsync --recursive --delete --force --exclude 'oojs-ui.css' ./dist/ $TARGET_REPO/$TARGET_DIR || exit 1
+
+# Read the new version
+NEWVERSION=$(oojsuiversion)
+
+# Generate commit
+cd $TARGET_REPO
+COMMITMSG=$(cat <<END
+Update OOjs UI to $NEWVERSION
+
+New changes:
+$NEWCHANGES
+END
+)
+git add -u $TARGET_DIR && git add $TARGET_DIR && git commit -m "$COMMITMSG"
+cat >&2 <<END
+
+
+Created commit with changes:
+$NEWCHANGESDISPLAY
+END
#!/usr/bin/env bash
-if [ "$2" != "" ]
+if [ -n "$2" ]
then
+ # Too many parameters
echo >&2 "Usage: $0 [<version>]"
exit 1
fi
-MW_DIR=$(cd $(dirname $0)/../..; pwd) # e.g. mediawiki-core/
-NPM_DIR=`mktemp -d 2>/dev/null || mktemp -d -t 'mw-update-oojs'` # e.g. /tmp/mw-update-oojs.rI0I5Vir
-
-# Prepare MediaWiki working copy
-cd $MW_DIR
-git reset resources/lib/oojs/ && git checkout resources/lib/oojs/ && git fetch origin || exit 1
+REPO_DIR=$(cd $(dirname $0)/../..; pwd) # Root dir of the git repo working tree
+TARGET_DIR=resources/lib/oojs # Destination relative to the root of the repo
+NPM_DIR=`mktemp -d 2>/dev/null || mktemp -d -t 'update-oojs'` # e.g. /tmp/update-oojs.rI0I5Vir
+# Prepare working tree
+cd $REPO_DIR &&
+git reset $TARGET_DIR && git checkout $TARGET_DIR && git fetch origin &&
git checkout -B upstream-oojs origin/master || exit 1
# Fetch upstream version
cd $NPM_DIR
-if [ "$1" != "" ]
+if [ -n "$1" ]
then
npm install oojs@$1 || exit 1
else
fi
# Copy file(s)
-mv ./node_modules/oojs/dist/* $MW_DIR/resources/lib/oojs/ || exit 1
-
-# Generate commit
-cd $MW_DIR || exit 1
+rsync --recursive --delete --force ./node_modules/oojs/dist $REPO_DIR/$TARGET_DIR || exit 1
# Clean up temporary area
rm -rf $NPM_DIR
+# Generate commit
+cd $REPO_DIR || exit 1
+
COMMITMSG=$(cat <<END
Update OOjs to v$OOJS_VERSION
END
)
-git commit resources/lib/oojs/ -m "$COMMITMSG" || exit 1
+# Stage deletion, modification and creation of files. Then commit.
+git add --update $TARGET_DIR && git add $TARGET_DIR && git commit -m "$COMMITMSG" || exit 1
'skins.vector.styles' => array(
// Used in the web installer. Test it after modifying this definition!
'styles' => array(
- 'vector/styles.less',
+ 'vector/screen.less' => array( 'media' => 'screen' ),
+ 'vector/screen-hd.less' => array( 'media' => 'screen and (min-width: 982px)' ),
),
'remoteBasePath' => $GLOBALS['wgStylePath'],
'localBasePath' => $GLOBALS['wgStyleDirectory'],
"ooui-dialog-action-close": "Racnê",
"ooui-outline-control-move-down": "Bendi bere cêr",
"ooui-outline-control-move-up": "Bendi bere cor",
+ "ooui-outline-control-remove": "Obji hewad",
"ooui-toolbar-more": "Zewbi"
}
--- /dev/null
+{
+ "@metadata": {
+ "authors": [
+ "Lévi"
+ ]
+ },
+ "ooui-dialog-action-close": "Sèra",
+ "ooui-outline-control-move-down": "Spôsta in bâs",
+ "ooui-outline-control-move-up": "Spôsta in êlt",
+ "ooui-outline-control-remove": "Armōv l'elemèint",
+ "ooui-toolbar-more": "Êter"
+}
"ooui-dialog-action-close": "Sèra",
"ooui-outline-control-move-down": "Spôsta in bâs",
"ooui-outline-control-move-up": "Spôsta in êlt",
+ "ooui-outline-control-remove": "Tór vìa 'l elemèint",
"ooui-toolbar-more": "Êter"
}
]
},
"ooui-dialog-action-close": "Cerrar",
- "ooui-outline-control-move-down": "Mover abajo",
- "ooui-outline-control-move-up": "Mover arriba",
+ "ooui-outline-control-move-down": "Bajar elemento",
+ "ooui-outline-control-move-up": "Subir elemento",
"ooui-outline-control-remove": "Eliminar elemento",
"ooui-toolbar-more": "Más"
}
--- /dev/null
+{
+ "@metadata": {
+ "authors": [
+ "Ibrahim"
+ ]
+ },
+ "ooui-dialog-action-close": "Пӯшиш",
+ "ooui-outline-control-move-down": "Ҳаракати мавод ба поён",
+ "ooui-outline-control-move-up": "Ҳаракати мавод ба боло",
+ "ooui-outline-control-remove": "Ҳазви мавод",
+ "ooui-toolbar-more": "Бештар"
+}
transform: scale(1);
}
+.oo-ui-dialog-content .oo-ui-window-head,
+.oo-ui-dialog-content .oo-ui-window-foot {
+ z-index: 1;
+}
+
.oo-ui-dialog-content .oo-ui-window-body {
+ z-index: 2;
box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25);
}
+.oo-ui-dialog-content .oo-ui-window-overlay {
+ z-index: 3;
+}
+
.oo-ui-frame-content {
font-family: sans-serif;
font-size: 0.8em;
box-shadow: none;
}
-.oo-ui-bookletLayout > .oo-ui-gridLayout > .oo-ui-panelLayout {
- -webkit-transition: width 250ms ease-in-out, height 250ms ease-in-out, top 250ms ease-in-out, left 250ms ease-in-out;
- -moz-transition: width 250ms ease-in-out, height 250ms ease-in-out, top 250ms ease-in-out, left 250ms ease-in-out;
- -ms-transition: width 250ms ease-in-out, height 250ms ease-in-out, top 250ms ease-in-out, left 250ms ease-in-out;
- -o-transition: width 250ms ease-in-out, height 250ms ease-in-out, top 250ms ease-in-out, left 250ms ease-in-out;
- transition: width 250ms ease-in-out, height 250ms ease-in-out, top 250ms ease-in-out, left 250ms ease-in-out;
-}
-
.oo-ui-bookletLayout-outlinePanel {
border-right: solid 1px #ddd;
}
/*!
- * OOjs UI v0.1.0-pre (9d291a9222)
+ * OOjs UI v0.1.0-pre (989950a4db)
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2014 OOjs Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: Wed Apr 16 2014 18:45:32 GMT-0700 (PDT)
+ * Date: Fri Apr 18 2014 13:02:46 GMT-0700 (PDT)
*/
( function ( OO ) {
this.visible = false;
this.footless = !!config.footless;
this.size = null;
+ this.pending = 0;
this.onWindowMouseWheelHandler = OO.ui.bind( this.onWindowMouseWheel, this );
this.onDocumentKeyDownHandler = OO.ui.bind( this.onDocumentKeyDown, this );
}, 250 );
}
};
+
+/**
+ * Check if input is pending.
+ *
+ * @return {boolean}
+ */
+OO.ui.Dialog.prototype.isPending = function () {
+ return !!this.pending;
+};
+
+/**
+ * Increase the pending stack.
+ *
+ * @chainable
+ */
+OO.ui.Dialog.prototype.pushPending = function () {
+ if ( this.pending === 0 ) {
+ this.frame.$content.addClass( 'oo-ui-dialog-pending' );
+ this.$head.addClass( 'oo-ui-texture-pending' );
+ this.$foot.addClass( 'oo-ui-texture-pending' );
+ }
+ this.pending++;
+
+ return this;
+};
+
+/**
+ * Reduce the pending stack.
+ *
+ * Clamped at zero.
+ *
+ * @chainable
+ */
+OO.ui.Dialog.prototype.popPending = function () {
+ if ( this.pending === 1 ) {
+ this.frame.$content.removeClass( 'oo-ui-dialog-pending' );
+ this.$head.removeClass( 'oo-ui-texture-pending' );
+ this.$foot.removeClass( 'oo-ui-texture-pending' );
+ }
+ this.pending = Math.max( 0, this.pending - 1 );
+
+ return this;
+};
/**
* Container for elements.
*
* @constructor
* @param {jQuery} $group Container node, assigned to #$group
* @param {Object} [config] Configuration options
- * @cfg {Object.<string,string>} [aggregations] Events to aggregate, keyed by item event name
*/
OO.ui.GroupElement = function OoUiGroupElement( $group, config ) {
// Configuration
this.$group = $group;
this.items = [];
this.$items = this.$( [] );
- this.aggregate = !$.isEmptyObject( config.aggregations );
- this.aggregations = config.aggregations || {};
+ this.aggregateItemEvents = {};
};
/* Methods */
return this.items.slice( 0 );
};
+/**
+ * Add an aggregate item event.
+ *
+ * Aggregated events are listened to on each item and then emitted by the group under a new name,
+ * and with an additional leading parameter containing the item that emitted the original event.
+ * Other arguments that were emitted from the original event are passed through.
+ *
+ * @param {Object.<string,string|null>} events Aggregate events emitted by group, keyed by item
+ * event, use null value to remove aggregation
+ * @throws {Error} If aggregation already exists
+ */
+OO.ui.GroupElement.prototype.aggregate = function ( events ) {
+ var i, len, item, add, remove, itemEvent, groupEvent;
+
+ for ( itemEvent in events ) {
+ groupEvent = events[itemEvent];
+
+ // Remove existing aggregated event
+ if ( itemEvent in this.aggregateItemEvents ) {
+ // Don't allow duplicate aggregations
+ if ( groupEvent ) {
+ throw new Error( 'Duplicate item event aggregation for ' + itemEvent );
+ }
+ // Remove event aggregation from existing items
+ remove = {};
+ remove[itemEvent] = this.aggregateItemEvents[itemEvent];
+ for ( i = 0, len = this.items.length; i < len; i++ ) {
+ this.items[i].disconnect( this, remove );
+ }
+ // Prevent future items from aggregating event
+ delete this.aggregateItemEvents[itemEvent];
+ }
+
+ // Add new aggregate event
+ if ( groupEvent ) {
+ // Make future items aggregate event
+ this.aggregateItemEvents[itemEvent] = groupEvent;
+ // Add event aggregation to existing items
+ for ( i = 0, len = this.items.length; i < len; i++ ) {
+ item = this.items[i];
+ add = {};
+ add[itemEvent] = [ 'emit', groupEvent, item ];
+ item.connect( this, add );
+ }
+ }
+ }
+};
+
/**
* Add items.
*
}
}
// Add the item
- if ( this.aggregate ) {
+ if ( !$.isEmptyObject( this.aggregateItemEvents ) ) {
events = {};
- for ( event in this.aggregations ) {
- events[event] = [ 'emit', this.aggregations[event], item ];
+ for ( event in this.aggregateItemEvents ) {
+ events[event] = [ 'emit', this.aggregateItemEvents[event], item ];
}
item.connect( this, events );
}
item = items[i];
index = $.inArray( item, this.items );
if ( index !== -1 ) {
- if ( this.aggregate ) {
+ if ( !$.isEmptyObject( this.aggregateItemEvents ) ) {
item.disconnect( this );
}
item.setElementGroup( null );
// Remove all items
for ( i = 0, len = this.items.length; i < len; i++ ) {
item = this.items[i];
- if ( this.aggregate ) {
+ if ( !$.isEmptyObject( this.aggregateItemEvents ) ) {
item.disconnect( this );
}
item.setElementGroup( null );
/**
* @event set
- * @param {OO.ui.PanelLayout|null} [item] Current item
+ * @param {OO.ui.Layout|null} [item] Current item
*/
/* Methods */
+/**
+ * Get the current item.
+ *
+ * @return {OO.ui.Layout|null} [description]
+ */
+OO.ui.StackLayout.prototype.getCurrentItem = function () {
+ return this.currentItem;
+};
+
/**
* Add items.
*
* Adding an existing item (by value) will move it.
*
- * @param {OO.ui.PanelLayout[]} items Items to add
+ * @param {OO.ui.Layout[]} items Items to add
* @param {number} [index] Index to insert items after
* @chainable
*/
*
* Items will be detached, not removed, so they can be used later.
*
- * @param {OO.ui.PanelLayout[]} items Items to remove
+ * @param {OO.ui.Layout[]} items Items to remove
* @chainable
*/
OO.ui.StackLayout.prototype.removeItems = function ( items ) {
*
* Any currently shown item will be hidden.
*
- * @param {OO.ui.PanelLayout} item Item to show
+ * @param {OO.ui.Layout} item Item to show
* @chainable
*/
OO.ui.StackLayout.prototype.setItem = function ( item ) {
* @chainable
*/
OO.ui.TextInputWidget.prototype.pushPending = function () {
+ if ( this.pending === 0 ) {
+ this.$element.addClass( 'oo-ui-textInputWidget-pending' );
+ this.$input.addClass( 'oo-ui-texture-pending' );
+ }
this.pending++;
- this.$element.addClass( 'oo-ui-textInputWidget-pending' );
- this.$input.addClass( 'oo-ui-texture-pending' );
+
return this;
};
* @chainable
*/
OO.ui.TextInputWidget.prototype.popPending = function () {
- this.pending = Math.max( 0, this.pending - 1 );
- if ( !this.pending ) {
+ if ( this.pending === 1 ) {
this.$element.removeClass( 'oo-ui-textInputWidget-pending' );
this.$input.removeClass( 'oo-ui-texture-pending' );
}
+ this.pending = Math.max( 0, this.pending - 1 );
+
return this;
};
/**
/*!
- * OOjs UI v0.1.0-pre (9d291a9222)
+ * OOjs UI v0.1.0-pre (989950a4db)
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2014 OOjs Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: Wed Apr 16 2014 18:45:32 GMT-0700 (PDT)
+ * Date: Fri Apr 18 2014 13:02:46 GMT-0700 (PDT)
*/
/* Textures */
+++ /dev/null
-#!/usr/bin/env bash
-
-# FIXME this script is duplicated from update-oojs.sh - factor this out
-
-# This script generates a commit that updates the oojs-ui distribution
-# ./bin/update-oojs-ui.sh path/to/repo/for/oojs-ui
-
-function oojsuihash() {
- grep "OOjs UI v" resources/lib/oojs-ui/oojs-ui.js \
- | head -n 1 \
- | grep -Eo '\([a-z0-9]+\)' \
- | sed 's/^(//' \
- | sed 's/)$//'
-}
-
-function oojsuitag() {
- grep "OOjs UI v" resources/lib/oojs-ui/oojs-ui.js \
- | head -n 1 \
- | grep -Eo '\bv[0-9a-z.-]+\b'
-}
-
-function oojsuiversion() {
- grep "OOjs UI v" resources/lib/oojs-ui/oojs-ui.js \
- | head -n 1 \
- | grep -Eo '\bv[0-9a-z.-]+\b.*$'
-}
-
-# cd to the MW root directory
-cd $(cd $(dirname $0)/../../..; pwd)
-
-if [ "x$1" == "x" ]
-then
- echo >&2 "Usage: update-oojs-ui.sh path/to/repo/for/oojs-ui"
- exit 1
-fi
-
-# Undo any changes in the oojs-ui directory
-git reset -- resources/lib/oojs-ui/
-git checkout -- resources/lib/oojs-ui/
-
-git fetch origin
-# Create a branch of MW if needed, and reset it to master
-git checkout -B update-oojsui origin/master
-
-# Get the old oojs-ui version
-OLDVERSION=$(oojsuihash)
-if [ "x$OLDVERSION" == "x" ]
-then
- TAG=$(oojsuitag)
-fi
-
-# cd to the oojs-ui directory
-cd $1 || exit 1
-if [ "x$OLDVERSION" == "x" ]
-then
- # Try the tag
- OLDVERSION=$(git rev-parse $TAG)
- if [ $? != 0 ]
- then
- echo Could not find OOjs UI version
- cd -
- exit 1
- fi
-fi
-if [ "$(git rev-parse $OLDVERSION)" == "$(git rev-parse HEAD)" ]
-then
- echo "No changes (already at $OLDVERSION)"
- cd -
- exit 0
-fi
-# Build the distribution
-npm install || exit 1
-grunt || exit 1
-# Get the list of changes
-NEWCHANGES=$(git log $OLDVERSION.. --oneline --no-merges --reverse --color=never)
-NEWCHANGESDISPLAY=$(git log $OLDVERSION.. --oneline --no-merges --reverse --color=always)
-# cd back to the VisualEditor directory
-cd -
-
-# Copy files from dist/ to resources/lib/oojs-ui
-cp -a $1/dist/{oojs-ui.js,oojs-ui.svg.css,oojs-ui-apex.css,oojs-ui-agora.css,images,i18n} resources/lib/oojs-ui/
-# Figure out what the new version is
-NEWVERSION=$(oojsuiversion)
-# Generate commit summary
-COMMITMSG=$(cat <<END
-Update OOjs UI to $NEWVERSION
-
-New changes:
-$NEWCHANGES
-END
-)
-# Commit
-git commit resources/lib/oojs-ui/ -m "$COMMITMSG"
-cat >&2 <<END
-
-
-Created commit with changes:
-$NEWCHANGESDISPLAY
-END
*/
configure: function ( context, property, value ) {
var newCSS,
- $result, $results, childrenWidth,
+ $result, $results, $spanForWidth, childrenWidth,
i, expWidth, maxWidth, text;
// Validate creation using fallback values
$result.highlightText( context.data.prevText );
}
- // Widen results box if needed
- // New width is only calculated here, applied later
- childrenWidth = $result.children().outerWidth();
+ // Widen results box if needed (new width is only calculated here, applied later).
+ // We need this awful hack to calculate the actual pre-ellipsis width.
+ $spanForWidth = $result.wrapInner( '<span>' ).children();
+ childrenWidth = $spanForWidth.outerWidth();
+ $spanForWidth.contents().unwrap();
if ( childrenWidth > $result.width() && childrenWidth > expWidth ) {
// factor in any padding, margin, or border space on the parent
expWidth = childrenWidth + ( context.data.$container.width() - $result.width() );
/* Vector screen styles for high definition displays */
+@import "variables.less";
+
div#content {
margin-left: 11em;
padding: 1.25em 1.5em 1.5em 1.5em;
--- /dev/null
+/* Vector screen styles */
+
+@import "variables.less";
+
+@import "components/common.less";
+@import "components/animations.less";
+@import "components/navigation.less";
+@import "components/footer.less";
+@import 'components/notifications.less';
+@import "components/externalLinks.less";
+++ /dev/null
-@import "variables.less";
-
-@media screen {
- @import "components/common.less";
- @import "components/animations.less";
- @import "components/navigation.less";
- @import "components/footer.less";
- @import 'components/notifications.less';
- @import "components/externalLinks.less";
-}
-
-@media screen and (min-width: 982px) {
- @import "screen-hd.less";
-}
* @dataProvider getHtmlData
* @covers HtmlFormatter::getText
*/
- public function testTransform( $input, $expected, $callback = false ) {
+ public function testTransform( $input, $expectedText, $expectedRemoved = array(), $callback = false ) {
$input = self::normalize( $input );
$formatter = new HtmlFormatter( HtmlFormatter::wrapHTML( $input ) );
if ( $callback ) {
$callback( $formatter );
}
- $formatter->filterContent();
+ $removedElements = $formatter->filterContent();
$html = $formatter->getText();
+ $removed = array();
+ foreach ( $removedElements as $removedElement ) {
+ $removed[] = self::normalize( $formatter->getText( $removedElement ) );
+ }
+ $expectedRemoved = array_map( 'self::normalize', $expectedRemoved );
$this->assertValidHtmlSnippet( $html );
- $this->assertEquals( self::normalize( $expected ), self::normalize( $html ) );
+ $this->assertEquals( self::normalize( $expectedText ), self::normalize( $html ) );
+ $this->assertEquals( asort( $expectedRemoved ), asort( $removed ) );
}
private static function normalize( $s ) {
array(
'<img src="/foo/bar.jpg" alt="Blah"/>',
'',
+ array( '<img src="/foo/bar.jpg" alt="Blah">' ),
$removeImages,
),
// basic tag removal
'<table><tr><td>foo</td></tr></table><div class="foo">foo</div><div class="foo quux">foo</div><span id="bar">bar</span>
<strong class="foo" id="bar">foobar</strong><div class="notfoo">test</div><div class="baz"/>
<span class="baz">baz</span>',
-
'<div class="notfoo">test</div>
<span class="baz">baz</span>',
+ array(
+ '<table><tr><td>foo</td></tr></table>',
+ '<div class="foo">foo</div>',
+ '<div class="foo quux">foo</div>',
+ '<span id="bar">bar</span>',
+ '<strong class="foo" id="bar">foobar</strong>',
+ '<div class="baz"/>',
+ ),
$removeTags,
),
// don't flatten tags that start like chosen ones
array(
'<div><s>foo</s> <span>bar</span></div>',
'foo <span>bar</span>',
+ array(),
$flattenSomeStuff,
),
// total flattening
array(
'<div style="foo">bar<sup>2</sup></div>',
'bar2',
+ array(),
$flattenEverything,
),
// UTF-8 preservation and security
/**
* @since 1.20
*
- * @param callback $function
+ * @param callable $function
*
* @covers GenericArrayObject::getObjectType
*/
}
/**
- * @dataProvider provideFormattableTimes#
+ * @dataProvider provideFormattableTimes
* @covers Language::formatTimePeriod
*/
public function testFormatTimePeriod( $seconds, $format, $expected, $desc ) {