diff options
Diffstat (limited to 'public/admin/subscriptions.php')
-rwxr-xr-x | public/admin/subscriptions.php | 84 |
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(); |