X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialNewimages.php;h=14391d24595d8a97f8c11ca915c0d7b30798c821;hb=f47b7d6afc77ad8b08ba803289852f7c11ea1905;hp=629a50875b2f28ce20ffbb97d89bda70bdf73194;hpb=f9128d21b70e1a960f247f5af92af528f027d6a4;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialNewimages.php b/includes/specials/SpecialNewimages.php index 629a50875b..14391d2459 100644 --- a/includes/specials/SpecialNewimages.php +++ b/includes/specials/SpecialNewimages.php @@ -71,189 +71,3 @@ class SpecialNewFiles extends IncludableSpecialPage { } } } - -/** - * @ingroup SpecialPage Pager - */ -class NewFilesPager extends ReverseChronologicalPager { - /** - * @var ImageGallery - */ - protected $gallery; - - /** - * @var bool - */ - protected $showBots; - - /** - * @var bool - */ - protected $hidePatrolled; - - function __construct( IContextSource $context, $par = null ) { - $this->like = $context->getRequest()->getText( 'like' ); - $this->showBots = $context->getRequest()->getBool( 'showbots', 0 ); - $this->hidePatrolled = $context->getRequest()->getBool( 'hidepatrolled', 0 ); - if ( is_numeric( $par ) ) { - $this->setLimit( $par ); - } - - parent::__construct( $context ); - } - - function getQueryInfo() { - $conds = $jconds = []; - $tables = [ 'image' ]; - $fields = [ 'img_name', 'img_user', 'img_timestamp' ]; - $options = []; - - if ( !$this->showBots ) { - $groupsWithBotPermission = User::getGroupsWithPermission( 'bot' ); - - if ( count( $groupsWithBotPermission ) ) { - $tables[] = 'user_groups'; - $conds[] = 'ug_group IS NULL'; - $jconds['user_groups'] = [ - 'LEFT JOIN', - [ - 'ug_group' => $groupsWithBotPermission, - 'ug_user = img_user' - ] - ]; - } - } - - if ( $this->hidePatrolled ) { - $tables[] = 'recentchanges'; - $conds['rc_type'] = RC_LOG; - $conds['rc_log_type'] = 'upload'; - $conds['rc_patrolled'] = 0; - $conds['rc_namespace'] = NS_FILE; - $jconds['recentchanges'] = [ - 'INNER JOIN', - [ - 'rc_title = img_name', - 'rc_user = img_user', - 'rc_timestamp = img_timestamp' - ] - ]; - // We're ordering by img_timestamp, so we have to make sure MariaDB queries `image` first. - // It sometimes decides to query `recentchanges` first and filesort the result set later - // to get the right ordering. T124205 / https://mariadb.atlassian.net/browse/MDEV-8880 - $options[] = 'STRAIGHT_JOIN'; - } - - if ( !$this->getConfig()->get( 'MiserMode' ) && $this->like !== null ) { - $dbr = wfGetDB( DB_SLAVE ); - $likeObj = Title::newFromText( $this->like ); - if ( $likeObj instanceof Title ) { - $like = $dbr->buildLike( - $dbr->anyString(), - strtolower( $likeObj->getDBkey() ), - $dbr->anyString() - ); - $conds[] = "LOWER(img_name) $like"; - } - } - - $query = [ - 'tables' => $tables, - 'fields' => $fields, - 'join_conds' => $jconds, - 'conds' => $conds, - 'options' => $options, - ]; - - return $query; - } - - function getIndexField() { - return 'img_timestamp'; - } - - function getStartBody() { - if ( !$this->gallery ) { - // Note that null for mode is taken to mean use default. - $mode = $this->getRequest()->getVal( 'gallerymode', null ); - try { - $this->gallery = ImageGalleryBase::factory( $mode, $this->getContext() ); - } catch ( Exception $e ) { - // User specified something invalid, fallback to default. - $this->gallery = ImageGalleryBase::factory( false, $this->getContext() ); - } - } - - return ''; - } - - function getEndBody() { - return $this->gallery->toHTML(); - } - - function formatRow( $row ) { - $name = $row->img_name; - $user = User::newFromId( $row->img_user ); - - $title = Title::makeTitle( NS_FILE, $name ); - $ul = Linker::link( $user->getUserPage(), $user->getName() ); - $time = $this->getLanguage()->userTimeAndDate( $row->img_timestamp, $this->getUser() ); - - $this->gallery->add( - $title, - "$ul
\n" - . htmlspecialchars( $time ) - . "
\n" - ); - } - - function getForm() { - $fields = [ - 'like' => [ - 'type' => 'text', - 'label-message' => 'newimages-label', - 'name' => 'like', - ], - 'showbots' => [ - 'type' => 'check', - 'label-message' => 'newimages-showbots', - 'name' => 'showbots', - ], - 'hidepatrolled' => [ - 'type' => 'check', - 'label-message' => 'newimages-hidepatrolled', - 'name' => 'hidepatrolled', - ], - 'limit' => [ - 'type' => 'hidden', - 'default' => $this->mLimit, - 'name' => 'limit', - ], - 'offset' => [ - 'type' => 'hidden', - 'default' => $this->getRequest()->getText( 'offset' ), - 'name' => 'offset', - ], - ]; - - if ( $this->getConfig()->get( 'MiserMode' ) ) { - unset( $fields['like'] ); - } - - if ( !$this->getUser()->useFilePatrol() ) { - unset( $fields['hidepatrolled'] ); - } - - $context = new DerivativeContext( $this->getContext() ); - $context->setTitle( $this->getTitle() ); // Remove subpage - $form = new HTMLForm( $fields, $context ); - - $form->setSubmitTextMsg( 'ilsubmit' ); - $form->setSubmitProgressive(); - - $form->setMethod( 'get' ); - $form->setWrapperLegendMsg( 'newimages-legend' ); - - return $form; - } -}