]> git.mxchange.org Git - friendica-addons.git/blobdiff - pumpio/pumpio.php
Remove direct item sql queries
[friendica-addons.git] / pumpio / pumpio.php
index 7e34eab3269ca85ae47ba759eb5c425a81db1739..d57f1485a5d71b2eb7cf634ea9b1af3c071343d4 100644 (file)
@@ -6,6 +6,8 @@
  * Author: Michael Vogel <http://pirati.ca/profile/heluecht>
  */
 
+use Friendica\Content\Text\BBCode;
+use Friendica\Content\Text\HTML;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
@@ -16,9 +18,9 @@ use Friendica\Model\GContact;
 use Friendica\Model\Group;
 use Friendica\Model\Item;
 use Friendica\Model\Queue;
-use Friendica\Util\Network;
 use Friendica\Model\User;
-use Friendica\Util\Temporal;
+use Friendica\Util\DateTimeFormat;
+use Friendica\Util\Network;
 
 require 'addon/pumpio/oauth/http.php';
 require 'addon/pumpio/oauth/oauth_client.php';
@@ -470,12 +472,9 @@ function pumpio_send(&$a,&$b) {
        $public = PConfig::get($b['uid'], "pumpio", "public");
 
        if($oauth_token && $oauth_token_secret) {
-
-               require_once('include/bbcode.php');
-
                $title = trim($b['title']);
 
-               $content = bbcode($b['body'], false, false, 4);
+               $content = BBCode::convert($b['body'], false, 4);
 
                $params = [];
 
@@ -543,10 +542,7 @@ function pumpio_send(&$a,&$b) {
                        logger('pumpio_send '.$username.': success '.$post_id);
                        if($post_id && $iscomment) {
                                logger('pumpio_send '.$username.': Update extid '.$post_id." for post id ".$b['id']);
-                               q("UPDATE `item` SET `extid` = '%s' WHERE `id` = %d",
-                                       dbesc($post_id),
-                                       intval($b['id'])
-                               );
+                               Item::update(['extid' => $post_id], ['id' => $b['id']]);
                        }
                } else {
                        logger('pumpio_send '.$username.': '.$url.' general error: ' . print_r($user,true));
@@ -672,7 +668,7 @@ function pumpio_sync(&$a) {
        if ($abandon_days < 1)
                $abandon_days = 0;
 
-       $abandon_limit = date(Temporal::MYSQL, time() - $abandon_days * 86400);
+       $abandon_limit = date(DateTimeFormat::MYSQL, time() - $abandon_days * 86400);
 
        $r = q("SELECT * FROM `pconfig` WHERE `cat` = 'pumpio' AND `k` = 'import' AND `v` = '1' ORDER BY RAND() ");
        if(count($r)) {
@@ -787,8 +783,6 @@ function pumpio_fetchtimeline(&$a, $uid) {
                                                $public = true;
 
                        if ($public && !stristr($post->generator->displayName, $application_name)) {
-                               require_once('include/html2bbcode.php');
-
                                $_SESSION["authenticated"] = true;
                                $_SESSION["uid"] = $uid;
 
@@ -803,11 +797,11 @@ function pumpio_fetchtimeline(&$a, $uid) {
                                }
 
                                if ($post->object->displayName != "")
-                                       $_REQUEST["title"] = html2bbcode($post->object->displayName);
+                                       $_REQUEST["title"] = HTML::toBBCode($post->object->displayName);
                                else
                                        $_REQUEST["title"] = "";
 
-                               $_REQUEST["body"] = html2bbcode($post->object->content);
+                               $_REQUEST["body"] = HTML::toBBCode($post->object->content);
 
                                // To-Do: Picture has to be cached and stored locally
                                if ($post->object->fullImage->url != "") {
@@ -870,13 +864,7 @@ function pumpio_dounlike(&$a, $uid, $self, $post, $own_id) {
                        $contactid = $orig_post['contact-id'];
        }
 
-       $r = q("UPDATE `item` SET `deleted` = 1, `unseen` = 1, `changed` = '%s' WHERE `verb` = '%s' AND `uid` = %d AND `contact-id` = %d AND `thr-parent` = '%s'",
-               dbesc(Temporal::convert()),
-               dbesc(ACTIVITY_LIKE),
-               intval($uid),
-               intval($contactid),
-               dbesc($orig_post['uri'])
-       );
+       Item::delete(['verb' => ACTIVITY_LIKE, 'uid' => $uid, 'contact-id' => $contactid, 'thr-parent' => $orig_post['uri']]);
 
        if(count($r))
                logger("pumpio_dounlike: unliked existing like. User ".$own_id." ".$uid." Contact: ".$contactid." Url ".$orig_post['uri']);
@@ -957,7 +945,7 @@ function pumpio_dolike(&$a, $uid, $self, $post, $own_id, $threadcompletion = tru
        $likedata['gravity'] = 3;
        $likedata['uid'] = $uid;
        $likedata['wall'] = 0;
-       $likedata['uri'] = item_new_uri($a->get_baseurl(), $uid);
+       $likedata['uri'] = Item::newURI($uid);
        $likedata['parent-uri'] = $orig_post["uri"];
        $likedata['contact-id'] = $contactid;
        $likedata['app'] = $post->generator->displayName;
@@ -1002,7 +990,7 @@ function pumpio_get_contact($uid, $contact, $no_insert = false) {
                                        `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(Temporal::convert()),
+                       dbesc(DateTimeFormat::utcNow()),
                        dbesc($contact->url),
                        dbesc(normalise_link($contact->url)),
                        dbesc(str_replace("acct:", "", $contact->id)),
@@ -1054,26 +1042,22 @@ function pumpio_get_contact($uid, $contact, $no_insert = false) {
 function pumpio_dodelete(&$a, $uid, $self, $post, $own_id) {
 
        // Two queries for speed issues
-       $r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
-                               dbesc($post->object->id),
-                               intval($uid)
-               );
-
-       if (count($r))
-               return Item::delete($r[0]["id"]);
-
-       $r = q("SELECT * FROM `item` WHERE `extid` = '%s' AND `uid` = %d LIMIT 1",
-                               dbesc($post->object->id),
-                               intval($uid)
-               );
+       $condition = ['uri' => $post->object->id, 'uid' => $uid];
+       if (dba::exists('item', $condition)) {
+               Item::delete($condition);
+               return true;
+       }
 
-       if (count($r))
-               return Item::delete($r[0]["id"]);
+       $condition = ['extid' => $post->object->id, 'uid' => $uid];
+       if (dba::exists('item', $condition)) {
+               Item::delete($condition);
+               return true;
+       }
+       return false;
 }
 
 function pumpio_dopost(&$a, $client, $uid, $self, $post, $own_id, $threadcompletion = true) {
        require_once('include/items.php');
-       require_once('include/html2bbcode.php');
 
        if (($post->verb == "like") || ($post->verb == "favorite"))
                return pumpio_dolike($a, $uid, $self, $post, $own_id);
@@ -1202,7 +1186,7 @@ function pumpio_dopost(&$a, $client, $uid, $self, $post, $own_id, $threadcomplet
        $postarray['author-avatar'] = $post->actor->image->url;
        $postarray['plink'] = $post->object->url;
        $postarray['app'] = $post->generator->displayName;
-       $postarray['body'] = html2bbcode($post->object->content);
+       $postarray['body'] = HTML::toBBCode($post->object->content);
        $postarray['object'] = json_encode($post);
 
        if ($post->object->fullImage->url != "")
@@ -1211,11 +1195,11 @@ function pumpio_dopost(&$a, $client, $uid, $self, $post, $own_id, $threadcomplet
        if ($post->object->displayName != "")
                $postarray['title'] = $post->object->displayName;
 
-       $postarray['created'] = Temporal::convert($post->published);
+       $postarray['created'] = DateTimeFormat::utc($post->published);
        if (isset($post->updated))
-               $postarray['edited'] = Temporal::convert($post->updated);
+               $postarray['edited'] = DateTimeFormat::utc($post->updated);
        elseif (isset($post->received))
-               $postarray['edited'] = Temporal::convert($post->received);
+               $postarray['edited'] = DateTimeFormat::utc($post->received);
        else
                $postarray['edited'] = $postarray['created'];
 
@@ -1230,17 +1214,9 @@ function pumpio_dopost(&$a, $client, $uid, $self, $post, $own_id, $threadcomplet
 
                        $postarray['body'] = share_header($share_author, $post->object->author->url,
                                                        $post->object->author->image->url, "",
-                                                       Temporal::convert($post->object->created),
+                                                       DateTimeFormat::utc($post->object->created),
                                                        $post->links->self->href).
                                                $postarray['body']."[/share]";
-
-                       /*
-                       $postarray['body'] = "[share author='".$share_author.
-                                       "' profile='".$post->object->author->url.
-                                       "' avatar='".$post->object->author->image->url.
-                                       "' posted='".Temporal::convert($post->object->created, 'UTC', 'UTC', ).
-                                       "' link='".$post->links->self->href."']".$postarray['body']."[/share]";
-                       */
                } else {
                        // Let shares look like wall-to-wall posts
                        $postarray['author-name'] = $post->object->author->displayName;
@@ -1256,72 +1232,15 @@ function pumpio_dopost(&$a, $client, $uid, $self, $post, $own_id, $threadcomplet
        $postarray["id"] = $top_item;
 
        if (($top_item == 0) && ($post->verb == "update")) {
-               $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s' , `changed` = '%s' WHERE `uri` = '%s' AND `uid` = %d",
-                       dbesc($postarray["title"]),
-                       dbesc($postarray["body"]),
-                       dbesc($postarray["edited"]),
-                       dbesc($postarray["uri"]),
-                       intval($uid)
-                       );
+               $fields = ['title' => $postarray["title"], 'body' => $postarray["body"], 'changed' => $postarray["edited"]];
+               $condition = ['uri' => $postarray["uri"], 'uid' => $uid];
+               Item::update($fields, $condition);
        }
 
        if ($post->object->objectType == "comment") {
 
                if ($threadcompletion)
                        pumpio_fetchallcomments($a, $uid, $postarray['parent-uri']);
-
-               $user = q("SELECT * FROM `user` WHERE `uid` = %d AND `account_expired` = 0 LIMIT 1",
-                               intval($uid)
-                       );
-
-               if(!count($user))
-                       return $top_item;
-
-               $importer_url = $a->get_baseurl() . '/profile/' . $user[0]['nickname'];
-
-               if (link_compare($own_id, $postarray['author-link']))
-                       return $top_item;
-
-               if (!function_exists("check_item_notification")) {
-                       $myconv = q("SELECT `author-link`, `author-avatar`, `parent` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `parent` != 0 AND `deleted` = 0",
-                                       dbesc($postarray['parent-uri']),
-                                       intval($uid)
-                                       );
-
-                       if(count($myconv)) {
-
-                               foreach($myconv as $conv) {
-                                       // now if we find a match, it means we're in this conversation
-
-                                       if(!link_compare($conv['author-link'],$importer_url) && !link_compare($conv['author-link'],$own_id))
-                                               continue;
-
-                                       require_once('include/enotify.php');
-
-                                       $conv_parent = $conv['parent'];
-
-                                       notification([
-                                               'type'         => NOTIFY_COMMENT,
-                                               'notify_flags' => $user[0]['notify-flags'],
-                                               'language'     => $user[0]['language'],
-                                               'to_name'      => $user[0]['username'],
-                                               'to_email'     => $user[0]['email'],
-                                               'uid'          => $user[0]['uid'],
-                                               'item'         => $postarray,
-                                               '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'],
-                                               'verb'         => ACTIVITY_POST,
-                                               'otype'        => 'item',
-                                               'parent'       => $conv_parent,
-                                               ]);
-
-                                       // only send one notification
-                                       break;
-                               }
-                       }
-               }
        }
 
        return $top_item;
@@ -1491,10 +1410,7 @@ function pumpio_queue_hook(&$a,&$b) {
                                logger('pumpio_queue: send '.$username.': success '.$post_id);
                                if($post_id && $iscomment) {
                                        logger('pumpio_send '.$username.': Update extid '.$post_id." for post id ".$z['item']);
-                                       q("UPDATE `item` SET `extid` = '%s' WHERE `id` = %d",
-                                               dbesc($post_id),
-                                               intval($z['item'])
-                                       );
+                                       Item::update(['extid' => $post_id], ['id' => $z['item']]);
                                }
                                Queue::removeItem($x['id']);
                        } else