├── src
├── Entity
│ └── .gitignore
├── .htaccess
├── Controller
│ ├── .gitignore
│ └── DefaultController.php
├── Repository
│ └── .gitignore
├── TrackerChartFactory.php
├── DependencyInjection
│ └── PhpbbArea51Extension.php
├── Kernel.php
├── TrackerChart.php
└── code-changes
│ ├── create_diffs.php
│ └── includes
│ ├── engine.php
│ └── renderer.php
├── app
├── .htaccess
├── AppCache.php
├── autoload.php
├── console
├── phpunit.xml.dist
├── AppKernel.php
└── check.php
├── bin
├── .htaccess
├── update_phpbb.sh
├── update_symfony.sh
├── console
├── build_code_changes_32.sh
├── build_code_changes_31.sh
├── build_code_changes_30.sh
├── build_code_changes_33.sh
├── build_docs.sh
├── php-parse
├── yaml-lint
├── sql-formatter
├── var-dump-server
├── patch-type-declarations
└── phpunit
├── web
├── writable
│ └── stats
│ │ └── .keep
├── phpBB
├── robots.txt
├── favicon.ico
├── code-changes
│ ├── index.php
│ └── css
│ │ ├── images
│ │ ├── file.png
│ │ ├── bg_tabs1.gif
│ │ ├── bg_tabs2.gif
│ │ ├── file-A.png
│ │ ├── file-D.png
│ │ ├── file-M.png
│ │ ├── folder-A.png
│ │ ├── folder-D.png
│ │ ├── folder-M.png
│ │ ├── folder.png
│ │ ├── toggle.gif
│ │ ├── arrow_right.gif
│ │ ├── corners_left.gif
│ │ ├── corners_right.gif
│ │ ├── folder-closed.png
│ │ ├── innerbox_bg.gif
│ │ ├── folder-closed-A.png
│ │ ├── folder-closed-D.png
│ │ ├── folder-closed-M.png
│ │ ├── treeview-default.gif
│ │ └── treeview-default-line.gif
│ │ ├── code_changes.js
│ │ └── code_changes.css
├── images
│ ├── ci.png
│ ├── api.png
│ ├── area51.png
│ ├── github.png
│ ├── sflogo.png
│ ├── symfony.png
│ ├── tracker.png
│ ├── back_phpbb.png
│ ├── header_bg.png
│ ├── mainlogo.png
│ ├── code-changes.png
│ ├── coding-style.png
│ ├── phpbb_small.png
│ └── development-discussion.png
├── analytics.js
├── .htaccess
├── index.php
├── area51.css
├── header.css
└── subSilver.css
├── config
├── packages
│ ├── test
│ │ ├── twig.yaml
│ │ ├── framework.yaml
│ │ └── monolog.yaml
│ ├── prod
│ │ ├── routing.yaml
│ │ ├── deprecations.yaml
│ │ ├── monolog.yaml
│ │ └── doctrine.yaml
│ ├── sensio_framework_extra.yaml
│ ├── twig.yaml
│ ├── framework.yaml
│ ├── dev
│ │ └── monolog.yaml
│ ├── cache.yaml
│ └── doctrine.yaml
├── routes.yaml
├── routes
│ └── annotations.yaml
├── config_test.yml
├── routing_dev.yml
├── config_prod.yml
├── bundles.php
├── config_dev.yml
├── bootstrap.php
├── security.yml
├── services.yaml
└── config.yml
├── composer.phar
├── .env.test
├── templates
├── default
│ ├── contributors.html.twig
│ ├── contributorsList.html.twig
│ ├── stats.html.twig
│ ├── downloads.html.twig
│ ├── index.html.twig
│ └── projects.html.twig
├── base.html.twig
└── layout.html.twig
├── tests
├── bootstrap.php
└── Controller
│ └── DefaultControllerTest.php
├── .editorconfig
├── .gitignore
├── README.md
├── data
└── code-changes
│ └── template
│ ├── overall_footer.html
│ ├── 32_nav.html
│ ├── 31_nav.html
│ ├── 30_nav.html
│ ├── 33_nav.html
│ └── overall_header.html
├── phpunit.xml.dist
├── .github
└── workflows
│ └── tests.yml
├── composer.json
├── .env
└── symfony.lock
/src/Entity/.gitignore:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/.htaccess:
--------------------------------------------------------------------------------
1 | deny from all
--------------------------------------------------------------------------------
/bin/.htaccess:
--------------------------------------------------------------------------------
1 | deny from all
--------------------------------------------------------------------------------
/src/.htaccess:
--------------------------------------------------------------------------------
1 | deny from all
--------------------------------------------------------------------------------
/src/Controller/.gitignore:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/Repository/.gitignore:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/web/writable/stats/.keep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/web/phpBB:
--------------------------------------------------------------------------------
1 | ../area51-phpbb3/phpBB
--------------------------------------------------------------------------------
/web/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: msnbot
2 | Crawl-delay: 600
3 |
--------------------------------------------------------------------------------
/config/packages/test/twig.yaml:
--------------------------------------------------------------------------------
1 | twig:
2 | strict_variables: true
3 |
--------------------------------------------------------------------------------
/composer.phar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phpbb/area51/HEAD/composer.phar
--------------------------------------------------------------------------------
/web/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phpbb/area51/HEAD/web/favicon.ico
--------------------------------------------------------------------------------
/web/code-changes/index.php:
--------------------------------------------------------------------------------
1 |
5 | {{ render(controller('PhpbbArea51Bundle:Default:contributorsList', {}), { 'strategy': 'esi'}) }}
6 |
7 | {% endblock %}
8 |
--------------------------------------------------------------------------------
/config/config_test.yml:
--------------------------------------------------------------------------------
1 | imports:
2 | - { resource: config_dev.yml }
3 |
4 | framework:
5 | test: ~
6 | session:
7 | storage_id: session.storage.mock_file
8 |
9 | web_profiler:
10 | toolbar: false
11 | intercept_redirects: false
12 |
--------------------------------------------------------------------------------
/config/routing_dev.yml:
--------------------------------------------------------------------------------
1 | _assetic:
2 | resource: .
3 | type: assetic
4 |
5 | _wdt:
6 | resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml"
7 | prefix: /_wdt
8 |
9 | _profiler:
10 | resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml"
11 | prefix: /_profiler
12 |
13 | _main:
14 | resource: routing.yml
15 |
--------------------------------------------------------------------------------
/config/packages/prod/deprecations.yaml:
--------------------------------------------------------------------------------
1 | # As of Symfony 5.1, deprecations are logged in the dedicated "deprecation" channel when it exists
2 | #monolog:
3 | # channels: [deprecation]
4 | # handlers:
5 | # deprecation:
6 | # type: stream
7 | # channels: [deprecation]
8 | # path: "%kernel.logs_dir%/%kernel.environment%.deprecations.log"
9 |
--------------------------------------------------------------------------------
/tests/bootstrap.php:
--------------------------------------------------------------------------------
1 | bootEnv(dirname(__DIR__).'/.env');
11 | }
12 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # This file is for standardising the coding style between different editors
2 | # http://editorconfig.org/
3 |
4 | root = true
5 |
6 | [*]
7 | end_of_line = lf
8 | indent_size = 4
9 | indent_style = spaces
10 | insert_final_newline = true
11 | trim_trailing_whitespace = true
12 |
13 | [*.md]
14 | trim_trailing_whitespace = false
15 |
16 | [*.yml]
17 | indent_size = 4
18 | indent_style = space
19 |
--------------------------------------------------------------------------------
/config/packages/test/monolog.yaml:
--------------------------------------------------------------------------------
1 | monolog:
2 | handlers:
3 | main:
4 | type: fingers_crossed
5 | action_level: error
6 | handler: nested
7 | excluded_http_codes: [404, 405]
8 | channels: ["!event"]
9 | nested:
10 | type: stream
11 | path: "%kernel.logs_dir%/%kernel.environment%.log"
12 | level: debug
13 |
--------------------------------------------------------------------------------
/templates/base.html.twig:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {% block title %}Welcome!{% endblock %}
6 | {% block stylesheets %}{% endblock %}
7 |
8 |
9 |
10 | {% block body %}{% endblock %}
11 | {% block javascripts %}{% endblock %}
12 |
13 |
14 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | app/cache
2 | data/code-changes/*
3 | web/code-changes/*
4 | web/writable/stats/*
5 | web/phpBB/*
6 | vendor
7 | *.cache
8 | *.log
9 | bin/doctrine*
10 | app/config/parameters.yml
11 | /.idea/
12 |
13 | ###> phpunit/phpunit ###
14 | /phpunit.xml
15 | .phpunit.result.cache
16 | ###< phpunit/phpunit ###
17 |
18 | ###> symfony/framework-bundle ###
19 | /.env.local
20 | /.env.local.php
21 | /.env.*.local
22 | /public/bundles/
23 | /var/
24 | /vendor/
25 | ###< symfony/framework-bundle ###
26 |
--------------------------------------------------------------------------------
/config/packages/framework.yaml:
--------------------------------------------------------------------------------
1 | framework:
2 | secret: '%env(APP_SECRET)%'
3 | #csrf_protection: true
4 | #http_method_override: true
5 |
6 | # Enables session support. Note that the session will ONLY be started if you read or write from it.
7 | # Remove or comment this section to explicitly disable session support.
8 | session:
9 | handler_id: null
10 | cookie_samesite: lax
11 |
12 | #esi: true
13 | #fragments: true
14 | php_errors:
15 | log: true
16 |
--------------------------------------------------------------------------------
/config/config_prod.yml:
--------------------------------------------------------------------------------
1 | imports:
2 | - { resource: config.yml }
3 |
4 | #doctrine:
5 | # metadata_cache_driver: apc
6 | # result_cache_driver: apc
7 | # query_cache_driver: apc
8 |
9 | monolog:
10 | handlers:
11 | main:
12 | type: fingers_crossed
13 | action_level: error
14 | handler: nested
15 | nested:
16 | type: stream
17 | path: %kernel.logs_dir%/%kernel.environment%.log
18 | level: debug
19 |
--------------------------------------------------------------------------------
/web/analytics.js:
--------------------------------------------------------------------------------
1 |
2 | var _gaq = _gaq || [];
3 | _gaq.push(['_setAccount', 'UA-93879-3']);
4 | _gaq.push(['_setDomainName', 'area51.phpbb.com']);
5 | _gaq.push(['_trackPageview']);
6 |
7 | (function() {
8 | var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
9 | ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
10 | var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
11 | })();
12 |
--------------------------------------------------------------------------------
/src/TrackerChartFactory.php:
--------------------------------------------------------------------------------
1 | root_path = $root_path;
16 | }
17 |
18 | public function create()
19 | {
20 | return new TrackerChart($this->root_path);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/config/bundles.php:
--------------------------------------------------------------------------------
1 | ['all' => true],
5 | Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
6 | Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
7 | Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
8 | Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true],
9 | Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
10 | ];
11 |
--------------------------------------------------------------------------------
/app/autoload.php:
--------------------------------------------------------------------------------
1 | add('', __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs');
12 | }
13 |
14 | AnnotationRegistry::registerLoader(array($loader, 'loadClass'));
15 |
16 | return $loader;
--------------------------------------------------------------------------------
/bin/update_phpbb.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | exec {BASH_XTRACEFD}>&1
3 | set -e
4 |
5 | REMOTE=origin
6 | BRANCH=master
7 |
8 | HERE=$(dirname "$0")
9 | cd "$HERE/../area51-phpbb3/phpBB"
10 | git fetch "$REMOTE"
11 |
12 | if [ `git rev-parse "$BRANCH"` != `git rev-parse "$REMOTE/$BRANCH"` ]
13 | then
14 | git reset --hard "$REMOTE/$BRANCH"
15 | ../composer.phar install --no-dev --optimize-autoloader
16 | bin/phpbbcli.php --safe-mode db:migrate
17 | bin/phpbbcli.php --safe-mode cache:purge
18 | rm cache/production/*.{lock,php}
19 | rm -r cache/production/twig/
20 | fi
21 |
--------------------------------------------------------------------------------
/bin/update_symfony.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | exec {BASH_XTRACEFD}>&1
3 | set -e
4 |
5 | REMOTE=origin
6 | BRANCH=master
7 |
8 | HERE=$(dirname "$0")
9 | cd "$HERE/../"
10 | git fetch "$REMOTE"
11 |
12 | if [ `git rev-parse "$BRANCH"` != `git rev-parse "$REMOTE/$BRANCH"` ]
13 | then
14 | git reset --hard "$REMOTE/$BRANCH"
15 | ./composer.phar install --no-dev --optimize-autoloader
16 | bin/console cache:clear --env=prod
17 | bin/console cache:warmup --env=prod
18 | chmod -R 777 var/cache/*
19 | rm -rf var/cache/prod/
20 | mkdir var/cache/prod/
21 | chmod -R 777 var/cache/*
22 | fi
23 |
--------------------------------------------------------------------------------
/config/config_dev.yml:
--------------------------------------------------------------------------------
1 | imports:
2 | - { resource: config.yml }
3 |
4 | framework:
5 | router: { resource: "%kernel.root_dir%/config/routing_dev.yml" }
6 | profiler: { only_exceptions: false }
7 |
8 | web_profiler:
9 | toolbar: true
10 | intercept_redirects: false
11 |
12 | monolog:
13 | handlers:
14 | main:
15 | type: stream
16 | path: "%kernel.logs_dir%/%kernel.environment%.log"
17 | level: debug
18 | firephp:
19 | type: firephp
20 | level: info
21 |
22 | assetic:
23 | use_controller: true
24 |
--------------------------------------------------------------------------------
/config/packages/prod/monolog.yaml:
--------------------------------------------------------------------------------
1 | monolog:
2 | handlers:
3 | main:
4 | type: fingers_crossed
5 | action_level: error
6 | handler: nested
7 | excluded_http_codes: [404, 405]
8 | buffer_size: 50 # How many messages should be saved? Prevent memory leaks
9 | nested:
10 | type: stream
11 | path: "%kernel.logs_dir%/%kernel.environment%.log"
12 | level: debug
13 | console:
14 | type: console
15 | process_psr_3_messages: false
16 | channels: ["!event", "!doctrine"]
17 |
--------------------------------------------------------------------------------
/web/.htaccess:
--------------------------------------------------------------------------------
1 |
2 | RewriteEngine On
3 |
4 | RewriteRule "^docs/code/develop-ascraeus/(.*)" "/docs/code/3.1.x/$1" [R=301,L]
5 | RewriteRule "^docs/code/develop-olympus/(.*)" "/docs/code/3.0.x/$1" [R=301,L]
6 |
7 | RewriteRule "^docs/dev/31x/(.*)" "/docs/dev/3.3.x/$1" [R=301,L]
8 | RewriteRule "^docs/dev/32x/(.*)" "/docs/dev/3.2.x/$1" [R=301,L]
9 |
10 | RewriteRule "^(.*/)?\.git/" - [F,L]
11 |
12 | RewriteRule ^/?$ index.php [QSA,L]
13 |
14 | RewriteCond %{REQUEST_FILENAME} !-f
15 | RewriteCond %{REQUEST_FILENAME} !-d
16 | RewriteRule ^(.*)$ index.php [QSA,L]
17 |
18 |
--------------------------------------------------------------------------------
/config/packages/prod/doctrine.yaml:
--------------------------------------------------------------------------------
1 | doctrine:
2 | orm:
3 | auto_generate_proxy_classes: false
4 | metadata_cache_driver:
5 | type: pool
6 | pool: doctrine.system_cache_pool
7 | query_cache_driver:
8 | type: pool
9 | pool: doctrine.system_cache_pool
10 | result_cache_driver:
11 | type: pool
12 | pool: doctrine.result_cache_pool
13 |
14 | framework:
15 | cache:
16 | pools:
17 | doctrine.result_cache_pool:
18 | adapter: cache.app
19 | doctrine.system_cache_pool:
20 | adapter: cache.system
21 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Area51
2 |
3 | [Area51](http://area51.phpbb.com) is the development site of phpBB.
4 |
5 | ## About
6 |
7 | This repository contains the source code for the area51 website. It is
8 | based on Symfony2.
9 |
10 | ## Installation
11 |
12 | First of all, install the dependencies.
13 |
14 | $ php composer.phar install
15 |
16 | Copy `app/config/parameters.dist.yml` to `app/config/parameters.yml`
17 | and adjust the configuration.
18 |
19 | Point your webroot to `/web`.
20 |
21 | ## Tests
22 |
23 | To run tests, after installing dependencies, run the following from
24 | the project root
25 |
26 | $ bin/phpunit -c app/
27 |
28 | ## License
29 |
30 | See `LICENSE`.
31 |
--------------------------------------------------------------------------------
/config/packages/dev/monolog.yaml:
--------------------------------------------------------------------------------
1 | monolog:
2 | handlers:
3 | main:
4 | type: stream
5 | path: "%kernel.logs_dir%/%kernel.environment%.log"
6 | level: debug
7 | channels: ["!event"]
8 | # uncomment to get logging in your browser
9 | # you may have to allow bigger header sizes in your Web server configuration
10 | #firephp:
11 | # type: firephp
12 | # level: info
13 | #chromephp:
14 | # type: chromephp
15 | # level: info
16 | console:
17 | type: console
18 | process_psr_3_messages: false
19 | channels: ["!event", "!doctrine", "!console"]
20 |
--------------------------------------------------------------------------------
/src/DependencyInjection/PhpbbArea51Extension.php:
--------------------------------------------------------------------------------
1 | load('services.yml');
16 | }
17 |
18 | public function getAlias()
19 | {
20 | return 'phpbb_area51';
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/config/packages/cache.yaml:
--------------------------------------------------------------------------------
1 | framework:
2 | cache:
3 | # Unique name of your app: used to compute stable namespaces for cache keys.
4 | #prefix_seed: your_vendor_name/app_name
5 |
6 | # The "app" cache stores to the filesystem by default.
7 | # The data in this cache should persist between deploys.
8 | # Other options include:
9 |
10 | # Redis
11 | #app: cache.adapter.redis
12 | #default_redis_provider: redis://localhost
13 |
14 | # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues)
15 | #app: cache.adapter.apcu
16 |
17 | # Namespaced pools use the above "app" backend by default
18 | #pools:
19 | #my.dedicated.cache: null
20 |
--------------------------------------------------------------------------------
/web/index.php:
--------------------------------------------------------------------------------
1 | handle($request);
26 | $response->send();
27 | $kernel->terminate($request, $response);
28 |
--------------------------------------------------------------------------------
/data/code-changes/template/overall_footer.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
19 |
20 |
23 |
24 |