* we do not need "Twitter as login". When you've registered the app you get the
* OAuth Consumer key and secret pair for your application/site.
*
- * Add this key pair to your global .htconfig.php or use the admin panel.
+ * Add this key pair to your global config/addon.ini.php or use the admin panel.
*
- * $a->config['twitter']['consumerkey'] = 'your consumer_key here';
- * $a->config['twitter']['consumersecret'] = 'your consumer_secret here';
+ * [twitter]
+ * consumerkey = your consumer_key here
+ * consumersecret = your consumer_secret here
*
- * To activate the addon itself add it to the $a->config['system']['addon']
+ * To activate the addon itself add it to the [system] addon
* setting. After this, your user can configure their Twitter account settings
* from "Settings -> Addon Settings".
*
use Friendica\Core\L10n;
use Friendica\Core\PConfig;
use Friendica\Core\Worker;
-use Friendica\Model\GContact;
+use Friendica\Database\DBA;
use Friendica\Model\Contact;
+use Friendica\Model\Conversation;
+use Friendica\Model\GContact;
use Friendica\Model\Group;
use Friendica\Model\Item;
use Friendica\Model\ItemContent;
use Friendica\Object\Image;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\Network;
-use Friendica\Database\DBM;
require_once 'boot.php';
require_once 'include/dba.php';
function twitter_install()
{
// we need some hooks, for the configuration and for sending tweets
- Addon::registerHook('connector_settings', 'addon/twitter/twitter.php', 'twitter_settings');
- Addon::registerHook('connector_settings_post', 'addon/twitter/twitter.php', 'twitter_settings_post');
- Addon::registerHook('post_local', 'addon/twitter/twitter.php', 'twitter_post_local');
- Addon::registerHook('notifier_normal', 'addon/twitter/twitter.php', 'twitter_post_hook');
- Addon::registerHook('jot_networks', 'addon/twitter/twitter.php', 'twitter_jot_nets');
- Addon::registerHook('cron', 'addon/twitter/twitter.php', 'twitter_cron');
- Addon::registerHook('queue_predeliver', 'addon/twitter/twitter.php', 'twitter_queue_hook');
- Addon::registerHook('follow', 'addon/twitter/twitter.php', 'twitter_follow');
- Addon::registerHook('expire', 'addon/twitter/twitter.php', 'twitter_expire');
- Addon::registerHook('prepare_body', 'addon/twitter/twitter.php', 'twitter_prepare_body');
- Addon::registerHook('check_item_notification', 'addon/twitter/twitter.php', 'twitter_check_item_notification');
+ Addon::registerHook('load_config' , __FILE__, 'twitter_load_config');
+ Addon::registerHook('connector_settings' , __FILE__, 'twitter_settings');
+ Addon::registerHook('connector_settings_post', __FILE__, 'twitter_settings_post');
+ Addon::registerHook('post_local' , __FILE__, 'twitter_post_local');
+ Addon::registerHook('notifier_normal' , __FILE__, 'twitter_post_hook');
+ Addon::registerHook('jot_networks' , __FILE__, 'twitter_jot_nets');
+ Addon::registerHook('cron' , __FILE__, 'twitter_cron');
+ Addon::registerHook('queue_predeliver' , __FILE__, 'twitter_queue_hook');
+ Addon::registerHook('follow' , __FILE__, 'twitter_follow');
+ Addon::registerHook('expire' , __FILE__, 'twitter_expire');
+ Addon::registerHook('prepare_body' , __FILE__, 'twitter_prepare_body');
+ Addon::registerHook('check_item_notification', __FILE__, 'twitter_check_item_notification');
logger("installed twitter");
}
function twitter_uninstall()
{
- Addon::unregisterHook('connector_settings', 'addon/twitter/twitter.php', 'twitter_settings');
- Addon::unregisterHook('connector_settings_post', 'addon/twitter/twitter.php', 'twitter_settings_post');
- Addon::unregisterHook('post_local', 'addon/twitter/twitter.php', 'twitter_post_local');
- Addon::unregisterHook('notifier_normal', 'addon/twitter/twitter.php', 'twitter_post_hook');
- Addon::unregisterHook('jot_networks', 'addon/twitter/twitter.php', 'twitter_jot_nets');
- Addon::unregisterHook('cron', 'addon/twitter/twitter.php', 'twitter_cron');
- Addon::unregisterHook('queue_predeliver', 'addon/twitter/twitter.php', 'twitter_queue_hook');
- Addon::unregisterHook('follow', 'addon/twitter/twitter.php', 'twitter_follow');
- Addon::unregisterHook('expire', 'addon/twitter/twitter.php', 'twitter_expire');
- Addon::unregisterHook('prepare_body', 'addon/twitter/twitter.php', 'twitter_prepare_body');
- Addon::unregisterHook('check_item_notification', 'addon/twitter/twitter.php', 'twitter_check_item_notification');
+ Addon::unregisterHook('load_config' , __FILE__, 'twitter_load_config');
+ Addon::unregisterHook('connector_settings' , __FILE__, 'twitter_settings');
+ Addon::unregisterHook('connector_settings_post', __FILE__, 'twitter_settings_post');
+ Addon::unregisterHook('post_local' , __FILE__, 'twitter_post_local');
+ Addon::unregisterHook('notifier_normal' , __FILE__, 'twitter_post_hook');
+ Addon::unregisterHook('jot_networks' , __FILE__, 'twitter_jot_nets');
+ Addon::unregisterHook('cron' , __FILE__, 'twitter_cron');
+ Addon::unregisterHook('queue_predeliver' , __FILE__, 'twitter_queue_hook');
+ Addon::unregisterHook('follow' , __FILE__, 'twitter_follow');
+ Addon::unregisterHook('expire' , __FILE__, 'twitter_expire');
+ Addon::unregisterHook('prepare_body' , __FILE__, 'twitter_prepare_body');
+ Addon::unregisterHook('check_item_notification', __FILE__, 'twitter_check_item_notification');
// old setting - remove only
- Addon::unregisterHook('post_local_end', 'addon/twitter/twitter.php', 'twitter_post_hook');
- Addon::unregisterHook('addon_settings', 'addon/twitter/twitter.php', 'twitter_settings');
- Addon::unregisterHook('addon_settings_post', 'addon/twitter/twitter.php', 'twitter_settings_post');
+ Addon::unregisterHook('post_local_end' , __FILE__, 'twitter_post_hook');
+ Addon::unregisterHook('addon_settings' , __FILE__, 'twitter_settings');
+ Addon::unregisterHook('addon_settings_post', __FILE__, 'twitter_settings_post');
}
-function twitter_check_item_notification(App $a, &$notification_data)
+function twitter_load_config(App $a)
+{
+ $a->loadConfigFile(__DIR__ . '/config/twitter.ini.php');
+}
+
+function twitter_check_item_notification(App $a, array &$notification_data)
{
$own_id = PConfig::get($notification_data["uid"], 'twitter', 'own_id');
$own_user = q("SELECT `url` FROM `contact` WHERE `uid` = %d AND `alias` = '%s' LIMIT 1",
intval($notification_data["uid"]),
- dbesc("twitter::".$own_id)
+ DBA::escape("twitter::".$own_id)
);
if ($own_user) {
}
}
-function twitter_follow(App $a, &$contact)
+function twitter_follow(App $a, array &$contact)
{
logger("twitter_follow: Check if contact is twitter contact. " . $contact["url"], LOGGER_DEBUG);
$r = q("SELECT name,nick,url,addr,batch,notify,poll,request,confirm,poco,photo,priority,network,alias,pubkey
FROM `contact` WHERE `uid` = %d AND `nick` = '%s'",
intval($uid),
- dbesc($nickname));
- if (DBM::is_result($r)) {
+ DBA::escape($nickname));
+ if (DBA::isResult($r)) {
$contact["contact"] = $r[0];
}
}
}
}
-function twitter_settings_post(App $a, $post)
+function twitter_settings_post(App $a)
{
if (!local_user()) {
return;
$s .= '</div><div class="clear"></div>';
}
-function twitter_post_local(App $a, &$b)
+function twitter_post_local(App $a, array &$b)
{
if ($b['edit']) {
return;
switch ($action) {
case "delete":
// To-Do: $result = $connection->post('statuses/destroy', $post);
+ $result = [];
break;
case "like":
$result = $connection->post('favorites/create', $post);
case "unlike":
$result = $connection->post('favorites/destroy', $post);
break;
+ default:
+ logger('Unhandled action ' . $action, LOGGER_DEBUG);
+ $result = [];
}
logger("twitter_action '" . $action . "' send, result: " . print_r($result, true), LOGGER_DEBUG);
}
-function twitter_post_hook(App $a, &$b)
+function twitter_post_hook(App $a, array &$b)
{
// Post to Twitter
if (!PConfig::get($b["uid"], 'twitter', 'import')
$condition = ['uri' => $b["thr-parent"], 'uid' => $b["uid"]];
$orig_post = Item::selectFirst([], $condition);
- if (!DBM::is_result($orig_post)) {
+ if (!DBA::isResult($orig_post)) {
logger("twitter_post_hook: no parent found " . $b["thr-parent"]);
return;
} else {
// Dont't post if the post doesn't belong to us.
// This is a check for forum postings
- $self = dba::selectFirst('contact', ['id'], ['uid' => $b['uid'], 'self' => true]);
+ $self = DBA::selectFirst('contact', ['id'], ['uid' => $b['uid'], 'self' => true]);
if ($b['contact-id'] != $self['id']) {
return;
}
$result = $connection->post($url, $post);
logger('twitter_post send, result: ' . print_r($result, true), LOGGER_DEBUG);
- if ($result->source) {
+ if (!empty($result->source)) {
Config::set("twitter", "application_name", strip_tags($result->source));
}
- if ($result->errors) {
+ if (!empty($result->errors)) {
logger('Send to Twitter failed: "' . print_r($result->errors, true) . '"');
$r = q("SELECT `id` FROM `contact` WHERE `uid` = %d AND `self`", intval($b['uid']));
- if (DBM::is_result($r)) {
+ if (DBA::isResult($r)) {
$a->contact = $r[0]["id"];
}
]);
}
-function twitter_cron(App $a, $b)
+function twitter_cron(App $a)
{
$last = Config::get('twitter', 'last_poll');
logger('twitter: cron_start');
$r = q("SELECT * FROM `pconfig` WHERE `cat` = 'twitter' AND `k` = 'mirror_posts' AND `v` = '1'");
- if (DBM::is_result($r)) {
+ if (DBA::isResult($r)) {
foreach ($r as $rr) {
logger('twitter: fetching for user ' . $rr['uid']);
Worker::add(PRIORITY_MEDIUM, "addon/twitter/twitter_sync.php", 1, (int) $rr['uid']);
$abandon_limit = date(DateTimeFormat::MYSQL, time() - $abandon_days * 86400);
$r = q("SELECT * FROM `pconfig` WHERE `cat` = 'twitter' AND `k` = 'import' AND `v` = '1'");
- if (DBM::is_result($r)) {
+ if (DBA::isResult($r)) {
foreach ($r as $rr) {
if ($abandon_days != 0) {
$user = q("SELECT `login_date` FROM `user` WHERE uid=%d AND `login_date` >= '%s'", $rr['uid'], $abandon_limit);
- if (!DBM::is_result($user)) {
+ if (!DBA::isResult($user)) {
logger('abandoned account: timeline from user ' . $rr['uid'] . ' will not be imported');
continue;
}
Config::set('twitter', 'last_poll', time());
}
-function twitter_expire(App $a, $b)
+function twitter_expire(App $a)
{
$days = Config::get('twitter', 'expire');
return;
}
- $r = dba::select('item', ['id'], ['deleted' => true, 'network' => NETWORK_TWITTER]);
- while ($row = dba::fetch($r)) {
- dba::delete('item', ['id' => $row['id']]);
+ $r = DBA::select('item', ['id', 'iaid', 'icid'], ['deleted' => true, 'network' => NETWORK_TWITTER]);
+ while ($row = DBA::fetch($r)) {
+ DBA::delete('item', ['id' => $row['id']]);
+ if (!empty($row['iaid']) && !DBA::exists('item', ['iaid' => $row['iaid']])) {
+ DBA::delete('item-activity', ['id' => $row['iaid']]);
+ }
+ if (!empty($row['icid']) && !DBA::exists('item', ['icid' => $row['icid']])) {
+ DBA::delete('item-content', ['id' => $row['icid']]);
+ }
}
- dba::close($r);
+ DBA::close($r);
require_once "include/items.php";
logger('twitter_expire: expire_start');
$r = q("SELECT * FROM `pconfig` WHERE `cat` = 'twitter' AND `k` = 'import' AND `v` = '1' ORDER BY RAND()");
- if (DBM::is_result($r)) {
+ if (DBA::isResult($r)) {
foreach ($r as $rr) {
logger('twitter_expire: user ' . $rr['uid']);
Item::expire($rr['uid'], $days, NETWORK_TWITTER, true);
logger('twitter_expire: expire_end');
}
-function twitter_prepare_body(App $a, &$b)
+function twitter_prepare_body(App $a, array &$b)
{
if ($b["item"]["network"] != NETWORK_TWITTER) {
return;
$condition = ['uri' => $item["thr-parent"], 'uid' => local_user()];
$orig_post = Item::selectFirst(['author-link'], $condition);
- if (DBM::is_result($orig_post)) {
+ if (DBA::isResult($orig_post)) {
$nicknameplain = preg_replace("=https?://twitter.com/(.*)=ism", "$1", $orig_post["author-link"]);
$nickname = "@[url=" . $orig_post["author-link"] . "]" . $nicknameplain . "[/url]";
$nicknameplain = "@" . $nicknameplain;
*/
function twitter_do_mirrorpost(App $a, $uid, $post)
{
- $datarray["type"] = "wall";
- $datarray["api_source"] = true;
- $datarray["profile_uid"] = $uid;
- $datarray["extid"] = NETWORK_TWITTER;
- $datarray['message_id'] = Item::newURI($uid, NETWORK_TWITTER . ":" . $post->id);
- // $datarray['object'] = json_encode($post); // Activate for debugging
- $datarray["title"] = "";
-
- if (is_object($post->retweeted_status)) {
+ $datarray['api_source'] = true;
+ $datarray['profile_uid'] = $uid;
+ $datarray['extid'] = NETWORK_TWITTER;
+ $datarray['message_id'] = Item::newURI($uid, NETWORK_TWITTER . ':' . $post->id);
+ $datarray['protocol'] = Conversation::PARCEL_TWITTER;
+ $datarray['source'] = json_encode($post);
+ $datarray['title'] = '';
+
+ if (!empty($post->retweeted_status)) {
// We don't support nested shares, so we mustn't show quotes as shares on retweets
$item = twitter_createpost($a, $uid, $post->retweeted_status, ['id' => 0], false, false, true);
$item['author-name'],
$item['author-link'],
$item['author-avatar'],
- "",
+ '',
$item['created'],
$item['plink']
);
$datarray['body'] = $item['body'];
}
- $datarray["source"] = $item['app'];
- $datarray["verb"] = $item['verb'];
+ $datarray['source'] = $item['app'];
+ $datarray['verb'] = $item['verb'];
- if (isset($item["location"])) {
- $datarray["location"] = $item["location"];
+ if (isset($item['location'])) {
+ $datarray['location'] = $item['location'];
}
- if (isset($item["coord"])) {
- $datarray["coord"] = $item["coord"];
+ if (isset($item['coord'])) {
+ $datarray['coord'] = $item['coord'];
}
return $datarray;
PConfig::set($uid, 'twitter', 'lastid', $lastid);
}
-function twitter_queue_hook(App $a, &$b)
+function twitter_queue_hook(App $a)
{
$qi = q("SELECT * FROM `queue` WHERE `network` = '%s'",
- dbesc(NETWORK_TWITTER)
+ DBA::escape(NETWORK_TWITTER)
);
- if (!DBM::is_result($qi)) {
+ if (!DBA::isResult($qi)) {
return;
}
WHERE `contact`.`self` = 1 AND `contact`.`id` = %d LIMIT 1",
intval($x['cid'])
);
- if (!DBM::is_result($r)) {
+ if (!DBA::isResult($r)) {
continue;
}
$cid = Contact::getIdForURL($url, 0, true, $fields);
if (!empty($cid)) {
- dba::update('contact', $fields, ['id' => $cid]);
+ DBA::update('contact', $fields, ['id' => $cid]);
Contact::updateAvatar($avatar, 0, $cid);
}
- $contact = dba::selectFirst('contact', [], ['uid' => $uid, 'alias' => "twitter::" . $data->id_str]);
- if (!DBM::is_result($contact) && !$create_user) {
+ $contact = DBA::selectFirst('contact', [], ['uid' => $uid, 'alias' => "twitter::" . $data->id_str]);
+ if (!DBA::isResult($contact) && !$create_user) {
return 0;
}
- if (!DBM::is_result($contact)) {
+ if (!DBA::isResult($contact)) {
// create contact record
$fields['uid'] = $uid;
$fields['created'] = DateTimeFormat::utcNow();
$fields['nurl'] = normalise_link($url);
$fields['alias'] = 'twitter::' . $data->id_str;
$fields['poll'] = 'twitter::' . $data->id_str;
- $fields['rel'] = CONTACT_IS_FRIEND;
+ $fields['rel'] = Contact::FRIEND;
$fields['priority'] = 1;
$fields['writable'] = true;
$fields['blocked'] = false;
$fields['readonly'] = false;
$fields['pending'] = false;
- if (!dba::insert('contact', $fields)) {
+ if (!DBA::insert('contact', $fields)) {
return false;
}
- $contact_id = dba::lastInsertId();
+ $contact_id = DBA::lastInsertId();
Group::addMember(User::getDefaultGroup($uid), $contact_id);
$fields['name-date'] = DateTimeFormat::utcNow();
$fields['uri-date'] = DateTimeFormat::utcNow();
- dba::update('contact', $fields, ['id' => $contact['id']]);
+ DBA::update('contact', $fields, ['id' => $contact['id']]);
}
}
$r = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1",
intval($uid));
- if (DBM::is_result($r)) {
+ if (DBA::isResult($r)) {
$self = $r[0];
} else {
return;
$oembed_data = OEmbed::fetchURL($expanded_url);
+ if (empty($oembed_data) || empty($oembed_data->type)) {
+ continue;
+ }
+
// Quickfix: Workaround for URL with "[" and "]" in it
if (strpos($expanded_url, "[") || strpos($expanded_url, "]")) {
$expanded_url = $url->url;
$tempfile = tempnam(get_temppath(), "cache");
file_put_contents($tempfile, $img_str);
- $mime = image_type_to_mime_type(exif_imagetype($tempfile));
+
+ // See http://php.net/manual/en/function.exif-imagetype.php#79283
+ if (filesize($tempfile) > 11) {
+ $mime = image_type_to_mime_type(exif_imagetype($tempfile));
+ } else {
+ $mime = false;
+ }
+
unlink($tempfile);
if (substr($mime, 0, 6) == "image/") {
*
* @return $picture string Image URL or empty string
*/
-function twitter_media_entities($post, &$postarray)
+function twitter_media_entities($post, array &$postarray)
{
// There are no media entities? So we quit.
- if (!is_array($post->extended_entities->media)) {
+ if (empty($post->extended_entities->media)) {
return "";
}
// This is a pure media post, first search for all media urls
$media = [];
foreach ($post->extended_entities->media AS $medium) {
+ if (!isset($media[$medium->url])) {
+ $media[$medium->url] = '';
+ }
switch ($medium->type) {
case 'photo':
$media[$medium->url] .= "\n[img]" . $medium->media_url_https . "[/img]";
return "";
}
-function twitter_createpost(App $a, $uid, $post, $self, $create_user, $only_existing_contact, $noquote)
+function twitter_createpost(App $a, $uid, $post, array $self, $create_user, $only_existing_contact, $noquote)
{
$postarray = [];
$postarray['network'] = NETWORK_TWITTER;
$postarray['uid'] = $uid;
$postarray['wall'] = 0;
$postarray['uri'] = "twitter::" . $post->id_str;
- // $postarray['object'] = json_encode($post); // Activate for debugging
+ $postarray['protocol'] = Conversation::PARCEL_TWITTER;
+ $postarray['source'] = json_encode($post);
// Don't import our own comments
- if (dba::exists('item', ['extid' => $postarray['uri'], 'uid' => $uid])) {
+ if (DBA::exists('item', ['extid' => $postarray['uri'], 'uid' => $uid])) {
logger("Item with extid " . $postarray['uri'] . " found.", LOGGER_DEBUG);
return [];
}
$fields = ['uri', 'parent-uri', 'parent'];
$parent_item = Item::selectFirst($fields, ['uri' => $parent, 'uid' => $uid]);
- if (!DBM::is_result($parent_item)) {
+ if (!DBA::isResult($parent_item)) {
$parent_item = Item::selectFirst($fields, ['extid' => $parent, 'uid' => $uid]);
}
- if (DBM::is_result($parent_item)) {
+ if (DBA::isResult($parent_item)) {
$postarray['thr-parent'] = $parent_item['uri'];
$postarray['parent-uri'] = $parent_item['parent-uri'];
$postarray['parent'] = $parent_item['parent'];
$r = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1",
intval($uid));
- if (DBM::is_result($r)) {
+ if (DBA::isResult($r)) {
$contactid = $r[0]["id"];
$postarray['owner-name'] = $r[0]["name"];
if ($post->user->protected) {
$postarray['private'] = 1;
$postarray['allow_cid'] = '<' . $self['id'] . '>';
+ } else {
+ $postarray['private'] = 0;
+ $postarray['allow_cid'] = '';
}
if (is_string($post->full_text)) {
$statustext = $converted["plain"];
- if (is_string($post->place->name)) {
+ if (!empty($post->place->name)) {
$postarray["location"] = $post->place->name;
}
- if (is_string($post->place->full_name)) {
+ if (!empty($post->place->full_name)) {
$postarray["location"] = $post->place->full_name;
}
- if (is_array($post->geo->coordinates)) {
+ if (!empty($post->geo->coordinates)) {
$postarray["coord"] = $post->geo->coordinates[0] . " " . $post->geo->coordinates[1];
}
- if (is_array($post->coordinates->coordinates)) {
+ if (!empty($post->coordinates->coordinates)) {
$postarray["coord"] = $post->coordinates->coordinates[1] . " " . $post->coordinates->coordinates[0];
}
- if (is_object($post->retweeted_status)) {
+ if (!empty($post->retweeted_status)) {
$retweet = twitter_createpost($a, $uid, $post->retweeted_status, $self, false, false, $noquote);
- $retweet['object'] = $postarray['object'];
+ $retweet['source'] = $postarray['source'];
$retweet['private'] = $postarray['private'];
$retweet['allow_cid'] = $postarray['allow_cid'];
$retweet['contact-id'] = $postarray['contact-id'];
$postarray = $retweet;
}
- if (is_object($post->quoted_status) && !$noquote) {
+ if (!empty($post->quoted_status) && !$noquote) {
$quoted = twitter_createpost($a, $uid, $post->quoted_status, $self, false, false, true);
$postarray['body'] = $statustext;
return $postarray;
}
-function twitter_fetchparentposts(App $a, $uid, $post, TwitterOAuth $connection, $self, $own_id)
+function twitter_fetchparentposts(App $a, $uid, $post, TwitterOAuth $connection, array $self)
{
logger("twitter_fetchparentposts: Fetching for user " . $uid . " and post " . $post->id_str, LOGGER_DEBUG);
break;
}
- if (dba::exists('item', ['uri' => 'twitter::' . $post->id_str, 'uid' => $uid])) {
+ if (empty($post->id_str)) {
+ logger("twitter_fetchparentposts: This is not a post " . json_encode($post), LOGGER_DEBUG);
+ break;
+ }
+
+ if (DBA::exists('item', ['uri' => 'twitter::' . $post->id_str, 'uid' => $uid])) {
break;
}
$posts = array_reverse($posts);
- if (count($posts)) {
+ if (!empty($posts)) {
foreach ($posts as $post) {
$postarray = twitter_createpost($a, $uid, $post, $self, false, false, false);
- if (trim($postarray['body']) == "") {
+ if (empty($postarray['body'])) {
continue;
}
$item = Item::insert($postarray);
- if ($notify) {
- $item = $notify;
- }
-
$postarray["id"] = $item;
logger('twitter_fetchparentpost: User ' . $self["nick"] . ' posted parent timeline item ' . $item);
intval($own_contact),
intval($uid));
- if (DBM::is_result($r)) {
+ if (DBA::isResult($r)) {
$own_id = $r[0]["nick"];
} else {
logger("twitter_fetchhometimeline: Own twitter contact not found for user " . $uid, LOGGER_DEBUG);
$r = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1",
intval($uid));
- if (DBM::is_result($r)) {
+ if (DBA::isResult($r)) {
$self = $r[0];
} else {
logger("twitter_fetchhometimeline: Own contact not found for user " . $uid, LOGGER_DEBUG);
$u = q("SELECT * FROM user WHERE uid = %d LIMIT 1",
intval($uid));
- if (!DBM::is_result($u)) {
+ if (!DBA::isResult($u)) {
logger("twitter_fetchhometimeline: Own user not found for user " . $uid, LOGGER_DEBUG);
return;
}
}
if ($post->in_reply_to_status_id_str != "") {
- twitter_fetchparentposts($a, $uid, $post, $connection, $self, $own_id);
+ twitter_fetchparentposts($a, $uid, $post, $connection, $self);
}
$postarray = twitter_createpost($a, $uid, $post, $self, $create_user, true, false);
- if (trim($postarray['body']) == "") {
+ if (empty($postarray['body']) || trim($postarray['body']) == "") {
continue;
}
$notify = false;
if ($postarray['uri'] == $postarray['parent-uri']) {
- $contact = dba::selectFirst('contact', [], ['id' => $postarray['contact-id'], 'self' => false]);
- if (DBM::is_result($contact)) {
+ $contact = DBA::selectFirst('contact', [], ['id' => $postarray['contact-id'], 'self' => false]);
+ if (DBA::isResult($contact)) {
$notify = Item::isRemoteSelf($contact, $postarray);
}
}
}
if ($post->in_reply_to_status_id_str != "") {
- twitter_fetchparentposts($a, $uid, $post, $connection, $self, $own_id);
+ twitter_fetchparentposts($a, $uid, $post, $connection, $self);
}
$postarray = twitter_createpost($a, $uid, $post, $self, false, false, false);
} else {
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `alias` = '%s' LIMIT 1",
intval($uid),
- dbesc("twitter::" . $own_id));
- if (DBM::is_result($r)) {
+ DBA::escape("twitter::" . $own_id));
+ if (DBA::isResult($r)) {
$contact_id = $r[0]["id"];
} else {
PConfig::delete($uid, 'twitter', 'own_id');
$link = "";
preg_match("/link='(.*?)'/ism", $attributes, $matches);
- if ($matches[1] != "") {
+ if (!empty($matches[1])) {
$link = $matches[1];
}
preg_match('/link="(.*?)"/ism', $attributes, $matches);
- if ($matches[1] != "") {
+ if (!empty($matches[1])) {
$link = $matches[1];
}