Merge "MessageCache: Remove $wgMsgCacheExpiry configuration var"
[lhc/web/wiklou.git] / includes / block / CompositeBlock.php
index 8efd7de..45a6301 100644 (file)
@@ -43,7 +43,7 @@ class CompositeBlock extends AbstractBlock {
         * @param array $options Parameters of the block:
         *     originalBlocks Block[] Blocks that this block is composed from
         */
-       function __construct( $options = [] ) {
+       public function __construct( array $options = [] ) {
                parent::__construct( $options );
 
                $defaults = [
@@ -120,12 +120,40 @@ class CompositeBlock extends AbstractBlock {
                return $maxExpiry;
        }
 
+       /**
+        * Get the IDs for the original blocks, ignoring any that are null
+        *
+        * @return int[]
+        */
+       protected function getIds() {
+               $ids = [];
+               foreach ( $this->originalBlocks as $block ) {
+                       $id = $block->getId();
+                       if ( $id !== null ) {
+                               $ids[] = $id;
+                       }
+               }
+               return $ids;
+       }
+
        /**
         * @inheritDoc
         */
        public function getPermissionsError( IContextSource $context ) {
                $params = $this->getBlockErrorParams( $context );
 
+               $ids = implode( ', ', array_map( function ( $id ) {
+                       return '#' . $id;
+               }, $this->getIds() ) );
+               if ( $ids === '' ) {
+                       $idsMsg = $context->msg( 'blockedtext-composite-no-ids' )->plain();
+               } else {
+                       $idsMsg = $context->msg( 'blockedtext-composite-ids', [ $ids ] )->plain();
+               }
+
+               // TODO: Clean up error messages params so we don't have to do this (T227174)
+               $params[ 4 ] = $idsMsg;
+
                $msg = 'blockedtext-composite';
 
                array_unshift( $params, $msg );