* 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()
{
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']);
// 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']);
} 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']);
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"]);
- } else {
- $msg .= " \n" . $msgarr["url"];
- }
+ $msg .= " \n" . $msgarr["url"];
} elseif (isset($msgarr["image"]) && ($msgarr["type"] != "video")) {
$image = $msgarr["image"];
}
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];
$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);
}
// 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);
$max_char = 140;
}
- require_once "include/plaintext.php";
$item = $b["item"];
$item["plink"] = $a->get_baseurl() . "/display/" . $a->user["nickname"] . "/" . $item["parent"];
}
}
- $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")) {
$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);
'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'],
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);
continue;
}
- $item = item_store($postarray);
+ $item = Item::insert($postarray);
$postarray["id"] = $item;
logger('statusnet_fetchhometimeline: User ' . $self["nick"] . ' posted home timeline item ' . $item);
continue;
}
- $item = item_store($postarray);
+ $item = Item::insert($postarray);
$postarray["id"] = $item;
logger('statusnet_fetchhometimeline: User ' . $self["nick"] . ' posted mention timeline item ' . $item);
'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'],
$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;
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);
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);
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);
} 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);
$contact_id = 0;
if ($own_url == "") {
- require_once 'library/twitteroauth.php';
-
$connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret);
// Fetching user data