Linux anchor 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64
Apache/2.4.18 (Ubuntu)
Server IP : 10.10.100.4 & Your IP : 216.73.217.150
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
var /
www /
wiki.bernardino.org /
includes /
cache /
Delete
Unzip
Name
Size
Permission
Date
Action
localisation
[ DIR ]
drwxr-xr-x
2016-11-28 20:20
BacklinkCache.php
15.04
KB
-rw-r--r--
2016-11-28 20:20
CacheDependency.php
6.87
KB
-rw-r--r--
2016-11-28 20:20
CacheHelper.php
10.19
KB
-rw-r--r--
2016-11-28 20:20
FileCacheBase.php
6.64
KB
-rw-r--r--
2016-11-28 20:20
GenderCache.php
5.11
KB
-rw-r--r--
2016-11-28 20:20
HTMLCacheUpdate.php
6.6
KB
-rw-r--r--
2011-05-28 20:58
HTMLFileCache.php
7.29
KB
-rw-r--r--
2016-11-28 20:20
LinkBatch.php
6.17
KB
-rw-r--r--
2016-11-28 20:20
LinkCache.php
8.6
KB
-rw-r--r--
2016-11-28 20:20
MemcachedSessions.php
2.05
KB
-rw-r--r--
2011-04-25 23:38
MessageBlobStore.php
7.42
KB
-rw-r--r--
2016-11-28 20:20
MessageCache.php
36.38
KB
-rw-r--r--
2016-11-28 20:20
ResourceFileCache.php
3.42
KB
-rw-r--r--
2016-11-28 20:20
SquidUpdate.php
5.84
KB
-rw-r--r--
2011-10-17 00:13
UserCache.php
4.23
KB
-rw-r--r--
2016-11-28 20:20
Save
Rename
<?php /** * Caches current user names and other info based on user IDs. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * http://www.gnu.org/copyleft/gpl.html * * @file * @ingroup Cache */ /** * @since 1.20 */ class UserCache { protected $cache = []; // (uid => property => value) protected $typesCached = []; // (uid => cache type => 1) /** * @return UserCache */ public static function singleton() { static $instance = null; if ( $instance === null ) { $instance = new self(); } return $instance; } protected function __construct() { } /** * Get a property of a user based on their user ID * * @param int $userId User ID * @param string $prop User property * @return mixed|bool The property or false if the user does not exist */ public function getProp( $userId, $prop ) { if ( !isset( $this->cache[$userId][$prop] ) ) { wfDebug( __METHOD__ . ": querying DB for prop '$prop' for user ID '$userId'.\n" ); $this->doQuery( [ $userId ] ); // cache miss } return isset( $this->cache[$userId][$prop] ) ? $this->cache[$userId][$prop] : false; // user does not exist? } /** * Get the name of a user or return $ip if the user ID is 0 * * @param int $userId * @param string $ip * @return string * @since 1.22 */ public function getUserName( $userId, $ip ) { return $userId > 0 ? $this->getProp( $userId, 'name' ) : $ip; } /** * 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 */ public function doQuery( array $userIds, $options = [], $caller = '' ) { $usersToCheck = []; $usersToQuery = []; $userIds = array_unique( $userIds ); foreach ( $userIds as $userId ) { $userId = (int)$userId; if ( $userId <= 0 ) { continue; // skip anons } if ( isset( $this->cache[$userId]['name'] ) ) { $usersToCheck[$userId] = $this->cache[$userId]['name']; // already have name } else { $usersToQuery[] = $userId; // we need to get the name } } // Lookup basic info for users not yet loaded... if ( count( $usersToQuery ) ) { $dbr = wfGetDB( DB_REPLICA ); $table = [ 'user' ]; $conds = [ 'user_id' => $usersToQuery ]; $fields = [ 'user_name', 'user_real_name', 'user_registration', 'user_id' ]; $comment = __METHOD__; if ( strval( $caller ) !== '' ) { $comment .= "/$caller"; } $res = $dbr->select( $table, $fields, $conds, $comment ); foreach ( $res as $row ) { // load each user into cache $userId = (int)$row->user_id; $this->cache[$userId]['name'] = $row->user_name; $this->cache[$userId]['real_name'] = $row->user_real_name; $this->cache[$userId]['registration'] = $row->user_registration; $usersToCheck[$userId] = $row->user_name; } } $lb = new LinkBatch(); foreach ( $usersToCheck as $userId => $name ) { if ( $this->queryNeeded( $userId, 'userpage', $options ) ) { $lb->add( NS_USER, $name ); $this->typesCached[$userId]['userpage'] = 1; } if ( $this->queryNeeded( $userId, 'usertalk', $options ) ) { $lb->add( NS_USER_TALK, $name ); $this->typesCached[$userId]['usertalk'] = 1; } } $lb->execute(); } /** * Check if a cache type is in $options and was not loaded for this user * * @param int $uid User ID * @param string $type Cache type * @param array $options Requested cache types * @return bool */ protected function queryNeeded( $uid, $type, array $options ) { return ( in_array( $type, $options ) && !isset( $this->typesCached[$uid][$type] ) ); } }