X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=statusnet%2Fstatusnet.php;h=7ef171f75f4825d5147ed20375946e00c9800c79;hb=429448786d52475085e2266ae07add8dce5d9b4c;hp=3d7083893418ad6870476e07624a4f8ef37807d9;hpb=c71f7b0e1a7bb5ca88347b295dd3a4cc3106c5a9;p=friendica-addons.git diff --git a/statusnet/statusnet.php b/statusnet/statusnet.php index 3d708389..7ef171f7 100644 --- a/statusnet/statusnet.php +++ b/statusnet/statusnet.php @@ -33,115 +33,25 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ -/* - * We have to alter the TwitterOAuth class a little bit to work with any GNU Social - * installation abroad. Basically it's only make the API path variable and be happy. - * - * Thank you guys for the Twitter compatible API! - */ - define('STATUSNET_DEFAULT_POLL_INTERVAL', 5); // given in minutes -require_once 'library/twitteroauth.php'; +require_once __DIR__ . DIRECTORY_SEPARATOR . 'library' . DIRECTORY_SEPARATOR . 'statusnetoauth.php'; require_once 'include/enotify.php'; use Friendica\App; use Friendica\Content\OEmbed; +use Friendica\Content\Text\BBCode; +use Friendica\Content\Text\Plaintext; use Friendica\Core\Addon; use Friendica\Core\Config; +use Friendica\Core\L10n; use Friendica\Core\PConfig; use Friendica\Model\GContact; use Friendica\Model\Group; +use Friendica\Model\Item; use Friendica\Model\Photo; use Friendica\Model\User; - -class StatusNetOAuth extends TwitterOAuth -{ - function get_maxlength() - { - $config = $this->get($this->host . 'statusnet/config.json'); - return $config->site->textlimit; - } - - function accessTokenURL() - { - return $this->host . 'oauth/access_token'; - } - - function authenticateURL() - { - return $this->host . 'oauth/authenticate'; - } - - function authorizeURL() - { - return $this->host . 'oauth/authorize'; - } - - function requestTokenURL() - { - return $this->host . 'oauth/request_token'; - } - - function __construct($apipath, $consumer_key, $consumer_secret, $oauth_token = NULL, $oauth_token_secret = NULL) - { - parent::__construct($consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret); - $this->host = $apipath; - } - - /** - * Make an HTTP request - * - * @return API results - * - * Copied here from the twitteroauth library and complemented by applying the proxy settings of friendica - */ - function http($url, $method, $postfields = NULL) - { - $this->http_info = []; - $ci = curl_init(); - /* Curl settings */ - $prx = Config::get('system', 'proxy'); - if (strlen($prx)) { - curl_setopt($ci, CURLOPT_HTTPPROXYTUNNEL, 1); - curl_setopt($ci, CURLOPT_PROXY, $prx); - $prxusr = Config::get('system', 'proxyuser'); - if (strlen($prxusr)) { - curl_setopt($ci, CURLOPT_PROXYUSERPWD, $prxusr); - } - } - curl_setopt($ci, CURLOPT_USERAGENT, $this->useragent); - curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout); - curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout); - curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE); - curl_setopt($ci, CURLOPT_HTTPHEADER, ['Expect:']); - curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer); - curl_setopt($ci, CURLOPT_HEADERFUNCTION, [$this, 'getHeader']); - curl_setopt($ci, CURLOPT_HEADER, FALSE); - - switch ($method) { - case 'POST': - curl_setopt($ci, CURLOPT_POST, TRUE); - if (!empty($postfields)) { - curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields); - } - break; - case 'DELETE': - curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE'); - if (!empty($postfields)) { - $url = "{$url}?{$postfields}"; - } - } - - curl_setopt($ci, CURLOPT_URL, $url); - $response = curl_exec($ci); - $this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE); - $this->http_info = array_merge($this->http_info, curl_getinfo($ci)); - $this->url = $url; - curl_close($ci); - return $response; - } -} +use Friendica\Util\Network; function statusnet_install() { @@ -190,7 +100,7 @@ function statusnet_jot_nets(App $a, &$b) $statusnet_defpost = PConfig::get(local_user(), 'statusnet', 'post_by_default'); $selected = ((intval($statusnet_defpost) == 1) ? ' checked="checked" ' : ''); $b .= '
' - . t('Post to GNU Social') . '
'; + . L10n::t('Post to GNU Social') . ''; } } @@ -231,14 +141,14 @@ function statusnet_settings_post(App $a, $post) foreach ($globalsn as $asn) { if ($asn['apiurl'] == $_POST['statusnet-preconf-apiurl']) { $apibase = $asn['apiurl']; - $c = fetch_url($apibase . 'statusnet/version.xml'); + $c = Network::fetchUrl($apibase . 'statusnet/version.xml'); if (strlen($c) > 0) { PConfig::set(local_user(), 'statusnet', 'consumerkey', $asn['consumerkey']); PConfig::set(local_user(), 'statusnet', 'consumersecret', $asn['consumersecret']); PConfig::set(local_user(), 'statusnet', 'baseapi', $asn['apiurl']); //PConfig::set(local_user(), 'statusnet', 'application_name', $asn['applicationname'] ); } else { - notice(t('Please contact your site administrator.
The provided API URL is not valid.') . EOL . $asn['apiurl'] . EOL); + notice(L10n::t('Please contact your site administrator.
The provided API URL is not valid.') . EOL . $asn['apiurl'] . EOL); } } } @@ -249,7 +159,7 @@ function statusnet_settings_post(App $a, $post) // we'll check the API Version for that, if we don't get one we'll try to fix the path but will // resign quickly after this one try to fix the path ;-) $apibase = $_POST['statusnet-baseapi']; - $c = fetch_url($apibase . 'statusnet/version.xml'); + $c = Network::fetchUrl($apibase . 'statusnet/version.xml'); if (strlen($c) > 0) { // ok the API path is correct, let's save the settings PConfig::set(local_user(), 'statusnet', 'consumerkey', $_POST['statusnet-consumerkey']); @@ -259,7 +169,7 @@ function statusnet_settings_post(App $a, $post) } else { // the API path is not correct, maybe missing trailing / ? $apibase = $apibase . '/'; - $c = fetch_url($apibase . 'statusnet/version.xml'); + $c = Network::fetchUrl($apibase . 'statusnet/version.xml'); if (strlen($c) > 0) { // ok the API path is now correct, let's save the settings PConfig::set(local_user(), 'statusnet', 'consumerkey', $_POST['statusnet-consumerkey']); @@ -267,7 +177,7 @@ function statusnet_settings_post(App $a, $post) PConfig::set(local_user(), 'statusnet', 'baseapi', $apibase); } else { // still not the correct API base, let's do noting - notice(t('We could not contact the GNU Social API with the Path you entered.') . EOL); + notice(L10n::t('We could not contact the GNU Social API with the Path you entered.') . EOL); } } goaway('settings/connectors'); @@ -301,7 +211,7 @@ function statusnet_settings_post(App $a, $post) if (!intval($_POST['statusnet-mirror'])) PConfig::delete(local_user(), 'statusnet', 'lastid'); - info(t('GNU Social settings updated.') . EOL); + info(L10n::t('GNU Social settings updated.') . EOL); } } } @@ -342,11 +252,11 @@ function statusnet_settings(App $a, &$s) $css = (($enabled) ? '' : '-disabled'); $s .= ''; - $s .= '

