summaryrefslogtreecommitdiffstats
path: root/ajax/exportopml.php
diff options
context:
space:
mode:
Diffstat (limited to 'ajax/exportopml.php')
-rw-r--r--ajax/exportopml.php127
1 files changed, 127 insertions, 0 deletions
diff --git a/ajax/exportopml.php b/ajax/exportopml.php
new file mode 100644
index 000000000..7911a4db9
--- /dev/null
+++ b/ajax/exportopml.php
@@ -0,0 +1,127 @@
+<?php
+/**
+* ownCloud - News app
+*
+* @author Alessandro Cosentino
+* Copyright (c) 2012 - Alessandro Cosentino <cosenal@gmail.com>
+*
+* This file is licensed under the Affero General Public License version 3 or later.
+* See the COPYING-README file
+*
+*/
+
+// Check if we are a user
+OCP\JSON::checkLoggedIn();
+OCP\JSON::checkAppEnabled('news');
+OCP\JSON::callCheck();
+
+$l = OC_L10N::get('news');
+
+function bailOut($msg) {
+ OCP\JSON::error(array('data' => array('message' => $msg)));
+ OCP\Util::writeLog('news','ajax/importopml.php: '.$msg, OCP\Util::ERROR);
+ exit();
+}
+
+if(!isset($_POST['path'])) {
+ bailOut($l->t('No file path was submitted.'));
+}
+
+require_once('news/opmlparser.php');
+
+$raw = file_get_contents($_POST['path']);
+
+try {
+ $parsed = OPMLParser::parse($raw);
+} catch (Exception $e) {
+ bailOut($e->getMessage());
+}
+
+if ($parsed == null) {
+ bailOut($l->t('An error occurred while parsing the file.'));
+}
+
+
+$data = $parsed->getData();
+
+function createFeed($feedurl, $folderid) {
+ $feedmapper = new OCA\News\FeedMapper();
+ $feedid = $feedmapper->findIdFromUrl($feedurl);
+
+ $l = OC_L10N::get('news');
+
+ if ($feedid === null) {
+ $feed = OCA\News\Utils::fetch($feedurl);
+
+ if ($feed !== null) {
+ $feedid = $feedmapper->save($feed, $folderid);
+ }
+ } else {
+ OCP\Util::writeLog('news','ajax/createfeed.php: Error adding feed: '. $feedurl, OCP\Util::ERROR);
+ return false;
+ }
+
+ if($feed === null || !$feedid) {
+ OCP\Util::writeLog('news','ajax/createfeed.php: Error adding feed: '. $feedurl, OCP\Util::ERROR);
+ return false;
+ }
+
+ return true;
+}
+
+$countadded = 0;
+foreach($data as $collection) {
+ if ($collection instanceOf Feed) {
+ $feedurl = $collection->getUrl();
+ $folderid = 0;
+ if (createFeed($feedurl, $folderid)) {
+ $countadded++;
+ }
+ }
+}
+
+
+// // $ch is the handler for the curl connection
+// function addFeed($feedurl, $folderid, $ch) {
+//
+// $data = array('feedurl' => $feedurl, 'folderid' => $folderid);
+// curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
+// $result = curl_exec($ch);
+// $status = curl_getinfo($ch);
+//
+// if($result === false) {
+// bailOut(curl_error($ch));
+// } else {
+// bailOut($status['http_code'] . $status['url']);
+// }
+// }
+
+// $url = OCP\Util::linkToAbsolute('news', 'ajax/createfeed.php');
+// $ch = curl_init($url);
+// if ($ch != false) {
+// curl_setopt($ch, CURLOPT_POST, TRUE);
+// curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
+// curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
+// curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
+// curl_setopt($ch, CURLOPT_USERPWD, 'acosenti:nopass');
+//
+//
+// foreach($data as $collection) {
+// if ($collection instanceOf OC_News_Feed) {
+// $feedurl = $collection->getUrl();
+// $folderid = 0;
+// addFeed($feedurl, $folderid, $ch);
+// }
+// }
+//
+// addFeed(null, null, $ch);
+// $result = curl_exec($ch);
+//
+// curl_close($ch);
+// } else {
+// bailOut($l->t('An error occurred while adding the feeds.'));
+// }
+
+OCP\JSON::success(array('data' => array('title'=>$parsed->getTitle(), 'count'=>$parsed->getCount(),
+ 'countsuccess'=>$countadded)));
+