+ var $mImages, $mShowBytes, $mShowFilename;
+ var $mCaption = false;
+ var $mSkin = false;
+ var $mRevisionId = 0;
+
+ /**
+ * Hide blacklisted images?
+ */
+ var $mHideBadImages;
+
+ /**
+ * Registered parser object for output callbacks
+ */
+ var $mParser;
+
+ /**
+ * Contextual title, used when images are being screened
+ * against the bad image list
+ */
+ private $contextTitle = false;
+
+ private $mPerRow = 4; // How many images wide should the gallery be?
+ private $mWidths = 120, $mHeights = 120; // How wide/tall each thumbnail should be
+
+ private $mAttribs = array();
+
+ /**
+ * Create a new image gallery object.
+ */
+ function __construct( ) {
+ $this->mImages = array();
+ $this->mShowBytes = true;
+ $this->mShowFilename = true;
+ $this->mParser = false;
+ $this->mHideBadImages = false;
+ }
+
+ /**
+ * Register a parser object
+ */
+ function setParser( $parser ) {
+ $this->mParser = $parser;
+ }
+
+ /**
+ * Set bad image flag
+ */
+ function setHideBadImages( $flag = true ) {
+ $this->mHideBadImages = $flag;
+ }
+
+ /**
+ * Set the caption (as plain text)
+ *
+ * @param $caption Caption
+ */
+ function setCaption( $caption ) {
+ $this->mCaption = htmlspecialchars( $caption );
+ }
+
+ /**
+ * Set the caption (as HTML)
+ *
+ * @param $caption Caption
+ */
+ public function setCaptionHtml( $caption ) {
+ $this->mCaption = $caption;
+ }
+
+ /**
+ * Set how many images will be displayed per row.
+ *
+ * @param int $num > 0; invalid numbers will be rejected
+ */
+ public function setPerRow( $num ) {
+ if ($num > 0) {
+ $this->mPerRow = (int)$num;
+ }
+ }
+
+ /**
+ * Set how wide each image will be, in pixels.
+ *
+ * @param int $num > 0; invalid numbers will be ignored
+ */
+ public function setWidths( $num ) {
+ if ($num > 0) {
+ $this->mWidths = (int)$num;
+ }
+ }
+
+ /**
+ * Set how high each image will be, in pixels.
+ *
+ * @param int $num > 0; invalid numbers will be ignored
+ */
+ public function setHeights( $num ) {
+ if ($num > 0) {
+ $this->mHeights = (int)$num;
+ }
+ }
+
+ /**
+ * Instruct the class to use a specific skin for rendering
+ *
+ * @param $skin Skin object
+ */
+ function useSkin( $skin ) {
+ $this->mSkin = $skin;
+ }
+
+ /**
+ * Return the skin that should be used
+ *
+ * @return Skin object
+ */
+ function getSkin() {
+ if( !$this->mSkin ) {
+ global $wgUser;
+ $skin = $wgUser->getSkin();
+ } else {
+ $skin = $this->mSkin;
+ }
+ return $skin;
+ }
+
+ /**
+ * Add an image to the gallery.
+ *
+ * @param $title Title object of the image that is added to the gallery
+ * @param $html String: additional HTML text to be shown. The name and size of the image are always shown.
+ */
+ function add( $title, $html='' ) {
+ if ( $title instanceof File ) {
+ // Old calling convention
+ $title = $title->getTitle();
+ }
+ $this->mImages[] = array( $title, $html );
+ wfDebug( "ImageGallery::add " . $title->getText() . "\n" );
+ }
+
+ /**
+ * Add an image at the beginning of the gallery.
+ *
+ * @param $title Title object of the image that is added to the gallery
+ * @param $html String: Additional HTML text to be shown. The name and size of the image are always shown.
+ */
+ function insert( $title, $html='' ) {
+ if ( $title instanceof File ) {
+ // Old calling convention
+ $title = $title->getTitle();
+ }
+ array_unshift( $this->mImages, array( &$title, $html ) );
+ }
+