' . t('GNU Social Import/Export/Mirror') . '

'; + $s .= '

' . L10n::t('GNU Social Import/Export/Mirror') . '

'; $s .= '
'; $s .= '
'; @@ -638,20 +548,18 @@ function statusnet_post_hook(App $a, &$b) PConfig::set($b['uid'], 'statusnet', 'max_char', $max_char); $tempfile = ""; - require_once "include/plaintext.php"; - require_once "include/network.php"; - $msgarr = plaintext($b, $max_char, true, 7); + $msgarr = BBCode::toPlaintext($b, $max_char, true, 7); $msg = $msgarr["text"]; if (($msg == "") && isset($msgarr["title"])) - $msg = shortenmsg($msgarr["title"], $max_char - 50); + $msg = Plaintext::shorten($msgarr["title"], $max_char - 50); $image = ""; if (isset($msgarr["url"]) && ($msgarr["type"] != "photo")) { if ((strlen($msgarr["url"]) > 20) && ((strlen($msg . " \n" . $msgarr["url"]) > $max_char))) { - $msg .= " \n" . short_link($msgarr["url"]); + $msg .= " \n" . Network::shortenUrl($msgarr["url"]); } else { $msg .= " \n" . $msgarr["url"]; } @@ -660,7 +568,7 @@ function statusnet_post_hook(App $a, &$b) } if ($image != "") { - $img_str = fetch_url($image); + $img_str = Network::fetchUrl($image); $tempfile = tempnam(get_temppath(), "cache"); file_put_contents($tempfile, $img_str); $postdata = ["status" => $msg, "media[]" => $tempfile]; @@ -668,7 +576,7 @@ function statusnet_post_hook(App $a, &$b) $postdata = ["status" => $msg]; } - // and now dent it :-) + // and now send it :-) if (strlen($msg)) { if ($iscomment) { $postdata["in_reply_to_status_id"] = substr($orig_post["uri"], $hostlength); @@ -676,7 +584,7 @@ function statusnet_post_hook(App $a, &$b) } // New code that is able to post pictures - require_once "addon/statusnet/codebird.php"; + require_once __DIR__ . DIRECTORY_SEPARATOR . 'library' . DIRECTORY_SEPARATOR . 'codebirdsn.php'; $cb = \CodebirdSN\CodebirdSN::getInstance(); $cb->setAPIEndpoint($api); $cb->setConsumerKey($ckey, $csecret); @@ -747,7 +655,7 @@ function statusnet_addon_admin(App $a, &$o) foreach ($sites as $id => $s) { $sitesform[] = [ 'sitename' => ["sitename[$id]", "Site name", $s['sitename'], ""], - 'apiurl' => ["apiurl[$id]", "Api url", $s['apiurl'], t("Base API Path \x28remember the trailing /\x29")], + 'apiurl' => ["apiurl[$id]", "Api url", $s['apiurl'], L10n::t("Base API Path \x28remember the trailing /\x29")], 'secret' => ["secret[$id]", "Secret", $s['consumersecret'], ""], 'key' => ["key[$id]", "Key", $s['consumerkey'], ""], //'applicationname' => Array("applicationname[$id]", "Application name", $s['applicationname'], ""), @@ -758,16 +666,16 @@ function statusnet_addon_admin(App $a, &$o) /* empty form to add new site */ $id++; $sitesform[] = [ - 'sitename' => ["sitename[$id]", t("Site name"), "", ""], - 'apiurl' => ["apiurl[$id]", "Api url", "", t("Base API Path \x28remember the trailing /\x29")], - 'secret' => ["secret[$id]", t("Consumer Secret"), "", ""], - 'key' => ["key[$id]", t("Consumer Key"), "", ""], - //'applicationname' => Array("applicationname[$id]", t("Application name"), "", ""), + 'sitename' => ["sitename[$id]", L10n::t("Site name"), "", ""], + 'apiurl' => ["apiurl[$id]", "Api url", "", L10n::t("Base API Path \x28remember the trailing /\x29")], + 'secret' => ["secret[$id]", L10n::t("Consumer Secret"), "", ""], + 'key' => ["key[$id]", L10n::t("Consumer Key"), "", ""], + //'applicationname' => Array("applicationname[$id]", L10n::t("Application name"), "", ""), ]; $t = get_markup_template("admin.tpl", "addon/statusnet/"); $o = replace_macros($t, [ - '$submit' => t('Save Settings'), + '$submit' => L10n::t('Save Settings'), '$sites' => $sitesform, ]); } @@ -784,7 +692,6 @@ function statusnet_prepare_body(App $a, &$b) $max_char = 140; } - require_once "include/plaintext.php"; $item = $b["item"]; $item["plink"] = $a->get_baseurl() . "/display/" . $a->user["nickname"] . "/" . $item["parent"]; @@ -809,7 +716,7 @@ function statusnet_prepare_body(App $a, &$b) } } - $msgarr = plaintext($item, $max_char, true, 7); + $msgarr = BBCode::toPlaintext($item, $max_char, true, 7); $msg = $msgarr["text"]; if (isset($msgarr["url"]) && ($msgarr["type"] != "photo")) { @@ -1129,9 +1036,9 @@ function statusnet_fetchuser(App $a, $uid, $screen_name = "", $user_id = "") $otoken = PConfig::get($uid, 'statusnet', 'oauthtoken'); $osecret = PConfig::get($uid, 'statusnet', 'oauthsecret'); - require_once "addon/statusnet/codebird.php"; + require_once __DIR__ . DIRECTORY_SEPARATOR . 'library' . DIRECTORY_SEPARATOR . 'codebirdsn.php'; - $cb = \Codebird\Codebird::getInstance(); + $cb = \CodebirdSN\CodebirdSN::getInstance(); $cb->setConsumerKey($ckey, $csecret); $cb->setToken($otoken, $osecret); @@ -1370,7 +1277,7 @@ function statusnet_checknotification(App $a, $uid, $own_url, $top_item, $postarr 'to_email' => $user[0]['email'], 'uid' => $user[0]['uid'], 'item' => $postarray, - 'link' => $a->get_baseurl() . '/display/' . urlencode(get_item_guid($top_item)), + 'link' => $a->get_baseurl() . '/display/' . urlencode(Item::getGuidById($top_item)), 'source_name' => $postarray['author-name'], 'source_link' => $postarray['author-link'], 'source_photo' => $postarray['author-avatar'], @@ -1401,7 +1308,6 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1) logger("statusnet_fetchhometimeline: Fetching for user " . $uid, LOGGER_DEBUG); - require_once 'library/twitteroauth.php'; require_once 'include/items.php'; $connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret); @@ -1494,7 +1400,7 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1) continue; } - $item = item_store($postarray); + $item = Item::insert($postarray); $postarray["id"] = $item; logger('statusnet_fetchhometimeline: User ' . $self["nick"] . ' posted home timeline item ' . $item); @@ -1549,7 +1455,7 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1) continue; } - $item = item_store($postarray); + $item = Item::insert($postarray); $postarray["id"] = $item; logger('statusnet_fetchhometimeline: User ' . $self["nick"] . ' posted mention timeline item ' . $item); @@ -1578,7 +1484,7 @@ function statusnet_fetchhometimeline(App $a, $uid, $mode = 1) 'to_email' => $u[0]['email'], 'uid' => $u[0]['uid'], 'item' => $postarray, - 'link' => $a->get_baseurl() . '/display/' . urlencode(get_item_guid($item)), + 'link' => $a->get_baseurl() . '/display/' . urlencode(Item::getGuidById($item)), 'source_name' => $postarray['author-name'], 'source_link' => $postarray['author-link'], 'source_photo' => $postarray['author-avatar'], @@ -1602,8 +1508,6 @@ function statusnet_complete_conversation(App $a, $uid, $self, $create_user, $nic $osecret = PConfig::get($uid, 'statusnet', 'oauthsecret'); $own_url = PConfig::get($uid, 'statusnet', 'own_url'); - require_once 'library/twitteroauth.php'; - $connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret); $parameters["count"] = 200; @@ -1612,14 +1516,14 @@ function statusnet_complete_conversation(App $a, $uid, $self, $create_user, $nic if (is_array($items)) { $posts = array_reverse($items); - foreach ($posts AS $post) { + foreach ($posts as $post) { $postarray = statusnet_createpost($a, $uid, $post, $self, false, false); if (trim($postarray['body']) == "") { continue; } - $item = item_store($postarray); + $item = Item::insert($postarray); $postarray["id"] = $item; logger('statusnet_complete_conversation: User ' . $self["nick"] . ' posted home timeline item ' . $item); @@ -1634,7 +1538,6 @@ function statusnet_complete_conversation(App $a, $uid, $self, $create_user, $nic function statusnet_convertmsg(App $a, $body, $no_tags = false) { require_once "include/items.php"; - require_once "include/network.php"; $body = preg_replace("=\[url\=https?://([0-9]*).([0-9]*).([0-9]*).([0-9]*)/([0-9]*)\](.*?)\[\/url\]=ism", "$1.$2.$3.$4/$5", $body); @@ -1652,7 +1555,7 @@ function statusnet_convertmsg(App $a, $body, $no_tags = false) logger("statusnet_convertmsg: expanding url " . $match[1], LOGGER_DEBUG); - $expanded_url = original_url($match[1]); + $expanded_url = Network::finalUrl($match[1]); logger("statusnet_convertmsg: fetching data for " . $expanded_url, LOGGER_DEBUG); @@ -1676,7 +1579,7 @@ function statusnet_convertmsg(App $a, $body, $no_tags = false) } elseif ($oembed_data->type != "link") { $body = str_replace($search, "[url=" . $expanded_url . "]" . $expanded_url . "[/url]", $body); } else { - $img_str = fetch_url($expanded_url, true, $redirects, 4); + $img_str = Network::fetchUrl($expanded_url, true, $redirects, 4); $tempfile = tempnam(get_temppath(), "cache"); file_put_contents($tempfile, $img_str); @@ -1755,8 +1658,6 @@ function statusnet_fetch_own_contact(App $a, $uid) $contact_id = 0; if ($own_url == "") { - require_once 'library/twitteroauth.php'; - $connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret); // Fetching user data