diff --git a/.gitattributes b/.gitattributes
index 2185b3a..1fc3ae6 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,11 +1,8 @@
.gitattributes export-ignore
.gitignore export-ignore
-.travis.yml export-ignore
+.github export-ignore
README.md export-ignore
-composer.lock export-ignore
-composer.phar export-ignore
-phpunit.xml.dist export-ignore
-/travis export-ignore
+docs export-ignore
# Auto detect text files and perform LF normalization
* text=auto
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..b027823
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,33 @@
+name: CI
+
+on:
+ push:
+ branches: [master]
+ pull_request:
+ branches: [master]
+
+permissions:
+ contents: read
+
+jobs:
+ lint:
+ name: PHP ${{ matrix.php }} lint
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ php: ['7.1', '7.4', '8.0', '8.1']
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Set up PHP ${{ matrix.php }}
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php }}
+ coverage: none
+ tools: composer:v2
+
+ - name: PHP syntax check
+ run: find . -name '*.php' -not -path './.git/*' -print0 | xargs -0 -n1 php -l
+
+ - name: Validate composer.json
+ run: composer validate --no-check-all --no-check-publish
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100755
index d549ff5..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,61 +0,0 @@
-# Opt into fully virtualized infrastructure
-sudo: required
-
-language: php
-
-matrix:
- include:
- - php: 5.3.3
- env: DB=mysqli
- - php: 5.3
- env: DB=mysqli # MyISAM
- - php: 5.4
- env: DB=mysqli
- - php: 5.4
- env: DB=mysql
- - php: 5.4
- env: DB=mariadb
- - php: 5.4
- env: DB=postgres
- - php: 5.4
- env: DB=sqlite3
- - php: 5.5
- env: DB=mysqli
- - php: 5.6
- env: DB=mysqli
- - php: hhvm
- env: DB=mysqli
- allow_failures:
- - php: hhvm
- fast_finish: true
-
-env:
- global:
- - EXTNAME="phpbbmodders/holiday_flare" # CHANGE name of the extension HERE
- - SNIFF="1" # Should we run code sniffer on your code?
- - IMAGE_ICC="1" # Should we run icc profile sniffer on your images?
- - EPV="1" # Should we run EPV (Extension Pre Validator) on your code?
- - PHPBB_BRANCH="3.1.x"
-
-branches:
- only:
- - master
- - develop
- - /^develop-.*$/
- - /^release-.*$/
-
-install:
- - travis_retry composer install --dev --no-interaction --prefer-source
- - travis/prepare-phpbb.sh $EXTNAME $PHPBB_BRANCH
- - cd ../../phpBB3
- - travis/prepare-extension.sh $EXTNAME $PHPBB_BRANCH
- - travis/setup-phpbb.sh $DB $TRAVIS_PHP_VERSION
-
-before_script:
- - travis/setup-database.sh $DB $TRAVIS_PHP_VERSION
-
-script:
- - sh -c "if [ '$SNIFF' != '0' ]; then travis/ext-sniff.sh $DB $TRAVIS_PHP_VERSION $EXTNAME; fi"
- - sh -c "if [ '$IMAGE_ICC' != '0' ]; then travis/check-image-icc-profiles.sh $DB $TRAVIS_PHP_VERSION; fi"
- - phpBB/vendor/bin/phpunit --configuration phpBB/ext/$EXTNAME/travis/phpunit-$DB-travis.xml --bootstrap ./tests/bootstrap.php
- - sh -c "if [ '$EPV' != '0' ] && [ '$TRAVIS_PHP_VERSION' = '5.3.3' ] && [ '$DB' = 'mysqli' ]; then phpBB/ext/$EXTNAME/vendor/bin/EPV.php run --dir='phpBB/ext/$EXTNAME/'; fi"
\ No newline at end of file
diff --git a/README.md b/README.md
index c8cc27e..63278c8 100755
--- a/README.md
+++ b/README.md
@@ -1,13 +1,20 @@
Holiday Flare
=================
-Allows an admin to display various seasonal holiday flares to their default style. The images/javascript can be enable/disabled in the ACP via `EXTENSIONS --> Holiday Flare --> Settings`.
+Allows an admin to display seasonal holiday flares on their forum. The Christmas and Valentine's Day themes can be enabled or disabled independently in the ACP via `EXTENSIONS --> Holiday Flare --> Settings`.
-[](https://travis-ci.org/phpbbmodders/holiday_flare)
+[](https://github.com/phpbbmodders/holiday_flare/actions/workflows/ci.yml)
## Features
-* enable/disable the various holiday flares
- * Add Santa Hat to the corner of the header
+* Enable/disable each holiday flare independently
+ * Christmas: a Santa hat in the header corner, plus a smaller matching icon on the forum list (prosilver, Green-Style-Slim, pro_ubuntu_lucid, proflat)
+ * Valentine's Day: a matching header-corner icon (prosilver, Green-Style-Slim, pro_ubuntu_lucid, proflat)
+See [docs/screenshots](docs/screenshots) for both themes rendered.
+
+## Requirements
+
+* PHP 7.1 or later
+* phpBB 3.1.0-RC3 up to (but not including) 3.3
## Installation
@@ -24,8 +31,25 @@ Go to ACP -> `CUSTOMISE -> Manage extensions ->` enable Holiday Flare
### 3. configure
-Go to ACP -> `EXTENSIONS --> Holiday Flare --> Settings ->` set *Enable Santa Hat* to *Yes*
+Go to ACP -> `EXTENSIONS --> Holiday Flare --> Settings ->` set *Christmas Theme* and/or *Valentine Theme* to *Yes*
## Support
-https://www.phpbb.com/community/viewtopic.php?f=456&t=2277491
+- **Bug reports**: [Open an issue](https://github.com/phpbbmodders/holiday_flare/issues).
+- **Everything else** (questions, feature requests, general discussion): [the phpBB.com support thread](https://www.phpbb.com/community/viewtopic.php?f=456&t=2277491).
+
+## Contributing
+
+Contributions are welcome! Pull requests are welcome for bug fixes or discussed features.
+
+## Acknowledgments
+
+- The Valentine's Day theme was originally contributed by [TWEagle](https://github.com/TWEagle).
+- The jQuery-based header banner was originally contributed by Rich McGirr ([rmcgirr83](https://github.com/rmcgirr83)), extended to additional styles by Raphaël M. ([Galixte](https://github.com/Galixte)).
+- Modernization (current PHP/phpBB version support, a real bug fix confirmed against a live phpBB install, reconciling several long-open pull requests, and this documentation) assisted by [Claude](https://www.anthropic.com/claude).
+
+## License
+
+This extension is licensed under the **GNU General Public License v2.0**.
+
+See [license.txt](license.txt) for more information.
diff --git a/acp/holidayflare_info.php b/acp/holidayflare_info.php
index cdaecba..4e8e583 100644
--- a/acp/holidayflare_info.php
+++ b/acp/holidayflare_info.php
@@ -1,10 +1,12 @@
lang('FORM_INVALID') . adm_back_link($this->u_action), E_USER_WARNING);
}
- $enable_hohohatcorner = $this->request->variable('enable_hohohatcorner', 0);
- $this->config->set('enable_hohohatcorner', $enable_hohohatcorner);
+ $this->config->set('enable_xmas', $this->request->variable('enable_xmas', 0));
+ $this->config->set('enable_valentine', $this->request->variable('enable_valentine', 0));
trigger_error($this->user->lang('CONFIG_UPDATED') . adm_back_link($this->u_action));
}
$this->template->assign_vars(array(
- 'S_ENABLE_HOHOHATCORNER' => isset($this->config['enable_hohohatcorner']) ? $this->config['enable_hohohatcorner'] : '',
+ 'S_ENABLE_XMAS' => isset($this->config['enable_xmas']) ? $this->config['enable_xmas'] : '',
+ 'S_ENABLE_VALENTINE' => isset($this->config['enable_valentine']) ? $this->config['enable_valentine'] : '',
'U_ACTION' => $this->u_action,
));
diff --git a/adm/style/acp_holidayflare.html b/adm/style/acp_holidayflare.html
index d936226..b57628b 100644
--- a/adm/style/acp_holidayflare.html
+++ b/adm/style/acp_holidayflare.html
@@ -9,10 +9,17 @@
{L_ACP_HOLIDAYFLARE}
diff --git a/composer.json b/composer.json
index 8d8f0da..10698e7 100755
--- a/composer.json
+++ b/composer.json
@@ -2,29 +2,48 @@
"name": "phpbbmodders/holidayflare",
"type": "phpbb-extension",
"description": "Allows an admin to display various seasonal holiday flares to their default style. The images/javascript can be enable/disabled in the ACP via EXTENSIONS --> Holiday Flare --> Settings",
- "version": "2.0.0",
- "license": "GPL-2.0",
+ "homepage": "https://www.phpbbmodders.com/",
+ "version": "2.1.0",
+ "keywords": [
+ "phpbb",
+ "extension",
+ "holidays",
+ "seasonal",
+ "decorations"
+ ],
+ "license": "GPL-2.0-only",
"authors": [
+ {
+ "name": "phpBB Modders",
+ "email": "board@phpbbmodders.com",
+ "homepage": "https://www.phpbbmodders.com/",
+ "role": "Extension Developer"
+ },
{
"name": "William (bonelifer)",
- "role": "Developer"
+ "email": "bonelifer@phpbbmodders.net",
+ "homepage": "https://www.phpbbmodders.com/",
+ "role": "Past Developer"
},
{
- "name": "Matt (VSE)",
- "role": "Extension conversion"
+ "name": "Matt Friedman (MattF)",
+ "homepage": "https://www.phpbb.com/customise/db/author/mattf",
+ "role": "Past Developer"
}
],
"require": {
- "php": ">=5.3.3",
- "composer/installers": "~1.0"
+ "php": ">=7.1",
+ "composer/installers": "^1.0"
},
- "require-dev": {
- "phpbb/epv": "dev-master"
- },
"extra": {
"display-name": "Holiday Flare",
"soft-require": {
- "phpbb/phpbb": ">=3.1.0-RC3,<3.2.*@dev"
+ "phpbb/phpbb": ">=3.1.0-RC3,<3.3.*@dev"
+ },
+ "version-check": {
+ "host": "www.phpbb.com",
+ "directory": "/customise/db/extension/holiday_flare",
+ "filename": "version_check"
}
}
}
diff --git a/composer.lock b/composer.lock
deleted file mode 100644
index 05298d6..0000000
--- a/composer.lock
+++ /dev/null
@@ -1,497 +0,0 @@
-{
- "_readme": [
- "This file locks the dependencies of your project to a known state",
- "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
- "This file is @generated automatically"
- ],
- "hash": "87c05ab5fd18094bfcda9df633cac05b",
- "packages": [
- {
- "name": "composer/installers",
- "version": "v1.0.18",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/installers.git",
- "reference": "74fb0a7a1a23696d9c8cc2fba5903f6711cdd067"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/installers/zipball/74fb0a7a1a23696d9c8cc2fba5903f6711cdd067",
- "reference": "74fb0a7a1a23696d9c8cc2fba5903f6711cdd067",
- "shasum": ""
- },
- "replace": {
- "roundcube/plugin-installer": "*",
- "shama/baton": "*"
- },
- "require-dev": {
- "composer/composer": "1.0.*@dev",
- "phpunit/phpunit": "4.1.*"
- },
- "type": "composer-installer",
- "extra": {
- "class": "Composer\\Installers\\Installer",
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Composer\\Installers\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Kyle Robinson Young",
- "email": "kyle@dontkry.com",
- "homepage": "https://github.com/shama"
- }
- ],
- "description": "A multi-framework Composer library installer",
- "homepage": "http://composer.github.com/installers/",
- "keywords": [
- "Craft",
- "Dolibarr",
- "Hurad",
- "MODX Evo",
- "OXID",
- "WolfCMS",
- "agl",
- "annotatecms",
- "bitrix",
- "cakephp",
- "chef",
- "codeigniter",
- "concrete5",
- "croogo",
- "drupal",
- "elgg",
- "fuelphp",
- "installer",
- "joomla",
- "kohana",
- "laravel",
- "lithium",
- "magento",
- "mako",
- "mediawiki",
- "modulework",
- "moodle",
- "phpbb",
- "piwik",
- "ppi",
- "puppet",
- "roundcube",
- "shopware",
- "silverstripe",
- "symfony",
- "typo3",
- "wordpress",
- "zend",
- "zikula"
- ],
- "time": "2014-08-18 20:00:12"
- }
- ],
- "packages-dev": [
- {
- "name": "gitonomy/gitlib",
- "version": "v0.1.7",
- "source": {
- "type": "git",
- "url": "https://github.com/gitonomy/gitlib.git",
- "reference": "7a46107cfb8552b312101e0d5906e95d54d7ddc6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/gitonomy/gitlib/zipball/7a46107cfb8552b312101e0d5906e95d54d7ddc6",
- "reference": "7a46107cfb8552b312101e0d5906e95d54d7ddc6",
- "shasum": ""
- },
- "require": {
- "symfony/process": "~2.4"
- },
- "require-dev": {
- "psr/log": "~1"
- },
- "suggest": {
- "psr/log": "Add some log"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "Gitonomy\\Git": [
- "src/",
- "tests/"
- ]
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Alexandre Salomé",
- "email": "alexandre.salome@gmail.com",
- "homepage": "http://alexandre-salome.fr"
- },
- {
- "name": "Julien DIDIER",
- "email": "genzo.wm@gmail.com",
- "homepage": "http://www.jdidier.net"
- }
- ],
- "description": "Library for accessing git",
- "homepage": "http://gitonomy.com",
- "time": "2014-07-13 19:02:31"
- },
- {
- "name": "nikic/php-parser",
- "version": "v0.9.5",
- "source": {
- "type": "git",
- "url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "ef70767475434bdb3615b43c327e2cae17ef12eb"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ef70767475434bdb3615b43c327e2cae17ef12eb",
- "reference": "ef70767475434bdb3615b43c327e2cae17ef12eb",
- "shasum": ""
- },
- "require": {
- "ext-tokenizer": "*",
- "php": ">=5.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "0.9-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "PHPParser": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Nikita Popov"
- }
- ],
- "description": "A PHP parser written in PHP",
- "keywords": [
- "parser",
- "php"
- ],
- "time": "2014-07-23 18:24:17"
- },
- {
- "name": "phpbb/epv",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/phpbb/epv.git",
- "reference": "b921b294b594a3200aca6f1b52534101945dcfee"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpbb/epv/zipball/b921b294b594a3200aca6f1b52534101945dcfee",
- "reference": "b921b294b594a3200aca6f1b52534101945dcfee",
- "shasum": ""
- },
- "require": {
- "gitonomy/gitlib": "0.1.*@dev",
- "nikic/php-parser": "0.9.*@dev",
- "php": ">=5.3.3",
- "sensiolabs/ansi-to-html": "~1.1",
- "symfony/console": ">=2.3.0",
- "symfony/finder": ">=2.3.0",
- "symfony/yaml": ">=2.3.0|>=2.4.0|>=2.5.0"
- },
- "require-dev": {
- "phpunit/phpunit": "4.0.*"
- },
- "bin": [
- "src/EPV.php"
- ],
- "type": "library",
- "autoload": {
- "psr-4": {
- "Phpbb\\Epv\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "GPL-2.0"
- ],
- "authors": [
- {
- "name": "Paul Sohier",
- "email": "paul@phpbb.com"
- }
- ],
- "description": "A extension validator for phpBB extensions. Extensions are required to pass the validator when submitted to the extension database.",
- "time": "2014-10-24 06:19:10"
- },
- {
- "name": "sensiolabs/ansi-to-html",
- "version": "v1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sensiolabs/ansi-to-html.git",
- "reference": "92d2ef7ffba5418be060d8ba8adaf7223d741f93"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sensiolabs/ansi-to-html/zipball/92d2ef7ffba5418be060d8ba8adaf7223d741f93",
- "reference": "92d2ef7ffba5418be060d8ba8adaf7223d741f93",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "suggest": {
- "twig/twig": "Provides nice templating features"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "SensioLabs\\AnsiConverter": "."
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "A library to convert a text with ANSI codes to HTML",
- "time": "2014-08-01 14:02:39"
- },
- {
- "name": "symfony/console",
- "version": "v2.5.7",
- "target-dir": "Symfony/Component/Console",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/Console.git",
- "reference": "61b13c27c9258e97009249d4ef193c964bf346b7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/Console/zipball/61b13c27c9258e97009249d4ef193c964bf346b7",
- "reference": "61b13c27c9258e97009249d4ef193c964bf346b7",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/event-dispatcher": "~2.1"
- },
- "suggest": {
- "psr/log": "For using the console logger",
- "symfony/event-dispatcher": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.5-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\Console\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony Console Component",
- "homepage": "http://symfony.com",
- "time": "2014-11-20 13:22:25"
- },
- {
- "name": "symfony/finder",
- "version": "v2.5.7",
- "target-dir": "Symfony/Component/Finder",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/Finder.git",
- "reference": "743aabbf4958663ef626e10ae3a6c7b17a0fa3bd"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/Finder/zipball/743aabbf4958663ef626e10ae3a6c7b17a0fa3bd",
- "reference": "743aabbf4958663ef626e10ae3a6c7b17a0fa3bd",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.5-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\Finder\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony Finder Component",
- "homepage": "http://symfony.com",
- "time": "2014-10-26 07:41:27"
- },
- {
- "name": "symfony/process",
- "version": "v2.5.7",
- "target-dir": "Symfony/Component/Process",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/Process.git",
- "reference": "ffe6e27a57e31262c3204a0955076c27c54c8e7e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/Process/zipball/ffe6e27a57e31262c3204a0955076c27c54c8e7e",
- "reference": "ffe6e27a57e31262c3204a0955076c27c54c8e7e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.5-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\Process\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony Process Component",
- "homepage": "http://symfony.com",
- "time": "2014-11-03 19:48:45"
- },
- {
- "name": "symfony/yaml",
- "version": "v2.5.7",
- "target-dir": "Symfony/Component/Yaml",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/Yaml.git",
- "reference": "900d38bc8f74a50343ce65dd1c1e9819658ee56b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/Yaml/zipball/900d38bc8f74a50343ce65dd1c1e9819658ee56b",
- "reference": "900d38bc8f74a50343ce65dd1c1e9819658ee56b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.5-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\Yaml\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony Yaml Component",
- "homepage": "http://symfony.com",
- "time": "2014-11-20 13:22:25"
- }
- ],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": {
- "phpbb/epv": 20
- },
- "prefer-stable": false,
- "platform": {
- "php": ">=5.3.3"
- },
- "platform-dev": []
-}
diff --git a/composer.phar b/composer.phar
deleted file mode 100755
index a77fba5..0000000
Binary files a/composer.phar and /dev/null differ
diff --git a/config/services.yml b/config/services.yml
index fbfbf9f..6d153dc 100644
--- a/config/services.yml
+++ b/config/services.yml
@@ -2,7 +2,10 @@ services:
phpbbmodders.holidayflare.listener:
class: phpbbmodders\holidayflare\event\listener
arguments:
- - @config
- - @template
+ - '@config'
+ - '@template'
tags:
- { name: event.listener }
+
+ _defaults:
+ public: true
diff --git a/docs/screenshots/README.md b/docs/screenshots/README.md
new file mode 100644
index 0000000..8c0403f
--- /dev/null
+++ b/docs/screenshots/README.md
@@ -0,0 +1,8 @@
+# Screenshots
+
+Real screenshots of a phpBB board index with each theme enabled (not mockups). Captured with headless Chromium against a real phpBB 3.3.18-dev + SQLite install running this extension, one theme enabled at a time.
+
+- [`christmas-theme.png`](christmas-theme.png) -- `enable_xmas` on: the Santa hat in the header corner, plus the smaller matching icon on the forum list.
+- [`valentine-theme.png`](valentine-theme.png) -- `enable_valentine` on: the heart icon in the header corner.
+
+Excluded from the packaged extension archive (see `.gitattributes`'s `docs export-ignore`); these are for the repo/PR only, not shipped to end users.
diff --git a/docs/screenshots/christmas-theme.png b/docs/screenshots/christmas-theme.png
new file mode 100644
index 0000000..7e07d6f
Binary files /dev/null and b/docs/screenshots/christmas-theme.png differ
diff --git a/docs/screenshots/valentine-theme.png b/docs/screenshots/valentine-theme.png
new file mode 100644
index 0000000..b3a22ee
Binary files /dev/null and b/docs/screenshots/valentine-theme.png differ
diff --git a/event/listener.php b/event/listener.php
index 038e464..bb14998 100644
--- a/event/listener.php
+++ b/event/listener.php
@@ -1,10 +1,12 @@
template->assign_var('S_ENABLE_HOHOHATCORNER', $this->config['enable_hohohatcorner']);
+ $this->template->assign_vars(array(
+ 'S_ENABLE_XMAS' => $this->config['enable_xmas'],
+ 'S_ENABLE_VALENTINE' => $this->config['enable_valentine'],
+ ));
}
}
diff --git a/language/ar/holidayflare_acp.php b/language/ar/holidayflare_acp.php
index 3c1848c..617f9ca 100644
--- a/language/ar/holidayflare_acp.php
+++ b/language/ar/holidayflare_acp.php
@@ -1,13 +1,16 @@
'أيام المناسبات',
'ACP_HOLIDAYFLARE_EXPLAIN' => 'المُناسبات السعيدة !',
- 'ENABLE_HOHOHATCORNER' => 'تفعيل',
- 'ENABLE_HOHOHATCORNER_EXPLAIN' => 'اختيارك "نعم" يعني إظهار صورة المناسبة في ترويسة المنتدى , اختيارك "لا" يعني إخفائها.',
+ 'ENABLE_XMAS' => 'تفعيل زينة الكريسماس',
+ 'ENABLE_XMAS_EXPLAIN' => 'اختيارك "نعم" يعني إظهار زينة الكريسماس في ترويسة المنتدى، واختيارك "لا" يعني إخفاءها.',
+
+ 'ENABLE_VALENTINE' => 'تفعيل زينة عيد الحب',
+ 'ENABLE_VALENTINE_EXPLAIN' => 'اختيارك "نعم" يعني إظهار زينة عيد الحب في ترويسة المنتدى، واختيارك "لا" يعني إخفاءها.',
));
diff --git a/language/ar/info_acp_holidayflare.php b/language/ar/info_acp_holidayflare.php
index 8c7ab6a..4cf5923 100644
--- a/language/ar/info_acp_holidayflare.php
+++ b/language/ar/info_acp_holidayflare.php
@@ -1,13 +1,16 @@
'Holiday Flare',
'ACP_HOLIDAYFLARE_EXPLAIN' => 'Happy Holidays!',
- 'ENABLE_HOHOHATCORNER' => 'Enable Santa Hat',
- 'ENABLE_HOHOHATCORNER_EXPLAIN' => 'Select "Yes" to show our Santa Hat and "No" to hide it.',
+ 'ENABLE_XMAS' => 'Christmas Theme',
+ 'ENABLE_XMAS_EXPLAIN' => 'Select "Yes" to show the Christmas Theme and "No" to hide it.',
+
+ 'ENABLE_VALENTINE' => 'Valentine Theme',
+ 'ENABLE_VALENTINE_EXPLAIN' => 'Select "Yes" to show the Valentine Theme and "No" to hide it.',
));
diff --git a/language/en/info_acp_holidayflare.php b/language/en/info_acp_holidayflare.php
index 9c2fe05..1d80b4f 100644
--- a/language/en/info_acp_holidayflare.php
+++ b/language/en/info_acp_holidayflare.php
@@ -1,10 +1,12 @@
-* @license GNU General Public License, version 2 (GPL-2.0)
-*
-*/
+ *
+ * Holiday Flare extension for the phpBB Forum Software package
+ *
+ * @copyright (c) 2015 VSE (Matt Friedman) & bonelifer (William Jacoby) bonelifer@phpbbmodders.net
+ * @copyright (c) 2026, phpBB Modders, https://www.phpbbmodders.com/
+ * @license GNU General Public License, version 2 (GPL-2.0)
+ *
+ * French translation by Galixte (http://www.galixte.com)
+ *
+ */
/**
* DO NOT CHANGE
@@ -35,13 +37,16 @@
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
//
// Some characters you may want to copy&paste:
-// ’ « » “ ” …
+// ’ « » “ ” …
//
$lang = array_merge($lang, array(
'ACP_HOLIDAYFLARE' => 'Illuminations de Noël',
- 'ACP_HOLIDAYFLARE_EXPLAIN' => 'Joyeuses fêtes !',
+ 'ACP_HOLIDAYFLARE_EXPLAIN' => 'Joyeuses fêtes !',
+
+ 'ENABLE_XMAS' => 'Activer le thème de Noël',
+ 'ENABLE_XMAS_EXPLAIN' => 'Sélectionner « Oui » pour afficher le thème de Noël et « Non » pour le masquer.',
- 'ENABLE_HOHOHATCORNER' => 'Activer le chapeau du Père Noël',
- 'ENABLE_HOHOHATCORNER_EXPLAIN' => 'Sélectionner « Oui » pour afficher le chapeau du Père Noël et « Non » pour le masquer.',
+ 'ENABLE_VALENTINE' => 'Activer le thème de la Saint-Valentin',
+ 'ENABLE_VALENTINE_EXPLAIN' => 'Sélectionner « Oui » pour afficher le thème de la Saint-Valentin et « Non » pour le masquer.',
));
diff --git a/language/fr/info_acp_holidayflare.php b/language/fr/info_acp_holidayflare.php
index 0f7106f..871c749 100644
--- a/language/fr/info_acp_holidayflare.php
+++ b/language/fr/info_acp_holidayflare.php
@@ -1,13 +1,15 @@
-* @license GNU General Public License, version 2 (GPL-2.0)
-*
-*/
+ *
+ * Holiday Flare extension for the phpBB Forum Software package
+ *
+ * @copyright (c) 2015 VSE (Matt Friedman) & bonelifer (William Jacoby) bonelifer@phpbbmodders.net
+ * @copyright (c) 2026, phpBB Modders, https://www.phpbbmodders.com/
+ * @license GNU General Public License, version 2 (GPL-2.0)
+ *
+ * French translation by Galixte (http://www.galixte.com)
+ *
+ */
/**
* DO NOT CHANGE
diff --git a/language/nl/holidayflare_acp.php b/language/nl/holidayflare_acp.php
new file mode 100644
index 0000000..6178e73
--- /dev/null
+++ b/language/nl/holidayflare_acp.php
@@ -0,0 +1,52 @@
+ 'Holiday Flare',
+ 'ACP_HOLIDAYFLARE_EXPLAIN' => 'Fijne Feesten!',
+
+ 'ENABLE_XMAS' => 'Kerstthema',
+ 'ENABLE_XMAS_EXPLAIN' => 'Selecteer "Ja" om het Kerstthema te zien en "Nee" om het te verbergen.',
+
+ 'ENABLE_VALENTINE' => 'Valentijnthema',
+ 'ENABLE_VALENTINE_EXPLAIN' => 'Selecteer "Ja" om het Valentijnthema te zien en "Nee" om het te verbergen.',
+));
diff --git a/language/nl/info_acp_holidayflare.php b/language/nl/info_acp_holidayflare.php
new file mode 100644
index 0000000..fe53064
--- /dev/null
+++ b/language/nl/info_acp_holidayflare.php
@@ -0,0 +1,46 @@
+ 'Holiday Flare',
+ 'ACP_HOLIDAYFLARE_SETTINGS' => 'Instellingen',
+));
diff --git a/license.txt b/license.txt
index d159169..b8b347f 100644
--- a/license.txt
+++ b/license.txt
@@ -279,61 +279,3 @@ POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- , 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
diff --git a/migrations/config_data.php b/migrations/config_data.php
index 99f3b98..e12812c 100644
--- a/migrations/config_data.php
+++ b/migrations/config_data.php
@@ -1,11 +1,13 @@
config['enable_hohohatcorner']))
+ {
+ $this->config->set('enable_xmas', (int) $this->config['enable_hohohatcorner']);
+ $this->config->delete('enable_hohohatcorner');
+ }
+ else if (!isset($this->config['enable_xmas']))
+ {
+ $this->config->set('enable_xmas', 0);
+ }
+ }
+
+ public function revert_data()
+ {
+ return array(
+ array('config.remove', array('enable_valentine')),
+ array('custom', array(array($this, 'restore_hohohatcorner_config'))),
+ );
+ }
+
+ public function restore_hohohatcorner_config()
+ {
+ if (isset($this->config['enable_xmas']))
+ {
+ $this->config->set('enable_hohohatcorner', (int) $this->config['enable_xmas']);
+ $this->config->delete('enable_xmas');
+ }
+ }
+}
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
deleted file mode 100755
index 289449d..0000000
--- a/phpunit.xml.dist
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
- ./tests
- ./tests/functional
-
-
- ./tests/functional/
-
-
-
-
-
- ./tests/
-
-
- ./
-
- ./language/
- ./migrations/
- ./tests/
-
-
-
-
diff --git a/styles/Green-Style-Slim/template/event/overall_footer_after.html b/styles/Green-Style-Slim/template/event/overall_footer_after.html
new file mode 100644
index 0000000..a449f3d
--- /dev/null
+++ b/styles/Green-Style-Slim/template/event/overall_footer_after.html
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/styles/Green-Style-Slim/template/event/overall_header_head_append.html b/styles/Green-Style-Slim/template/event/overall_header_head_append.html
new file mode 100644
index 0000000..325514c
--- /dev/null
+++ b/styles/Green-Style-Slim/template/event/overall_header_head_append.html
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/styles/pro_ubuntu_lucid/template/event/overall_footer_after.html b/styles/pro_ubuntu_lucid/template/event/overall_footer_after.html
new file mode 100644
index 0000000..a449f3d
--- /dev/null
+++ b/styles/pro_ubuntu_lucid/template/event/overall_footer_after.html
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/styles/pro_ubuntu_lucid/template/event/overall_header_head_append.html b/styles/pro_ubuntu_lucid/template/event/overall_header_head_append.html
new file mode 100644
index 0000000..325514c
--- /dev/null
+++ b/styles/pro_ubuntu_lucid/template/event/overall_header_head_append.html
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/styles/proflat/template/event/overall_footer_after.html b/styles/proflat/template/event/overall_footer_after.html
new file mode 100644
index 0000000..a449f3d
--- /dev/null
+++ b/styles/proflat/template/event/overall_footer_after.html
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/styles/proflat/template/event/overall_header_head_append.html b/styles/proflat/template/event/overall_header_head_append.html
new file mode 100644
index 0000000..325514c
--- /dev/null
+++ b/styles/proflat/template/event/overall_header_head_append.html
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/styles/prosilver/template/event/overall_footer_after.html b/styles/prosilver/template/event/overall_footer_after.html
new file mode 100644
index 0000000..a449f3d
--- /dev/null
+++ b/styles/prosilver/template/event/overall_footer_after.html
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/styles/prosilver/template/event/overall_header_head_append.html b/styles/prosilver/template/event/overall_header_head_append.html
index 85ce3ac..325514c 100644
--- a/styles/prosilver/template/event/overall_header_head_append.html
+++ b/styles/prosilver/template/event/overall_header_head_append.html
@@ -1,3 +1,5 @@
-
-
+
+
+
+
diff --git a/styles/prosilver/template/event/overall_header_page_body_before.html b/styles/prosilver/template/event/overall_header_page_body_before.html
deleted file mode 100644
index dc8e68d..0000000
--- a/styles/prosilver/template/event/overall_header_page_body_before.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/styles/prosilver/theme/hohohatcorner.css b/styles/prosilver/theme/hohohatcorner.css
deleted file mode 100644
index 08eb51f..0000000
--- a/styles/prosilver/theme/hohohatcorner.css
+++ /dev/null
@@ -1,31 +0,0 @@
-#banner-xmas {
- float: left;
- height: 96px;
- width: 96px;
- margin: -159px 0 0 -36px;
- position: relative;
- z-index: 900;
- background: transparent url(images/hohohat.png) 0 0 no-repeat; /* http://artdesigner.lv/licensing | http://artdesigner.lv/silent-night-10-christmas-icons */
- display: block;
-}
-
-.rtl #banner-xmas {
- float: right;
- height: 96px;
- width: 96px;
- margin: -159px -36px 0 0;
- position: relative;
- z-index: 900;
- background: transparent url(images/hohohat.png) 0 0 no-repeat;
- display: block;
- -moz-transform: scaleX(-1);
- -o-transform: scaleX(-1);
- -webkit-transform: scaleX(-1);
- transform: scaleX(-1);
- filter: FlipH;
- -ms-filter: "FlipH";
-}
-
-@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) {
- #banner-xmas { display: none }
-}
diff --git a/styles/prosilver/theme/images/valentine.png b/styles/prosilver/theme/images/valentine.png
new file mode 100644
index 0000000..1ffc806
Binary files /dev/null and b/styles/prosilver/theme/images/valentine.png differ
diff --git a/styles/prosilver/theme/images/hohohat.png b/styles/prosilver/theme/images/xmas.png
similarity index 100%
rename from styles/prosilver/theme/images/hohohat.png
rename to styles/prosilver/theme/images/xmas.png
diff --git a/styles/prosilver/theme/images/xmas_mini.png b/styles/prosilver/theme/images/xmas_mini.png
new file mode 100644
index 0000000..fd0e2d5
Binary files /dev/null and b/styles/prosilver/theme/images/xmas_mini.png differ
diff --git a/styles/prosilver/theme/js/valentine.js b/styles/prosilver/theme/js/valentine.js
new file mode 100644
index 0000000..9e856e7
--- /dev/null
+++ b/styles/prosilver/theme/js/valentine.js
@@ -0,0 +1,3 @@
+(function($) {
+ $('').insertBefore('#page-header');
+})(jQuery);
diff --git a/styles/prosilver/theme/js/xmas.js b/styles/prosilver/theme/js/xmas.js
new file mode 100644
index 0000000..4a8d3f1
--- /dev/null
+++ b/styles/prosilver/theme/js/xmas.js
@@ -0,0 +1,4 @@
+(function($) {
+ $('').insertBefore('#page-header');
+ $('').insertBefore('.forabg, .forumbg');
+})(jQuery);
diff --git a/styles/prosilver/theme/valentine.css b/styles/prosilver/theme/valentine.css
new file mode 100644
index 0000000..b992a9d
--- /dev/null
+++ b/styles/prosilver/theme/valentine.css
@@ -0,0 +1,26 @@
+#banner-valentine {
+ float: left;
+ height: 96px;
+ width: 96px;
+ margin-top: -8px;
+ margin-left: -35px;
+ position: absolute;
+ z-index: 1;
+ background: transparent url(images/valentine.png) 0 0 no-repeat;
+ display: block;
+}
+
+.rtl #banner-valentine {
+ float: right;
+ margin-right: -35px;
+ -moz-transform: scaleX(-1);
+ -o-transform: scaleX(-1);
+ -webkit-transform: scaleX(-1);
+ transform: scaleX(-1);
+ filter: FlipH;
+ -ms-filter: "FlipH";
+}
+
+@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) {
+ #banner-valentine { display: none; }
+}
diff --git a/styles/prosilver/theme/xmas.css b/styles/prosilver/theme/xmas.css
new file mode 100644
index 0000000..cf41632
--- /dev/null
+++ b/styles/prosilver/theme/xmas.css
@@ -0,0 +1,48 @@
+#banner-xmas {
+ float: left;
+ height: 96px;
+ width: 96px;
+ margin-top: -8px;
+ margin-left: -35px;
+ position: absolute;
+ z-index: 1;
+ background: transparent url(images/xmas.png) 0 0 no-repeat; /* http://artdesigner.lv/licensing | http://artdesigner.lv/silent-night-10-christmas-icons */
+ display: block;
+}
+
+.rtl #banner-xmas {
+ float: right;
+ margin-right: -35px;
+ -moz-transform: scaleX(-1);
+ -o-transform: scaleX(-1);
+ -webkit-transform: scaleX(-1);
+ transform: scaleX(-1);
+ filter: FlipH;
+ -ms-filter: "FlipH";
+}
+
+.forum-xmas {
+ background: transparent url("images/xmas_mini.png") 0 0 no-repeat;
+ position: absolute;
+ height: 50px;
+ width: 50px;
+ z-index: 1;
+ display: block;
+ margin-left: -18px;
+ margin-top: -4px;
+}
+
+.rtl .forum-xmas {
+ float: right;
+ margin-right: -18px;
+ -moz-transform: scaleX(-1);
+ -o-transform: scaleX(-1);
+ -webkit-transform: scaleX(-1);
+ transform: scaleX(-1);
+ filter: FlipH;
+ -ms-filter: "FlipH";
+}
+
+@media only screen and (max-width: 700px), only screen and (max-device-width: 700px) {
+ #banner-xmas, .forum-xmas { display: none; }
+}
diff --git a/travis/prepare-phpbb.sh b/travis/prepare-phpbb.sh
deleted file mode 100755
index 01770ad..0000000
--- a/travis/prepare-phpbb.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash
-#
-# This file is part of the phpBB Forum Software package.
-#
-# @copyright (c) phpBB Limited
-# @license GNU General Public License, version 2 (GPL-2.0)
-#
-# For full copyright and license information, please see
-# the docs/CREDITS.txt file.
-#
-set -e
-set -x
-
-EXTNAME=$1
-BRANCH=$2
-EXTPATH_TEMP=$3
-
-# Copy extension to a temp folder
-mkdir ../../tmp
-cp -R . ../../tmp
-cd ../../
-
-# Clone phpBB
-git clone --depth=1 "git://github.com/phpbb/phpbb.git" "phpBB3" --branch=$BRANCH