* 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 Codebird\Codebird;
+use CodebirdSN\CodebirdSN;
use Friendica\App;
use Friendica\Content\OEmbed;
use Friendica\Content\Text\BBCode;
use Friendica\Core\PConfig;
use Friendica\Model\GContact;
use Friendica\Model\Group;
+use Friendica\Model\Item;
use Friendica\Model\Photo;
use Friendica\Model\User;
+use Friendica\Util\DateTimeFormat;
use Friendica\Util\Network;
-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;
- }
-}
-
function statusnet_install()
{
// we need some hooks, for the configuration and for sending tweets
foreach ($globalsn as $asn) {
if ($asn['apiurl'] == $_POST['statusnet-preconf-apiurl']) {
$apibase = $asn['apiurl'];
- $c = Network::fetchURL($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 = Network::fetchURL($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 = Network::fetchURL($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']);
return;
}
- require_once 'include/bbcode.php';
$dent = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret);
$max_char = $dent->get_maxlength(); // max. length for a dent
$image = "";
if (isset($msgarr["url"]) && ($msgarr["type"] != "photo")) {
- if ((strlen($msgarr["url"]) > 20) &&
- ((strlen($msg . " \n" . $msgarr["url"]) > $max_char))) {
- $msg .= " \n" . Network::shortLink($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 = Network::fetchURL($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);
logger('Send to GNU Social failed: "' . $result->error . '"');
} elseif ($iscomment) {
logger('statusnet_post: Update extid ' . $result->id . " for post id " . $b['id']);
- q("UPDATE `item` SET `extid` = '%s', `body` = '%s' WHERE `id` = %d",
- dbesc($hostname . "::" . $result->id),
- dbesc($result->text),
- intval($b['id'])
- );
+ Item::update(['extid' => $hostname . "::" . $result->id, 'body' => $result->text], ['id' => $b['id']]);
}
}
if ($tempfile != "") {
$abandon_days = 0;
}
- $abandon_limit = date("Y-m-d H:i:s", time() - $abandon_days * 86400);
+ $abandon_limit = date(DateTimeFormat::MYSQL, time() - $abandon_days * 86400);
$r = q("SELECT * FROM `pconfig` WHERE `cat` = 'statusnet' AND `k` = 'import' AND `v` ORDER BY RAND()");
if (count($r)) {
`location`, `about`, `writable`, `blocked`, `readonly`, `pending` )
VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', '%s', %d, 0, 0, 0 ) ",
intval($uid),
- dbesc(datetime_convert()),
+ dbesc(DateTimeFormat::utcNow()),
dbesc($contact->statusnet_profile_url),
dbesc(normalise_link($contact->statusnet_profile_url)),
dbesc(statusnet_address($contact)),
dbesc($photos[0]),
dbesc($photos[1]),
dbesc($photos[2]),
- dbesc(datetime_convert()),
+ dbesc(DateTimeFormat::utcNow()),
intval($contact_id)
);
} else {
// update profile photos once every two weeks as we have no notification of when they change.
- //$update_photo = (($r[0]['avatar-date'] < datetime_convert('','','now -2 days')) ? true : false);
- $update_photo = ($r[0]['avatar-date'] < datetime_convert('', '', 'now -12 hours'));
+ //$update_photo = (($r[0]['avatar-date'] < DateTimeFormat::convert('now -2 days', '', '', )) ? true : false);
+ $update_photo = ($r[0]['avatar-date'] < DateTimeFormat::utc('now -12 hours'));
// check that we have all the photos, this has been known to fail on occasion
if ((!$r[0]['photo']) || (!$r[0]['thumb']) || (!$r[0]['micro']) || ($update_photo)) {
dbesc($photos[0]),
dbesc($photos[1]),
dbesc($photos[2]),
- dbesc(datetime_convert()),
- dbesc(datetime_convert()),
- dbesc(datetime_convert()),
+ dbesc(DateTimeFormat::utcNow()),
+ dbesc(DateTimeFormat::utcNow()),
+ dbesc(DateTimeFormat::utcNow()),
dbesc($contact->statusnet_profile_url),
dbesc(normalise_link($contact->statusnet_profile_url)),
dbesc(statusnet_address($contact)),
$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);
$postarray['body'] = $converted["body"];
$postarray['tag'] = $converted["tags"];
- $postarray['created'] = datetime_convert('UTC', 'UTC', $content->created_at);
- $postarray['edited'] = datetime_convert('UTC', 'UTC', $content->created_at);
+ $postarray['created'] = DateTimeFormat::utc($content->created_at);
+ $postarray['edited'] = DateTimeFormat::utc($content->created_at);
if (is_string($content->place->name)) {
$postarray["location"] = $content->place->name;
'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;
continue;
}
- $item = item_store($postarray);
+ $item = Item::insert($postarray);
$postarray["id"] = $item;
logger('statusnet_complete_conversation: User ' . $self["nick"] . ' posted home timeline item ' . $item);
logger("statusnet_convertmsg: expanding url " . $match[1], LOGGER_DEBUG);
- $expanded_url = Network::originalURL($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 = Network::fetchURL($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