X-Git-Url: https://git.cyclocoop.org/%27.WWW_URL.%27admin/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialUnusedimages.php;h=cdab557ee326c1679bc598ed996811346d9d44c5;hb=21b7b27f0379cff1b06efa95d27fa88684b65c57;hp=88600e5ab0050eea4ec961846cb1509c55863374;hpb=fff5f0ee0b7aa4adf2b0eb96f3cbed491e692547;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialUnusedimages.php b/includes/specials/SpecialUnusedimages.php index 88600e5ab0..cdab557ee3 100644 --- a/includes/specials/SpecialUnusedimages.php +++ b/includes/specials/SpecialUnusedimages.php @@ -27,69 +27,57 @@ * @ingroup SpecialPage */ class UnusedimagesPage extends ImageQueryPage { + function __construct( $name = 'Unusedimages' ) { + parent::__construct( $name ); + } - function isExpensive() { return true; } - - function getName() { - return 'Unusedimages'; + function isExpensive() { + return true; } function sortDescending() { return false; } - function isSyndicated() { return false; } - function getSQL() { - global $wgCountCategorizedImagesAsUsed, $wgDBtype; - $dbr = wfGetDB( DB_SLAVE ); + function isSyndicated() { + return false; + } - switch ($wgDBtype) { - case 'mysql': - $epoch = 'UNIX_TIMESTAMP(img_timestamp)'; - break; - case 'oracle': - $epoch = '((trunc(img_timestamp) - to_date(\'19700101\',\'YYYYMMDD\')) * 86400)'; - break; - case 'sqlite': - $epoch = 'img_timestamp'; - break; - case 'mssql': - $epoch = 'DATEDIFF(s,CONVERT(datetime,\'1/1/1970\'),img_timestamp)'; - break; - default: - $epoch = 'EXTRACT(epoch FROM img_timestamp)'; - } + function getQueryInfo() { + global $wgCountCategorizedImagesAsUsed; + $retval = array ( + 'tables' => array ( 'image', 'imagelinks' ), + 'fields' => array ( 'namespace' => NS_FILE, + 'title' => 'img_name', + 'value' => 'img_timestamp', + 'img_user', 'img_user_text', + 'img_description' ), + 'conds' => array ( 'il_to IS NULL' ), + 'join_conds' => array ( 'imagelinks' => array ( + 'LEFT JOIN', 'il_to = img_name' ) ) + ); if ( $wgCountCategorizedImagesAsUsed ) { - list( $page, $image, $imagelinks, $categorylinks ) = $dbr->tableNamesN( 'page', 'image', 'imagelinks', 'categorylinks' ); - - return "SELECT 'Unusedimages' as type, 6 as namespace, img_name as title, $epoch as value, - img_user, img_user_text, img_description - FROM ((($page AS I LEFT JOIN $categorylinks AS L ON I.page_id = L.cl_from) - LEFT JOIN $imagelinks AS P ON I.page_title = P.il_to) - INNER JOIN $image AS G ON I.page_title = G.img_name) - WHERE I.page_namespace = ".NS_FILE." AND L.cl_from IS NULL AND P.il_to IS NULL"; - } else { - list( $image, $imagelinks ) = $dbr->tableNamesN( 'image','imagelinks' ); - - return "SELECT 'Unusedimages' as type, 6 as namespace, img_name as title, $epoch as value, - img_user, img_user_text, img_description - FROM $image LEFT JOIN $imagelinks ON img_name=il_to WHERE il_to IS NULL "; + // Order is significant + $retval['tables'] = array ( 'image', 'page', 'categorylinks', + 'imagelinks' ); + $retval['conds']['page_namespace'] = NS_FILE; + $retval['conds'][] = 'cl_from IS NULL'; + $retval['conds'][] = 'img_name = page_title'; + $retval['join_conds']['categorylinks'] = array ( + 'LEFT JOIN', 'cl_from = page_id' ); + $retval['join_conds']['imagelinks'] = array ( + 'LEFT JOIN', 'il_to = page_title' ); } + return $retval; } - function getPageHeader() { - return wfMsgExt( 'unusedimagestext', array( 'parse' ) ); + function usesTimestamps() { + return true; } -} - -/** - * Entry point - */ -function wfSpecialUnusedimages() { - list( $limit, $offset ) = wfCheckLimits(); - $uip = new UnusedimagesPage(); + function getPageHeader() { + return $this->msg( 'unusedimagestext' )->parseAsBlock(); + } - return $uip->doQuery( $offset, $limit ); }