summaryrefslogtreecommitdiffstats
path: root/public/admin/subscriptions.php
diff options
context:
space:
mode:
Diffstat (limited to 'public/admin/subscriptions.php')
-rwxr-xr-xpublic/admin/subscriptions.php84
1 files changed, 84 insertions, 0 deletions
diff --git a/public/admin/subscriptions.php b/public/admin/subscriptions.php
new file mode 100755
index 0000000..418e354
--- /dev/null
+++ b/public/admin/subscriptions.php
@@ -0,0 +1,84 @@
+<?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!');
+}
+
+$opmlFile = $PlanetConfig->getOpmlFile();
+
+if (isset($_POST['upload']) &&
+ isset($_FILES['opml']) &&
+ is_uploaded_file($_FILES['opml']['tmp_name']) &&
+ $_FILES['opml']['size'] > 0) {
+ OpmlManager::backup($opmlFile);
+ $newOpml = new Opml();
+ $newOpml->parse(file_get_contents($_FILES['opml']['tmp_name']));
+ OpmlManager::save($newOpml, $opmlFile);
+} elseif (isset($_POST['opml']) || isset($_POST['add'])) {
+ // Load old OPML
+ $oldOpml = OpmlManager::load($opmlFile);
+ if ($PlanetConfig->getName() === '') {
+ $PlanetConfig->setName($oldOpml->getTitle());
+ }
+ $newOpml = new Opml();
+ $newOpml->title = $PlanetConfig->getName();
+
+ // Remove slashes if needed
+ if (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 (!$PlanetConfig->checkCertificates()) {
+ $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($opmlFile);
+
+ // Save new OPML
+ OpmlManager::save($newOpml, $opmlFile);
+}
+header("Location: index.php");
+die();