[Scummvm-git-logs] scummvm-sites web-planet -> acd0300211f4fdc17a4bea4060f435d99979e1ea
sev-
noreply at scummvm.org
Sun Jun 1 19:17:42 UTC 2025
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm-sites' repo located at https://api.github.com/repos/scummvm/scummvm-sites .
Summary:
f950f723fb PLANET: Removing old moonmoon-based planet
acd0300211 PLANET: Added configuration for pluto-based planet
Commit: f950f723fb7a59b3643eafc9e407e457597c229f
https://github.com/scummvm/scummvm-sites/commit/f950f723fb7a59b3643eafc9e407e457597c229f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-06-01T21:15:06+02:00
Commit Message:
PLANET: Removing old moonmoon-based planet
Changed paths:
R CONTRIBUTING.md
R LICENSE
R README.md
R VERSION
R admin/administration.php
R admin/changepassword.php
R admin/default.css
R admin/img/button-add.png
R admin/img/button-delete.png
R admin/img/button-h.png
R admin/img/button.png
R admin/img/h3.png
R admin/img/moonmoon.png
R admin/img/nav-admin.png
R admin/img/nav-feed.png
R admin/inc/auth.inc.php
R admin/index.php
R admin/login.php
R admin/logout.php
R admin/purgecache.php
R admin/subscriptions.php
R admin/template.php
R android-chrome-192x192.png
R android-chrome-512x512.png
R app/app.php
R app/classes/CSRF.php
R app/classes/Cache.php
R app/classes/Opml.php
R app/classes/OpmlManager.php
R app/classes/Planet.php
R app/classes/PlanetConfig.php
R app/classes/PlanetError.php
R app/classes/PlanetFeed.php
R app/classes/PlanetItem.php
R app/classes/Simplel10n.php
R app/helpers.php
R app/l10n/de.lang
R app/l10n/en.lang
R app/l10n/es.lang
R app/l10n/extract.php
R app/l10n/fr.lang
R apple-touch-icon.png
R atom.php
R bin/build_release.sh
R browserconfig.xml
R cache/.dir
R composer.json
R composer.lock
R cron.php
R custom/config.yml
R custom/img/feed.png
R custom/img/moonmoon.png
R custom/img/moonmoon at 128w.png
R custom/img/moonmoon at 256w.png
R custom/img/opml.png
R custom/img/scummvm_logo.png
R custom/people.opml
R custom/style/dark.css
R custom/style/default.css
R custom/style/green.css
R custom/style/light.css
R custom/style/mobile.css
R custom/style/scummvm.css
R custom/views/archive/footer.tpl.php
R custom/views/archive/head.tpl.php
R custom/views/archive/index.tpl.php
R custom/views/archive/sidebar.tpl.php
R custom/views/archive/top.tpl.php
R custom/views/default/footer.tpl.php
R custom/views/default/head.tpl.php
R custom/views/default/index.tpl.php
R custom/views/default/sidebar.tpl.php
R custom/views/default/top.tpl.php
R custom/views/install.tpl.php
R favicon-16x16.png
R favicon-32x32.png
R favicon.ico
R index.php
R mstile-150x150.png
R phpunit.xml
R postload.php
R rss.php
R safari-pinned-tab.svg
R site.webmanifest
R tests/GuzzleHarness.php
R tests/HelpersTest.php
R tests/InstallTest.php
R tests/PlanetConfigTest.php
R tests/PlanetErrorTest.php
R tests/PlanetTest.php
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
deleted file mode 100644
index 1402a0c..0000000
--- a/CONTRIBUTING.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# Contributing
-
-First of all, thanks a lot for considering to contribute!
-
-## Found a bug?
-
-* Nice catch!
-* Make sure that this bug is not already present in our
- [Issues](https://github.com/moonmoon/moonmoon/issues) tracker.
-* If none matches, please
- [create a new ticket](https://github.com/moonmoon/moonmoon/issues/new).
-
-## Fixing a bug with a patch you made?
-
-* Awesome!
-* If the bug you are fixing is present in our
- [Issues tracker](https://github.com/moonmoon/moonmoon/issues), don't
- forget to mention the related issue.
-* Make sure to stick to the [PSR-2](http://www.php-fig.org/psr/psr-2/)
- coding style.
-
-## Adding a new feature?
-
-* Marvelous!
-* If it's not too late, please create a new ticket in the
- [Issues tracker](https://github.com/moonmoon/moonmoon/issues/new) before
- developing something. Maybe it does not really fit into moonmoon and
- we may not merge it :(
-* Make sure to stick to the [PSR-2](http://www.php-fig.org/psr/psr-2/)
- coding style.
-
-## Seeking support ?
-
-* Is your problem already listed in our [FAQ](https://github.com/moonmoon/moonmoon/wiki/Faq)?
-* If not, please create a ticket in our
- [Issues tracker](https://github.com/moonmoon/moonmoon/issues/new).
-* You more details you give (version, steps to reproduceâ¦), the better we'll help you :-)
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index bb0603a..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,33 +0,0 @@
-Copyright (c) 2006, Maurice Svay
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-* Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-* Neither the name of Maurice Svay nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-Contributors:
-François Granger
-Pep, http://www.callmepep.org/
-Pascal Chevrel
-Javier Guerra
diff --git a/README.md b/README.md
deleted file mode 100644
index 0fcfda0..0000000
--- a/README.md
+++ /dev/null
@@ -1,66 +0,0 @@
-<p align="center">
- <img src="https://github.com/moonmoon/moonmoon/raw/master/custom/img/moonmoon%40128w.png">
-</p>
-
-
-moonmoon [](https://travis-ci.org/moonmoon/moonmoon)
-========
-
-Moonmoon is a web based aggregator similar to planetplanet.
-It can be used to blend articles from different blogs with same interests into a single page.
-
-Moonmoon is simple: it only aggregates feeds and spits them out in one single page.
-It does not archive articles, it does not do comments nor votes.
-
-Requirements
-------------
-You will need a web hosting with at least PHP 5.6 (PHP 7 is also supported).
-
-If you are installing moonmoon on a Linux private server (VPS, dedicated host),
-please note that you will need to install the package `php-xml`.
-
-Installing
-----------
-
-Installation steps (shared hosting or virtual / dedicated server) can be found
-[in the wiki](https://github.com/moonmoon/moonmoon/wiki/How-to-install).
-
-Docker images are also available in [moonmoon/docker-images](https://github.com/moonmoon/docker-images).
-Theses images are probably not production-ready but should work for manual testing.
-
-Contributing
-------------
-
-You want to contribute to moonmoon? Perfect! [We wrote some guidelines to help you
-craft the best Issue / Pull Request possible](https://github.com/moonmoon/moonmoon/blob/master/CONTRIBUTING.md),
-don't hesitate to take a look at it :-)
-
-License
--------
-
-Moonmoon is free software and is released under the [BSD license](https://github.com/moonmoon/moonmoon/blob/master/LICENSE).
-Third-party code differently licensed is included in this project, in which case mention is always made of
-the applicable license.
-
-[The logo](https://github.com/moonmoon/moonmoon/raw/master/custom/img/moonmoon.png) was designed by [@rakujira](https://twitter.com/rakujira).
-
-Configuration options
----------------------
-After installation, configuration is kept in a YAML formatted `custom/config.yml`:
-
-```%yaml
-url: http://planet.example.net # your planet base URL
-name: My Planet # your planet front page name
-locale: en # front page locale
-items: 10 # how many items to show
-refresh: 240 # feeds cache timeout (in seconds)
-cache: 10 # front page cache timeout (in seconds)
-cachedir: ./cache # where is cache stored
-postmaxlength: 0 # deprecated
-shuffle: 0 # deprecated
-nohtml: 0 # deprecated
-categories: # only list posts that have one
- # of these (tag or category)
-debug: false # debug mode (dangerous in production!)
-checkcerts: true # check feeds certificates
-```
diff --git a/VERSION b/VERSION
deleted file mode 100644
index 2a8cbc6..0000000
--- a/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-9.0.0-rc
diff --git a/admin/administration.php b/admin/administration.php
deleted file mode 100644
index 26f6710..0000000
--- a/admin/administration.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-require_once __DIR__ . '/../app/app.php';
-require_once __DIR__ . '/inc/auth.inc.php';
-
-
-$opml = OpmlManager::load(__DIR__ . '/../custom/people.opml');
-$opml_people = $opml->getPeople();
-$page_id = 'admin-admin';
-$header_extra = <<<"HTML"
- <script>
- window.onload = function(){
- var formManage = document.getElementById('frmPurge');
- formManage.onsubmit = function(){
- return confirm("{$l10n->getString('Are you sure you want to purge the cache?')}");
- }
- }
- </script>
-
-HTML;
-
-$page_content = <<<"FRAGMENT"
-
- <div class="widget">
- <h3>{$l10n->getString('Clear cache')}</h3>
- <form action="purgecache.php" method="post" id="frmPurge">
- <input type="hidden" value="{$csrf->generate('frmPurge')}" name="_csrf">
- <p><label>{$l10n->getString('Clear cache:')}</label><input type="submit" class="submit delete" name="purge" id="purge" value="{$l10n->getString('Clear')}" /></p>
- <p class="help">{$l10n->getString('Clearing the cache will make moonmoon reload all feeds.')}</p>
- </form>
- </div>
-
- <div class="widget">
- <h3>{$l10n->getString('Change administrator password')}</h3>
- <form action="changepassword.php" method="post" id="frmPassword">
- <input type="hidden" value="{$csrf->generate('frmPassword')}" name="_csrf">
- <p><label for="password">{$l10n->getString('New password:')}</label> <input type="password" class="text" value="" name="password" id="password" size="20" /> <input type="submit" class="submit delete" name="changepwd" id="changepwd" value="{$l10n->getString('Change password')}" /></p>
- </form>
- </div>
-
-FRAGMENT;
-
-$footer_extra = '';
-$admin_access = 1;
-require_once __DIR__ . '/template.php';
diff --git a/admin/changepassword.php b/admin/changepassword.php
deleted file mode 100644
index 3b4500e..0000000
--- a/admin/changepassword.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-
-require_once __DIR__.'/../app/app.php';
-require_once __DIR__.'/inc/auth.inc.php';
-
-if ($csrf->verify($_POST['_csrf'], 'frmPassword') && isset($_POST['password']) && ('' != $_POST['password'])) {
- $out = '<?php $login="admin"; $password="'.md5($_POST['password']).'"; ?>';
- file_put_contents(__DIR__.'/inc/pwd.inc.php', $out);
- die("Password changed. <a href='administration.php'>Login</a>");
-} else {
- die('Can not change password');
-}
diff --git a/admin/default.css b/admin/default.css
deleted file mode 100644
index fcba3f4..0000000
--- a/admin/default.css
+++ /dev/null
@@ -1,232 +0,0 @@
-html, body{
- margin: 0;
- padding: 0;
-}
-html{
- font-size: 62.5%;
-}
-body{
- background: #FFF;
- color: #333;
- font: 1.1em/1.6em "Lucida Grande", Tahoma, Arial, sans-serif;
-}
-
-
-fieldset{
- border: 0;
- padding: 0;
- margin: 1em 0;
-}
-input.text{
- border: 1px solid #BBB;
- padding: 4px;
-}
-input.submit{
- font-size: 1em;
- padding: 4px;
- background: #D1D1D1 url(img/button.png) repeat-x left center;
- border: 1px solid #FFF;
- border-bottom: 1px solid #CECECE;
- border-right: 1px solid #CECECE;
- cursor: pointer;
-}
-input.submit:hover{
- background: #D1D1D1 url(img/button-h.png) repeat-x left center;
- color: #000;
- border: 1px solid #FFF;
- border-bottom: 1px solid #C6C6C6;
- border-right: 1px solid #C6C6C6;
-}
-input.delete{
- margin-left: 1em;
-}
-input.delete:hover{
- background: #ffabab url(img/button-delete.png) repeat-x left center;
- color: #C00;
- border: 1px solid #FCC;
- border-bottom: 1px solid #F99;
- border-right: 1px solid #F99;
-}
-input.add{
- font-weight: bold;
-}
-input.add:hover{
- background: #65a5e1 url(img/button-add.png) repeat-x left center;
- color: #20466a;
- border: 1px solid #a6c7e5;
- border-bottom: 1px solid #4f90cd;
- border-right: 1px solid #4f90cd;
-}
-p.help{
- font-size: 0.8em;
- color: #999;
- margin: 0;
-}
-
-#page{
-}
-
- header{
- background: #E0E0E0 url(img/moonmoon.png) no-repeat right center;
- border-top: 5px solid #D0D0D0;
- margin: 0;
- padding: 10px;
- }
- header h1{
- display: none;
- margin: 0 0 0 20px;
- padding: 0;
- height: 14px;
- width: 95px;
- background: transparent url(img/moonmoon.png) no-repeat left center;
-
- overflow: hidden;
- text-indent: -1000em;
- }
- header p{
- margin: 0 0 0 20px;
- padding: 0;
- }
- header p a{
- color: #AAA;
- }
- header p a:hover{
- color: #111;
- }
-
-
- nav ul{
- margin: 20px 30px;
- padding: 0;
- list-style: none;
- }
- nav ul:after {content: "."; display: block; height: 0; clear: both; visibility: hidden; }
- nav ul {display: inline-table;}
- /* Hides from IE-mac \*/
- * html nav ul {height: 1%;}
- nav ul {display: block;}
- /* End hide from IE-mac */
-
- nav ul li{
- display: block;
- float: left;
- }
- nav ul li a{
- display: block;
- border: 1px solid #DDD;
- padding: 8px 8px 8px 36px;
- margin-right: 8px;
- text-decoration: none;
- color: #666;
- background-repeat: no-repeat;
- background-position: 6px center;
- }
- nav ul li a:hover,
- body#admin-feed #nav-feed a,
- body#admin-admin #nav-admin a {
- background-color: #f0f2f6;
- border-color: #AAA;
- color: #111;
- }
- #nav-feed a{
- background-image: url(img/nav-feed.png);
- }
- #nav-admin a{
- background-image: url(img/nav-admin.png);
- }
-
- #content{
- margin: 20px 30px;
- }
-
- .widget{
- margin: 20px 0;
- }
- .widget h3{
- background: #3e4350 url(img/h3.png) repeat-x left center;
- color: #FFF;
- text-transform: uppercase;
- margin: 0;
- padding: 10px;
- }
- .widget form{
- padding: 10px;
- border: 1px solid #EEE;
- border-top: 0;
- }
-
- #feedmanage p.select{
- margin: 3px 0;
- }
- #feedmanage p.action span.count{
- float: right;
- padding-right: 10px;
- font-size: 1.3em;
- }
- #feedmanage table{
- width: 99%;
- border-collapse: collapse;
- border: 1px solid #f0f2f6;
- }
- #feedmanage thead th{
- background: #f0f2f6;
- text-align: left;
- padding: 6px;
- }
- #feedmanage thead span{
- display: none;
- }
- #feedmanage tr{
- border-bottom: 1px solid #e8ebf1;
- }
- #feedmanage tr.even td{
- background: #f0f2f6;
- width: auto;
- }
- #feedmanage .text{
- background: transparent;
- border: 1px solid #FFF;
- width: 90%;
- }
- #feedmanage tr.even td .text{
- border: 1px solid #f0f2f6;
- }
- #feedmanage tr td input.text:focus{
- background: #FFF;
- border: 1px solid #4392b7;
- }
-
- #feedmanage tr.selected td{
- background: #ffabab;
- background: #4392b7;
- color: #FFF;
- }
- #feedmanage tr.selected td .text{
- color: #FFF;
- border: 1px solid #4392b7;
- }
- #feedmanage tr td input.text:focus{
- background: #FFF;
- color: #000;
- border: 1px solid #4392b7;
- }
-
-/* Login form
-*******************************************************************************/
-form.login {
- width: 400px;
- margin: 0 auto;
-}
-form.login fieldset {
- border: 1px solid #CCC;
- text-align: center;
-}
-
-p.logout {
- float: right;
- margin: 20px 30px 0 0;
-}
- p.logout a {
- padding: 8px;
- display: block;
- }
diff --git a/admin/img/button-add.png b/admin/img/button-add.png
deleted file mode 100644
index 859364a..0000000
Binary files a/admin/img/button-add.png and /dev/null differ
diff --git a/admin/img/button-delete.png b/admin/img/button-delete.png
deleted file mode 100644
index 7bfebc2..0000000
Binary files a/admin/img/button-delete.png and /dev/null differ
diff --git a/admin/img/button-h.png b/admin/img/button-h.png
deleted file mode 100644
index 0a43a6a..0000000
Binary files a/admin/img/button-h.png and /dev/null differ
diff --git a/admin/img/button.png b/admin/img/button.png
deleted file mode 100644
index fad6ccc..0000000
Binary files a/admin/img/button.png and /dev/null differ
diff --git a/admin/img/h3.png b/admin/img/h3.png
deleted file mode 100644
index 0c86748..0000000
Binary files a/admin/img/h3.png and /dev/null differ
diff --git a/admin/img/moonmoon.png b/admin/img/moonmoon.png
deleted file mode 100644
index 26cc8f4..0000000
Binary files a/admin/img/moonmoon.png and /dev/null differ
diff --git a/admin/img/nav-admin.png b/admin/img/nav-admin.png
deleted file mode 100644
index 3077a54..0000000
Binary files a/admin/img/nav-admin.png and /dev/null differ
diff --git a/admin/img/nav-feed.png b/admin/img/nav-feed.png
deleted file mode 100644
index 00c896b..0000000
Binary files a/admin/img/nav-feed.png and /dev/null differ
diff --git a/admin/inc/auth.inc.php b/admin/inc/auth.inc.php
deleted file mode 100644
index 0acf934..0000000
--- a/admin/inc/auth.inc.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-include dirname(__FILE__).'/pwd.inc.php';
-
-if (!class_exists('Planet')) {
- require __DIR__.'/../../vendor/autoload.php';
-}
-
-if (!Planet::authenticateUser($_COOKIE['auth'], $password)) {
- setcookie('auth', '', time() - 3600);
- header('Location: login.php');
- die();
-}
diff --git a/admin/index.php b/admin/index.php
deleted file mode 100644
index 0118923..0000000
--- a/admin/index.php
+++ /dev/null
@@ -1,141 +0,0 @@
-<?php
-
-require_once __DIR__ . '/../app/app.php';
-require_once __DIR__ . '/inc/auth.inc.php';
-
-//Load configuration
-$config_file = __DIR__ . '/../custom/config.yml';
-
-if (is_file($config_file)){
- $conf = Spyc::YAMLLoad($config_file);
- $PlanetConfig = new PlanetConfig($conf);
-} else {
- die('Config file (custom/config.yml) is missing.');
-}
-
-//Instantiate app
-$Planet = new Planet($PlanetConfig);
-
-//Load
-if (0 < $Planet->loadOpml(__DIR__ . '/../custom/people.opml')) {
- $Planet->loadFeeds();
- $items = $Planet->getItems();
-}
-
-$everyone = $Planet->getPeople();
-$count_feeds = count($everyone);
-$page_id = 'admin-feed';
-$footer_extra = <<<FRAGMENT
- <script>
- var allCheckboxes = function(status){
- var form = document.getElementById('feedmanage');
- var selectboxes = form.getElementsByTagName('input');
- for (var i=0; i<selectboxes.length; i++){
- if ('checkbox' == selectboxes[i].type){
- selectboxes[i].checked = status;
- }
- }
- }
-
- window.onload = function(){
- //Select/unselect rows
- var form = document.getElementById('feedmanage');
- var selectboxes = form.getElementsByTagName('input');
- for (var i=0; i<selectboxes.length; i++){
- if ('checkbox' == selectboxes[i].type) {
- selectboxes[i].onchange = function() {
- var tr = this.parentNode.parentNode;
- if (this.checked) {
- tr.className += ' selected';
- } else {
- tr.className = tr.className.replace('selected','');
- }
- }
- }
- }
-
- var btSelectall = document.getElementById('selectall');
- btSelectall.onclick = function(){
- allCheckboxes('checked');
- }
-
- var btSelectnone = document.getElementById('selectnone');
- btSelectnone.onclick = function(){
- allCheckboxes('');
- }
- }
- </script>
-FRAGMENT;
-
-ob_start();
-?>
-
- <div class="widget">
- <h3><?=_g('Add Feed')?></h3>
- <form action="subscriptions.php" method="post" id="feedimport">
- <fieldset>
- <label for="url"><?=_g('Link:')?></label>
- <input type="text" class="text" name="url" id="url" placeholder="http://" class="text" size="50" />
- <input type="submit" class="submit add" name="add" value="<?=_g('Add Feed')?>" />
- </fieldset>
- <p class="help"><?=_g('Accepted formats are RSS and ATOM. If the link is not a feed, moonmoon will try to autodiscover the feed.')?></p>
- <input type="hidden" value="<?php echo $csrf->generate('feedmanage'); ?>" name="_csrf">
- </form>
- </div>
-
- <div class="widget">
- <h3><?=_g('Manage existing feeds')?></h3>
- <form action="subscriptions.php" method="post" id="feedmanage">
- <p class="action">
- <span class="count"><?php echo sprintf(_g('Number of feeds: %s'), $count_feeds)?></span>
- <input type="hidden" value="<?php echo $csrf->generate('feedmanage'); ?>" name="_csrf">
- <input type="submit" class="submit save" name="save" id="save" value="<?=_g('Save changes')?>" />
- <input type="submit" class="submit delete" name="delete" id="delete" value="<?=_g('Delete selected Feeds')?>" />
- </p>
- <p class="select"><?=_g('Select :')?> <a href="javascript:void(0);" id="selectall"><?=_g('All')?></a>, <a href="javascript:void(0);" id="selectnone"><?=_g('None')?></a></p>
- <table>
- <thead>
- <tr>
- <th><span><?=_g('Selection')?></span></th>
- <th><?=_g('Name')?></th>
- <th><?=_g('Last entry')?></th>
- <th><?=_g('Website link')?></th>
- <th><?=_g('Feed link')?></th>
- <th><?=_g('Unavailable')?></th>
- </tr>
- </thead>
- <tbody>
- <?php
- $i = 0;
- foreach ($everyone as $opml_person){
- $i++;
- ?>
- <tr class="<?=($i%2)?'odd':'even'; ?>">
- <td><input type="checkbox" class="checkbox" name="opml[<?=$i; ?>][delete]" /></td>
- <td><input type="text" size="10" class="text" name="opml[<?=$i; ?>][name]" value="<?=$opml_person->getName(); ?>" /></td>
- <td>
- <?php
- $items = $opml_person->get_items();
- if (count($items) > 0) {
- echo $items[0]->get_date();
- } else {
- echo _g('Not in cache');
- }
- $check_is_down = $opml_person->getIsDown() === '1' ? 'checked="checked"' : '';
- ?>
- </td>
- <td><input type="text" size="30" class="text" name="opml[<?=$i; ?>][website]" value="<?=$opml_person->getWebsite(); ?>" /></td>
- <td><input type="text" size="30" class="text" name="opml[<?=$i; ?>][feed]" value="<?=$opml_person->getFeed(); ?>" /></td>
- <td><input type="checkbox" readonly="readonly" name="opml[<?=$i; ?>][isDown]" <?=$check_is_down?> value="1" /></td>
- </tr>
- <?php } ?>
- </tbody>
- </table>
- </form>
- </div>
-<?php
-$page_content = ob_get_contents();
-ob_end_clean();
-
-$admin_access = 1;
-require_once __DIR__ . '/template.php';
diff --git a/admin/login.php b/admin/login.php
deleted file mode 100644
index a95e59f..0000000
--- a/admin/login.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-require_once __DIR__ . '/../app/app.php';
-
-if (isset($_POST['password'])) {
- session_regenerate_id();
- setcookie('auth',md5($_POST['password']));
- header('Location: index.php');
-}
-
-$page_content = <<<FRAGMENT
- <form action="" method="post" class="login">
- <fieldset>
- <p class="field">
- <label for="password">{$l10n->getString('Password:')}</label>
- <input type="password" name="password" id="password"/>
- <input type="submit" class="submit" value="{$l10n->getString('OK')}"/>
- </p>
- </fieldset>
- </form>
-FRAGMENT;
-
-$footer_extra = <<<FRAGMENT
- <script type="text/javascript">
- <!--
- window.onload = function() {
- document.getElementById('password').focus();
- }
- -->
- </script>
-
-FRAGMENT;
-
-$page_id = 'admin-login';
-$admin_access = 0;
-
-require_once __DIR__ . '/template.php';
diff --git a/admin/logout.php b/admin/logout.php
deleted file mode 100644
index adb843f..0000000
--- a/admin/logout.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-require_once __DIR__ . '/../app/app.php';
-
-setcookie('auth','', time()-3600);
-session_destroy();
-session_regenerate_id();
-
-header('Location: login.php');
-die();
diff --git a/admin/purgecache.php b/admin/purgecache.php
deleted file mode 100644
index 23a5712..0000000
--- a/admin/purgecache.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-require_once __DIR__.'/../app/app.php';
-require_once __DIR__.'/inc/auth.inc.php';
-
-if (isset($_POST['purge'])){
- $dir = __DIR__.'/../cache/';
-
- $dh = opendir($dir);
-
- while ($filename = readdir($dh)) {
- if ($filename == '.' OR $filename == '..') {
- continue;
- }
-
- if (filemtime($dir . DIRECTORY_SEPARATOR . $filename) < time()) {
- @unlink($dir . DIRECTORY_SEPARATOR . $filename);
- }
- }
-}
-
-header('Location: administration.php');
-die();
diff --git a/admin/subscriptions.php b/admin/subscriptions.php
deleted file mode 100644
index f0fd896..0000000
--- a/admin/subscriptions.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-
-require_once __DIR__ . '/../app/app.php';
-require_once __DIR__ . '/inc/auth.inc.php';
-
-function removeSlashes(&$item, $key){
- $item = stripslashes($item);
-}
-
-if (!$csrf->verify($_POST['_csrf'], 'feedmanage')) {
- die('Invalid CSRF token!');
-}
-
-if (isset($_POST['opml']) || isset($_POST['add'])) {
-
- // Load old OPML
- $oldOpml = OpmlManager::load(__DIR__.'/../custom/people.opml');
- if ($PlanetConfig->getName() === '') {
- $PlanetConfig->setName($oldOpml->getTitle());
- }
- $newOpml = new Opml();
- $newOpml->title = $PlanetConfig->getName();
-
- // Remove slashes if needed
- if (get_magic_quotes_gpc() && isset($_POST['opml'])) {
- array_walk_recursive($_POST['opml'], 'removeSlashes');
- }
- // Delete/Save feeds
- if (isset($_POST['delete']) || isset($_POST['save'])){
- foreach ($_POST['opml'] as $person){
- if (isset($_POST['delete'])) {
- //delete mode, check if to be deleted
- if (!isset($person['delete'])){
- $newOpml->entries[] = $person;
- }
- } else {
- $newOpml->entries[] = $person;
- }
- }
- }
-
- // Add feed
- if (isset($_POST['add'])){
- if ('http://' != $_POST['url']) {
- //autodiscover feed
- $feed = new SimplePie();
- $feed->enable_cache(false);
- $feed->set_feed_url($_POST['url']);
- if ($conf['checkcerts'] === false) {
- $feed->set_curl_options([
- CURLOPT_SSL_VERIFYHOST => false,
- CURLOPT_SSL_VERIFYPEER => false
- ]);
- }
- $feed->init();
- $feed->handle_content_type();
- $person['name'] = html_entity_decode($feed->get_title());
- $person['website'] = $feed->get_permalink();
- $person['feed'] = $feed->feed_url;
- $person['isDown'] = '0';
-
- $oldOpml->entries[] = $person;
- }
- $newOpml->entries = $oldOpml->entries;
- }
-
- // Backup old OPML
- OpmlManager::backup(__DIR__.'/../custom/people.opml');
-
- // Save new OPML
- OpmlManager::save($newOpml, __DIR__.'/../custom/people.opml');
-}
-header("Location: index.php");
-die();
diff --git a/admin/template.php b/admin/template.php
deleted file mode 100644
index 7818bef..0000000
--- a/admin/template.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php if(!isset($admin_access)) return; ?>
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <title>
-
-<?php
- echo _g('Administration') . ' â ';
- printf(_g('moonmoon %s', '%s is the version number for moonmoon, this string appears as the tab title in the admin panel'), $moon_version);
-?>
- </title>
- <link rel="stylesheet" media="screen" type="text/css" href="default.css">
-<!--[if lte IE 9]>
-<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
-<![endif]-->
-
- <?=@$header_extra ?: ''; ?>
-
-</head>
-
-<body id="<?=@$page_id ?: ''; ?>">
- <div id="page">
- <header>
- <h1>moonmoon</h1>
- <p><a href="../"><?=_g('Back to main page')?></a></p>
- </header>
-
- <?php if($admin_access == 1) : ?>
-
- <p class="logout"><a href="logout.php"><?=_g('Logout')?></a></p>
- <nav>
- <ul>
- <li id="nav-feed"><a href="index.php"><?=_g('Feeds')?></a></li>
- <li id="nav-admin"><a href="administration.php"><?=_g('Administration')?></a></li>
- </ul>
- </nav>
-
- <?php endif; ?>
-
-
-
- <div id="content">
-
- <?=@$page_content ?: ''; ?>
-
- </div>
- </div>
-
-<?=@$footer_extra ?: ''; ?>
-
-</body>
-</html>
diff --git a/android-chrome-192x192.png b/android-chrome-192x192.png
deleted file mode 100644
index 7b8fadb..0000000
Binary files a/android-chrome-192x192.png and /dev/null differ
diff --git a/android-chrome-512x512.png b/android-chrome-512x512.png
deleted file mode 100644
index c64fa20..0000000
Binary files a/android-chrome-512x512.png and /dev/null differ
diff --git a/app/app.php b/app/app.php
deleted file mode 100644
index 0797cc7..0000000
--- a/app/app.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-error_reporting(0);
-
-require_once __DIR__.'/../vendor/autoload.php';
-
-$savedConfig = __DIR__.'/../custom/config.yml';
-$moon_version = file_get_contents(__DIR__.'/../VERSION');
-
-session_start();
-
-if (is_installed()) {
- $conf = Spyc::YAMLLoad($savedConfig);
-
- // this is a check to upgrade older config file without l10n
- if(!isset($conf['locale'])) {
- $resetPlanetConfig = new PlanetConfig($conf);
- file_put_contents($savedConfig, $resetPlanetConfig->toYaml());
- $conf = Spyc::YAMLLoad($savedConfig);
- }
-
- $PlanetConfig = new PlanetConfig($conf);
- $Planet = new Planet($PlanetConfig);
-
- if ($conf['debug']) {
- error_reporting(E_ALL);
- }
-
-}
-
-$l10n = new Simplel10n($conf['locale']);
-$csrf = new CSRF();
diff --git a/app/classes/CSRF.php b/app/classes/CSRF.php
deleted file mode 100644
index 9a700cf..0000000
--- a/app/classes/CSRF.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-class CSRF
-{
- /** @var string */
- const HMAC_ALGORITHM = 'sha1';
-
- /** @var string */
- const SESSION_KEY_NAME = '_csrf_key';
-
- /**
- * Ensure that a CSRF token is valid for a given action.
- *
- * @param string $token
- * @param string $action
- * @return bool
- */
- public static function verify($token = '', $action = null)
- {
- if (!is_string($token) || !is_string($action)) {
- return false;
- }
-
- $known = self::generate($action);
- return hash_equals($known, $token);
- }
-
- /**
- * Generate a CSRF token for a given action.
- *
- * @param string $action
- * @throws InvalidArgumentException
- * @return string
- */
- public static function generate($action = null)
- {
- if (!is_string($action)) {
- throw new InvalidArgumentException('A valid action must be defined.');
- }
- return hash_hmac(self::HMAC_ALGORITHM, $action, self::getKey());
- }
-
- /**
- * Get HMAC key.
- *
- * @return string
- */
- public static function getKey()
- {
- if (empty($_SESSION[self::SESSION_KEY_NAME])) {
- $_SESSION[self::SESSION_KEY_NAME] = random_bytes(16);
- }
- return $_SESSION[self::SESSION_KEY_NAME];
- }
-}
diff --git a/app/classes/Cache.php b/app/classes/Cache.php
deleted file mode 100644
index b73182e..0000000
--- a/app/classes/Cache.php
+++ /dev/null
@@ -1,254 +0,0 @@
-<?php
-/**
-* This library 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 library 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 software; if not, write to the Free Software
-* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*
-* © Copyright 2005 Richard Heyes
-*/
-
-/**
-* Caching Libraries for PHP5
-*
-* Handles data and output caching. Defaults to /dev/shm
-* (shared memory). All methods are static.
-*
-* Eg: (output caching)
-*
-* if (!OutputCache::Start('group', 'unique id', 600)) {
-*
-* // ... Output
-*
-* OutputCache::End();
-* }
-*
-* Eg: (data caching)
-*
-* if (!$data = DataCache::Get('group', 'unique id')) {
-*
-* $data = time();
-*
-* DataCache::Put('group', 'unique id', 10, $data);
-* }
-*
-* echo $data;
-*/
- class Cache
- {
- /**
- * Whether caching is enabled
- * @var bool
- */
- public static $enabled = true;
-
- /**
- * Place to store the cache files
- * @var string
- */
- protected static $store = '/dev/shm/';
-
- /**
- * Prefix to use on cache files
- * @var string
- */
- protected static $prefix = 'cache_';
-
- /**
- * Stores data
- *
- * @param string $group Group to store data under
- * @param string $id Unique ID of this data
- * @param int $ttl How long to cache for (in seconds)
- */
- protected static function write($group, $id, $ttl, $data)
- {
- $filename = self::getFilename($group, $id);
-
- if (self::$enabled && $fp = fopen($filename, 'xb')) {
-
- if (flock($fp, LOCK_EX)) {
- fwrite($fp, $data);
- }
- fclose($fp);
-
- // Set filemtime
- touch($filename, time() + $ttl);
- }
- }
-
- /**
- * Reads data
- *
- * @param string $group Group to store data under
- * @param string $id Unique ID of this data
- */
- protected static function read($group, $id)
- {
- $filename = self::getFilename($group, $id);
-
- return file_get_contents($filename);
- }
-
- /**
- * Determines if an entry is cached
- *
- * @param string $group Group to store data under
- * @param string $id Unique ID of this data
- */
- protected static function isCached($group, $id)
- {
- $filename = self::getFilename($group, $id);
-
- if (self::$enabled && file_exists($filename) && filemtime($filename) > time()) {
- return true;
- }
-
- @unlink($filename);
-
- return false;
- }
-
- /**
- * Builds a filename/path from group, id and
- * store.
- *
- * @param string $group Group to store data under
- * @param string $id Unique ID of this data
- */
- protected static function getFilename($group, $id)
- {
- $id = md5($id);
-
- return self::$store . self::$prefix . "{$group}_{$id}";
- }
-
- /**
- * Sets the filename prefix to use
- *
- * @param string $prefix Filename Prefix to use
- */
- public static function setPrefix($prefix)
- {
- self::$prefix = $prefix;
- }
-
- /**
- * Sets the store for cache files. Defaults to
- * /dev/shm. Must have trailing slash.
- *
- * @param string $store The dir to store the cache data in
- */
- public static function setStore($store)
- {
- self::$store = $store;
- }
- }
-
- /**
- * Output Cache extension of base caching class
- */
- class OutputCache extends Cache
- {
- /**
- * Group of currently being recorded data
- * @var string
- */
- private static $group;
-
- /**
- * ID of currently being recorded data
- * @var string
- */
- private static $id;
-
- /**
- * Ttl of currently being recorded data
- * @var int
- */
- private static $ttl;
-
- /**
- * Starts caching off. Returns true if cached, and dumps
- * the output. False if not cached and start output buffering.
- *
- * @param string $group Group to store data under
- * @param string $id Unique ID of this data
- * @param int $ttl How long to cache for (in seconds)
- * @return bool True if cached, false if not
- */
- public static function Start($group, $id, $ttl)
- {
- if (self::isCached($group, $id)) {
- echo self::read($group, $id);
- return true;
-
- } else {
-
- ob_start();
-
- self::$group = $group;
- self::$id = $id;
- self::$ttl = $ttl;
-
- return false;
- }
- }
-
- /**
- * Ends caching. Writes data to disk.
- */
- public static function End()
- {
- $data = ob_get_contents();
- ob_end_flush();
-
- self::write(self::$group, self::$id, self::$ttl, $data);
- }
- }
-
- /**
- * Data cache extension of base caching class
- */
- class DataCache extends Cache
- {
-
- /**
- * Retrieves data from the cache
- *
- * @param string $group Group this data belongs to
- * @param string $id Unique ID of the data
- * @return mixed Either the resulting data, or null
- */
- public static function Get($group, $id)
- {
- if (self::isCached($group, $id)) {
- return unserialize(self::read($group, $id));
- }
-
- return null;
- }
-
- /**
- * Stores data in the cache
- *
- * @param string $group Group this data belongs to
- * @param string $id Unique ID of the data
- * @param int $ttl How long to cache for (in seconds)
- * @param mixed $data The data to store
- */
- public static function Put($group, $id, $ttl, $data)
- {
- self::write($group, $id, $ttl, serialize($data));
- }
- }
-?>
\ No newline at end of file
diff --git a/app/classes/Opml.php b/app/classes/Opml.php
deleted file mode 100644
index ae9e8b1..0000000
--- a/app/classes/Opml.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-class Opml
-{
- var $_xml = null;
- var $_currentTag = '';
-
- var $title = '';
- var $entries = array();
- var $map =
- array(
- 'URL' => 'website',
- 'HTMLURL' => 'website',
- 'TEXT' => 'name',
- 'TITLE' => 'name',
- 'XMLURL' => 'feed',
- 'DESCRIPTION' => 'description',
- 'ISDOWN' => 'isDown'
- );
-
-
- function parse($data)
- {
- $this->_xml = xml_parser_create('UTF-8');
- //xml_parser_set_option($this->_xml, XML_OPTION_CASE_FOLDING, false);
- //xml_parser_set_option($this->_xml, XML_OPTION_SKIP_WHITE, true);
- xml_set_object($this->_xml, $this);
- xml_set_element_handler($this->_xml,'_openTag','_closeTag');
- xml_set_character_data_handler ($this->_xml, '_cData');
-
- xml_parse($this->_xml,$data);
- xml_parser_free($this->_xml);
- return $this->entries;
- }
-
-
- function _openTag($p,$tag,$attrs)
- {
- $this->_currentTag = $tag;
-
- if ($tag == 'OUTLINE')
- {
- $i = count($this->entries);
- foreach (array_keys($this->map) as $key)
- {
- if (isset($attrs[$key])) {
- $this->entries[$i][$this->map[$key]] = $attrs[$key];
- }
- }
- }
- }
-
- function _closeTag($p, $tag){
- $this->_currentTag = '';
- }
-
- function _cData($p, $cdata){
- if ($this->_currentTag == 'TITLE'){
- $this->title = $cdata;
- }
- }
-
- function getTitle(){
- return $this->title;
- }
-
- function getPeople(){
- return $this->entries;
- }
-}
\ No newline at end of file
diff --git a/app/classes/OpmlManager.php b/app/classes/OpmlManager.php
deleted file mode 100644
index 9732775..0000000
--- a/app/classes/OpmlManager.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-
-class OpmlManager
-{
- public static function load($file)
- {
- if (!file_exists($file)) {
- throw new Exception('OPML file not found!');
- }
-
- $opml = new Opml();
-
- //Remove BOM if needed
- $BOM = '/^/';
- $fileContent = file_get_contents($file);
- $fileContent = preg_replace($BOM, '', $fileContent, 1);
-
- //Parse
- $opml->parse($fileContent);
-
- return $opml;
- }
-
- /**
- * @param Opml $opml
- * @param string $file
- */
- public static function save($opml, $file){
- // Only update the opml file if there are entries
- if (!$opml->entries) return;
-
- $out = '<?xml version="1.0"?>'."\n";
- $out.= '<opml version="1.1">'."\n";
- $out.= '<head>'."\n";
- $out.= '<title>'.htmlspecialchars($opml->getTitle()).'</title>'."\n";
- $out.= '<dateCreated>'.date('c').'</dateCreated>'."\n";
- $out.= '<dateModified>'.date('c').'</dateModified>'."\n";
- $out.= '</head>'."\n";
- $out.= '<body>'."\n";
- foreach ($opml->entries as $person) {
- $out.= '<outline text="' . htmlspecialchars($person['name'], ENT_QUOTES) . '" htmlUrl="' . htmlspecialchars($person['website'], ENT_QUOTES) . '" xmlUrl="' . htmlspecialchars($person['feed'], ENT_QUOTES) . '" isDown="' . htmlspecialchars($person['isDown'], ENT_QUOTES) . '"/>'."\n";
- }
- $out.= '</body>'."\n";
- $out.= '</opml>';
-
- file_put_contents($file, $out);
- }
-
- public static function backup($file){
- copy($file, $file.'.bak');
- }
-}
diff --git a/app/classes/Planet.php b/app/classes/Planet.php
deleted file mode 100644
index b146eaf..0000000
--- a/app/classes/Planet.php
+++ /dev/null
@@ -1,266 +0,0 @@
-<?php
-/*
-Copyright (c) 2006, Maurice Svay
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-* Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-* Neither the name of Maurice Svay nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/**
- * Planet, main app class
- */
-class Planet
-{
- /** @var PlanetConfig */
- public $config;
-
- /** @var PlanetItem[] */
- public $items;
-
- /** @var PlanetFeed[] */
- public $people;
-
- /** @var PlanetError[] */
- public $errors;
-
- /**
- * Planet constructor.
- *
- * @param PlanetConfig $config
- */
- public function __construct($config=null)
- {
- $this->config = $config === null ? new PlanetConfig() : $config;
-
- $this->items = [];
- $this->people = [];
- $this->errors = [];
- }
-
- /**
- * Compare the supplied password with the known one.
- *
- * This functions uses a type-safe and timing-safe comparison, in order to
- * improve the security of the authentication.
- *
- * Read more about this sort of attacks (used for the < PHP 5.6.0 implementation):
- * - https://security.stackexchange.com/questions/83660/simple-string-comparisons-not-secure-against-timing-attacks
- * - https://github.com/laravel/framework/blob/a1dc78820d2dbf207dbdf0f7075f17f7021c4ee8/src/Illuminate/Support/Str.php#L289
- * - https://github.com/symfony/security-core/blob/master/Util/StringUtils.php#L39
- *
- * @param string $known
- * @param string $supplied
- * @return bool
- */
- public static function authenticateUser($known = '', $supplied = '')
- {
- // The hash_equals function was introduced in PHP 5.6.0. If it's not
- // existing in the current context (PHP version too old), and to ensure
- // compatibility with those old interpreters, we'll have to provide
- // an PHP implementation of this function.
- if (function_exists('hash_equals')) {
- return hash_equals($known, $supplied);
- }
-
- // Some implementation references can be found on the function comment.
- $knownLen = mb_strlen($known);
- if ($knownLen !== mb_strlen($supplied)) {
- return false;
- }
-
- // Ensure that all the characters are the same, and continue until the
- // end of the string even if an difference was found.
- for ($i = 0, $comparison = 0; $i < $knownLen; $i++) {
- $comparison |= ord($known[$i]) ^ ord($supplied[$i]);
- }
-
- return ($comparison === 0);
- }
-
- /**
- * Getters
- */
- public function getItems()
- {
- $this->items = $this->_filterItemsByCategory(
- $this->items,
- $this->config->getCategories());
-
- return $this->items;
- }
-
- public function getPeople()
- {
- return $this->people;
- }
-
- /**
- * Adds a feed to the planet.
- *
- * @param PlanetFeed $feed
- */
- public function addPerson(&$feed)
- {
- $this->people[] = $feed;
- }
-
- /**
- * Load people from an OPML.
- *
- * @param string $file File to load the OPML from.
- * @return integer Number of people loaded.
- */
- public function loadOpml($file)
- {
- if (!is_file($file)) {
- $this->errors[] = new PlanetError(3, $file.' is missing.');
- return 0;
- }
-
- $opml = OpmlManager::load($file);
- $opml_people = $opml->getPeople();
- foreach ($opml_people as $opml_person){
- $person = new PlanetFeed(
- $opml_person['name'],
- $opml_person['feed'],
- $opml_person['website'],
- $opml_person['isDown']
- );
- $this->addPerson($person);
- }
- return count($opml_people);
- }
-
- /**
- * Load feeds
- */
- public function loadFeeds()
- {
- foreach ($this->people as $feed) {
- //Is down it's filled by cron.php, $Planet->download(1.0) proccess
- if (!$feed->isDown) {
- $feed->set_timeout(-1);
- $feed->init();
- $this->items = array_merge($this->items, $feed->get_items());
- }
-
- }
- $this->sort();
- }
-
- /**
- * Fetch feeds and see if new data is present.
- *
- * @param float $max_load Percentage of feeds to load
- */
- public function download($max_load=0.1)
- {
- $max_load_feeds = ceil(count($this->people) * $max_load);
- $opml = OpmlManager::load(__DIR__.'/../../custom/people.opml');
-
- foreach ($this->people as $feed) {
- //Avoid mass loading with variable cache duration
- $feed->set_cache_duration($this->config->getCacheTimeout());
-
- //Load only a few feeds, force other to fetch from the cache
- if (0 > $max_load_feeds--) {
- $feed->set_timeout(-1);
- $this->errors[] = new PlanetError(1, 'Forced from cache : '.$feed->getFeed());
- }
-
- // Bypass remote's SSL/TLS certificate if the user explicitly
- // asked for it in the configuration.
- if ($this->config->checkcerts === false) {
- $feed->set_curl_options([
- CURLOPT_SSL_VERIFYHOST => false,
- CURLOPT_SSL_VERIFYPEER => false
- ]);
- }
-
- $feed->init();
- $isDown = '';
-
- // http://simplepie.org/wiki/reference/simplepie/merge_items ?
- if (($feed->data) && ($feed->get_item_quantity() > 0)){
- $items = $feed->get_items();
- $this->items = array_merge($this->items, $items);
- } else {
- $this->errors[] = new PlanetError(1, 'No items or down : ' . $feed->getFeed());
- $isDown = '1';
- }
-
- foreach ($opml->entries as $key => $entrie) {
- if ($feed->getFeed() === $entrie['feed']) {
- $opml->entries[$key]['isDown'] = $isDown;
- }
- }
- }
-
- OpmlManager::save($opml, __DIR__.'/../../custom/people.opml');
- }
-
- public function sort()
- {
- usort($this->items, array('PlanetItem','compare'));
- }
-
- /**
- * Filter out items that do not match at least one
- * of the defined categories.
- *
- * If there's no category, return all items.
- *
- * @param array $items to filter
- * @param string $categories to filter against; may be a single word
- * or a comma-separated list of words.
- *
- * @return array resulting list of items
- */
- public function _filterItemsByCategory($items, $categories = null)
- {
- $categories = trim($categories);
-
- if (empty($categories))
- return $items;
-
- $categories = array_map('trim', explode(',', strtolower($categories)));
- $cb_category_filter =
- function ($item) use ($categories)
- {
- if (!is_array($item_categories = $item->get_categories()))
- return false;
-
- $item_categories = array_map(
- function ($i) { return strtolower($i->get_label()); },
- $item_categories
- );
-
- return array_intersect($categories, $item_categories);
- };
-
- return array_values(array_filter($items, $cb_category_filter));
- }
-}
diff --git a/app/classes/PlanetConfig.php b/app/classes/PlanetConfig.php
deleted file mode 100644
index f3928bc..0000000
--- a/app/classes/PlanetConfig.php
+++ /dev/null
@@ -1,194 +0,0 @@
-<?php
-
-/**
- * Planet configuration class
- */
-class PlanetConfig
-{
-
- protected $conf = [];
-
- public static $defaultConfig = [
- 'url' => 'http://www.example.com/',
- 'name' => '',
- 'locale' => 'en',
- 'items' => 10,
- 'shuffle' => 0,
- 'refresh' => 240,
- 'cache' => 10,
- 'nohtml' => 0,
- 'postmaxlength' => 0,
- 'categories' => '',
- 'cachedir' => './cache',
- 'debug' => false,
- 'checkcerts' => true,
- ];
-
- /**
- * PlanetConfig constructor.
- * @param array $userConfig
- * @param bool $useDefaultConfig
- */
- public function __construct($userConfig = [], $useDefaultConfig = true)
- {
- $default = $useDefaultConfig ? self::$defaultConfig : array();
- $this->conf = $this->merge($default, $userConfig);
- }
-
- /**
- * Merge the configuration of the user in the default one.
- *
- * @param array $default
- * @param array $user
- * @return array
- */
- protected function merge($default = [], $user = [])
- {
- return array_merge($default, $this->normalizeArrayKeys($user));
- }
-
- public function getUrl()
- {
- return $this->conf['url'];
- }
-
- public function getName(){
- return $this->conf['name'];
- }
-
- public function setName($name)
- {
- $this->conf['name'] = $name;
- }
-
- public function getCacheTimeout()
- {
- return $this->conf['refresh'];
- }
-
- public function getOutputTimeout()
- {
- return $this->conf['cache'];
- }
-
- /**
- * @deprecated
- * @return mixed
- */
- public function getShuffle()
- {
- return $this->conf['shuffle'];
- }
-
- public function getMaxDisplay()
- {
- return $this->conf['items'];
- }
-
- /**
- * @deprecated
- * @return mixed
- */
- public function getNoHTML()
- {
- return $this->conf['nohtml'];
- }
-
- /**
- * @deprecated
- * @return mixed
- */
- public function getPostMaxLength()
- {
- return $this->conf['postmaxlength'];
- }
-
- public function getCategories()
- {
- return $this->conf['categories'];
- }
-
- public function toYaml()
- {
- return Spyc::YAMLDump($this->conf, 4);
- }
-
- /**
- * @return array
- */
- public function toArray()
- {
- return $this->conf;
- }
-
- public function getDebug()
- {
- return $this->conf['debug'];
- }
-
- /**
- * @return array
- */
- public function getDefaultConfig()
- {
- return self::$defaultConfig;
- }
-
- /**
- * Normalize the name of a configuration key.
- *
- * @param string $key
- * @return string
- */
- protected function normalizeKeyName($key = null)
- {
- return strtolower($key);
- }
-
- /**
- * Normalize all the keys of the array.
- *
- * @param array $array
- * @return array
- */
- protected function normalizeArrayKeys($array = [])
- {
- foreach ($array as $key => $value) {
- $normalized = $this->normalizeKeyName($key);
- if ($normalized !== $key) {
- $array[$this->normalizeKeyName($key)] = $value;
- unset($array[$key]);
- }
- }
-
- return $array;
- }
-
- /**
- * Generic configuration getter.
- *
- * @return mixed|null
- */
- public function __get($key)
- {
- $key = $this->normalizeKeyName($key);
-
- return array_key_exists($key, $this->conf) ?
- $this->conf[$key] :
- null;
- }
-
- /**
- * Generic configuration setter.
- *
- * @param $key
- * @param $value
- */
- public function __set($key, $value)
- {
- $key = $this->normalizeKeyName($key);
-
- $this->conf[$key] = $value;
- }
-
-}
diff --git a/app/classes/PlanetError.php b/app/classes/PlanetError.php
deleted file mode 100644
index e47ab1d..0000000
--- a/app/classes/PlanetError.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-class PlanetError
-{
- public $level;
- public $levels = array(
- 1 => 'notice',
- 2 => 'warning',
- 3 => 'error',
- );
- public $message;
-
- /**
- * PlanetError constructor.
- * @param $level
- * @param $message
- */
- public function __construct($level, $message)
- {
- $this->level = (int) $level;
- $this->message = $message;
- }
-
- /**
- * @param string $format
- * @return string
- */
- public function toString($format = '%1$s: %2$s')
- {
- return sprintf($format, $this->levels[$this->level], $this->message);
- }
-}
diff --git a/app/classes/PlanetFeed.php b/app/classes/PlanetFeed.php
deleted file mode 100644
index 3d2ea2f..0000000
--- a/app/classes/PlanetFeed.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-
-/**
- * Planet person
- */
-
-class PlanetFeed extends SimplePie
-{
- public $name;
- public $feed;
- public $website;
- public $isDown;
-
- public function __construct($name, $feed, $website, $isDown)
- {
- $this->name = $name;
- $this->feed = $feed;
- $this->website = $website;
- $this->isDown = $isDown;
- parent::__construct();
- $this->set_item_class('PlanetItem');
- $this->set_cache_location(__DIR__.'/../../cache');
- $this->set_autodiscovery_level(SIMPLEPIE_LOCATOR_NONE);
- $this->set_feed_url($this->getFeed());
- $this->set_timeout(5);
- $this->set_stupidly_fast(true);
- }
-
- public function getFeed()
- {
- return $this->feed;
- }
-
- public function getName()
- {
- return $this->name;
- }
-
- public function getWebsite()
- {
- return $this->website;
- }
-
- public function getIsDown()
- {
- return $this->isDown;
- }
-
- /**
- * Compare two Person by their name.
- *
- * @param $person1
- * @param $person2
- * @return int
- */
- public static function compare($person1, $person2)
- {
- return strcasecmp($person1->name, $person2->name);
- }
-}
diff --git a/app/classes/PlanetItem.php b/app/classes/PlanetItem.php
deleted file mode 100644
index 38ee514..0000000
--- a/app/classes/PlanetItem.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-
-/**
- * Planet item
- */
-
-class PlanetItem extends SimplePie_Item
-{
- public function __construct($feed, $data)
- {
- parent::__construct($feed, $data);
- }
-
- /**
- * Gets the author name, with some logic to extract a name from a RSS feed
- * author tag
- * @param int $key
- * @return string|null
- */
- public function get_author_name($key = 0) {
- $author = $this->get_author($key);
-
- if (!$author) {
- return null;
- }
-
- if ($author->get_name()) {
- return $author->get_name();
- }
-
- if ($author->get_email()) {
- // Remove email address and parentheses
- $name = preg_replace('/(\S*@\S*\s?)|\(|\)/', '', $author->get_email());
- if ($name) {
- return $name;
- }
- }
-
- return 'Unknown';
- }
-
- /**
- * @param PlanetItem $item1
- * @param PlanetItem $item2
- * @return int
- */
- public static function compare($item1, $item2)
- {
- $item1_date = $item1->get_date('U');
- $item2_date = $item2->get_date('U');
-
- if ($item1_date == $item2_date) {
- return 0;
- } elseif ($item1_date < $item2_date) {
- return 1;
- }
-
- return -1;
- }
-}
diff --git a/app/classes/Simplel10n.php b/app/classes/Simplel10n.php
deleted file mode 100644
index 79313b3..0000000
--- a/app/classes/Simplel10n.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-
-class Simplel10n {
-
- public $locale;
- public $l10nFolder;
-
- public function __construct($locale='en') {
- $GLOBALS['locale'] = array();
- $this->locale = $locale;
- $this->l10nFolder = __DIR__ . '/../l10n/';
- $this->load($this->l10nFolder . $this->locale);
- }
-
- public function setL1OnFolder($path) {
- $this->l10nFolder = $path;
- }
-
- static function getString($str, $comment='') {
- if(array_key_exists($str, $GLOBALS['locale'])) {
- return trim(str_replace('{ok}', '', $GLOBALS['locale'][$str]));
- } else {
- return $str;
- }
- }
-
- /*
- * This is the same as getString except that we don't remove the {ok} string
- * This is needed only for the extraction script
- */
- static function extractString($str, $comment='') {
- if(array_key_exists($str, $GLOBALS['locale'])) {
- return $GLOBALS['locale'][$str];
- } else {
- return $str;
- }
- }
-
- static function load($pathToFile) {
-
- if (!file_exists($pathToFile . '.lang')) return false;
-
- $file = file($pathToFile . '.lang');
-
- foreach ($file as $k => $v) {
- if (substr($v,0,1) == ';' && !empty($file[$k+1])) {
- $GLOBALS['locale'][trim(substr($v,1))] = trim($file[$k+1]);
- }
- }
- }
-}
diff --git a/app/helpers.php b/app/helpers.php
deleted file mode 100644
index 57f43e9..0000000
--- a/app/helpers.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-
-/**
- * Path to the _custom_ directory.
- *
- * @param string $file Append this filename to the returned path.
- * @return string
- */
-function custom_path($file = '')
-{
- return __DIR__.'/../custom' . (!empty($file) ? '/'.$file : '');
-}
-
-/**
- * Path to the _views_ directory.
- *
- * @param string $file Append this filename to the returned path.
- * @return string
- */
-function views_path($file = '')
-{
- return custom_path('views/' . $file);
-}
-
-/**
- * Path to the _admin_ directory.
- *
- * @param string $file Append this filename to the returned path.
- * @return string
- */
-function admin_path($file = '')
-{
- return __DIR__.'/../admin' . (!empty($file) ? '/'.$file : '');
-}
-
-/**
- * Is moonmoon installed?
- *
- * @return bool
- */
-function is_installed()
-{
- return file_exists(custom_path('config.yml')) && file_exists(custom_path('people.opml'));
-}
-
-/**
- * Shortcut to Simplel10n::getString().
- *
- * @param string $str
- * @param string $comment
- * @return string
- */
-function _g($str, $comment='')
-{
- return Simplel10n::getString($str, $comment);
-}
-
-/**
- * Reset the moonmoon instance.
- */
-function removeCustomFiles()
-{
- $toRemove = [
- custom_path('config.yml'),
- custom_path('people.opml'),
- custom_path('people.opml.bak'),
- custom_path('cache')
- ];
-
- foreach ($toRemove as $path) {
- if (file_exists($path)) {
- unlink($path);
- }
- }
-}
-
-/**
- * Compare two strings in a constant-time manner.
- *
- * It returns `true` if both strings are exactly the same
- * (same size and same value).
- *
- * @param string $known_string
- * @param string $user_string
- * @return bool
- */
-function _hash_equals($known_string = '', $user_string = '')
-{
- // In our case, it's not problematic if `$known_string`'s
- // size leaks, we will only compare password hashes and
- // CSRF tokensâtheir size is already somehow public.
- if (!is_string($known_string) || !is_string($user_string)
- || strlen($known_string) !== strlen($user_string)) {
- return false;
- }
-
- $ret = 0;
-
- // Do not stop the comparison when a difference is found,
- // always completely compare them.
- for ($i = 0; $i < strlen($known_string); $i++) {
- $ret |= (ord($known_string[$i]) ^ ord($user_string[$i]));
- }
-
- return !$ret;
-}
-
diff --git a/app/l10n/de.lang b/app/l10n/de.lang
deleted file mode 100644
index 628a12c..0000000
--- a/app/l10n/de.lang
+++ /dev/null
@@ -1,219 +0,0 @@
-;Are you sure you want to purge the cache?
-Sind Sie sicher, dass sie den Cache säubern wollen?
-
-
-;Clear cache
-Cache Löschen
-
-
-;Clear cache:
-Cache löschen:
-
-
-;Clear
-Löschen
-
-
-;Clearing the cache will make moonmoon reload all feeds.
-Wenn der Cache gelöscht wird, werden alle Feeds von moonmoon neu geladen.
-
-
-;Change administrator password
-Administratorpasswort ändern
-
-
-;New password:
-Neues Passwort:
-
-
-;Change password
-Passwort ändern
-
-
-;Add Feed
-Feed hinzufügen
-
-
-;Link:
-Link:
-
-
-;Accepted formats are RSS and ATOM. If the link is not a feed, moonmoon will try to autodiscover the feed.
-Akzeptierte Formate sind RSS und ATOM. Wenn der link kein Feed ist, wird moonmoon versuchen, den Feed selbst zu finden.
-
-
-;Manage existing feeds
-Verwalte bestehende Feeds
-
-
-;Number of feeds: %s
-Anzahl der feeds: %s
-
-
-;Save changes
-Ãnderungen Speichern
-
-
-;Delete selected Feeds
-Ausgewählte Feeds löschen
-
-
-;Select :
-Auswählen
-
-
-;All
-Alle
-
-
-;None
-Nichts
-
-
-;Selection
-Auswahl
-
-
-;Name
-Name
-
-
-;Last entry
-Letzter Eintrag
-
-
-;Website link
-Link der Webseite
-
-
-;Feed link
-Link des Feeds
-
-
-;Unavailable
-Nicht verfügbar
-
-;Not in cache
-Nicht im cache
-
-
-;Password:
-Passwort:
-
-
-;OK
-OK
-
-
-;moonmoon administration
-moonmoon Administration
-
-
-;Back to main page
-Zurück zur Hauptseite
-
-
-;Logout
-Abmelden
-
-
-;Feeds
-Feeds
-
-
-;Administration
-Administration
-
-
-;Powered by <a %s>moonmoon</a>
-Powered by <a %s>moonmoon</a>
-
-
-;No article
-Kein Artikel
-
-
-;No news, good news.
-Keine Neuigkeiten, gute Neuigkeiten.
-
-
-;Today
-Heute
-
-
-;Go to original place
-Gehe zur Originalseite
-
-
-;This week
-Diese Woche
-
-
-;This month
-Diesen Monat
-
-
-;Older items
-Ãltere Einträge
-
-
-;People
-Personen
-
-
-;Feed
-Feed
-
-
-;Website
-Webseite
-
-
-;All feeds in OPML format
-Alle Feeds im OPML-Format
-
-
-;Syndicate
-Zusammenfassung
-
-
-;Feed (ATOM)
-Feed (ATOM)
-
-
-;Archives
-Archive
-
-
-;See all headlines
-Alle Schlagzeilen ansehen
-
-
-;Source:
-Quelle:
-
-
-;You might want to <a href="install.php">install moonmoon</a>.
-Sie könnten <a href="install.php">moonmoon installieren</a> wollen.
-
-
-;moonmoon installation
-moonmoon Installation
-
-
-;Congratulations! Your moonmoon is ready.
-Gratulation! Ihr moonmoon ist bereit.
-
-
-;What's next?
-Was nun?
-
-
-;<strong>Delete</strong> <code>install.php</code> with your FTP software.
-<strong>Entfernen Sie</strong> <code>install.php</code> mit Ihrer FTP-Software.
-
-
-;Use your password to go to the <a href="./admin/">administration panel</a>
-Verwenden Sie Ihr Passwort, um zum <a href="./admin/">Administrationsbereich</a> zu gehen.
-
-
diff --git a/app/l10n/en.lang b/app/l10n/en.lang
deleted file mode 100644
index ff49307..0000000
--- a/app/l10n/en.lang
+++ /dev/null
@@ -1,274 +0,0 @@
-# Translation note: ** String needs translation **
-;Are you sure you want to purge the cache?
-Are you sure you want to purge the cache?
-
-
-# Translation note: ** String needs translation **
-;Clear cache
-Clear cache
-
-
-# Translation note: ** String needs translation **
-;Clear cache:
-Clear cache:
-
-
-# Translation note: ** String needs translation **
-;Clear
-Clear
-
-
-# Translation note: ** String needs translation **
-;Clearing the cache will make moonmoon reload all feeds.
-Clearing the cache will make moonmoon reload all feeds.
-
-
-# Translation note: ** String needs translation **
-;Change administrator password
-Change administrator password
-
-
-# Translation note: ** String needs translation **
-;New password:
-New password:
-
-
-# Translation note: ** String needs translation **
-;Change password
-Change password
-
-
-# Translation note: ** String needs translation **
-;Add Feed
-Add Feed
-
-
-# Translation note: ** String needs translation **
-;Link:
-Link:
-
-
-# Translation note: ** String needs translation **
-;Accepted formats are RSS and ATOM. If the link is not a feed, moonmoon will try to autodiscover the feed.
-Accepted formats are RSS and ATOM. If the link is not a feed, moonmoon will try to autodiscover the feed.
-
-
-# Translation note: ** String needs translation **
-;Manage existing feeds
-Manage existing feeds
-
-
-# Translation note: ** String needs translation **
-;Number of feeds: %s
-Number of feeds: %s
-
-
-# Translation note: ** String needs translation **
-;Save changes
-Save changes
-
-
-# Translation note: ** String needs translation **
-;Delete selected Feeds
-Delete selected Feeds
-
-
-# Translation note: ** String needs translation **
-;Select :
-Select :
-
-
-# Translation note: ** String needs translation **
-;All
-All
-
-
-# Translation note: ** String needs translation **
-;None
-None
-
-
-# Translation note: ** String needs translation **
-;Selection
-Selection
-
-
-# Translation note: ** String needs translation **
-;Name
-Name
-
-
-# Translation note: ** String needs translation **
-;Last entry
-Last entry
-
-
-# Translation note: ** String needs translation **
-;Website link
-Website link
-
-
-# Translation note: ** String needs translation **
-;Feed link
-Feed link
-
-
-# Translation note: ** String needs translation **
-;Unavailable
-Unavailable
-
-# Translation note: ** String needs translation **
-;Not in cache
-Not in cache
-
-
-# Translation note: ** String needs translation **
-;Password:
-Password:
-
-
-# Translation note: ** String needs translation **
-;OK
-OK
-
-
-# Translation note: ** String needs translation **
-;moonmoon administration
-moonmoon administration
-
-
-# Translation note: ** String needs translation **
-;Back to main page
-Back to main page
-
-
-# Translation note: ** String needs translation **
-;Logout
-Logout
-
-
-# Translation note: ** String needs translation **
-;Feeds
-Feeds
-
-
-# Translation note: ** String needs translation **
-;Administration
-Administration
-
-
-# Translation note: ** String needs translation **
-;Powered by <a %s>moonmoon</a>
-Powered by <a %s>moonmoon</a>
-
-
-# Translation note: ** String needs translation **
-;No article
-No article
-
-
-# Translation note: ** String needs translation **
-;No news, good news.
-No news, good news.
-
-
-# Translation note: ** String needs translation **
-;Today
-Today
-
-
-# Translation note: ** String needs translation **
-;Go to original place
-Go to original place
-
-
-# Translation note: ** String needs translation **
-;This week
-This week
-
-
-# Translation note: ** String needs translation **
-;This month
-This month
-
-
-# Translation note: ** String needs translation **
-;Older items
-Older items
-
-
-# Translation note: ** String needs translation **
-;People
-People
-
-
-# Translation note: ** String needs translation **
-;Feed
-Feed
-
-
-# Translation note: ** String needs translation **
-;Website
-Website
-
-
-# Translation note: ** String needs translation **
-;All feeds in OPML format
-All feeds in OPML format
-
-
-# Translation note: ** String needs translation **
-;Syndicate
-Syndicate
-
-
-# Translation note: ** String needs translation **
-;Feed (ATOM)
-Feed (ATOM)
-
-
-# Translation note: ** String needs translation **
-;Archives
-Archives
-
-
-# Translation note: ** String needs translation **
-;See all headlines
-See all headlines
-
-
-# Translation note: ** String needs translation **
-;Source:
-Source:
-
-
-# Translation note: ** String needs translation **
-;You might want to <a href="install.php">install moonmoon</a>.
-You might want to <a href="install.php">install moonmoon</a>.
-
-
-# Translation note: ** String needs translation **
-;moonmoon installation
-moonmoon installation
-
-
-# Translation note: ** String needs translation **
-;Congratulations! Your moonmoon is ready.
-Congratulations! Your moonmoon is ready.
-
-
-# Translation note: ** String needs translation **
-;What's next?
-What's next?
-
-
-# Translation note: ** String needs translation **
-;<strong>Delete</strong> <code>install.php</code> with your FTP software.
-<strong>Delete</strong> <code>install.php</code> with your FTP software.
-
-
-# Translation note: ** String needs translation **
-;Use your password to go to the <a href="./admin/">administration panel</a>
-Use your password to go to the <a href="./admin/">administration panel</a>
-
-
diff --git a/app/l10n/es.lang b/app/l10n/es.lang
deleted file mode 100644
index 11b80df..0000000
--- a/app/l10n/es.lang
+++ /dev/null
@@ -1,244 +0,0 @@
-# Translation note: ¿Está seguro que desea vaciar la caché?
-;Are you sure you want to purge the cache?
-¿Está seguro de que desea vaciar la caché?
-
-
-# Translation note: Vaciar la caché
-;Clear cache
-Vaciar la caché
-
-
-# Translation note: Vaciar la caché:
-;Clear cache:
-Vaciar la caché:
-
-
-;Clear
-Vaciar
-
-
-# Translation note: Vaciar la caché hará que moonmoon recargue todas las fuentes web.
-;Clearing the cache will make moonmoon reload all feeds.
-Vaciar la caché hará que moonmoon recargue todas las fuentes web.
-
-
-# Translation note: Cambiar la contraseña de administración
-;Change administrator password
-Cambiar la contraseña de administración
-
-
-# Translation note: Nueva contraseña:
-;New password:
-Nueva contraseña:
-
-
-# Translation note: Cambiar la contraseña
-;Change password
-Cambiar la contraseña
-
-
-# Translation note: Añadir una nueva fuente web - 'feed' = 'fuente web', 'fuente' or 'canal' in spanish, but you can use 'feed' anyway.
-;Add a new feed
-Añadir una nueva fuente web
-
-
-# Translation note: Añadir fuente
-;Add Feed
-Añadir fuente
-
-
-;Link:
-Enlace:
-
-
-# Translation note: Los formatos aceptados son RSS y ATOM. Si el enlace no es una fuente web, moonmoon tratará de encontrar la fuente de forma automática.
-;Accepted formats are RSS and ATOM. If the link is not a feed, moonmoon will try to autodiscover the feed.
-Los formatos aceptados son RSS y ATOM. Si el enlace no es una fuente web, moonmoon tratará de encontrar la fuente de forma automática.
-
-
-;Manage existing feeds
-Administrar las fuentes existentes
-
-
-# Translation note: Número de fuentes
-;Number of feeds: %s
-Número de fuentes: %s
-
-
-;Save changes
-Guardar cambios
-
-
-;Delete selected Feeds
-Borrar seleccionadas
-
-
-;Select :
-Seleccionar:
-
-
-;All
-Todas
-
-
-;None
-Ninguna
-
-
-# Translation note: Selección
-;Selection
-Selección
-
-
-;Name
-Nombre
-
-# Translation note: Ãltima entrada
-;Last entry
-Última entrada
-
-
-;Website link
-Enlace a la web
-
-
-;Feed link
-Enlace a la fuente
-
-
-# Translation note: 'No está en caché' or 'No en caché'
-;Not in cache
-No está en caché
-
-
-# Translation note: Contraseña:
-;Password:
-Contraseña:
-
-
-;OK
-Entrar
-
-
-# Translation note: Administración de moonmoon
-;moonmoon administration
-Administración de moonmoon
-
-
-# Translation note: Volver a la página principal
-;Back to main page
-Volver a la página principal
-
-
-;Logout
-Salir
-
-
-;Feeds
-Fuentes
-
-
-# Translation note: Administración
-;Administration
-Administración
-
-
-;Powered by <a %s>moonmoon</a>
-Desarrollado por <a %s>moonmoon</a>
-
-
-# Translation note: Sin artÃculos
-;No article
-Sin artículos
-
-
-;No news, good news.
-No hay noticias, buena noticia.
-
-
-;Today
-Hoy
-
-
-# Translation note: Ir a la ubicación original
-;Go to original place
-Ir a la ubicación original
-
-
-;This week
-Esta semana
-
-
-;This month
-Este mes
-
-
-;Older items
-Titulares anteriores
-
-
-# Translation note: 'People' = 'Personas', but 'fuentes'(sources), which in Spanish means origins, is more generic.
-;People
-Fuentes
-
-
-;Feed
-Fuente
-
-
-;Website
-Sitio web
-
-
-;All feeds in OPML format
-Todas las fuentes (OPML)
-
-
-# Translation note: Redifusión
-;Syndicate
-Redifusión
-
-
-;Feed (ATOM)
-Fuente (ATOM)
-
-
-;Archives
-Archivos
-
-
-;See all headlines
-Ver todos los titulares
-
-
-# Translation note: You may use 'Source' = 'Origen' too.
-;Source:
-Fuente:
-
-
-;You might want to <a href="install.php">install moonmoon</a>.
-Es posible que desee <a href="install.php">instalar moonmoon</a>.
-
-
-# Translation note: Instalación de moonmoon
-;moonmoon installation
-Instalación de moonmoon
-
-
-# Translation note: ¡Felicidades! Su moonmoon está preparado.
-;Congratulations! Your moonmoon is ready.
-¡Felicidades! Su moonmoon está preparado.
-
-
-# Translation note: ¿Y ahora?
-;What's next?
-¿Y ahora?
-
-
-;<strong>Delete</strong> <code>install.php</code> with your FTP software.
-<strong>Borre</strong> <code>install.php</code> con su programa de FTP.
-
-
-# Translation note: Utilice su contraseña para acceder al panel de administración.
-;Use your password to go to the <a href="./admin/">administration panel</a>
-Utilice su contraseña para acceder al <a href="./admin/">panel de administración</a>.
diff --git a/app/l10n/extract.php b/app/l10n/extract.php
deleted file mode 100644
index 1384827..0000000
--- a/app/l10n/extract.php
+++ /dev/null
@@ -1,202 +0,0 @@
-<?php
-
-/*
- * This is a file parser to extract localizable strings from moonmoon
- *
- * It will scan the whole moonmoon repository for php files, extract
- * localized strings and their localization notes and create .lang files.
- * Existing translations will be automatically updated.
- * A short report will be displayed afterwards.
- *
- * The easiest way to add a new locale is just to create an empty .lang file and then run the script
- *
- * The script scans for the files in the l10n/ folder to know which locales are supported
- */
-
-$root = __DIR__ . '/../../';
-
-require_once __DIR__ . '/../app.php';
-
-if ($conf['debug'] !== true) {
- die('Please enable the debug mode to use extract.php.');
-}
-
-$GLOBALS['english'] = array();
-
-/*
- * This is a file parser to extract localizable strings (in .php files)
- * $GLOBALS['english'] is populated with localizable strings and their associated localization notes
- *
- */
-
-function extract_l10n_strings($file) {
- $lines = file($file);
- $patterns = array('/_g\([\'"](.*?)[\'"]\)/', '/getString\([\'"](.*?)[\'"]\)/',);
-
- foreach ($lines as $line) {
-
- // Skip comments
- if($line[0] == '#' || $line[0] == '/') continue;
-
- // parsing logic
- foreach($patterns as $pattern) {
- if(preg_match_all($pattern, $line, $matches, PREG_PATTERN_ORDER)) {
- foreach($matches[1] as $val) {
-
- // Do not extract php variables calls or empty strings
- if($val[0] == '$' || $val == '') continue;
-
- // Is there a localization comment ?
- $l10n_note = explode("',", $val);
-
- // Also test strings in double quotes
- if(count($l10n_note) == 1) {
- $l10n_note = explode('",', $val);
- }
-
- // Extract cleaned up strings
- if(count($l10n_note) == 2) {
- $l10n_str = trim($l10n_note[0]);
- $l10n_note = trim(substr(trim($l10n_note[1]),1)); # Remove quote at begining of string
- } else {
- $l10n_str = trim($val);
- $l10n_note = '';
- }
-
- if(!array_key_exists($l10n_str, $GLOBALS['english'])) {
- $GLOBALS['english'][$l10n_str] = array($l10n_str, $l10n_note);
- }
- }
- }
- }
- }
-}
-
-/*
- * This is a function echoing $GLOBALS['english'] in .lang format
- * Typical usage would be:
- * <?php
- * extract_l10n_strings('.');
- * show_l10n_strings() ;
- */
-
-function show_l10n_strings() {
-
- header('Content-Type:text/plain');
-
- foreach($GLOBALS['english'] as $val) {
- if($val[1]) {
- echo '# ' . $val[1] . "\n";
- }
- echo ";$val[0]\n";
- echo "$val[0]\n\n\n";
- }
-}
-
-/*
- * Recursively scan files in a folder
- * returns an array of file paths
- */
-
-function find_all_files($dir) {
-
- $result = array();
- $root = scandir($dir);
-
- $ignore = array('.', '..', '.git', '.svn', '.hg', 'cache', '.gitignore', 'lib');
-
- foreach($root as $value) {
-
- if(in_array($value, $ignore)) {
- continue;
- }
-
- if(is_file("$dir/$value")) {
- $split = explode('.', $value);
- if(end($split) == 'php'){
- $result[] = "$dir/$value";
- }
- continue;
- }
-
- foreach(find_all_files("$dir/$value") as $value) {
- $result[]=$value;
- }
- }
-
- return $result;
-}
-
-function update_lang_files($source, $dest) {
-
- $files = find_all_files($source);
-
- foreach($files as $file) {
- extract_l10n_strings($file);
- }
-
-
- $files = scandir($dest);
- $ignore = array('.', '..');
-
-
- // list locales
- $locales = array();
- foreach($files as $file) {
-
- if(in_array($file, $ignore)) {
- continue;
- }
-
- $split = explode('.', $file);
-
- if($split[1] == 'lang') {
- $locales[] = $split[0];
- }
- }
-
-
- foreach($locales as $locale) {
- $status[$locale] = 0;
- $lang_file_path = $dest . '/' . $locale;
-
- Simplel10n::load($lang_file_path);
-
- ob_start();
- foreach($GLOBALS['english'] as $key => $val) {
- $warning = '';
- $value = @Simplel10n::extractString($key);
-
- if($value == $val[0]) {
- $status[$locale]++;
- $warning = ' ** String needs translation **';
- }
-
- if($val[1]) {
- echo '# Translation note: ' . $val[1] . $warning . "\n";
- } elseif($warning != '') {
- echo '# Translation note: ' . $warning . "\n";
- }
-
- echo ";$val[0]\n";
- echo $value . "\n\n\n";
- }
-
- $content = ob_get_contents();
- ob_end_clean();
- file_put_contents($lang_file_path. '.lang', $content);
-
- unset($GLOBALS['locale']);
- }
-
-
- // Display a short status report
- header('Content-Type:text/plain');
- echo "Number of English strings: " . count($GLOBALS['english']) . "\n";
- echo "Your installation has these languages installed: " . implode(', ', $locales) . "\n";
- foreach($locales as $val) {
- echo $val . " has " . $status[$val] . " untranslated strings.\n";
- }
-}
-
-update_lang_files($root, $root . 'app/l10n');
diff --git a/app/l10n/fr.lang b/app/l10n/fr.lang
deleted file mode 100644
index 4e2a568..0000000
--- a/app/l10n/fr.lang
+++ /dev/null
@@ -1,220 +0,0 @@
-;Are you sure you want to purge the cache?
-Ãtes-vous sûr de vouloir vider le cache ?
-
-
-;Clear cache
-Vider le cache
-
-
-;Clear cache:
-Vider le cache :
-
-
-;Clear
-Vider
-
-
-;Clearing the cache will make moonmoon reload all feeds.
-Vider le cache forcera moonmoon à recharger tous les flux.
-
-
-;Change administrator password
-Changer le mot de passe de l'administrateur
-
-
-;New password:
-Nouveau mot de passe :
-
-
-;Change password
-Changer le mot de passe
-
-
-;Add Feed
-Ajouter un flux
-
-
-;Link:
-Lien :
-
-
-;Accepted formats are RSS and ATOM. If the link is not a feed, moonmoon will try to autodiscover the feed.
-Les formats valides sont RSS et ATOM. Si le lien n'est pas un flux, moonmoon essaiera de trouver le flux automatiquement.
-
-
-;Manage existing feeds
-Gérer les flux
-
-
-;Number of feeds: %s
-Nombre de flux : %s
-
-
-;Save changes
-Enregistrer les changements
-
-
-;Delete selected Feeds
-Effacer les flux sélectionnés
-
-
-;Select :
-Sélectionner
-
-
-;All
-Tout
-
-
-;None
-Aucun
-
-
-;Selection
-Sélection
-
-
-;Name
-Titre
-
-
-;Last entry
-Dernière entrée
-
-
-;Website link
-Lien du site
-
-
-;Feed link
-Lien du Flux
-
-
-;Unavailable
-Indisponible
-
-
-;Not in cache
-Pas en cache
-
-
-;Password:
-Mot de passe :
-
-
-;OK
-OK {ok}
-
-
-;moonmoon administration
-Administration de moonmoon
-
-
-;Back to main page
-Retour à l'accueil
-
-
-;Logout
-Déconnexion
-
-
-;Feeds
-Flux
-
-
-;Administration
-Administration {ok}
-
-
-;Powered by <a %s>moonmoon</a>
-Propulsé par <a %s>moonmoon</a>
-
-
-;No article
-Pas d'articles
-
-
-;No news, good news.
-Pas de nouvelles, bonne nouvelle.
-
-
-;Today
-Aujourd'hui
-
-
-;Go to original place
-Aller à l'emplacement d'origine
-
-
-;This week
-Cette semaine
-
-
-;This month
-Ce mois
-
-
-;Older items
-Billets plus anciens
-
-
-;People
-Personnes
-
-
-;Feed
-Flux
-
-
-;Website
-Site Web
-
-
-;All feeds in OPML format
-Tous les flux au format OPML
-
-
-;Syndicate
-Syndiquer
-
-
-;Feed (ATOM)
-Flux (ATOM)
-
-
-;Archives
-Archives{ok}
-
-
-;See all headlines
-Afficher tous les titres
-
-
-;Source:
-Source :
-
-
-;You might want to <a href="install.php">install moonmoon</a>.
-Vous voulez probablement <a href="install.php">installer moonmoon</a>.
-
-
-;moonmoon installation
-Installation de moonmoon
-
-
-;Congratulations! Your moonmoon is ready.
-Félicitations ! Votre moonmoon est prêt.
-
-
-;What's next?
-Et maintenant ?
-
-
-;<strong>Delete</strong> <code>install.php</code> with your FTP software.
-<strong>Effacez</strong> <code>install.php</code> avec votre logiciel FTP.
-
-
-;Use your password to go to the <a href="./admin/">administration panel</a>
-Utilisez votre mot de passe pour vous rendre sur la <a href="./admin/">console d'administration</a>
-
-
diff --git a/apple-touch-icon.png b/apple-touch-icon.png
deleted file mode 100644
index 3584ef8..0000000
Binary files a/apple-touch-icon.png and /dev/null differ
diff --git a/atom.php b/atom.php
deleted file mode 100644
index 8b118d7..0000000
--- a/atom.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-include_once(__DIR__.'/app/app.php');
-include_once(__DIR__.'/app/lib/Cache.php');
-
-if ($Planet->loadOpml(__DIR__.'/custom/people.opml') == 0) exit;
-
-$Planet->loadFeeds();
-$items = $Planet->getItems();
-$limit = $PlanetConfig->getMaxDisplay();
-$count = 0;
-
-header('Content-Type: text/xml; charset=UTF-8');
-echo '<?xml version="1.0" encoding="UTF-8" ?>';
-?>
-<feed xmlns="http://www.w3.org/2005/Atom">
- <title><?=htmlspecialchars($PlanetConfig->getName())?></title>
- <subtitle><?=htmlspecialchars($PlanetConfig->getName())?></subtitle>
- <id><?=$PlanetConfig->getUrl()?></id>
- <link rel="self" type="application/atom+xml" href="<?=$PlanetConfig->getUrl()?>atom.php" />
- <link rel="alternate" type="text/html" href="<?=$PlanetConfig->getUrl()?>" />
- <updated><?=date("Y-m-d\TH:i:s\Z")?></updated>
- <author><name><?=htmlspecialchars($PlanetConfig->getName())?></name></author>
-
-<?php $count = 0; ?>
-<?php foreach ($items as $item): ?>
-
- <entry>
- <title type="html"><?=htmlspecialchars($item->get_feed()->getName())?> : <?=htmlspecialchars($item->get_title())?></title>
- <id><?=htmlspecialchars($item->get_permalink())?></id>
- <link rel="alternate" href="<?=htmlspecialchars($item->get_permalink())?>"/>
- <published><?=$item->get_date('Y-m-d\\TH:i:s+00:00')?></published>
- <updated><?=$item->get_date('Y-m-d\\TH:i:s+00:00')?></updated>
- <author><name><?=($item->get_author_name())?></name></author>
-
- <content type="html"><![CDATA[<?=$item->get_content()?>]]></content>
- </entry>
-
-<?php if (++$count == $limit) break; ?>
-<?php endforeach; ?>
-
-</feed>
diff --git a/bin/build_release.sh b/bin/build_release.sh
deleted file mode 100644
index 2f09661..0000000
--- a/bin/build_release.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-
-set -eu
-
-tmp=$(mktemp -d -t moonmmon)
-
-echo "[*] Building into $tmp..."
-
-cd "$tmp"
-git clone https://github.com/moonmoon/moonmoon.git --depth=1 --recursive -j8
-cd moonmoon
-composer install --no-suggest --prefer-dist --no-dev
-git describe --abbrev=0 --tags > VERSION
-find . -name .DS_Store -exec rm {} \;
-rm -rf .git .github .travis.yml .gitignore .gitmodules docs/.git/
-mkdir cache
-cd ..
-zip -r "moonmoon-$(cat moonmoon/VERSION).zip" .
-
-echo "[*] Grab the archive: ${tmp}/moonmoon-$(cat moonmoon/VERSION).zip"
diff --git a/browserconfig.xml b/browserconfig.xml
deleted file mode 100644
index 65b8900..0000000
--- a/browserconfig.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<browserconfig>
- <msapplication>
- <tile>
- <square150x150logo src="/mstile-150x150.png"/>
- <TileColor>#cc6600</TileColor>
- </tile>
- </msapplication>
-</browserconfig>
diff --git a/cache/.dir b/cache/.dir
deleted file mode 100644
index e69de29..0000000
diff --git a/composer.json b/composer.json
deleted file mode 100644
index b56e423..0000000
--- a/composer.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "name": "mauricesvay/moonmoon",
- "description": "Moonmoon is a simple feed aggregator.",
- "homepage": "http://moonmoon.org/",
- "type": "project",
- "license": "BSD",
- "authors": [
- {
- "name": "Maurice Svay",
- "email": "maurice at svay.com"
- }
- ],
- "minimum-stability": "stable",
- "require": {
- "php": "^7.0",
- "mustangostang/spyc": "^0.6.3",
- "simplepie/simplepie": "^1.5.5"
- },
- "require-dev": {
- "guzzlehttp/guzzle": "^6.5",
- "phpunit/phpunit": "^9.0"
- },
- "scripts": {
- "test": ""
- },
- "autoload": {
- "psr-0": {
- "": "app/classes/"
- },
- "files": [
- "app/helpers.php"
- ]
- }
-}
diff --git a/composer.lock b/composer.lock
deleted file mode 100644
index 707143b..0000000
--- a/composer.lock
+++ /dev/null
@@ -1,2219 +0,0 @@
-{
- "_readme": [
- "This file locks the dependencies of your project to a known state",
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
- "This file is @generated automatically"
- ],
- "content-hash": "35e951309f2c602718c3f82b224fe0aa",
- "packages": [
- {
- "name": "mustangostang/spyc",
- "version": "0.6.3",
- "source": {
- "type": "git",
- "url": "git at github.com:mustangostang/spyc.git",
- "reference": "4627c838b16550b666d15aeae1e5289dd5b77da0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/mustangostang/spyc/zipball/4627c838b16550b666d15aeae1e5289dd5b77da0",
- "reference": "4627c838b16550b666d15aeae1e5289dd5b77da0",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.1"
- },
- "require-dev": {
- "phpunit/phpunit": "4.3.*@dev"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "0.5.x-dev"
- }
- },
- "autoload": {
- "files": [
- "Spyc.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "mustangostang",
- "email": "vlad.andersen at gmail.com"
- }
- ],
- "description": "A simple YAML loader/dumper class for PHP",
- "homepage": "https://github.com/mustangostang/spyc/",
- "keywords": [
- "spyc",
- "yaml",
- "yml"
- ],
- "time": "2019-09-10T13:16:29+00:00"
- },
- {
- "name": "simplepie/simplepie",
- "version": "1.5.5",
- "source": {
- "type": "git",
- "url": "https://github.com/simplepie/simplepie.git",
- "reference": "ae49e2201b6da9c808e5dac437aca356a11831b4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/simplepie/simplepie/zipball/ae49e2201b6da9c808e5dac437aca356a11831b4",
- "reference": "ae49e2201b6da9c808e5dac437aca356a11831b4",
- "shasum": ""
- },
- "require": {
- "ext-pcre": "*",
- "ext-xml": "*",
- "ext-xmlreader": "*",
- "php": ">=5.6.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~5.4.3 || ~6.5"
- },
- "suggest": {
- "ext-curl": "",
- "ext-iconv": "",
- "ext-intl": "",
- "ext-mbstring": "",
- "mf2/mf2": "Microformat module that allows for parsing HTML for microformats"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "SimplePie": "library"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Ryan Parman",
- "homepage": "http://ryanparman.com/",
- "role": "Creator, alumnus developer"
- },
- {
- "name": "Sam Sneddon",
- "homepage": "https://gsnedders.com/",
- "role": "Alumnus developer"
- },
- {
- "name": "Ryan McCue",
- "email": "me at ryanmccue.info",
- "homepage": "http://ryanmccue.info/",
- "role": "Developer"
- }
- ],
- "description": "A simple Atom/RSS parsing library for PHP",
- "homepage": "http://simplepie.org/",
- "keywords": [
- "atom",
- "feeds",
- "rss"
- ],
- "time": "2020-05-01T12:23:14+00:00"
- }
- ],
- "packages-dev": [
- {
- "name": "doctrine/instantiator",
- "version": "1.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/instantiator.git",
- "reference": "f350df0268e904597e3bd9c4685c53e0e333feea"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea",
- "reference": "f350df0268e904597e3bd9c4685c53e0e333feea",
- "shasum": ""
- },
- "require": {
- "php": "^7.1 || ^8.0"
- },
- "require-dev": {
- "doctrine/coding-standard": "^6.0",
- "ext-pdo": "*",
- "ext-phar": "*",
- "phpbench/phpbench": "^0.13",
- "phpstan/phpstan-phpunit": "^0.11",
- "phpstan/phpstan-shim": "^0.11",
- "phpunit/phpunit": "^7.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Marco Pivetta",
- "email": "ocramius at gmail.com",
- "homepage": "http://ocramius.github.com/"
- }
- ],
- "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
- "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
- "keywords": [
- "constructor",
- "instantiate"
- ],
- "time": "2020-05-29T17:27:14+00:00"
- },
- {
- "name": "guzzlehttp/guzzle",
- "version": "6.5.4",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/guzzle.git",
- "reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a4a1b6930528a8f7ee03518e6442ec7a44155d9d",
- "reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "guzzlehttp/promises": "^1.0",
- "guzzlehttp/psr7": "^1.6.1",
- "php": ">=5.5",
- "symfony/polyfill-intl-idn": "1.17.0"
- },
- "require-dev": {
- "ext-curl": "*",
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
- "psr/log": "^1.1"
- },
- "suggest": {
- "psr/log": "Required for using the Log middleware"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "6.5-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling at gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "description": "Guzzle is a PHP HTTP client library",
- "homepage": "http://guzzlephp.org/",
- "keywords": [
- "client",
- "curl",
- "framework",
- "http",
- "http client",
- "rest",
- "web service"
- ],
- "time": "2020-05-25T19:35:05+00:00"
- },
- {
- "name": "guzzlehttp/promises",
- "version": "v1.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/promises.git",
- "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
- "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Promise\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling at gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "description": "Guzzle promises library",
- "keywords": [
- "promise"
- ],
- "time": "2016-12-20T10:07:11+00:00"
- },
- {
- "name": "guzzlehttp/psr7",
- "version": "1.6.1",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/psr7.git",
- "reference": "239400de7a173fe9901b9ac7c06497751f00727a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a",
- "reference": "239400de7a173fe9901b9ac7c06497751f00727a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0",
- "psr/http-message": "~1.0",
- "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
- },
- "provide": {
- "psr/http-message-implementation": "1.0"
- },
- "require-dev": {
- "ext-zlib": "*",
- "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
- },
- "suggest": {
- "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.6-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Psr7\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling at gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "Tobias Schultze",
- "homepage": "https://github.com/Tobion"
- }
- ],
- "description": "PSR-7 message implementation that also provides common utility methods",
- "keywords": [
- "http",
- "message",
- "psr-7",
- "request",
- "response",
- "stream",
- "uri",
- "url"
- ],
- "time": "2019-07-01T23:21:34+00:00"
- },
- {
- "name": "myclabs/deep-copy",
- "version": "1.9.5",
- "source": {
- "type": "git",
- "url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef",
- "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef",
- "shasum": ""
- },
- "require": {
- "php": "^7.1"
- },
- "replace": {
- "myclabs/deep-copy": "self.version"
- },
- "require-dev": {
- "doctrine/collections": "^1.0",
- "doctrine/common": "^2.6",
- "phpunit/phpunit": "^7.1"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "DeepCopy\\": "src/DeepCopy/"
- },
- "files": [
- "src/DeepCopy/deep_copy.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Create deep copies (clones) of your objects",
- "keywords": [
- "clone",
- "copy",
- "duplicate",
- "object",
- "object graph"
- ],
- "time": "2020-01-17T21:11:47+00:00"
- },
- {
- "name": "phar-io/manifest",
- "version": "1.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/phar-io/manifest.git",
- "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
- "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-phar": "*",
- "phar-io/version": "^2.0",
- "php": "^5.6 || ^7.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Arne Blankerts",
- "email": "arne at blankerts.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Heuer",
- "email": "sebastian at phpeople.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de",
- "role": "Developer"
- }
- ],
- "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
- "time": "2018-07-08T19:23:20+00:00"
- },
- {
- "name": "phar-io/version",
- "version": "2.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/phar-io/version.git",
- "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6",
- "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6",
- "shasum": ""
- },
- "require": {
- "php": "^5.6 || ^7.0"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Arne Blankerts",
- "email": "arne at blankerts.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Heuer",
- "email": "sebastian at phpeople.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de",
- "role": "Developer"
- }
- ],
- "description": "Library for handling version information and constraints",
- "time": "2018-07-08T19:19:57+00:00"
- },
- {
- "name": "phpdocumentor/reflection-common",
- "version": "2.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/6568f4687e5b41b054365f9ae03fcb1ed5f2069b",
- "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jaap van Otterdijk",
- "email": "opensource at ijaap.nl"
- }
- ],
- "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
- "homepage": "http://www.phpdoc.org",
- "keywords": [
- "FQSEN",
- "phpDocumentor",
- "phpdoc",
- "reflection",
- "static analysis"
- ],
- "time": "2020-04-27T09:25:28+00:00"
- },
- {
- "name": "phpdocumentor/reflection-docblock",
- "version": "5.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e",
- "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e",
- "shasum": ""
- },
- "require": {
- "ext-filter": "^7.1",
- "php": "^7.2",
- "phpdocumentor/reflection-common": "^2.0",
- "phpdocumentor/type-resolver": "^1.0",
- "webmozart/assert": "^1"
- },
- "require-dev": {
- "doctrine/instantiator": "^1",
- "mockery/mockery": "^1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "me at mikevanriel.com"
- },
- {
- "name": "Jaap van Otterdijk",
- "email": "account at ijaap.nl"
- }
- ],
- "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
- "time": "2020-02-22T12:28:44+00:00"
- },
- {
- "name": "phpdocumentor/type-resolver",
- "version": "1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "7462d5f123dfc080dfdf26897032a6513644fc95"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/7462d5f123dfc080dfdf26897032a6513644fc95",
- "reference": "7462d5f123dfc080dfdf26897032a6513644fc95",
- "shasum": ""
- },
- "require": {
- "php": "^7.2",
- "phpdocumentor/reflection-common": "^2.0"
- },
- "require-dev": {
- "ext-tokenizer": "^7.2",
- "mockery/mockery": "~1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "me at mikevanriel.com"
- }
- ],
- "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
- "time": "2020-02-18T18:59:58+00:00"
- },
- {
- "name": "phpspec/prophecy",
- "version": "v1.10.3",
- "source": {
- "type": "git",
- "url": "https://github.com/phpspec/prophecy.git",
- "reference": "451c3cd1418cf640de218914901e51b064abb093"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
- "reference": "451c3cd1418cf640de218914901e51b064abb093",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.0.2",
- "php": "^5.3|^7.0",
- "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
- "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
- "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
- },
- "require-dev": {
- "phpspec/phpspec": "^2.5 || ^3.2",
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.10.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Prophecy\\": "src/Prophecy"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Konstantin Kudryashov",
- "email": "ever.zet at gmail.com",
- "homepage": "http://everzet.com"
- },
- {
- "name": "Marcello Duarte",
- "email": "marcello.duarte at gmail.com"
- }
- ],
- "description": "Highly opinionated mocking framework for PHP 5.3+",
- "homepage": "https://github.com/phpspec/prophecy",
- "keywords": [
- "Double",
- "Dummy",
- "fake",
- "mock",
- "spy",
- "stub"
- ],
- "time": "2020-03-05T15:02:03+00:00"
- },
- {
- "name": "phpunit/php-code-coverage",
- "version": "8.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "ca6647ffddd2add025ab3f21644a441d7c146cdc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca6647ffddd2add025ab3f21644a441d7c146cdc",
- "reference": "ca6647ffddd2add025ab3f21644a441d7c146cdc",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-xmlwriter": "*",
- "php": "^7.3",
- "phpunit/php-file-iterator": "^3.0",
- "phpunit/php-text-template": "^2.0",
- "phpunit/php-token-stream": "^4.0",
- "sebastian/code-unit-reverse-lookup": "^2.0",
- "sebastian/environment": "^5.0",
- "sebastian/version": "^3.0",
- "theseer/tokenizer": "^1.1.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.0"
- },
- "suggest": {
- "ext-pcov": "*",
- "ext-xdebug": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "8.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
- "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
- "keywords": [
- "coverage",
- "testing",
- "xunit"
- ],
- "time": "2020-05-23T08:02:54+00:00"
- },
- {
- "name": "phpunit/php-file-iterator",
- "version": "3.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "4ac5b3e13df14829daa60a2eb4fdd2f2b7d33cf4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/4ac5b3e13df14829daa60a2eb4fdd2f2b7d33cf4",
- "reference": "4ac5b3e13df14829daa60a2eb4fdd2f2b7d33cf4",
- "shasum": ""
- },
- "require": {
- "php": "^7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de",
- "role": "lead"
- }
- ],
- "description": "FilterIterator implementation that filters files based on a list of suffixes.",
- "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
- "keywords": [
- "filesystem",
- "iterator"
- ],
- "time": "2020-04-18T05:02:12+00:00"
- },
- {
- "name": "phpunit/php-invoker",
- "version": "3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-invoker.git",
- "reference": "7579d5a1ba7f3ac11c80004d205877911315ae7a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/7579d5a1ba7f3ac11c80004d205877911315ae7a",
- "reference": "7579d5a1ba7f3ac11c80004d205877911315ae7a",
- "shasum": ""
- },
- "require": {
- "php": "^7.3"
- },
- "require-dev": {
- "ext-pcntl": "*",
- "phpunit/phpunit": "^9.0"
- },
- "suggest": {
- "ext-pcntl": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Invoke callables with a timeout",
- "homepage": "https://github.com/sebastianbergmann/php-invoker/",
- "keywords": [
- "process"
- ],
- "time": "2020-02-07T06:06:11+00:00"
- },
- {
- "name": "phpunit/php-text-template",
- "version": "2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "526dc996cc0ebdfa428cd2dfccd79b7b53fee346"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/526dc996cc0ebdfa428cd2dfccd79b7b53fee346",
- "reference": "526dc996cc0ebdfa428cd2dfccd79b7b53fee346",
- "shasum": ""
- },
- "require": {
- "php": "^7.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Simple template engine.",
- "homepage": "https://github.com/sebastianbergmann/php-text-template/",
- "keywords": [
- "template"
- ],
- "time": "2020-02-01T07:43:44+00:00"
- },
- {
- "name": "phpunit/php-timer",
- "version": "3.1.4",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "dc9368fae6ef2ffa57eba80a7410bcef81df6258"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/dc9368fae6ef2ffa57eba80a7410bcef81df6258",
- "reference": "dc9368fae6ef2ffa57eba80a7410bcef81df6258",
- "shasum": ""
- },
- "require": {
- "php": "^7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Utility class for timing",
- "homepage": "https://github.com/sebastianbergmann/php-timer/",
- "keywords": [
- "timer"
- ],
- "time": "2020-04-20T06:00:37+00:00"
- },
- {
- "name": "phpunit/php-token-stream",
- "version": "4.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-token-stream.git",
- "reference": "cdc0db5aed8fbfaf475fbd95bfd7bab83c7a779c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/cdc0db5aed8fbfaf475fbd95bfd7bab83c7a779c",
- "reference": "cdc0db5aed8fbfaf475fbd95bfd7bab83c7a779c",
- "shasum": ""
- },
- "require": {
- "ext-tokenizer": "*",
- "php": "^7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de"
- }
- ],
- "description": "Wrapper around PHP's tokenizer extension.",
- "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
- "keywords": [
- "tokenizer"
- ],
- "time": "2020-05-06T09:56:31+00:00"
- },
- {
- "name": "phpunit/phpunit",
- "version": "9.1.5",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "1b570cd7edbe136055bf5f651857dc8af6b829d2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1b570cd7edbe136055bf5f651857dc8af6b829d2",
- "reference": "1b570cd7edbe136055bf5f651857dc8af6b829d2",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.2.0",
- "ext-dom": "*",
- "ext-json": "*",
- "ext-libxml": "*",
- "ext-mbstring": "*",
- "ext-xml": "*",
- "ext-xmlwriter": "*",
- "myclabs/deep-copy": "^1.9.1",
- "phar-io/manifest": "^1.0.3",
- "phar-io/version": "^2.0.1",
- "php": "^7.3",
- "phpspec/prophecy": "^1.8.1",
- "phpunit/php-code-coverage": "^8.0.1",
- "phpunit/php-file-iterator": "^3.0",
- "phpunit/php-invoker": "^3.0",
- "phpunit/php-text-template": "^2.0",
- "phpunit/php-timer": "^3.1.4",
- "sebastian/code-unit": "^1.0.2",
- "sebastian/comparator": "^4.0",
- "sebastian/diff": "^4.0",
- "sebastian/environment": "^5.0.1",
- "sebastian/exporter": "^4.0",
- "sebastian/global-state": "^4.0",
- "sebastian/object-enumerator": "^4.0",
- "sebastian/resource-operations": "^3.0",
- "sebastian/type": "^2.0",
- "sebastian/version": "^3.0"
- },
- "require-dev": {
- "ext-pdo": "*",
- "phpspec/prophecy-phpunit": "^2.0"
- },
- "suggest": {
- "ext-soap": "*",
- "ext-xdebug": "*"
- },
- "bin": [
- "phpunit"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "9.1-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ],
- "files": [
- "src/Framework/Assert/Functions.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de",
- "role": "lead"
- }
- ],
- "description": "The PHP Unit Testing framework.",
- "homepage": "https://phpunit.de/",
- "keywords": [
- "phpunit",
- "testing",
- "xunit"
- ],
- "time": "2020-05-22T13:54:05+00:00"
- },
- {
- "name": "psr/http-message",
- "version": "1.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-message.git",
- "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
- "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Http\\Message\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for HTTP messages",
- "homepage": "https://github.com/php-fig/http-message",
- "keywords": [
- "http",
- "http-message",
- "psr",
- "psr-7",
- "request",
- "response"
- ],
- "time": "2016-08-06T14:39:51+00:00"
- },
- {
- "name": "ralouphie/getallheaders",
- "version": "3.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/ralouphie/getallheaders.git",
- "reference": "120b605dfeb996808c31b6477290a714d356e822"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
- "reference": "120b605dfeb996808c31b6477290a714d356e822",
- "shasum": ""
- },
- "require": {
- "php": ">=5.6"
- },
- "require-dev": {
- "php-coveralls/php-coveralls": "^2.1",
- "phpunit/phpunit": "^5 || ^6.5"
- },
- "type": "library",
- "autoload": {
- "files": [
- "src/getallheaders.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ralph Khattar",
- "email": "ralph.khattar at gmail.com"
- }
- ],
- "description": "A polyfill for getallheaders.",
- "time": "2019-03-08T08:55:37+00:00"
- },
- {
- "name": "sebastian/code-unit",
- "version": "1.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/code-unit.git",
- "reference": "ac958085bc19fcd1d36425c781ef4cbb5b06e2a5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/ac958085bc19fcd1d36425c781ef4cbb5b06e2a5",
- "reference": "ac958085bc19fcd1d36425c781ef4cbb5b06e2a5",
- "shasum": ""
- },
- "require": {
- "php": "^7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Collection of value objects that represent the PHP code units",
- "homepage": "https://github.com/sebastianbergmann/code-unit",
- "time": "2020-04-30T05:58:10+00:00"
- },
- {
- "name": "sebastian/code-unit-reverse-lookup",
- "version": "2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
- "reference": "5b5dbe0044085ac41df47e79d34911a15b96d82e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5b5dbe0044085ac41df47e79d34911a15b96d82e",
- "reference": "5b5dbe0044085ac41df47e79d34911a15b96d82e",
- "shasum": ""
- },
- "require": {
- "php": "^7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de"
- }
- ],
- "description": "Looks up which function or method a line of code belongs to",
- "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
- "time": "2020-02-07T06:20:13+00:00"
- },
- {
- "name": "sebastian/comparator",
- "version": "4.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "85b3435da967696ed618ff745f32be3ff4a2b8e8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/85b3435da967696ed618ff745f32be3ff4a2b8e8",
- "reference": "85b3435da967696ed618ff745f32be3ff4a2b8e8",
- "shasum": ""
- },
- "require": {
- "php": "^7.3",
- "sebastian/diff": "^4.0",
- "sebastian/exporter": "^4.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de"
- },
- {
- "name": "Jeff Welch",
- "email": "whatthejeff at gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github at wallbash.com"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek at 2bepublished.at"
- }
- ],
- "description": "Provides the functionality to compare PHP values for equality",
- "homepage": "https://github.com/sebastianbergmann/comparator",
- "keywords": [
- "comparator",
- "compare",
- "equality"
- ],
- "time": "2020-02-07T06:08:51+00:00"
- },
- {
- "name": "sebastian/diff",
- "version": "4.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "3e523c576f29dacecff309f35e4cc5a5c168e78a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3e523c576f29dacecff309f35e4cc5a5c168e78a",
- "reference": "3e523c576f29dacecff309f35e4cc5a5c168e78a",
- "shasum": ""
- },
- "require": {
- "php": "^7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.0",
- "symfony/process": "^4.2 || ^5"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de"
- },
- {
- "name": "Kore Nordmann",
- "email": "mail at kore-nordmann.de"
- }
- ],
- "description": "Diff implementation",
- "homepage": "https://github.com/sebastianbergmann/diff",
- "keywords": [
- "diff",
- "udiff",
- "unidiff",
- "unified diff"
- ],
- "time": "2020-05-08T05:01:12+00:00"
- },
- {
- "name": "sebastian/environment",
- "version": "5.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "c753f04d68cd489b6973cf9b4e505e191af3b05c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/c753f04d68cd489b6973cf9b4e505e191af3b05c",
- "reference": "c753f04d68cd489b6973cf9b4e505e191af3b05c",
- "shasum": ""
- },
- "require": {
- "php": "^7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.0"
- },
- "suggest": {
- "ext-posix": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de"
- }
- ],
- "description": "Provides functionality to handle HHVM/PHP environments",
- "homepage": "http://www.github.com/sebastianbergmann/environment",
- "keywords": [
- "Xdebug",
- "environment",
- "hhvm"
- ],
- "time": "2020-04-14T13:36:52+00:00"
- },
- {
- "name": "sebastian/exporter",
- "version": "4.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "80c26562e964016538f832f305b2286e1ec29566"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/80c26562e964016538f832f305b2286e1ec29566",
- "reference": "80c26562e964016538f832f305b2286e1ec29566",
- "shasum": ""
- },
- "require": {
- "php": "^7.3",
- "sebastian/recursion-context": "^4.0"
- },
- "require-dev": {
- "ext-mbstring": "*",
- "phpunit/phpunit": "^9.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de"
- },
- {
- "name": "Jeff Welch",
- "email": "whatthejeff at gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github at wallbash.com"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey at php.net"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek at gmail.com"
- }
- ],
- "description": "Provides the functionality to export PHP variables for visualization",
- "homepage": "http://www.github.com/sebastianbergmann/exporter",
- "keywords": [
- "export",
- "exporter"
- ],
- "time": "2020-02-07T06:10:52+00:00"
- },
- {
- "name": "sebastian/global-state",
- "version": "4.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "bdb1e7c79e592b8c82cb1699be3c8743119b8a72"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bdb1e7c79e592b8c82cb1699be3c8743119b8a72",
- "reference": "bdb1e7c79e592b8c82cb1699be3c8743119b8a72",
- "shasum": ""
- },
- "require": {
- "php": "^7.3",
- "sebastian/object-reflector": "^2.0",
- "sebastian/recursion-context": "^4.0"
- },
- "require-dev": {
- "ext-dom": "*",
- "phpunit/phpunit": "^9.0"
- },
- "suggest": {
- "ext-uopz": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de"
- }
- ],
- "description": "Snapshotting of global state",
- "homepage": "http://www.github.com/sebastianbergmann/global-state",
- "keywords": [
- "global state"
- ],
- "time": "2020-02-07T06:11:37+00:00"
- },
- {
- "name": "sebastian/object-enumerator",
- "version": "4.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/object-enumerator.git",
- "reference": "e67516b175550abad905dc952f43285957ef4363"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67516b175550abad905dc952f43285957ef4363",
- "reference": "e67516b175550abad905dc952f43285957ef4363",
- "shasum": ""
- },
- "require": {
- "php": "^7.3",
- "sebastian/object-reflector": "^2.0",
- "sebastian/recursion-context": "^4.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de"
- }
- ],
- "description": "Traverses array structures and object graphs to enumerate all referenced objects",
- "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
- "time": "2020-02-07T06:12:23+00:00"
- },
- {
- "name": "sebastian/object-reflector",
- "version": "2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/object-reflector.git",
- "reference": "f4fd0835cabb0d4a6546d9fe291e5740037aa1e7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/f4fd0835cabb0d4a6546d9fe291e5740037aa1e7",
- "reference": "f4fd0835cabb0d4a6546d9fe291e5740037aa1e7",
- "shasum": ""
- },
- "require": {
- "php": "^7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de"
- }
- ],
- "description": "Allows reflection of object attributes, including inherited and non-public ones",
- "homepage": "https://github.com/sebastianbergmann/object-reflector/",
- "time": "2020-02-07T06:19:40+00:00"
- },
- {
- "name": "sebastian/recursion-context",
- "version": "4.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "cdd86616411fc3062368b720b0425de10bd3d579"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cdd86616411fc3062368b720b0425de10bd3d579",
- "reference": "cdd86616411fc3062368b720b0425de10bd3d579",
- "shasum": ""
- },
- "require": {
- "php": "^7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de"
- },
- {
- "name": "Jeff Welch",
- "email": "whatthejeff at gmail.com"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey at php.net"
- }
- ],
- "description": "Provides functionality to recursively process PHP variables",
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
- "time": "2020-02-07T06:18:20+00:00"
- },
- {
- "name": "sebastian/resource-operations",
- "version": "3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/resource-operations.git",
- "reference": "8c98bf0dfa1f9256d0468b9803a1e1df31b6fa98"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/8c98bf0dfa1f9256d0468b9803a1e1df31b6fa98",
- "reference": "8c98bf0dfa1f9256d0468b9803a1e1df31b6fa98",
- "shasum": ""
- },
- "require": {
- "php": "^7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de"
- }
- ],
- "description": "Provides a list of PHP built-in functions that operate on resources",
- "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
- "time": "2020-02-07T06:13:02+00:00"
- },
- {
- "name": "sebastian/type",
- "version": "2.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/type.git",
- "reference": "bad49207c6f854e7a25cef0ea948ac8ebe3ef9d8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/bad49207c6f854e7a25cef0ea948ac8ebe3ef9d8",
- "reference": "bad49207c6f854e7a25cef0ea948ac8ebe3ef9d8",
- "shasum": ""
- },
- "require": {
- "php": "^7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.1-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Collection of value objects that represent the types of the PHP type system",
- "homepage": "https://github.com/sebastianbergmann/type",
- "time": "2020-06-01T12:21:09+00:00"
- },
- {
- "name": "sebastian/version",
- "version": "3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/version.git",
- "reference": "0411bde656dce64202b39c2f4473993a9081d39e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/0411bde656dce64202b39c2f4473993a9081d39e",
- "reference": "0411bde656dce64202b39c2f4473993a9081d39e",
- "shasum": ""
- },
- "require": {
- "php": "^7.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian at phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library that helps with managing the version number of Git-hosted PHP projects",
- "homepage": "https://github.com/sebastianbergmann/version",
- "time": "2020-01-21T06:36:37+00:00"
- },
- {
- "name": "symfony/polyfill-ctype",
- "version": "v1.17.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e94c8b1bbe2bc77507a1056cdb06451c75b427f9",
- "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "suggest": {
- "ext-ctype": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.17-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Ctype\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Gert de Pagter",
- "email": "BackEndTea at gmail.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for ctype functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "ctype",
- "polyfill",
- "portable"
- ],
- "time": "2020-05-12T16:14:59+00:00"
- },
- {
- "name": "symfony/polyfill-intl-idn",
- "version": "v1.17.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a",
- "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "symfony/polyfill-mbstring": "^1.3",
- "symfony/polyfill-php72": "^1.10"
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.17-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Intl\\Idn\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Laurent Bassin",
- "email": "laurent at bassin.info"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "idn",
- "intl",
- "polyfill",
- "portable",
- "shim"
- ],
- "time": "2020-05-12T16:47:27+00:00"
- },
- {
- "name": "symfony/polyfill-mbstring",
- "version": "v1.17.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "fa79b11539418b02fc5e1897267673ba2c19419c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c",
- "reference": "fa79b11539418b02fc5e1897267673ba2c19419c",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "suggest": {
- "ext-mbstring": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.17-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Mbstring\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p at tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for the Mbstring extension",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "mbstring",
- "polyfill",
- "portable",
- "shim"
- ],
- "time": "2020-05-12T16:47:27+00:00"
- },
- {
- "name": "symfony/polyfill-php72",
- "version": "v1.17.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "f048e612a3905f34931127360bdd2def19a5e582"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582",
- "reference": "f048e612a3905f34931127360bdd2def19a5e582",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.17-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php72\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p at tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "time": "2020-05-12T16:47:27+00:00"
- },
- {
- "name": "theseer/tokenizer",
- "version": "1.1.3",
- "source": {
- "type": "git",
- "url": "https://github.com/theseer/tokenizer.git",
- "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
- "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-tokenizer": "*",
- "ext-xmlwriter": "*",
- "php": "^7.0"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Arne Blankerts",
- "email": "arne at blankerts.de",
- "role": "Developer"
- }
- ],
- "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
- "time": "2019-06-13T22:48:21+00:00"
- },
- {
- "name": "webmozart/assert",
- "version": "1.8.0",
- "source": {
- "type": "git",
- "url": "https://github.com/webmozart/assert.git",
- "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/webmozart/assert/zipball/ab2cb0b3b559010b75981b1bdce728da3ee90ad6",
- "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.3 || ^7.0",
- "symfony/polyfill-ctype": "^1.8"
- },
- "conflict": {
- "vimeo/psalm": "<3.9.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.36 || ^7.5.13"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Webmozart\\Assert\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Bernhard Schussek",
- "email": "bschussek at gmail.com"
- }
- ],
- "description": "Assertions to validate method input/output with nice error messages.",
- "keywords": [
- "assert",
- "check",
- "validate"
- ],
- "time": "2020-04-18T12:12:48+00:00"
- }
- ],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": [],
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": {
- "php": "^7.0"
- },
- "platform-dev": []
-}
diff --git a/cron.php b/cron.php
deleted file mode 100644
index 9cc56a6..0000000
--- a/cron.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-include_once(__DIR__.'/app/app.php');
-
-//Load OPML
-if (0 < $Planet->loadOpml(__DIR__.'/custom/people.opml')) {
- $Planet->download(1.0);
-}
-
-if ($conf['debug'] === true) {
- foreach ($Planet->errors as $error) {
- echo $error->toString() . "\n";
- }
-}
\ No newline at end of file
diff --git a/custom/config.yml b/custom/config.yml
deleted file mode 100644
index 6b0b167..0000000
--- a/custom/config.yml
+++ /dev/null
@@ -1,19 +0,0 @@
----
-url: https://planet.scummvm.org/
-name: ScummVM Planet
-locale: en
-items: 10
-shuffle: 0
-refresh: 3600
-cache: 3600
-nohtml: 0
-postmaxlength: 0
-categories:
-cachedir: ./cache
-debug: false
-checkcerts: true
-
-# Offline feeds
-# <outline text="Antonio Roman (Offline)" htmlUrl="" xmlUrl="https://kyranet.home.blog/" isDown="1"/>
-# <outline text="DJWillis (Offline)" htmlUrl="" xmlUrl="http://www.distant-earth.com/wp" isDown="1"/>
-# <outline text="Max Horn (Offline)" htmlUrl="" xmlUrl="https://www.quendi.de/en/" isDown="1"/>
diff --git a/custom/img/feed.png b/custom/img/feed.png
deleted file mode 100644
index f8cd243..0000000
Binary files a/custom/img/feed.png and /dev/null differ
diff --git a/custom/img/moonmoon.png b/custom/img/moonmoon.png
deleted file mode 100644
index 10f9736..0000000
Binary files a/custom/img/moonmoon.png and /dev/null differ
diff --git a/custom/img/moonmoon at 128w.png b/custom/img/moonmoon at 128w.png
deleted file mode 100644
index 2a164aa..0000000
Binary files a/custom/img/moonmoon at 128w.png and /dev/null differ
diff --git a/custom/img/moonmoon at 256w.png b/custom/img/moonmoon at 256w.png
deleted file mode 100644
index b52c4bb..0000000
Binary files a/custom/img/moonmoon at 256w.png and /dev/null differ
diff --git a/custom/img/opml.png b/custom/img/opml.png
deleted file mode 100644
index 7a9d86f..0000000
Binary files a/custom/img/opml.png and /dev/null differ
diff --git a/custom/img/scummvm_logo.png b/custom/img/scummvm_logo.png
deleted file mode 100644
index dc8f39f..0000000
Binary files a/custom/img/scummvm_logo.png and /dev/null differ
diff --git a/custom/people.opml b/custom/people.opml
deleted file mode 100644
index b4bfe4c..0000000
--- a/custom/people.opml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0"?>
-<opml version="1.1">
-<head>
-<title>ScummVM Planet</title>
-<dateCreated>2022-05-30T16:39:02+00:00</dateCreated>
-<dateModified>2022-05-30T16:39:02+00:00</dateModified>
-</head>
-<body>
-<outline text="RichieSam's Adventures in Code-ville" htmlUrl="https://richiesams.blogspot.com/" xmlUrl="https://richiesams.blogspot.com/feeds/posts/default" isDown=""/>
-<outline text="ScummVm GSoC 2019" htmlUrl="https://pantherengine.wordpress.com/" xmlUrl="https://pantherengine.wordpress.com/feed/" isDown=""/>
-<outline text="Strangerke's Sandbox" htmlUrl="https://strangerke.blogspot.com/" xmlUrl="https://strangerke.blogspot.com/feeds/posts/default" isDown=""/>
-<outline text="WinterGrascph GSoC" htmlUrl="https://wintergsoc.blogspot.com/" xmlUrl="https://wintergsoc.blogspot.com/feeds/posts/default" isDown=""/>
-<outline text="Iskrich." htmlUrl="https://iskrich.wordpress.com/" xmlUrl="https://iskrich.wordpress.com/feed/" isDown=""/>
-<outline text="SummerMute" htmlUrl="https://summermute2012.blogspot.com/" xmlUrl="https://summermute2012.blogspot.com/feeds/posts/default" isDown=""/>
-<outline text="Sev's ScummVM notes" htmlUrl="https://sev-notes.blogspot.com/" xmlUrl="https://sev-notes.blogspot.com/feeds/posts/default" isDown=""/>
-<outline text="Lost Souls' Alliance Headquarters" htmlUrl="https://lostsoulsalliance.wordpress.com/" xmlUrl="https://lostsoulsalliance.wordpress.com/feed/" isDown=""/>
-<outline text="Groovie, baby" htmlUrl="https://t7gre.blogspot.com/" xmlUrl="https://t7gre.blogspot.com/feeds/posts/default" isDown=""/>
-<outline text="Google Summer of Code - Vyzigold" htmlUrl="https://vyzigold-gsoc.blogspot.com/" xmlUrl="https://vyzigold-gsoc.blogspot.com/feeds/posts/default" isDown=""/>
-<outline text="LordHoto's World" htmlUrl="https://lordhoto.blogspot.com/" xmlUrl="https://lordhoto.blogspot.com/feeds/posts/default" isDown=""/>
-<outline text="Dreammaster's disassembly blog" htmlUrl="https://dm-notes.blogspot.com/" xmlUrl="https://dm-notes.blogspot.com/feeds/posts/default" isDown=""/>
-<outline text="ResidualVM news" htmlUrl="https://www.residualvm.org/" xmlUrl="https://www.residualvm.org/feeds/atom/" isDown="1"/>
-<outline text="sanguinehearts" htmlUrl="https://sanguinehearts.blogspot.com/" xmlUrl="https://sanguinehearts.blogspot.com/feeds/posts/default" isDown=""/>
-<outline text="ScummVM news" htmlUrl="http://www.scummvm.org/" xmlUrl="https://www.scummvm.org/feeds/atom/" isDown=""/>
-<outline text="Gobsmacked" htmlUrl="https://drmccoy.de/gobsmacked" xmlUrl="https://drmccoy.de/gobsmacked/?feed=rss2" isDown=""/>
-<outline text="Criezy's Blog" htmlUrl="https://criezy.blogspot.com/" xmlUrl="https://criezy.blogspot.com/feeds/posts/default" isDown=""/>
-<outline text="Tkachov â GSoC blog" htmlUrl="http://tkachov.ru/gsoc/" xmlUrl="http://tkachov.ru/gsoc/rss.php" isDown=""/>
-<outline text="ScummVM Music â Gaming & Technology" htmlUrl="https://www.jameswoodcock.co.uk/" xmlUrl="https://www.jameswoodcock.co.uk/?feed=rss2&cat=12" isDown=""/>
-<outline text="Google Summer of Code with ScummVM" htmlUrl="https://gsoc-ar28.blogspot.com/" xmlUrl="https://gsoc-ar28.blogspot.com/feeds/posts/default" isDown=""/>
-<outline text="GSoC 2020 ResidualVM" htmlUrl="https://gunnar.syzygia.de/" xmlUrl="https://gunnar.syzygia.de/index.php/feed/" isDown=""/>
-<outline text="ScummVM on Nathanael Gentry" htmlUrl="https://npjg.github.io/scummvm/" xmlUrl="https://npjg.github.io/scummvm/index.xml" isDown=""/>
-<outline text="Dylan Servilla - ScummVM Blog" htmlUrl="https://djsrv.github.io/scummvm/" xmlUrl="https://djsrv.github.io/scummvm/index.xml" isDown=""/>
-<outline text="GSoD 2020 b-gent" htmlUrl="https://gsod2020-bgent.blogspot.com/" xmlUrl="https://gsod2020-bgent.blogspot.com/feeds/posts/default?alt=rss" isDown=""/>
-<outline text="raikou's GSoC blog" htmlUrl="https://blogs.scummvm.org/raikou" xmlUrl="https://blogs.scummvm.org/raikou/feed/" isDown=""/>
-<outline text="stablesteady's GSoC blog" htmlUrl="https://blogs.scummvm.org/stablesteady" xmlUrl="https://blogs.scummvm.org/stablesteady/feed/" isDown=""/>
-<outline text="grisenti's GSoC blog" htmlUrl="https://blogs.scummvm.org/grisenti" xmlUrl="https://blogs.scummvm.org/grisenti/feed/" isDown=""/>
-<outline text="quote58's GSoC blog" htmlUrl="https://blogs.scummvm.org/quote58" xmlUrl="https://blogs.scummvm.org/quote58/feed/" isDown=""/>
-<outline text="GSoC 2021 - djsrv" htmlUrl="https://blogs.scummvm.org/djsrv" xmlUrl="https://blogs.scummvm.org/djsrv/feed/" isDown=""/>
-<outline text="GSoC 2021 - hikigaya" htmlUrl="https://blogs.scummvm.org/hikigaya" xmlUrl="https://blogs.scummvm.org/hikigaya/feed/" isDown=""/>
-<outline text="GSoC 2021 - av_dx" htmlUrl="https://blogs.scummvm.org/av-dx" xmlUrl="https://blogs.scummvm.org/av-dx/feed/" isDown=""/>
-<outline text="GSoC 2021 - sheep" htmlUrl="https://blogs.scummvm.org/sheep" xmlUrl="https://blogs.scummvm.org/sheep/feed/" isDown=""/>
-<outline text="GSoC 2021 - a-yyg" htmlUrl="https://blogs.scummvm.org/ayyg" xmlUrl="https://blogs.scummvm.org/ayyg/feed/" isDown=""/>
-<outline text="GSoC 2021 - Twan" htmlUrl="https://blogs.scummvm.org/twan" xmlUrl="https://blogs.scummvm.org/twan/feed/" isDown=""/>
-<outline text="GSoC 2023 - ankushdutt" htmlUrl="https://blogs.scummvm.org/ankushdutt" xmlUrl="https://blogs.scummvm.org/ankushdutt/feed/" isDown=""/>
-<outline text="GSoC 2023 - HSK" htmlUrl="https://blogs.scummvm.org/hsk" xmlUrl="https://blogs.scummvm.org/hsk/feed/" isDown=""/>
-<outline text="GSoC 2023 - Kartik" htmlUrl="https://blogs.scummvm.org/hax0kartik" xmlUrl="https://blogs.scummvm.org/hax0kartik/feed/" isDown=""/>
-<outline text="GSoC 2023 - PhoenixFlame101" htmlUrl="https://blogs.scummvm.org/phoenixflame101" xmlUrl="https://blogs.scummvm.org/phoenixflame101/feed/" isDown=""/>
-<outline text="GSoC 2023 - eklipsed" htmlUrl="https://blogs.scummvm.org/eklipsed" xmlUrl="https://blogs.scummvm.org/eklipsed/feed/" isDown=""/>
-<outline text="GSoC 2024 - Markhor" htmlUrl="https://blogs.scummvm.org/markhor" xmlUrl="https://blogs.scummvm.org/markhor/feed/" isDown=""/>
-<outline text="GSoC 2024 - kunxl" htmlUrl="https://blogs.scummvm.org/kunxl" xmlUrl="https://blogs.scummvm.org/kunxl/feed/" isDown=""/>
-<outline text="GSoC 2024 - krish" htmlUrl="https://blogs.scummvm.org/krish" xmlUrl="https://blogs.scummvm.org/krish/feed/" isDown=""/>
-<outline text="GSoC 2024 - chico" htmlUrl="https://blogs.scummvm.org/chico" xmlUrl="https://blogs.scummvm.org/chico/feed/" isDown=""/>
-<outline text="GSoC 2025 - Ellen" htmlUrl="https://blogs.scummvm.org/ellen" xmlUrl="https://blogs.scummvm.org/ellen/feed/" isDown=""/>
-<outline text="GSoC 2025 - Aun" htmlUrl="https://blogs.scummvm.org/prime" xmlUrl="https://blogs.scummvm.org/prime/feed/" isDown=""/>
-<outline text="GSoC 2025 - Alikhan" htmlUrl="https://blogs.scummvm.org/alikhan" xmlUrl="https://blogs.scummvm.org/alikhan/feed/" isDown=""/>
-<outline text="GSoC 2025 - Malhar" htmlUrl="https://blogs.scummvm.org/superlemon" xmlUrl="https://blogs.scummvm.org/superlemon/feed/" isDown=""/>
-<outline text="GSoC 2025 - Shivang" htmlUrl="https://blogs.scummvm.org/shivangnagta" xmlUrl="https://blogs.scummvm.org/shivangnagta/feed/" isDown=""/>
-</body>
-</opml>
diff --git a/custom/style/dark.css b/custom/style/dark.css
deleted file mode 100644
index 1ee004b..0000000
--- a/custom/style/dark.css
+++ /dev/null
@@ -1,125 +0,0 @@
-html{
- font-family: Arial, sans-serif;
- color: #FFF;
- background: #333;
- font-size: 62.5%;
-}
-
-body{
- margin: 0;
- padding: 0;
- font-size: 1.1em;
- line-height: 1.5em;
-}
-
-a{
- color: #CCC;
-}
-
-a:visited{
- color: #AAA;
-}
-
-a:hover{
- color: #FFF;
-}
-
-a img{
- border: none;
-}
-
-pre, code{
- font-size: 1.2em;
-}
-/* Top
-*******************************************************************************/
-#page{
- width: 640px;
- margin: 0 auto;
-}
-/* Top
-*******************************************************************************/
-#top{
- padding: 2%;
- margin: 3em;
- line-height: 2em;
- color: #FFF;
- text-align: center;
-}
-
- #top h1{
- margin: 0;
- letter-spacing: -1px;
- font-family: Georgia, serif;
- }
-
-/* Top
-*******************************************************************************/
-#content{
- width: 66%;
- padding: 0 2%;
- margin: 0;
- float: right;
-}
-
-.post{
- margin-bottom: 3em;
-}
-
-.post-title, .post-title a{
- font-family: Georgia, serif;
- color: #CCC;
- text-decoration: none;
-}
-
-.post-title{
- padding-bottom: 0.5em;
- border-bottom: 1px solid #444;
-}
-
-.post-info{
- color: #999;
- margin-top: -1em;
-}
-
-.post-info a{
- color: #999;
- text-decoration : none;
-}
-
-/* Top
-*******************************************************************************/
-#sidebar{
- width: 26%;
- padding: 0 2%;
- margin: 0;
- float: left;
-}
-
- #sidebar div{
- font-size: 0.8em;
- }
-
- #sidebar h2{
- font-family: Georgia, serif;
- color: #999;
- }
-
- #sidebar a{
- text-decoration: none;
- }
-
- #sidebar ul{
- margin: 0;
- padding: 0;
- list-style: none;
- }
-
-/* Footer
-*******************************************************************************/
-#footer{
- padding: 1ex 1em;
- clear: both;
- border-top: 1px solid #444;
- color: #999;
-}
\ No newline at end of file
diff --git a/custom/style/default.css b/custom/style/default.css
deleted file mode 100644
index 12268ef..0000000
--- a/custom/style/default.css
+++ /dev/null
@@ -1,158 +0,0 @@
- at viewport {
- width: device-width;
- initial-scale: 1.0;
-}
-
-html {
- font-family: "Lucida Grande", "Segoe UI", sans-serif;
- color: #111;
- background: #EEE;
- font-size: 62.5%;
-}
-
-body {
- margin: 0;
- padding: 0;
- font-size: 1.3em;
- line-height: 1.5em;
-}
-
-a {
- color: #669;
-}
-
-a:visited {
- color: #444;
-}
-
-a:hover {
- color: #000;
-}
-
-a img {
- border: none;
-}
-
-pre, code {
- max-height: 100%;
- width: 100%;
- font-size: 1.2em;
- overflow: auto;
-}
-
-h1, h2 {
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-}
-
-h2 {
- margin: 0;
-}
-
-#page {
- margin: 0 5em;
-}
-
-/* Header
-*******************************************************************************/
-
-#top {
- color: #FFF;
- padding: 10px 30px;
-}
-
-h1 a, h1 a:visited {
- color: #665;
- text-decoration: none;
-}
-
-h1 a:hover {
- color: #444;
-}
-
-/* Content
-*******************************************************************************/
-
-#content {
- width: 75%;
- float: left;
-}
-
-#content img {
- max-width: 100%;
- height: auto;
-}
-
-/* Sidebar
-*******************************************************************************/
-
-#sidebar {
- width: 18%;
- float: left;
-}
-
-#sidebar div {
- padding: 1em 30px;
-}
-
-#sidebar h2 {
- color: #665;
-}
-
-#sidebar ul {
- list-style: none;
- padding: 0;
- margin: 1em 0;
-}
-
-/* Article
-*******************************************************************************/
-
-.article {
- margin-bottom: 2em;
- padding: 30px;
- background: #FFF;
- border: 1px solid #DDD;
- overflow: hidden;
-}
-
-.article-title, .article-title a {
- color: #111;
- text-decoration: none;
-}
-
-.article-info {
- margin: 0 0 1em 0;
- color: #999;
-}
-
-.article-content {
- font-family: Georgia, serif;
-}
-
-.article img {
- max-width: 440px;
-}
-
-.article .collapsed {
- display: none;
-}
-
-/* Footer
-*******************************************************************************/
-
-#footer {
- clear: both;
- padding: 0 30px;
-}
-
- at media screen and (max-width: 1023px) {
- #page {
- margin: 0px;
- display: flex;
- flex-direction: column;
- }
- #content, #sidebar {
- float: none;
- width: 100%;
- }
-}
\ No newline at end of file
diff --git a/custom/style/green.css b/custom/style/green.css
deleted file mode 100644
index d665bd8..0000000
--- a/custom/style/green.css
+++ /dev/null
@@ -1,132 +0,0 @@
-html{
- font-family: "Lucida Grande", Tahoma, sans-serif;
- color: #333;
- background: #DFC;
- font-size: 62.5%;
-}
-
-body{
- margin: 0;
- padding: 0;
- font-size: 1.1em;
- line-height: 1.5em;
-}
-
-a{
- color: #669;
-}
-
-a:visited{
- color: #444;
-}
-
-a:hover{
- color: #000;
-}
-
-a img{
- border: none;
-}
-
-pre, code{
- font-size: 1.2em;
-}
-/* Top
-*******************************************************************************/
-#page{
- width: 60em;
- margin: 0 auto;
- background: #FFF;
-}
-/* Top
-*******************************************************************************/
-#top{
- padding: 1.5em;
- margin: 0;
- background: #99cc33;
- color: #FFF;
-
- border-top: 3px solid #7A2;
-
- -moz-border-radius-bottomleft: 5px;
- -moz-border-radius-bottomright: 5px;
-}
-
- #top h1{
- margin: 0;
- }
-
- #top h1 a{
- color: #FFF;
- text-decoration: none;
- }
-
-/* Top
-*******************************************************************************/
-#content{
- width: 38em;
- padding: 0 2em;
- margin: 2em 0;
- float: left;
- overflow: hidden;
-}
-
-.post{
- margin-bottom: 3em;
-}
-
-.post-title, .post-title a{
- color: #77AA22;
- text-decoration: none;
-}
-
-.post-info{
- color: #666;
- margin-top: -1em;
-}
-
-.post-info a{
- color: #669;
- text-decoration : none;
-}
-
-/* Top
-*******************************************************************************/
-#sidebar{
- width: 13em;
- padding: 0 2em;
- margin: 2em 0;
- float: right;
-}
-
- #sidebar div{
- font-size: 0.8em;
- }
-
- #sidebar h2{
- color: #99CC33;
- }
-
- #sidebar a{
- text-decoration: none;
- border-bottom: 1px solid #DDD;
- }
-
- #sidebar ul{
- margin: 0;
- padding: 0;
- list-style: none;
- }
-
- #sidebar li{
- margin: 0.5ex 0;
- }
-
-/* Footer
-*******************************************************************************/
-#footer{
- padding: 1ex 1em;
- clear: both;
- border-top: 1px dotted #CCC;
- color: #999;
-}
\ No newline at end of file
diff --git a/custom/style/light.css b/custom/style/light.css
deleted file mode 100644
index 60826e4..0000000
--- a/custom/style/light.css
+++ /dev/null
@@ -1,124 +0,0 @@
-html{
- font-family: Arial, sans-serif;
- color: #333;
- background: #FFF;
- font-size: 62.5%;
-}
-
-body{
- margin: 0;
- padding: 0;
- font-size: 1.1em;
- line-height: 1.5em;
-}
-
-a{
- color: #669;
-}
-
-a:visited{
- color: #444;
-}
-
-a:hover{
- color: #000;
-}
-
-a img{
- border: none;
-}
-
-pre, code{
- font-size: 1.2em;
-}
-/* Top
-*******************************************************************************/
-#page{
- margin: 0;
- background: #FFF;
-}
-/* Top
-*******************************************************************************/
-#top{
- padding: 2%;
- margin: 0;
- background: #CCC;
- color: #FFF;
-
- border-top: 5px solid #999;
-}
-
- #top h1{
- margin: 0;
- letter-spacing: -1px;
- }
-
-/* Top
-*******************************************************************************/
-#content{
- width: 66%;
- padding: 0 2%;
- margin: 0;
- float: left;
-}
-
-.post{
- margin-bottom: 3em;
-}
-
-.post-title, .post-title a{
- color: #666;
- text-decoration: none;
-}
-
-.post-title{
- padding-bottom: 0.5em;
- border-bottom: 1px dotted #CCC;
-}
-
-.post-info{
- color: #666;
- margin-top: -1em;
-}
-
-.post-info a{
- color: #666;
- text-decoration : none;
-}
-
-/* Top
-*******************************************************************************/
-#sidebar{
- width: 26%;
- padding: 0 2%;
- margin: 0;
- float: right;
-}
-
- #sidebar div{
- font-size: 0.8em;
- }
-
- #sidebar h2{
- color: #999;
- }
-
- #sidebar a{
- text-decoration: none;
- border-bottom: 1px solid #DDD;
- }
-
- #sidebar ul{
- margin: 0;
- padding: 0;
- list-style: none;
- }
-
-/* Footer
-*******************************************************************************/
-#footer{
- padding: 1ex 1em;
- clear: both;
- border-top: 1px dotted #CCC;
- color: #999;
-}
\ No newline at end of file
diff --git a/custom/style/mobile.css b/custom/style/mobile.css
deleted file mode 100644
index 38b3cd2..0000000
--- a/custom/style/mobile.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
-margin:0;
-padding:0;
-background-color:#fff;
-color:#111;
-font:.6em/1.2em normal arial,helvetica,sans-serif;
-}
-h1{font-size: 1em;text-align:center;}
\ No newline at end of file
diff --git a/custom/style/scummvm.css b/custom/style/scummvm.css
deleted file mode 100644
index 71d262e..0000000
--- a/custom/style/scummvm.css
+++ /dev/null
@@ -1,204 +0,0 @@
- at viewport {
- width: device-width;
- initial-scale: 1.0;
-}
-
-html {
- font-family: "Lucida Grande", "Segoe UI", sans-serif;
- color: #111;
- background: #cc6600;
- font-size: 0.7em;
- line-height: 1em;
-}
-
-body {
- margin: 0;
- padding: 0;
- font-size: 1.3em;
- line-height: 1.5em;
-}
-
-#innerwrap {
- background-color: #fbf1ce;
- width: 100%;
- height: auto;
- border-radius: 8px;
- overflow: auto;
- padding: 30px 5px 10px 10px;
-
-}
-
-a {
- color: #669;
-}
-
-a:visited {
- color: #444;
-}
-
-a:hover {
- color: #000;
-}
-
-a img {
- border: none;
-}
-
-pre, code {
- max-height: 100%;
- width: 100%;
- font-size: 1.2em;
- overflow: auto;
-}
-
-h1, h2 {
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-}
-
-h2 {
- margin: 0;
-}
-
-#page {
- max-width: 1440px;
- margin: 0 auto;
- padding: 0 50px;
-}
-
-/* Header
-*******************************************************************************/
-
-#top {
- color: #FFF;
- padding: 10px 30px;
-}
-
-h1 a, h1 a:visited {
- color: #665;
- text-decoration: none;
-}
-
-h1 a:hover {
- color: #444;
-}
-
-#top a {
- position: absolute;
- top: 20px;
-}
-
-/* Content
-*******************************************************************************/
-
-#content {
- width: calc(100% - 200px - 15px);
- float: left;
-}
-
-#content img {
- max-width: 100%;
- height: auto;
-}
-
-/* Sidebar
-*******************************************************************************/
-
-#sidebar {
- width: 200px;
- float: left;
- margin-left: 10px;
-}
-
-#sidebar div {
- padding: 1em 30px;
-}
-
-#sidebar h2 {
- color: #dd0;
- font-size: 1.2em;
-}
-
-#sidebar ul {
- list-style: none;
- padding: 0;
- margin: 1em 0;
-}
-
-#sidebar .section {
- border-radius: 8px;
- background: #a82709;
- z-index: 20;
- margin: 8px 0 16px;
-}
-
-#sidebar a:hover {
- text-decoration: underline;
-}
-
-#sidebar a {
- text-decoration: none;
- color: #fff;
- font-size: 0.9em;
-}
-
-/* Article
-*******************************************************************************/
-
-.article {
- margin-bottom: 2em;
- padding: 30px;
- background: #FFF;
- border: 1px solid #DDD;
- overflow: hidden;
-}
-
-.article-title, .article-title a {
- color: #111;
- text-decoration: none;
-}
-
-.article-info {
- margin: 0 0 1em 0;
- color: #999;
-}
-
-.article-content {
- font-family: verdana, tahoma, arial, helvetica, sans-serif;
-}
-
-.article img {
- max-width: 440px;
-}
-
-.article .collapsed {
- display: none;
-}
-
-/* Footer
-*******************************************************************************/
-
-#footer {
- clear: both;
- padding: 0 30px;
-}
-
- at media screen and (max-width: 768px) {
- #page {
- margin: 0px;
- padding: 0;
- display: flex;
- flex-direction: column;
- }
- #content, #sidebar {
- float: none;
- width: 100%;
- }
- #innerwrap {
- padding: 0;
- border-radius: 0;
- }
- #top a {
- left: calc(50% - 140px);
- width: 280px;
- }
-}
diff --git a/custom/views/archive/footer.tpl.php b/custom/views/archive/footer.tpl.php
deleted file mode 100644
index c9c84b1..0000000
--- a/custom/views/archive/footer.tpl.php
+++ /dev/null
@@ -1,3 +0,0 @@
- <div id="footer">
- <p><?php echo str_replace('%s', 'href="http://moonmoon.org"', _g('Powered by <a %s>moonmoon</a>'))?> | <a href="./admin/"><?=_g('Administration')?></a></p>
- </div>
diff --git a/custom/views/archive/head.tpl.php b/custom/views/archive/head.tpl.php
deleted file mode 100644
index 3515308..0000000
--- a/custom/views/archive/head.tpl.php
+++ /dev/null
@@ -1,4 +0,0 @@
- <link rel="stylesheet" media="screen" type="text/css" href="custom/style/scummvm.css" title="Default" />
-
- <link rel="alternate" type="application/atom+xml" title="ATOM" href="atom.php" />
- <link rel="alternate" type="application/rss+xml" title="RSS" href="rss.xml" />
diff --git a/custom/views/archive/index.tpl.php b/custom/views/archive/index.tpl.php
deleted file mode 100644
index 896c2d2..0000000
--- a/custom/views/archive/index.tpl.php
+++ /dev/null
@@ -1,115 +0,0 @@
-<?php
-$count = 0;
-$today = Array();
-$week = Array();
-$month = Array();
-$older = Array();
-$now = time();
-
-foreach ($items as $item) {
- $age = ($now - $item->get_date('U')) / (60*60*24);
- if ($age < 1) {
- $today[] = $item;
- } elseif ($age < 7) {
- $week[] = $item;
- } elseif ($age < 30) {
- $month[] = $item;
- } else {
- $older[] = $item;
- }
-}
-
-header('Content-type: text/html; charset=UTF-8');
-?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?=$conf['locale']?>" lang="<?=$conf['locale']?>">
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <meta http-equiv="Content-Script-Type" content="text/javascript" />
- <meta http-equiv="Content-Style-Type" content="text/css" />
-
- <title><?php echo $PlanetConfig->getName(); ?></title>
- <?php include(__DIR__.'/head.tpl.php'); ?>
-</head>
-
-<body>
- <div id="page">
- <?php include(__DIR__.'/top.tpl.php'); ?>
- <div id="innerwrap">
- <div id="content">
- <?php if (0 == count($items)) :?>
- <div class="article">
- <h2 class="article-title">
- <?=_g('No article')?>
- </h2>
- <p class="article-content"><?=_g('No news, good news.')?></p>
- </div>
- <?php endif; ?>
- <?php if (count($today)): ?>
- <div class="article">
- <h2><?=_g('Today')?></h2>
- <ul>
- <?php foreach ($today as $item): ?>
- <?php $feed = $item->get_feed(); ?>
- <li>
- <a href="<?php echo $feed->getWebsite() ?>" class="source"><?php echo $feed->getName() ?></a> :
- <a href="<?php echo $item->get_permalink(); ?>" title="<?=_g('Go to original place')?>"><?php echo $item->get_title(); ?></a>
- </li>
- <?php endforeach; ?>
- </ul>
- </div>
- <?php endif; ?>
-
- <?php if (count($week)): ?>
- <div class="article">
- <h2><?=_g('This week')?></h2>
- <ul>
- <?php foreach ($week as $item): ?>
- <?php $feed = $item->get_feed(); ?>
- <li>
- <a href="<?php echo $feed->getWebsite() ?>" class="source"><?php echo $feed->getName() ?></a> :
- <a href="<?php echo $item->get_permalink(); ?>" title="<?=_g('Go to original place')?>"><?php echo $item->get_title(); ?></a>
- </li>
- <?php endforeach; ?>
- </ul>
- </div>
- <?php endif; ?>
-
- <?php if (count($month)): ?>
- <div class="article">
- <h2><?=_g('This month')?></h2>
- <ul>
- <?php foreach ($month as $item): ?>
- <?php $feed = $item->get_feed(); ?>
- <li>
- <a href="<?php echo $feed->getWebsite() ?>" class="source"><?php echo $feed->getName() ?></a> :
- <a href="<?php echo $item->get_permalink(); ?>" title="<?=_g('Go to original place')?>"><?php echo $item->get_title(); ?></a>
- </li>
- <?php endforeach; ?>
- </ul>
- </div>
- <?php endif; ?>
-
- <?php if (count($older)): ?>
- <div class="article">
- <h2><?=_g('Older items')?></h2>
- <ul>
- <?php foreach ($older as $item): ?>
- <?php $feed = $item->get_feed(); ?>
- <li>
- <a href="<?php echo $feed->getWebsite() ?>" class="source"><?php echo $feed->getName() ?></a> :
- <a href="<?php echo $item->get_permalink(); ?>" title="Go to original place"><?php echo $item->get_title(); ?></a>
- </li>
- <?php endforeach; ?>
- </ul>
- </div>
- <?php endif; ?>
- </div>
-
- <?php include_once(__DIR__.'/sidebar.tpl.php'); ?>
- </div>
-
- <?php include(__DIR__.'/footer.tpl.php'); ?>
- </div>
-</body>
-</html>
diff --git a/custom/views/archive/sidebar.tpl.php b/custom/views/archive/sidebar.tpl.php
deleted file mode 100644
index efaef43..0000000
--- a/custom/views/archive/sidebar.tpl.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-$all_people = $Planet->getPeople();
-usort($all_people, array('PlanetFeed', 'compare'));
-?>
-<div id="sidebar">
- <div id="sidebar-people" class="section">
- <h2><?=_g('People')?> (<?php echo count($all_people); ?>)</h2>
- <ul>
- <?php foreach ($all_people as $person) : ?>
- <li>
- <a href="<?php echo htmlspecialchars($person->getFeed(), ENT_QUOTES, 'UTF-8'); ?>" title="<?=_g('Feed')?>"><img src="postload.php?url=<?php echo urlencode(htmlspecialchars($person->getFeed(), ENT_QUOTES, 'UTF-8')); ?>" alt="<?=_g('Feed')?>" height="12" width="12" /></a>
- <a href="<?php echo $person->getWebsite(); ?>" title="<?=_g('Website')?>"><?php echo htmlspecialchars($person->getName(), ENT_QUOTES, 'UTF-8'); ?></a>
- </li>
- <?php endforeach; ?>
- </ul>
- <p>
- <a href="custom/people.opml"><img src="custom/img/opml.png" alt="<?=_g('Feed')?>" height="12" width="12" /> <?=_g('All feeds in OPML format')?></a>
- </p>
- </div>
-
- <div class="section">
- <h2><?=_g('Syndicate')?></h2>
- <ul>
- <li><img src="custom/img/feed.png" alt="<?=_g('Feed')?>" height="12" width="12" /> <a href="atom.xml"><?=_g('Feed (ATOM)')?></a></li>
- <li><img src="custom/img/feed.png" alt="<?=_g('Feed')?>" height="12" width="12" /> <a href="rss.xml"><?=_g('Feed (RSS)')?></a></li>
- </ul>
- </div>
-
- <div class="section">
- <h2><?=_g('Archives')?></h2>
- <ul>
- <li><a href="?type=archive"><?=_g('See all headlines')?></a></li>
- </ul>
- </div>
-</div>
diff --git a/custom/views/archive/top.tpl.php b/custom/views/archive/top.tpl.php
deleted file mode 100644
index c0a374d..0000000
--- a/custom/views/archive/top.tpl.php
+++ /dev/null
@@ -1,3 +0,0 @@
- <div id="header">
- <h1 id="top"><a href="<?php echo $PlanetConfig->getUrl(); ?>"><img src="custom/img/scummvm_logo.png" alt="<?php echo $PlanetConfig->getName(); ?>"></a></h1>
- </div>
diff --git a/custom/views/default/footer.tpl.php b/custom/views/default/footer.tpl.php
deleted file mode 100644
index c9c84b1..0000000
--- a/custom/views/default/footer.tpl.php
+++ /dev/null
@@ -1,3 +0,0 @@
- <div id="footer">
- <p><?php echo str_replace('%s', 'href="http://moonmoon.org"', _g('Powered by <a %s>moonmoon</a>'))?> | <a href="./admin/"><?=_g('Administration')?></a></p>
- </div>
diff --git a/custom/views/default/head.tpl.php b/custom/views/default/head.tpl.php
deleted file mode 100644
index c5b3cd4..0000000
--- a/custom/views/default/head.tpl.php
+++ /dev/null
@@ -1,4 +0,0 @@
- <link rel="stylesheet" media="screen" type="text/css" href="custom/style/scummvm.css" title="Default" />
-
- <link rel="alternate" type="application/atom+xml" title="ATOM" href="atom.xml" />
- <link rel="alternate" type="application/rss+xml" title="RSS" href="rss.xml" />
diff --git a/custom/views/default/index.tpl.php b/custom/views/default/index.tpl.php
deleted file mode 100644
index 783872d..0000000
--- a/custom/views/default/index.tpl.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-$limit = $PlanetConfig->getMaxDisplay();
-$count = 0;
-
-header('Content-type: text/html; charset=UTF-8');
-?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?=$conf['locale']?>" lang="<?=$conf['locale']?>">
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <meta http-equiv="Content-Script-Type" content="text/javascript" />
- <meta http-equiv="Content-Style-Type" content="text/css" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-
- <title><?php echo $PlanetConfig->getName(); ?></title>
- <?php include(__DIR__.'/head.tpl.php'); ?>
-</head>
-
-<body>
- <script type="text/javascript">
- document.body.className += 'js';
- </script>
- <div id="page">
- <?php include(__DIR__.'/top.tpl.php'); ?>
- <div id="innerwrap">
- <div id="content">
- <?php if (0 == count($items)) : ?>
- <div class="article">
- <h2 class="article-title">
- <?=_g('No article', 'note de trad')?>
- </h2>
- <p class="article-content"><?=_g('No news, good news.')?></p>
- </div>
- <?php else : ?>
- <?php foreach ($items as $item): ?>
- <?php
- $arParsedUrl = parse_url($item->get_feed()->getWebsite());
- $host = 'from-' . preg_replace('/[^a-zA-Z0-9]/i', '-', $arParsedUrl['host']);
- ?>
- <div class="article <?php echo $host; ?>">
- <h2 class="article-title">
- <a href="<?php echo $item->get_permalink(); ?>" title="Go to original place"><?php echo $item->get_title(); ?></a>
- </h2>
- <p class="article-info">
- <?php
- echo strip_tags(($item->get_author_name()));
- ?>,
- <?php
- $ago = time() - $item->get_date('U');
- //echo '<span title="'.Duration::toString($ago).' ago" class="date">'.date('d/m/Y', $item->get_date('U')).'</span>';
- echo '<span id="post'.$item->get_date('U').'" class="date">'.$item->get_date('d/m/Y').'</span>';
- ?>
-
- |
-
- <?=_g('Source:')?> <?php
- $feed = $item->get_feed();
- echo '<a href="'.$feed->getWebsite().'" class="source">'.$feed->getName().'</a>';
- ?>
- </p>
- <div class="article-content">
- <?php echo $item->get_content(); ?>
- </div>
- </div>
- <?php if (++$count == $limit) { break; } ?>
- <?php endforeach; ?>
- <?php endif; ?>
- </div>
-
- <?php include_once(__DIR__.'/sidebar.tpl.php'); ?>
- </div>
-
- <?php include(__DIR__.'/footer.tpl.php'); ?>
- </div>
-</body>
-</html>
diff --git a/custom/views/default/sidebar.tpl.php b/custom/views/default/sidebar.tpl.php
deleted file mode 100644
index 82d3d00..0000000
--- a/custom/views/default/sidebar.tpl.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-$all_people = $Planet->getPeople();
-usort($all_people, array('PlanetFeed', 'compare'));
-?>
-<div id="sidebar" class="aside">
- <div id="sidebar-people" class="section">
- <h2><?php echo _g('People') . ' (' . count($all_people) . ')'?></h2>
- <ul>
- <?php foreach ($all_people as $person) : ?>
- <li>
- <a href="<?php echo htmlspecialchars($person->getFeed(), ENT_QUOTES, 'UTF-8'); ?>" title="<?=_g('Feed')?>"><img src="postload.php?url=<?php echo urlencode(htmlspecialchars($person->getFeed(), ENT_QUOTES, 'UTF-8')); ?>" alt="" height="12" width="12" /></a>
- <a href="<?php echo $person->getWebsite(); ?>" title="<?=_g('Website')?>"><?php echo htmlspecialchars($person->getName(), ENT_QUOTES, 'UTF-8'); ?></a>
- </li>
- <?php endforeach; ?>
- </ul>
- <p>
- <img src="custom/img/opml.png" alt="<?=_g('Feed')?>" height="12" width="12" /> <a href="custom/people.opml"><?=_g('All feeds in OPML format')?></a>
- </p>
- </div>
-
- <div class="section">
- <h2><?=_g('Syndicate')?></h2>
- <ul>
- <li><img src="custom/img/feed.png" alt="<?=_g('Feed')?>" height="12" width="12" /> <a href="atom.xml"><?=_g('Feed (ATOM)')?></a></li>
- <li><img src="custom/img/feed.png" alt="<?=_g('Feed')?>" height="12" width="12" /> <a href="rss.xml"><?=_g('Feed (RSS)')?></a></li>
- </ul>
- </div>
-
- <div class="section">
- <h2><?=_g('Archives')?></h2>
- <ul>
- <li><a href="?type=archive"><?=_g('See all headlines')?></a></li>
- </ul>
- </div>
-</div>
diff --git a/custom/views/default/top.tpl.php b/custom/views/default/top.tpl.php
deleted file mode 100644
index c0a374d..0000000
--- a/custom/views/default/top.tpl.php
+++ /dev/null
@@ -1,3 +0,0 @@
- <div id="header">
- <h1 id="top"><a href="<?php echo $PlanetConfig->getUrl(); ?>"><img src="custom/img/scummvm_logo.png" alt="<?php echo $PlanetConfig->getName(); ?>"></a></h1>
- </div>
diff --git a/custom/views/install.tpl.php b/custom/views/install.tpl.php
deleted file mode 100644
index 9eaff65..0000000
--- a/custom/views/install.tpl.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<meta charset="utf-8"/>
-<head>
- <title><?=_g('moonmoon installation')?></title>
- <style>
- body {
- font: normal 1em sans-serif;
- width: 500px;
- margin: 0 auto;
- }
-
- /* Error */
- td.ok {
- color: #090;
- }
-
- td.fail {
- color: #900;
- font-weight: bold;
- }
- th {
- text-align: left;
- }
-
- /* Install */
- .field label {
- display: block;
- }
-
- .submit {
- font-size: 2em;
- }
-
- </style>
-</head>
-
-<body>
-<h1><?=_g('moonmoon installation')?></h1>
-
-<?php if ($status == 'error') : ?>
- <div id="compatibility">
- <h2>Sorry, your server is not compatible with moonmoon.</h2>
-
- <h3>Your server does not fulfill the requirements</h3>
- <table>
- <thead>
- <tr>
- <th>Test</th>
- <th>Result</th>
- </tr>
- </thead>
- <tbody>
- <?php echo $strInstall ?>
- </tbody>
- </table>
-
- <h3>Troubleshooting</h3>
- <p>To install moonmoon, try the following changes:</p>
- <ul>
- <?php echo $strRecommendation; ?>
- </ul>
- </div>
-
-<?php elseif ($status == 'install') : ?>
- <div>
- <form method="post" action="">
- <fieldset>
- <input type="hidden" id="url" name="url" value="" readonly="readonly"/>
- <script>
- <!--
- document.forms[0].elements[1].value = document.URL.replace('install.php','');
- -->
- </script>
-
- <p class="field">
- <label for="title">Title:</label>
- <input type="text" id="title" name="title" value="My website"/>
- </p>
- <!--
- <p class="field">
- <label>Administrator login:</label> <code>admin</code>
- </p>
- -->
- <p class="field">
- <label for="password">Administrator password:</label>
- <input type="text" id="password" name="password" class="text password" value="admin" />
- </p>
- <p class="field">
- <label for="locale">Language:</label>
- <select name="locale" id="locale">
- <option selected="selected" value="en">English</option>
- <option value="es">Español</option>
- <option value="fr">Français</option>
- <option value="en">Deutsch</option>
- </select>
- </p>
- <p>
- <input type="submit" class="submit" value="Install"/>
- </p>
- </fieldset>
- </form>
- </div>
-
-<?php elseif ($status =='installed'): ?>
-
- <p><?=_g('Congratulations! Your moonmoon is ready.')?></p>
- <h3><?=_g("What's next?")?></h3>
- <ol>
- <li>
- <?=_g('<strong>Delete</strong> <code>install.php</code> with your FTP software.')?>
- </li>
- <li>
- <?=_g('Use your password to go to the <a href="./admin/">administration panel</a>')?>
- </li>
- </ol>
-<?php endif; ?>
-</body>
-</html>
diff --git a/favicon-16x16.png b/favicon-16x16.png
deleted file mode 100644
index 5d472e4..0000000
Binary files a/favicon-16x16.png and /dev/null differ
diff --git a/favicon-32x32.png b/favicon-32x32.png
deleted file mode 100644
index d9d9679..0000000
Binary files a/favicon-32x32.png and /dev/null differ
diff --git a/favicon.ico b/favicon.ico
deleted file mode 100644
index e70c12c..0000000
Binary files a/favicon.ico and /dev/null differ
diff --git a/index.php b/index.php
deleted file mode 100644
index c6d86f4..0000000
--- a/index.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-// Redirect to rss and atom feeds
-$request = $_SERVER['REQUEST_URI'];
-
-switch ($request) {
- case '/atom.xml' :
- require __DIR__ . '/atom.php';
- die();
- break;
- case '/rss20.xml' :
- case '/rss.xml' :
- require __DIR__ . '/rss.php';
- die();
- break;
- default:
- break;
-}
-
-include_once(__DIR__.'/app/app.php');
-include_once(__DIR__.'/app/lib/Cache.php');
-
-//Installed ?
-if (!isset($Planet)) {
- echo '<p>' . _g('You might want to <a href="install.php">install moonmoon</a>.') . '</p>';
- exit;
-}
-
-//Load from cache
-$items = Array();
-if (0 < $Planet->loadOpml(__DIR__.'/custom/people.opml')) {
- $Planet->loadFeeds();
- $items = $Planet->getItems();
-}
-
-//Prepare output cache
-Cache::$enabled = false;
-$cache_key = (count($items)) ? $items[0]->get_id() : '';
-$last_modified = (count($items)) ? $items[0]->get_date() : '';
-$cache_duration = $PlanetConfig->getOutputTimeout()*60;
-
-Cache::setStore(__DIR__ . '/' . $conf['cachedir'] . '/');
-
-if (isset($_GET['type']) && $_GET['type'] == 'atom10') {
- /* XXX: Redirect old ATOM feeds to new url to make sure our users don't
- * loose subscribers upon upgrading their moonmoon installation.
- * Remove this check in a more distant future.
- */
- header('Status: 301 Moved Permanently', false, 301);
- header('Location: atom.php');
- exit;
-}
-
-//Go display
-if (!isset($_GET['type']) ||
- !is_file(__DIR__.'/custom/views/'.$_GET['type'].'/index.tpl.php') ||
- strpos($_GET['type'], DIRECTORY_SEPARATOR) || strpos($GET['type'], '..')){
- $_GET['type'] = 'default';
-}
-
-if (!OutputCache::Start($_GET['type'], $cache_key, $cache_duration)) {
- include_once(__DIR__.'/custom/views/'.$_GET['type'].'/index.tpl.php');
- OutputCache::End();
-}
-
-if ($conf['debug'] === true) {
- echo "<!-- \$Planet->errors:\n";
- var_dump($Planet->errors);
- echo "-->";
-}
diff --git a/mstile-150x150.png b/mstile-150x150.png
deleted file mode 100644
index e61a88c..0000000
Binary files a/mstile-150x150.png and /dev/null differ
diff --git a/phpunit.xml b/phpunit.xml
deleted file mode 100644
index 835272f..0000000
--- a/phpunit.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/5.7/phpunit.xsd"
- bootstrap="vendor/autoload.php"
- backupGlobals="false"
- beStrictAboutCoversAnnotation="true"
- beStrictAboutOutputDuringTests="true"
- beStrictAboutTestsThatDoNotTestAnything="true"
- beStrictAboutTodoAnnotatedTests="true"
- verbose="true">
- <testsuite>
- <directory suffix="Test.php">tests</directory>
- </testsuite>
-
- <filter>
- <whitelist processUncoveredFilesFromWhitelist="true">
- <directory suffix=".php">.</directory>
- </whitelist>
- </filter>
-</phpunit>
diff --git a/postload.php b/postload.php
deleted file mode 100644
index 9dfe23f..0000000
--- a/postload.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-require_once __DIR__.'/app/app.php';
-
-if (!is_installed()) {
- die();
-}
-
-$xml = new SimpleXMLElement(file_get_contents(custom_path('people.opml')));
-
-foreach ($xml->xpath('/opml/body/outline[@xmlUrl]') as $element)
-{
- if ($element->attributes()->xmlUrl == htmlspecialchars_decode($_GET['url']))
- {
- $person = new PlanetFeed(
- '',
- $_GET['url'],
- '',
- false
- );
- $Planet->addPerson($person);
-
- $Planet->download(1);
- header('Content-type: image/png');
- readfile(custom_path('img/feed.png'));
- die();
- }
-}
-
-echo 'Updating this URL is not allowed.';
diff --git a/rss.php b/rss.php
deleted file mode 100644
index 1629bef..0000000
--- a/rss.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-include_once(__DIR__.'/app/app.php');
-include_once(__DIR__.'/app/lib/Cache.php');
-
-if ($Planet->loadOpml(__DIR__.'/custom/people.opml') == 0) exit;
-
-$Planet->loadFeeds();
-$items = $Planet->getItems();
-$limit = $PlanetConfig->getMaxDisplay();
-$count = 0;
-
-header('Content-Type: text/xml; charset=UTF-8');
-echo '<?xml version="1.0" encoding="UTF-8" ?>';
-?>
-<rss version="2.0">
- <channel>
- <title><?=htmlspecialchars($PlanetConfig->getName())?></title>
- <link><?=$PlanetConfig->getUrl()?></link>
- <language>en</language>
- <description><?=htmlspecialchars($PlanetConfig->getName())?> - <?=$PlanetConfig->getUrl()?></description>
- <?php $count = 0; ?>
- <?php foreach ($items as $item): ?>
- <item>
- <title><?=htmlspecialchars($item->get_feed()->getName())?> : <?=htmlspecialchars($item->get_title())?></title>
- <guid><?=htmlspecialchars($item->get_permalink())?></guid>
- <link><?=htmlspecialchars($item->get_permalink())?>/</link>
- <description><![CDATA[<?=$item->get_content()?>]]></description>
- <pubDate><?=$item->get_date(DATE_RSS)?></pubDate>
- <author>nospam at scummvm.org (<?=($item->get_author_name())?>)</author>
- </item>
- <?php if (++$count == $limit) break; ?>
- <?php endforeach; ?>
- </channel>
-</rss>
diff --git a/safari-pinned-tab.svg b/safari-pinned-tab.svg
deleted file mode 100644
index 937b93f..0000000
--- a/safari-pinned-tab.svg
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
- "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
- width="512.000000pt" height="512.000000pt" viewBox="0 0 512.000000 512.000000"
- preserveAspectRatio="xMidYMid meet">
-<metadata>
-Created by potrace 1.11, written by Peter Selinger 2001-2013
-</metadata>
-<g transform="translate(0.000000,512.000000) scale(0.100000,-0.100000)"
-fill="#000000" stroke="none">
-<path d="M2320 5004 c-14 -2 -65 -9 -115 -15 -559 -68 -1032 -365 -1247 -785
--165 -322 -208 -712 -119 -1069 55 -216 120 -346 270 -537 116 -149 156 -208
-176 -263 17 -44 17 -45 -9 -100 -20 -40 -78 -107 -212 -246 -339 -350 -418
--472 -431 -664 -13 -195 80 -363 333 -603 347 -331 688 -501 1169 -584 175
--30 605 -33 785 -5 371 58 662 164 921 335 206 137 349 299 463 522 209 412
-238 814 91 1269 -57 177 -127 304 -257 468 -148 186 -183 244 -182 303 1 69
-36 129 178 305 137 169 257 378 285 497 27 116 8 230 -60 344 -43 75 -229 261
--334 336 -366 260 -693 398 -1109 469 -91 16 -176 22 -346 24 -124 2 -236 2
--250 -1z m524 -360 c409 -57 762 -231 1129 -558 53 -48 97 -91 97 -96 0 -14
--340 -524 -362 -542 -41 -36 -88 -24 -174 43 -149 115 -383 245 -544 303 -169
-61 -332 83 -413 57 -71 -24 -127 -121 -112 -194 24 -112 120 -189 463 -373
-309 -167 455 -252 565 -334 327 -243 523 -528 581 -845 65 -355 -4 -679 -199
--937 -271 -358 -775 -555 -1370 -535 -195 7 -324 24 -475 62 -359 91 -670 304
--945 648 l-64 80 219 272 c121 150 226 275 235 279 9 3 32 6 51 6 28 0 47 -12
-116 -76 280 -258 754 -443 1011 -394 82 15 121 39 147 90 52 101 32 200 -59
-290 -78 78 -201 160 -533 359 -157 94 -332 205 -389 247 -259 193 -467 448
--549 673 -42 115 -60 231 -60 390 0 230 48 399 162 572 197 300 542 487 972
-529 116 11 360 3 500 -16z"/>
-</g>
-</svg>
diff --git a/site.webmanifest b/site.webmanifest
deleted file mode 100644
index 84b60c6..0000000
--- a/site.webmanifest
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "ScummVM Planet",
- "short_name": "ScummVM Planet",
- "icons": [
- {
- "src": "/android-chrome-192x192.png",
- "sizes": "192x192",
- "type": "image/png"
- },
- {
- "src": "/android-chrome-512x512.png",
- "sizes": "512x512",
- "type": "image/png"
- }
- ],
- "theme_color": "#cc6600",
- "background_color": "#cc6600",
- "display": "standalone"
-}
diff --git a/tests/GuzzleHarness.php b/tests/GuzzleHarness.php
deleted file mode 100644
index a3f2ac4..0000000
--- a/tests/GuzzleHarness.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-use \PHPUnit\Framework\TestCase;
-use \GuzzleHttp\Client;
-
-class GuzzleHarness extends TestCase
-{
-
- /** @var GuzzleHttp\Client */
- protected $client = null;
-
- public function setUp()
- {
- $this->client = new Client([
- 'base_uri' => 'http://127.0.0.1:8081',
- 'timeout' => 1,
- ]);
- }
-
-}
\ No newline at end of file
diff --git a/tests/HelpersTest.php b/tests/HelpersTest.php
deleted file mode 100644
index 141e604..0000000
--- a/tests/HelpersTest.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-use PHPUnit\Framework\TestCase;
-
-class HelpersTest extends TestCase
-{
- function test_constant_time_compare()
- {
- $this->assertTrue(_hash_equals('abc', 'abc'));
- $this->assertFalse(_hash_equals('abc', 'ab'));
- $this->assertFalse(_hash_equals('ab', 'abc'));
- $this->assertFalse(_hash_equals('abcd', 'adbc'));
- $this->assertFalse(_hash_equals(0, 0));
- }
-}
diff --git a/tests/InstallTest.php b/tests/InstallTest.php
deleted file mode 100644
index 7615f18..0000000
--- a/tests/InstallTest.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-require_once 'GuzzleHarness.php';
-
-class InstallTest extends GuzzleHarness {
-
- public function setUp()
- {
- parent::setUp();
- removeCustomFiles();
- }
-
- public function tearDown()
- {
- parent::tearDown();
- removeCustomFiles();
- }
-
- public function test_index_page_tells_moonmoon_is_not_installed()
- {
- $res = $this->client->get('/index.php');
- $this->assertEquals(200, $res->getStatusCode());
- $this->assertContains('install moonmoon', (string) $res->getBody());
- }
-
- public function test_install_page_loads_without_error()
- {
- $res = $this->client->get('/install.php');
- $this->assertEquals(200, $res->getStatusCode());
- $this->assertContains('Administrator password', (string) $res->getBody());
- }
-
- /**
- * Regression test, `people.opml` was created by requesting `/install.php`
- * even if the site was not installed: `touch()` was called to see if
- * the path was writable but the file was not removed.
- */
- public function test_get_install_page_should_not_create_custom_files()
- {
- $this->client->get('/install.php');
- $this->assertFalse(file_exists(custom_path('people.opml')));
- $this->assertFalse(file_exists(custom_path('config.yml')));
- $this->assertFalse(file_exists(custom_path('inc/pwc.inc.php')));
- }
-
- public function test_install_button()
- {
- $data = [
- 'url' => 'http://127.0.0.1:8081/',
- 'title' => 'My website',
- 'password' => 'admin',
- 'locale' => 'en',
- ];
-
- $res = $this->client->request('POST', '/install.php', [
- 'form_params' => $data
- ]);
- $this->assertEquals(200, $res->getStatusCode());
- $this->assertContains('Your moonmoon is ready.', (string) $res->getBody());
- }
-}
\ No newline at end of file
diff --git a/tests/PlanetConfigTest.php b/tests/PlanetConfigTest.php
deleted file mode 100644
index 4db6e90..0000000
--- a/tests/PlanetConfigTest.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-
-use PHPUnit\Framework\TestCase;
-
-class PlanetConfigTest extends TestCase
-{
- public function test_default_configuration_values()
- {
- $conf = new PlanetConfig();
- $this->assertEquals('http://www.example.com/', $conf->getUrl());
- }
-
- public function test_merge_user_configuration_with_default_one()
- {
- $conf = new PlanetConfig(['url' => 'http://foobar.tld']);
- $this->assertEquals('http://foobar.tld', $conf->getUrl());
- }
-
- public function test_generic_getter()
- {
- $conf = new PlanetConfig(['foo' => 'bar']);
- $this->assertEquals('bar', $conf->foo);
- }
-
- public function test_generic_setter()
- {
- $conf = new PlanetConfig();
- $conf->foo = 'bar';
- $this->assertEquals('bar', $conf->foo);
- }
-
- public function test_normalize_key_name_on_merge()
- {
- $conf = new PlanetConfig(['FOO' => 'bar']);
- $this->assertEquals('bar', $conf->foo);
- }
-
- public function test_normalize_key_name_on_generic_getter()
- {
- $conf = new PlanetConfig(['foo' => 'bar']);
- $this->assertEquals('bar', $conf->FOO);
- }
-
- public function test_normalize_key_name_on_generic_setter()
- {
- $conf = new PlanetConfig();
- $conf->FOO = 'bar';
- $this->assertEquals('bar', $conf->foo);
- }
-
- public function test_to_array()
- {
- $conf = new PlanetConfig(['foo' => 'bar']);
- $this->assertEquals('bar', $conf->toArray()['foo']);
- $this->assertEquals('http://www.example.com/', $conf->toArray()['url']);
- }
-
- public function test_constructor_without_default_config()
- {
- $conf = new PlanetConfig(['foo' => 'bar'], false);
- $this->assertEquals('bar', $conf->foo);
- $this->assertEquals(1, sizeof($conf->toArray()));
- }
-
- public function test_to_yaml()
- {
- $conf = new PlanetConfig([], false);
- $this->assertEquals("---\n", $conf->toYaml());
-
- $conf = new PlanetConfig(['foo' => 'bar'], false);
- $this->assertEquals("---\nfoo: bar\n", $conf->toYaml());
- }
-}
diff --git a/tests/PlanetErrorTest.php b/tests/PlanetErrorTest.php
deleted file mode 100644
index d2f4599..0000000
--- a/tests/PlanetErrorTest.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-
-use PHPUnit\Framework\TestCase;
-
-class PlanetErrorTest extends TestCase
-{
- public function test_to_string()
- {
- $error = new PlanetError(1, 'foo');
- $this->assertEquals('notice: foo', $error->toString());
- }
-}
\ No newline at end of file
diff --git a/tests/PlanetTest.php b/tests/PlanetTest.php
deleted file mode 100644
index 5cec1ce..0000000
--- a/tests/PlanetTest.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-
-use PHPUnit\Framework\TestCase;
-
-class FoolCategory {
-
- protected $name;
-
- function __construct($name)
- {
- $this->name = $name;
- }
-
- function get_label()
- {
- return $this->name;
- }
-}
-
-class FoolItem
-{
- protected $categories;
-
- function __construct($categories)
- {
- foreach ($categories as $c)
- $this->categories[] = new FoolCategory($c);
- }
-
- function get_categories() {
- return $this->categories;
- }
-}
-
-class PlanetTest extends TestCase
-{
-
- protected $planet;
- protected $items;
-
- public function setUp()
- {
- $this->planet = new Planet();
-
- $this->items = array(
- new FoolItem(array('catA', 'catB', 'catC')),
- new FoolItem(array('catB')),
- new FoolItem(array('catA')),
- new FoolItem(array('catC'))
- );
- }
-
- protected function _after()
- {
- unset($this->planet);
- }
-
- public function testFilterItemsByCategoryWithInvalidCategory()
- {
- $this->assertEquals(count($this->planet->_filterItemsByCategory($this->items, null)), count($this->items));
- $this->assertEquals(count($this->planet->_filterItemsByCategory($this->items, ' ')), count($this->items));
- }
-
- public function testFilterItemsByCategoryWithNonUsedCategory()
- {
- $this->assertEquals(count($this->planet->_filterItemsByCategory($this->items, 'catD')), 0);
- }
-
- public function testFilterItemsByCategoryWithValidCategory()
- {
- $this->assertEquals(count($this->planet->_filterItemsByCategory($this->items, 'catA')), 2);
- $this->assertEquals(count($this->planet->_filterItemsByCategory($this->items, 'catB')), 2);
- $this->assertEquals(count($this->planet->_filterItemsByCategory($this->items, 'catC')), 2);
- $this->assertEquals(count($this->planet->_filterItemsByCategory($this->items, 'CATA')), 2);
- }
-
- public function testFilterItemsByCategoryWithMultipleCategory()
- {
- $this->assertEquals(count($this->planet->_filterItemsByCategory($this->items, 'catA,catB')), 3);
- $this->assertEquals(count($this->planet->_filterItemsByCategory($this->items, 'catA,catB,catC')), 4);
- $this->assertEquals(count($this->planet->_filterItemsByCategory($this->items, 'catA, catB')), 3);
- }
-
-}
Commit: acd0300211f4fdc17a4bea4060f435d99979e1ea
https://github.com/scummvm/scummvm-sites/commit/acd0300211f4fdc17a4bea4060f435d99979e1ea
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-06-01T21:17:21+02:00
Commit Message:
PLANET: Added configuration for pluto-based planet
Changed paths:
A LICENSE.md
A README.md
A planet-scummvm/README.md
A planet-scummvm/css/planet.scummvm.css
A planet-scummvm/i/feed-icon-10x10.png
A planet-scummvm/i/scummvm_logo.png
A planet-scummvm/planet.scummvm.html.erb
A planet-scummvm/scummvm.txt
A planet.ini
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000..72cdf27
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,116 @@
+CC0 1.0 Universal
+
+Statement of Purpose
+
+The laws of most jurisdictions throughout the world automatically confer
+exclusive Copyright and Related Rights (defined below) upon the creator and
+subsequent owner(s) (each and all, an "owner") of an original work of
+authorship and/or a database (each, a "Work").
+
+Certain owners wish to permanently relinquish those rights to a Work for the
+purpose of contributing to a commons of creative, cultural and scientific
+works ("Commons") that the public can reliably and without fear of later
+claims of infringement build upon, modify, incorporate in other works, reuse
+and redistribute as freely as possible in any form whatsoever and for any
+purposes, including without limitation commercial purposes. These owners may
+contribute to the Commons to promote the ideal of a free culture and the
+further production of creative, cultural and scientific works, or to gain
+reputation or greater distribution for their Work in part through the use and
+efforts of others.
+
+For these and/or other purposes and motivations, and without any expectation
+of additional consideration or compensation, the person associating CC0 with a
+Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
+and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
+and publicly distribute the Work under its terms, with knowledge of his or her
+Copyright and Related Rights in the Work and the meaning and intended legal
+effect of CC0 on those rights.
+
+1. Copyright and Related Rights. A Work made available under CC0 may be
+protected by copyright and related or neighboring rights ("Copyright and
+Related Rights"). Copyright and Related Rights include, but are not limited
+to, the following:
+
+ i. the right to reproduce, adapt, distribute, perform, display, communicate,
+ and translate a Work;
+
+ ii. moral rights retained by the original author(s) and/or performer(s);
+
+ iii. publicity and privacy rights pertaining to a person's image or likeness
+ depicted in a Work;
+
+ iv. rights protecting against unfair competition in regards to a Work,
+ subject to the limitations in paragraph 4(a), below;
+
+ v. rights protecting the extraction, dissemination, use and reuse of data in
+ a Work;
+
+ vi. database rights (such as those arising under Directive 96/9/EC of the
+ European Parliament and of the Council of 11 March 1996 on the legal
+ protection of databases, and under any national implementation thereof,
+ including any amended or successor version of such directive); and
+
+ vii. other similar, equivalent or corresponding rights throughout the world
+ based on applicable law or treaty, and any national implementations thereof.
+
+2. Waiver. To the greatest extent permitted by, but not in contravention of,
+applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
+unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
+and Related Rights and associated claims and causes of action, whether now
+known or unknown (including existing as well as future claims and causes of
+action), in the Work (i) in all territories worldwide, (ii) for the maximum
+duration provided by applicable law or treaty (including future time
+extensions), (iii) in any current or future medium and for any number of
+copies, and (iv) for any purpose whatsoever, including without limitation
+commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes
+the Waiver for the benefit of each member of the public at large and to the
+detriment of Affirmer's heirs and successors, fully intending that such Waiver
+shall not be subject to revocation, rescission, cancellation, termination, or
+any other legal or equitable action to disrupt the quiet enjoyment of the Work
+by the public as contemplated by Affirmer's express Statement of Purpose.
+
+3. Public License Fallback. Should any part of the Waiver for any reason be
+judged legally invalid or ineffective under applicable law, then the Waiver
+shall be preserved to the maximum extent permitted taking into account
+Affirmer's express Statement of Purpose. In addition, to the extent the Waiver
+is so judged Affirmer hereby grants to each affected person a royalty-free,
+non transferable, non sublicensable, non exclusive, irrevocable and
+unconditional license to exercise Affirmer's Copyright and Related Rights in
+the Work (i) in all territories worldwide, (ii) for the maximum duration
+provided by applicable law or treaty (including future time extensions), (iii)
+in any current or future medium and for any number of copies, and (iv) for any
+purpose whatsoever, including without limitation commercial, advertising or
+promotional purposes (the "License"). The License shall be deemed effective as
+of the date CC0 was applied by Affirmer to the Work. Should any part of the
+License for any reason be judged legally invalid or ineffective under
+applicable law, such partial invalidity or ineffectiveness shall not
+invalidate the remainder of the License, and in such case Affirmer hereby
+affirms that he or she will not (i) exercise any of his or her remaining
+Copyright and Related Rights in the Work or (ii) assert any associated claims
+and causes of action with respect to the Work, in either case contrary to
+Affirmer's express Statement of Purpose.
+
+4. Limitations and Disclaimers.
+
+ a. No trademark or patent rights held by Affirmer are waived, abandoned,
+ surrendered, licensed or otherwise affected by this document.
+
+ b. Affirmer offers the Work as-is and makes no representations or warranties
+ of any kind concerning the Work, express, implied, statutory or otherwise,
+ including without limitation warranties of title, merchantability, fitness
+ for a particular purpose, non infringement, or the absence of latent or
+ other defects, accuracy, or the present or absence of errors, whether or not
+ discoverable, all to the greatest extent permissible under applicable law.
+
+ c. Affirmer disclaims responsibility for clearing rights of other persons
+ that may apply to the Work or any use thereof, including without limitation
+ any person's Copyright and Related Rights in the Work. Further, Affirmer
+ disclaims responsibility for obtaining any necessary consents, permissions
+ or other rights required for any use of the Work.
+
+ d. Affirmer understands and acknowledges that Creative Commons is not a
+ party to this document and has no duty or obligation with respect to this
+ CC0 or use of the Work.
+
+For more information, please see
+<http://creativecommons.org/publicdomain/zero/1.0/>
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..09af442
--- /dev/null
+++ b/README.md
@@ -0,0 +1,315 @@
+
+# Planet Pluto Quick Starter Kit
+
+Welcome to Planet Pluto.
+(Auto-)build your own (static) planet news site from web feeds.
+
+
+
+## Step 0: Download and Unpack (or Clone)
+
+To get started:
+
+Option I) Download (that is, click on the green "Clone or download" button on the right side and than "Download ZIP")
+and unpack the zip archive.
+
+Or
+
+Option II) Use git and clone this repo e.g.
+
+ $ git clone https://github.com/feedreader/pluto.starter
+
+
+## Step 1: Install the Planet Pluto Machinery / Tool
+
+To install the planet pluto tools and libraries use ruby's built-in standard package manager / installer e.g.
+
+ $ gem install pluto
+
+
+## Step 2: Build the Starter Planet
+
+Try:
+
+ $ pluto help
+
+to check up on your pluto installation. Resulting in:
+
+```
+NAME
+ pluto - another planet generator (lets you build web pages from published web feeds)
+
+SYNOPSIS
+ pluto [global options] command [command options] [arguments...]
+
+VERSION
+ 1.2.3
+
+GLOBAL OPTIONS
+ -c, --config=PATH - Configuration Path (default: ~/.pluto)
+ --help - Show this message
+ -q, --quiet - Only show warnings, errors and fatal messages
+ --verbose - (Debug) Show debug messages
+ --version - Display the program version
+
+COMMANDS
+ about, a - (Debug) Show more version info
+ build, b - Build planet
+ fetch, f - Fetch feeds
+ help - Shows a list of commands or help for one command
+ install, i - Install template pack
+ list, ls, l - List installed template packs
+ merge, m - Merge planet template pack
+ update, up, u - Update planet feeds
+```
+
+
+Now build the sample starter planet. Try:
+
+ $ pluto build planet.ini -t starter -o build
+
+
+This will
+
+1) fetch all feeds listed in [`planet.ini`](planet.ini) and
+
+2) store all entries in a local single-file SQLite database,
+that is, `planet.db` in your working folder and
+
+3) generate a planet web page, that is, `planet.starter.html` in your build folder
+using the [`starter` template pack](planet-starter) in the `planet-starter` folder
+using all feed entries from the local database.
+
+
+Example (first time) console output:
+
+```
+pluto/1.2.3 on Ruby 2.1.5
+
+db settings:
+{:adapter=>"sqlite3", :database=>"./planet.db"}
+
+-- create_table(:logs)
+-- create_table(:props)
+-- create_table(:activities)
+-- create_table(:sites)
+-- create_table(:subscriptions)
+-- create_table(:feeds)
+-- create_table(:items)
+
+dump >planet.ini<:
+{"title"=>"Planet Open Data News",
+ "osm"=>
+ {"title"=>"Open Street Map (OSM) News",
+ "link"=>"https://blog.openstreetmap.org",
+ "feed"=>"https://blog.openstreetmap.org/feed/"},
+ "okfnlabs"=>
+ {"title"=>"Open Knowledge Foundation (OKFN) Labs News",
+ "link"=>"http://okfnlabs.org/blog",
+ "feed"=>"http://okfnlabs.org/blog/feed.xml"},
+ "schemaorg"=>
+ {"title"=>"schema.org News",
+ "link"=>"http://blog.schema.org",
+ "feed"=>"http://blog.schema.org/feeds/posts/default"},
+ "wikidata"=>
+ {"title"=>"Wikidata News",
+ "link"=>"http://blog.wikimedia.org/c/technology/wikidata",
+ "feed"=>"http://blog.wikimedia.org/c/technology/wikidata/feed/"}}
+
+Updating feed subscription >osm< - >https://blog.openstreetmap.org/feed/<...
+Updating feed subscription >okfnlabs< - >http://okfnlabs.org/blog/feed.xml<...
+Updating feed subscription >schemaorg< - >http://blog.schema.org/feeds/posts/default<...
+Updating feed subscription >wikidata< - >http://blog.wikimedia.org/c/technology/wikidata/feed/<...
+
+OK - fetching feed 'osm' - HTTP status 200 OK
+** NEW | OpenStreetMap Featured Images
+** NEW | OSM first to honour plate tectonics
+** NEW | SotM 2018 Call for Venues
+** NEW | Use of CC BY 4.0 licensed data in OpenStreetMap
+...
+
+OK - fetching feed 'okfnlabs' - HTTP status 200 OK
+** NEW | Data Package Pipelines
+** NEW | Case Studies for Frictionless Data
+** NEW | Embulk at csv,conf,v2
+** NEW | Using Data Packages with Pandas
+...
+
+OK - fetching feed 'schemaorg' - HTTP status 200 OK
+** NEW | Schema.org 3.2 release: courses, fact-checking, digital publishing accessibility, menus and more...
+** NEW | schema.org update: hotels, datasets, "health-lifesci" and "pending" extensions...
+** NEW | GS1 Web vocabulary: welcoming the first schema.org external extension
+** NEW | Schema.org: what's new?
+...
+
+OK - fetching feed 'wikidata' - HTTP status 200 OK
+** NEW | Your October milestones include Wikidataâs 15 millionth item
+** NEW | Wikidata, coming soon to a menu near you
+** NEW | Developers gather in France for the 2015 Wikimedia Hackathon
+** NEW | Itâs time for some #tastydata
+...
+
+Merging template pack 'starter'
+ Loading template manifest planet-starter/starter.txt...
+ Merging to planet.starter.html...
+ Loading template (from file) >planet-starter/planet.starter.html.erb<...
+ Copying to css/planet.starter.css from planet-starter/css/planet.starter.css...
+ Copying to i/feed-icon-10x10.png from planet-starter/i/feed-icon-10x10.png...
+Done (in 0.42304 s).
+Done.
+```
+
+
+Open up `build/planet.starter.html` in your web browser
+to see your planet web page. Voila!
+
+
+
+## What's Next?
+
+Now change the planet configuration in [`planet.ini`](planet.ini) to fit your needs.
+Change the title and add your web feeds.
+
+Look & feel. Change the starter templates in [`planet-starter`](planet-starter)
+to your liking
+or use a pre-made template pack / theme.
+
+Happy planet!
+
+
+
+
+## Questions 'n' Answers
+
+**Q: How can I update the web feeds and (re)build the planet page(s)?**
+
+A: Rerun the command:
+
+ $ pluto build planet.ini -t starter -o build
+
+That's it ;-) The pluto feed fetcher will use conditional HTTP get requests and content hash checks for web feeds etc.
+
+
+
+**Q: For testing how can I (re)build the planet pages(s) WITHOUT fetching the web feeds?**
+
+A: Use the merge command:
+
+ $ pluto merge -t starter -o build
+
+Note: You do NOT need to pass along the `planet.ini` configuration on merge - everything
+(e.g. planet title, web feed subscriptions, etc.) is stored in the
+local single-file SQLite database, that is, `planet.db` in your working folder.
+
+
+**Q: How can I update the web feeds WITHOUT (re)building the planet page(s)?**
+
+A: Use the update command:
+
+ $ pluto update
+
+Note: You do NOT need to pass along the `planet.ini` configuration on merge - everything
+(e.g. planet title, web feed subscriptions, etc.) is stored in the
+local single-file SQLite database, that is, `planet.db` in your working folder.
+
+
+**Q: How can I install Pluto with a Gemfile and ruby's bundler "virtual env" manager and locked down versions of all dependencies?**
+
+A: To install the planet pluto tools and libraries with "locked down" versions in a virtual / isolated
+environment use ruby's bundler. Ruby's bundler requires a `Gemfile` to
+know what you want to install. Add a Gemfile in the `pluto.starter/` "top-level" directory.
+Example:
+
+``` ruby
+source "https://rubygems.org"
+
+gem "pluto"
+```
+
+Now you can
+
+ $ bundle install
+
+and this will fetch and install all libraries and
+generate a `Gemfile.lock` that lists all libraries
+with all dependencies (recursive all the way down) and all versions locked down.
+
+Note: If you use bundler and want to use the virtual / isolated environment
+you MUST always start `pluto` commands with `bundle exec`. Example:
+
+ $ pluto help
+
+becomes
+
+ $ bundle exec pluto help
+
+and
+
+ $ pluto build planet.ini -t starter -o build
+
+becomes
+
+ $ bundle exec pluto build planet.ini -t starter -o build
+
+and so on.
+
+
+**Q: What packages for Debian (above a slim base image) allow the bundle install to succeed?**
+
+A: A sufficient set of packages for Debian (above a slim base image)
+to allow the `bundle install` to succeed is:
+
+ git ruby-bundler sqlite3 sudo gcc make libsqlite3-dev ruby-dev
+
+And a minimal Dockerfile looks like:
+
+```
+FROM debian:buster-slim
+
+RUN apt-get update \
+ && apt-get install -y --no-install-recommends --no-install-suggests \
+ git ruby-bundler sqlite3 sudo gcc make
+
+RUN export uid=1000 gid=1000 && \
+ mkdir -p /home/developer && \
+ echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd && \
+ /usr/bin/passwd -d developer && \
+ echo "developer:x:${uid}:" >> /etc/group && \
+ echo "developer ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \
+ chown -R developer:1000 /home/developer/
+
+USER developer
+ENV HOME /home/developer
+
+
+WORKDIR /home/developer
+
+RUN git clone https://github.com/feedreader/pluto.starter ; chown -R developer pluto.starter
+
+CMD ["/bin/bash"]
+```
+
+Contributed by / Thanks to [Nathan Wallach](https://github.com/taniwallach)
+
+
+
+
+## References
+
+- [Pluto Planet Guide (Book Edition)](https://feedreader.github.io) - Official Documentation
+- [Pluto Planet Template Packs/Themes](http://planet-templates.github.io) - Blank, Digest, Hacker, Paper, Forty, News, Top 'n' More
+- [Talk Notes - New Horizons - Build Your Own (Static) Planet News Site w/ Pluto (and Ruby)](https://github.com/geraldb/talks/blob/master/planet.md)
+
+
+## License
+
+
+
+The `pluto.starter` scripts and templates are dedicated to the public domain.
+Use it as you please with no restrictions whatsoever.
+
+
+## Questions? Comments?
+
+Send them along to the [wwwmake Forum/Mailing List](http://groups.google.com/group/wwwmake).
+Thanks!
diff --git a/planet-scummvm/README.md b/planet-scummvm/README.md
new file mode 100644
index 0000000..27126ef
--- /dev/null
+++ b/planet-scummvm/README.md
@@ -0,0 +1,36 @@
+# Sample Planet Starter Template Pack
+
+
+See the [Pluto Planet Guide (Book Edition)](https://feedreader.github.io), that is,
+the official documentation
+for how to design your own template packs.
+
+
+
+## Questions 'n' Answers
+
+**Q: Why use [`planet.starter.html`](planet.starter.html.erb) for the filename (and NOT just simple `planet.html`)?**
+
+A: By adding `starter` you can try other template packs (such as digest, hacker, top, etc.)
+and the generated planet pages will NOT overwrite each other but will
+live side-by-side in the same folder
+(e.g. `planet.digest.html`, `planet.hacker.html` and so on) letting you try or serve
+many styles / designs / themes.
+
+
+**Q: What's [`starter.txt`](starter.txt) good for?**
+
+A: The starter text file is the template pack(age) manifest (similar to `package.json` in the node.js world or `gemspec` in ruby)
+listing all files (in plain text) that will get included.
+The name of the file e.g. `starter` (without the `.txt` extension)
+will get used as the name for the template option e.g. use `-t starter` or `--template starter`.
+
+
+
+
+
+
+## Questions? Comments?
+
+Send them along to the [wwwmake Forum/Mailing List](http://groups.google.com/group/wwwmake).
+Thanks!
diff --git a/planet-scummvm/css/planet.scummvm.css b/planet-scummvm/css/planet.scummvm.css
new file mode 100644
index 0000000..71d262e
--- /dev/null
+++ b/planet-scummvm/css/planet.scummvm.css
@@ -0,0 +1,204 @@
+ at viewport {
+ width: device-width;
+ initial-scale: 1.0;
+}
+
+html {
+ font-family: "Lucida Grande", "Segoe UI", sans-serif;
+ color: #111;
+ background: #cc6600;
+ font-size: 0.7em;
+ line-height: 1em;
+}
+
+body {
+ margin: 0;
+ padding: 0;
+ font-size: 1.3em;
+ line-height: 1.5em;
+}
+
+#innerwrap {
+ background-color: #fbf1ce;
+ width: 100%;
+ height: auto;
+ border-radius: 8px;
+ overflow: auto;
+ padding: 30px 5px 10px 10px;
+
+}
+
+a {
+ color: #669;
+}
+
+a:visited {
+ color: #444;
+}
+
+a:hover {
+ color: #000;
+}
+
+a img {
+ border: none;
+}
+
+pre, code {
+ max-height: 100%;
+ width: 100%;
+ font-size: 1.2em;
+ overflow: auto;
+}
+
+h1, h2 {
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+
+h2 {
+ margin: 0;
+}
+
+#page {
+ max-width: 1440px;
+ margin: 0 auto;
+ padding: 0 50px;
+}
+
+/* Header
+*******************************************************************************/
+
+#top {
+ color: #FFF;
+ padding: 10px 30px;
+}
+
+h1 a, h1 a:visited {
+ color: #665;
+ text-decoration: none;
+}
+
+h1 a:hover {
+ color: #444;
+}
+
+#top a {
+ position: absolute;
+ top: 20px;
+}
+
+/* Content
+*******************************************************************************/
+
+#content {
+ width: calc(100% - 200px - 15px);
+ float: left;
+}
+
+#content img {
+ max-width: 100%;
+ height: auto;
+}
+
+/* Sidebar
+*******************************************************************************/
+
+#sidebar {
+ width: 200px;
+ float: left;
+ margin-left: 10px;
+}
+
+#sidebar div {
+ padding: 1em 30px;
+}
+
+#sidebar h2 {
+ color: #dd0;
+ font-size: 1.2em;
+}
+
+#sidebar ul {
+ list-style: none;
+ padding: 0;
+ margin: 1em 0;
+}
+
+#sidebar .section {
+ border-radius: 8px;
+ background: #a82709;
+ z-index: 20;
+ margin: 8px 0 16px;
+}
+
+#sidebar a:hover {
+ text-decoration: underline;
+}
+
+#sidebar a {
+ text-decoration: none;
+ color: #fff;
+ font-size: 0.9em;
+}
+
+/* Article
+*******************************************************************************/
+
+.article {
+ margin-bottom: 2em;
+ padding: 30px;
+ background: #FFF;
+ border: 1px solid #DDD;
+ overflow: hidden;
+}
+
+.article-title, .article-title a {
+ color: #111;
+ text-decoration: none;
+}
+
+.article-info {
+ margin: 0 0 1em 0;
+ color: #999;
+}
+
+.article-content {
+ font-family: verdana, tahoma, arial, helvetica, sans-serif;
+}
+
+.article img {
+ max-width: 440px;
+}
+
+.article .collapsed {
+ display: none;
+}
+
+/* Footer
+*******************************************************************************/
+
+#footer {
+ clear: both;
+ padding: 0 30px;
+}
+
+ at media screen and (max-width: 768px) {
+ #page {
+ margin: 0px;
+ padding: 0;
+ display: flex;
+ flex-direction: column;
+ }
+ #content, #sidebar {
+ float: none;
+ width: 100%;
+ }
+ #innerwrap {
+ padding: 0;
+ border-radius: 0;
+ }
+ #top a {
+ left: calc(50% - 140px);
+ width: 280px;
+ }
+}
diff --git a/planet-scummvm/i/feed-icon-10x10.png b/planet-scummvm/i/feed-icon-10x10.png
new file mode 100644
index 0000000..cc869bc
Binary files /dev/null and b/planet-scummvm/i/feed-icon-10x10.png differ
diff --git a/planet-scummvm/i/scummvm_logo.png b/planet-scummvm/i/scummvm_logo.png
new file mode 100644
index 0000000..dc8f39f
Binary files /dev/null and b/planet-scummvm/i/scummvm_logo.png differ
diff --git a/planet-scummvm/planet.scummvm.html.erb b/planet-scummvm/planet.scummvm.html.erb
new file mode 100644
index 0000000..3f5006f
--- /dev/null
+++ b/planet-scummvm/planet.scummvm.html.erb
@@ -0,0 +1,88 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <meta http-equiv="Content-Style-Type" content="text/css" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <meta name='generator' content='<%= Pluto.generator %>'>
+
+ <title><%= site.title %></title>
+
+ <%= stylesheet_link_tag 'css/planet.scummvm' %>
+</head>
+<body>
+
+<div id="page">
+ <div id="header">
+ <h1 id="top"><a href="https://planet.scummvm.org/"><img src="i/scummvm_logo.png" alt="ScummVM Planet"></a></h1>
+ </div>
+ <div id="innerwrap">
+ <div id="content">
+
+<!-- 2) list full articles -->
+
+<%
+ items = site.items.latest.limit(10)
+ index = 0
+ ItemCursor.new( items ).each do |item, new_date, new_feed|
+ index += 1
+%>
+
+<div class="article">
+
+ <h2 class="article-title">
+ <%= link_to item.title, item.url %>
+ </h2>
+
+ <p class="article-info">
+ <span class="date"><%= item.updated.strftime('%m/%d/%y %H:%M') %></span>
+
+ |
+
+ Source:
+ <%= link_to item.feed.title, item.feed.url %>
+ </p>
+
+ <div class="article-content">
+
+ <!-- note: content goes first; than try summary
+ -->
+ <% if item.content %>
+ <%= item.content %>
+ <% else %>
+ -/-
+ <% end %>
+
+ </div>
+</div> <!-- article -->
+
+<% end %><!-- each item -->
+
+</div> <!-- content -->
+
+<div id="sidebar" class="aside">
+ <div id="sidebar-people" class="section">
+ <h2>People (<%= site.feeds.count() %>)</h2>
+ <ul>
+ <% site.feeds.each do |feed| %>
+ <li>
+ <%= link_to( image_tag('i/feed-icon-10x10.png'), feed.feed_url ) %>
+ <%= link_to feed.title, feed.url %>
+ </li>
+ <% end %>
+ </ul>
+ </div>
+
+ <p class='small'>
+ <% if site.fetched %>
+ <%= site.fetched.strftime('%A, %d. %B %Y %H:%M') %>
+ <% end %>
+ </p>
+</div>
+
+</div>
+</div>
+
+</body>
+</html>
diff --git a/planet-scummvm/scummvm.txt b/planet-scummvm/scummvm.txt
new file mode 100644
index 0000000..dcfc69a
--- /dev/null
+++ b/planet-scummvm/scummvm.txt
@@ -0,0 +1,19 @@
+##########################################
+# planet starter template pack manifest
+##########################################
+
+
+#######
+# main planet template - gets merged (uses embedded ruby)
+
+__file__.scummvm.html planet.scummvm.html.erb
+
+
+
+########
+# more files - get copied 1:1
+
+css/planet.scummvm.css
+
+i/feed-icon-10x10.png
+i/scummvm_logo.png
diff --git a/planet.ini b/planet.ini
new file mode 100644
index 0000000..cb4d257
--- /dev/null
+++ b/planet.ini
@@ -0,0 +1,69 @@
+###
+# your planet news site title
+
+title = ScummVM Planet
+
+
+
+###
+# add some web feeds to your news site
+
+[strangerke]
+ title = Strangerke's Sandbox
+ link = https://strangerke.blogspot.com/
+ feed = https://strangerke.blogspot.com/feeds/posts/default
+
+[sev]
+ title = Sev's ScummVM notes
+ link = https://sev-notes.blogspot.com/
+ feed = https://sev-notes.blogspot.com/feeds/posts/default
+
+[giucam]
+ title = Lost Souls' Alliance Headquarters
+ link = https://lostsoulsalliance.wordpress.com/
+ feed = https://lostsoulsalliance.wordpress.com/feed/
+
+[t7gre]
+ title = Groovie, baby
+ link = https://t7gre.blogspot.com/
+ feed = https://t7gre.blogspot.com/feeds/posts/default
+
+[dreammaster]
+ title = Dreammaster's disassembly blog
+ link = https://dm-notes.blogspot.com/
+ feed = https://dm-notes.blogspot.com/feeds/posts/default
+
+[sanguinehearts]
+ title = sanguinehearts
+ link = https://sanguinehearts.blogspot.com/
+ feed = https://sanguinehearts.blogspot.com/feeds/posts/default
+
+[scummvm]
+ title = ScummVM news
+ link = http://www.scummvm.org/
+ feed = https://www.scummvm.org/feeds/atom/
+
+[criezy]
+ title = Criezy's Blog
+ link = https://criezy.blogspot.com/
+ feed = https://criezy.blogspot.com/feeds/posts/default
+
+[gsoc2025-aun]
+ title = GSoC 2025 - Aun
+ link = https://blogs.scummvm.org/prime
+ feed = https://blogs.scummvm.org/prime/feed/
+
+[gsoc2025-alikhan]
+ title = GSoC 2025 - Alikhan
+ link = https://blogs.scummvm.org/alikhan
+ feed = https://blogs.scummvm.org/alikhan/feed/
+
+[gsoc2025-malhar]
+ title = GSoC 2025 - Malhar
+ link = https://blogs.scummvm.org/superlemon
+ feed = https://blogs.scummvm.org/superlemon/feed/
+
+[gsoc2025-shivang]
+ title = GSoC 2025 - Shivang
+ link = https://blogs.scummvm.org/shivangnagta
+ feed = https://blogs.scummvm.org/shivangnagta/feed/
More information about the Scummvm-git-logs
mailing list