From e636523aac630d73cda415cf551d0be570ce10d6 Mon Sep 17 00:00:00 2001 From: Christian Weiske Date: Mon, 9 May 2016 21:41:32 +0200 Subject: script to use with errbot's exec plugin --- scripts/bookmark-bot.php | 125 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100755 scripts/bookmark-bot.php (limited to 'scripts/bookmark-bot.php') diff --git a/scripts/bookmark-bot.php b/scripts/bookmark-bot.php new file mode 100755 index 0000000..126f39c --- /dev/null +++ b/scripts/bookmark-bot.php @@ -0,0 +1,125 @@ +#!/usr/bin/env php + + * @link https://github.com/cweiske/errbot-exec + */ +require_once dirname(__FILE__) . '/../src/SemanticScuttle/header-standalone.php'; + +if ($argc < 3) { + err('No message and user', 1); +} +$msg = $argv[1]; +$email = $argv[2]; + +if (preg_match('#(.+@.+)/.*#', $email, $matches)) { + //xmpp user name with resource: user@example.org/client + $email = $matches[1]; +} +if (isset($botMailMap[$email])) { + $email = $botMailMap[$email]; +} + +function err($msg, $code) +{ + echo $msg . "\n"; + exit($code); +} + +function getUserId($email) +{ + $users = SemanticScuttle_Service_Factory::get('User'); + if (!$users->isValidEmail($email)) { + err('Invalid e-mail address: ' . $email, 2); + } + $db = SemanticScuttle_Service_Factory::getDb(); + $res = $db->sql_query( + 'SELECT uId FROM '. $users->getTableName() + . ' WHERE email = "' . $db->sql_escape($email) . '"' + ); + $row = $db->sql_fetchrow($res); + if (!is_array($row)) { + err('User not found: ' . $email, 3); + } + return intval($row['uId']); +} + +function splitMsg($msg) +{ + $bmUrl = $msg; + $rest = ''; + if (strpos($msg, ' ') !== false) { + list($bmUrl, $rest) = explode(' ', $msg, 2); + } + $parts = parse_url($bmUrl); + if (!isset($parts['scheme'])) { + err('Scheme missing in URL', 2); + } + if (!SemanticScuttle_Model_Bookmark::isValidUrl($bmUrl)) { + err('Invalid bookmark URL', 2); + } + + $bmTags = array(); + $bmDesc = ''; + $rest = trim($rest); + if (strlen($rest) && $rest{0} == '#') { + //tags begin with '#' + preg_match_all('/#([a-zA-Z0-9]+)/', $rest, $matches); + $bmTags = $matches[1]; + foreach ($matches[0] as $tag) { + if (substr($rest, 0, strlen($tag)) == $tag) { + $rest = trim(substr($rest, strlen($tag))); + } + } + $bmDesc = $rest; + } else { + //use rest as tags + $bmTags = explode(' ', $rest); + $bmTags = array_map('trim', $bmTags); + } + + return array($bmUrl, $bmTags, $bmDesc); +} + +$userId = getUserId($email); +list($bmUrl, $bmTags, $bmDesc) = splitMsg($msg); + +$bookmarks = SemanticScuttle_Service_Factory::get('Bookmark'); +if ($bookmarks->bookmarkExists($bmUrl)) { + echo "URL already bookmarked.\n"; + exit(0); +} + +$urlhelper = new SemanticScuttle_UrlHelper(); +$bmTitle = $urlhelper->getTitle($bmUrl); + +$id = $bookmarks->addBookmark( + $bmUrl, + $bmTitle, + $bmDesc, + null, + SemanticScuttle_Model_Bookmark::SPUBLIC, + $bmTags, + null, + null, + true, + false, + $userId +); +if ($id === false) { + err('Error adding bookmark', 10); +} else { + echo "Bookmark created.\n"; + exit(0); +} +?> -- cgit v1.2.3