summaryrefslogtreecommitdiffstats
path: root/apps/bookmarks
diff options
context:
space:
mode:
authorArthur Schiwon <blizzz@arthur-schiwon.de>2011-08-23 16:30:55 +0200
committerArthur Schiwon <blizzz@arthur-schiwon.de>2011-08-23 16:30:55 +0200
commitb09ba58ca6a8e1c9979c8e289027fe5b1ddd2130 (patch)
tree9a3e25485dae37070a975be50a734581b5335de9 /apps/bookmarks
parent847347b58a29d48340d40da5ca4f51caf802ccf9 (diff)
downloadnextcloud-server-b09ba58ca6a8e1c9979c8e289027fe5b1ddd2130.tar.gz
nextcloud-server-b09ba58ca6a8e1c9979c8e289027fe5b1ddd2130.zip
autoretrieve title and description after entering new url
Diffstat (limited to 'apps/bookmarks')
-rw-r--r--apps/bookmarks/ajax/getMeta.php58
1 files changed, 58 insertions, 0 deletions
diff --git a/apps/bookmarks/ajax/getMeta.php b/apps/bookmarks/ajax/getMeta.php
new file mode 100644
index 00000000000..c61c8fb4888
--- /dev/null
+++ b/apps/bookmarks/ajax/getMeta.php
@@ -0,0 +1,58 @@
+<?php
+
+/**
+* ownCloud - bookmarks plugin
+*
+* @author Arthur Schiwon
+* @copyright 2011 Arthur Schiwon blizzz@arthur-schiwon.de
+*
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+* License as published by the Free Software Foundation; either
+* version 3 of the License, or 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this library. If not, see <http://www.gnu.org/licenses/>.
+*
+*/
+
+//no apps or filesystem
+$RUNTIME_NOSETUPFS=true;
+
+require_once('../../../lib/base.php');
+
+// We send json data
+header( 'Content-Type: application/jsonrequest' );
+
+// Check if we are a user
+if( !OC_User::isLoggedIn()){
+ echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => 'Authentication error' )));
+ exit();
+}
+
+$metadata = array();
+
+$url = urldecode($_GET["url"]);
+//allow only http(s) and (s)ftp
+$protocols = '/^[hs]{0,1}[tf]{0,1}tp[s]{0,1}\:\/\//i';
+//if not (allowed) protocol is given, assume http
+if(preg_match($protocols, $url) == 0) {
+ $url = 'http://' . $url;
+}
+
+$page = file_get_contents($url);
+@preg_match( "/<title>(.*)<\/title>/si", $page, $match );
+$metadata['title'] = htmlentities(strip_tags(@$match[1]));
+
+$meta = get_meta_tags($url);
+
+if(array_key_exists('description', $meta)) {
+ $metadata['description'] = $meta['description'];
+}
+
+echo json_encode( array( 'status' => 'success', 'data' => $metadata));