Файловый менеджер - Редактировать - /var/www/html/mediawiki-1.43.1/extensions/FileImporter/src/Services/CategoryExtractor.php
Ðазад
<?php namespace FileImporter\Services; use MediaWiki\Cache\LinkBatchFactory; use MediaWiki\Parser\ParserFactory; use MediaWiki\Parser\ParserOptions; use MediaWiki\Title\Title; use MediaWiki\User\UserIdentity; use Wikimedia\Rdbms\IConnectionProvider; /** * @license GPL-2.0-or-later */ class CategoryExtractor { private ParserFactory $parserFactory; private IConnectionProvider $connectionProvider; private LinkBatchFactory $linkBatchFactory; public function __construct( ParserFactory $parserFactory, IConnectionProvider $connectionProvider, LinkBatchFactory $linkBatchFactory ) { $this->parserFactory = $parserFactory; $this->connectionProvider = $connectionProvider; $this->linkBatchFactory = $linkBatchFactory; } /** * Find categories for a given page. * * @param string $text Body of the page to scan. * @param Title $title Page title for context, because parsing might depend on this * @param UserIdentity $user User for context, because parsing might depend on this * * @return array Two lists of category names, grouped by local visibility. * [ $visibleCategories, $hiddenCategories ] */ public function getCategoriesGrouped( string $text, Title $title, UserIdentity $user ): array { $allCategories = $this->parserFactory->getInstance()->parse( $text, $title, new ParserOptions( $user ) )->getCategoryNames(); $hiddenCategories = $this->queryHiddenCategories( $allCategories ); $visibleCategories = array_diff( $allCategories, $hiddenCategories ); return [ $visibleCategories, $hiddenCategories ]; } /** * Query categories to find which are hidden. * * @param string[] $categories List of all category names. * * @return string[] List of hidden categories. */ private function queryHiddenCategories( array $categories ): array { if ( $categories === [] ) { return []; } $arr = [ NS_CATEGORY => array_flip( $categories ) ]; $lb = $this->linkBatchFactory->newLinkBatch(); $lb->setArray( $arr ); # Fetch categories having the `hiddencat` property. $dbr = $this->connectionProvider->getReplicaDatabase(); return $dbr->newSelectQueryBuilder() ->select( 'page_title' ) ->from( 'page' ) ->join( 'page_props', null, [ 'pp_propname' => 'hiddencat', 'pp_page = page_id' ] ) ->where( $lb->constructSet( 'page', $dbr ) ) ->caller( __METHOD__ ) ->fetchFieldValues(); } }
| ver. 1.1 | |
.
| PHP 8.4.18 | Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ Ñтраницы: 0 |
proxy
|
phpinfo
|
ÐаÑтройка