diff --git a/include/conversation.php b/include/conversation.php index 6ef2e73aa..5d013014b 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -110,14 +110,21 @@ function item_redir_and_replace_images($body, $images, $cid) { /** * Render actions localized */ -function localize_item(&$item) { - +function localize_item(&$item) +{ $extracted = item_extract_images($item['body']); if ($extracted['images']) { $item['body'] = item_redir_and_replace_images($extracted['body'], $extracted['images'], $item['contact-id']); } - /// @TODO Separted ??? + /* + heluecht 2018-06-19: from my point of view this whole code part is useless. + It just renders the body message of technical posts (Like, dislike, ...). + But: The body isn't visible at all. So we do this stuff just because we can. + Even if these messages were visible, this would only mean that something went wrong. + During the further steps of the database restructuring I would like to address this issue. + */ + $xmlhead = "<" . "?xml version='1.0' encoding='UTF-8' ?" . ">"; if (activity_match($item['verb'], ACTIVITY_LIKE) || activity_match($item['verb'], ACTIVITY_DISLIKE) @@ -125,15 +132,11 @@ function localize_item(&$item) { || activity_match($item['verb'], ACTIVITY_ATTENDNO) || activity_match($item['verb'], ACTIVITY_ATTENDMAYBE)) { - /// @TODO may hurt performance - $r = q("SELECT * FROM `item`, `contact` - WHERE `item`.`contact-id`=`contact`.`id` - AND `item`.`uri`='%s'", - dbesc($item['parent-uri'])); - if (!DBM::is_result($r)) { + $fields = ['author-link', 'author-name', 'verb', 'object-type', 'resource-id', 'body', 'plink']; + $obj = Item::selectFirst($fields, ['uri' => $item['parent-uri']]); + if (!DBM::is_result($obj)) { return; } - $obj = $r[0]; $author = '[url=' . $item['author-link'] . ']' . $item['author-name'] . '[/url]'; $objauthor = '[url=' . $obj['author-link'] . ']' . $obj['author-name'] . '[/url]'; @@ -189,7 +192,8 @@ function localize_item(&$item) { $links = XML::parseString($xmlhead."".unxmlify($obj->link).""); $Bname = $obj->title; - $Blink = ""; $Bphoto = ""; + $Blink = ""; + $Bphoto = ""; foreach ($links->link as $l) { $atts = $l->attributes(); switch ($atts['rel']) { @@ -249,7 +253,7 @@ function localize_item(&$item) { // now translate the verb $poked_t = trim(sprintf($txt, "", "")); - $txt = str_replace( $poked_t, L10n::t($verb), $txt); + $txt = str_replace($poked_t, L10n::t($verb), $txt); // then do the sprintf on the translation string @@ -258,18 +262,12 @@ function localize_item(&$item) { } if (activity_match($item['verb'], ACTIVITY_TAG)) { - /// @TODO may hurt performance "joining" two tables + asterisk - $r = q("SELECT * FROM `item`, `contact` - WHERE `item`.`contact-id`=`contact`.`id` - AND `item`.`uri`='%s'", - dbesc($item['parent-uri'])); - - if (!DBM::is_result($r)) { + $fields = ['author-link', 'author-name', 'verb', 'object-type', 'resource-id', 'body', 'plink']; + $obj = Item::selectFirst($fields, ['uri' => $item['parent-uri']]); + if (!DBM::is_result($obj)) { return; } - $obj = $r[0]; - $author = '[url=' . Contact::magicLinkById($item['author-id']) . ']' . $item['author-name'] . '[/url]'; $objauthor = '[url=' . Contact::magicLinkById($obj['author-id']) . ']' . $obj['author-name'] . '[/url]'; @@ -299,8 +297,7 @@ function localize_item(&$item) { $parsedobj = XML::parseString($xmlhead.$item['object']); $tag = sprintf('#[url=%s]%s[/url]', $parsedobj->id, $parsedobj->content); - $item['body'] = L10n::t('%1$s tagged %2$s\'s %3$s with %4$s', $author, $objauthor, $plink, $tag ); - + $item['body'] = L10n::t('%1$s tagged %2$s\'s %3$s with %4$s', $author, $objauthor, $plink, $tag); } if (activity_match($item['verb'], ACTIVITY_FAVORITE)) { @@ -315,13 +312,9 @@ function localize_item(&$item) { $obj = XML::parseString($xmlhead.$item['object']); if (strlen($obj->id)) { - $r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", - dbesc($obj->id), - intval($item['uid']) - ); - - if (DBM::is_result($r) && $r[0]['plink']) { - $target = $r[0]; + $fields = ['author-link', 'author-name', 'plink']; + $target = Item::selectFirst($fields, ['uri' => $obj->id, 'uid' => $item['uid']]); + if (DBM::is_result($target) && $target['plink']) { $Bname = $target['author-name']; $Blink = $target['author-link']; $A = '[url=' . Contact::magicLink($Alink) . ']' . $Aname . '[/url]'; @@ -1009,7 +1002,7 @@ function format_like($cnt, array $arr, $type, $id) { } if ($total >= MAX_LIKERS) { $str = implode(', ', $arr); - $str .= L10n::t('and %d other people', $total - MAX_LIKERS ); + $str .= L10n::t('and %d other people', $total - MAX_LIKERS); } $likers = $str; diff --git a/include/security.php b/include/security.php index bcfddf887..e8a03ad0f 100644 --- a/include/security.php +++ b/include/security.php @@ -99,11 +99,9 @@ function authenticate_success($user_record, $login_initial = false, $interactive $master_record = $a->user; if ((x($_SESSION, 'submanage')) && intval($_SESSION['submanage'])) { - $r = dba::fetch_first("SELECT * FROM `user` WHERE `uid` = ? LIMIT 1", - intval($_SESSION['submanage']) - ); - if (DBM::is_result($r)) { - $master_record = $r; + $user = dba::selectFirst('user', [], ['uid' => $_SESSION['submanage']]); + if (DBM::is_result($user)) { + $master_record = $user; } } @@ -155,10 +153,10 @@ function authenticate_success($user_record, $login_initial = false, $interactive logger('auth_identities refresh: ' . print_r($a->identities, true), LOGGER_DEBUG); } - $r = dba::fetch_first("SELECT * FROM `contact` WHERE `uid` = ? AND `self` LIMIT 1", $_SESSION['uid']); - if (DBM::is_result($r)) { - $a->contact = $r; - $a->cid = $r['id']; + $contact = dba::selectFirst('contact', [], ['uid' => $_SESSION['uid'], 'self' => true]); + if (DBM::is_result($contact)) { + $a->contact = $contact; + $a->cid = $contact['id']; $_SESSION['cid'] = $a->cid; } diff --git a/mod/item.php b/mod/item.php index f164fb0ae..4c78af6ca 100644 --- a/mod/item.php +++ b/mod/item.php @@ -647,13 +647,13 @@ function item_post(App $a) { // This field is for storing the raw conversation data $datarray['protocol'] = PROTOCOL_DFRN; - $r = dba::fetch_first("SELECT `conversation-uri`, `conversation-href` FROM `conversation` WHERE `item-uri` = ?", $datarray['parent-uri']); - if (DBM::is_result($r)) { + $conversation = dba::selectFirst('conversation', ['conversation-uri', 'conversation-href'], ['item-uri' => $datarray['parent-uri']]); + if (DBM::is_result($conversation)) { if ($r['conversation-uri'] != '') { - $datarray['conversation-uri'] = $r['conversation-uri']; + $datarray['conversation-uri'] = $conversation['conversation-uri']; } if ($r['conversation-href'] != '') { - $datarray['conversation-href'] = $r['conversation-href']; + $datarray['conversation-href'] = $conversation['conversation-href']; } } diff --git a/mod/photos.php b/mod/photos.php index 9cd348274..e823da59f 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -172,7 +172,7 @@ function photos_post(App $a) } if (!$can_post) { - notice(L10n::t('Permission denied.') . EOL ); + notice(L10n::t('Permission denied.') . EOL); killme(); } @@ -275,7 +275,7 @@ function photos_post(App $a) $str_res = implode(',', $res); // remove the associated photos - q("DELETE FROM `photo` WHERE `resource-id` IN ( $str_res ) AND `uid` = %d", + q("DELETE FROM `photo` WHERE `resource-id` IN ($str_res) AND `uid` = %d", intval($page_owner_uid) ); @@ -372,7 +372,7 @@ function photos_post(App $a) if (DBM::is_result($r)) { $Image = new Image($r[0]['data'], $r[0]['type']); if ($Image->isValid()) { - $rotate_deg = ( (intval($_POST['rotate']) == 1) ? 270 : 90 ); + $rotate_deg = ((intval($_POST['rotate']) == 1) ? 270 : 90); $Image->rotate($rotate_deg); $width = $Image->getWidth(); @@ -918,7 +918,7 @@ function photos_content(App $a) require_once 'include/conversation.php'; if (!x($a->data,'user')) { - notice(L10n::t('No photos selected') . EOL ); + notice(L10n::t('No photos selected') . EOL); return; } @@ -1216,7 +1216,7 @@ function photos_content(App $a) if (DBM::is_result($ph)) { notice(L10n::t('Permission denied. Access to this item may be restricted.')); } else { - notice(L10n::t('Photo not available') . EOL ); + notice(L10n::t('Photo not available') . EOL); } return; } @@ -1289,15 +1289,15 @@ function photos_content(App $a) ]; // lock - $lock = ( ( ($ph[0]['uid'] == local_user()) && (strlen($ph[0]['allow_cid']) || strlen($ph[0]['allow_gid']) - || strlen($ph[0]['deny_cid']) || strlen($ph[0]['deny_gid'])) ) + $lock = ((($ph[0]['uid'] == local_user()) && (strlen($ph[0]['allow_cid']) || strlen($ph[0]['allow_gid']) + || strlen($ph[0]['deny_cid']) || strlen($ph[0]['deny_gid']))) ? L10n::t('Private Message') : Null); } - if ( $cmd === 'edit') { + if ($cmd === 'edit') { $tpl = get_markup_template('photo_edit_head.tpl'); $a->page['htmlhead'] .= replace_macros($tpl,[ '$prevlink' => $prevlink, @@ -1332,7 +1332,8 @@ function photos_content(App $a) // The difference is that we won't be displaying the conversation head item // as a "post" but displaying instead the photo it is linked to - $linked_items = q("SELECT * FROM `item` WHERE `resource-id` = '%s' $sql_extra LIMIT 1", + /// @todo Rewrite this query. To do so, $sql_extra must be changed + $linked_items = q("SELECT `id` FROM `item` WHERE `resource-id` = '%s' $sql_extra LIMIT 1", dbesc($datum) ); @@ -1340,7 +1341,8 @@ function photos_content(App $a) $link_item = []; if (DBM::is_result($linked_items)) { - $link_item = $linked_items[0]; + // This is a workaround to not being forced to rewrite the while $sql_extra handling + $link_item = Item::selectFirstForUser(local_user(), [], ['id' => $linked_items[0]['id']]); $r = q("SELECT COUNT(*) AS `total` FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` diff --git a/src/Core/Worker.php b/src/Core/Worker.php index 4659d2283..8960780e5 100644 --- a/src/Core/Worker.php +++ b/src/Core/Worker.php @@ -155,12 +155,7 @@ class Worker */ private static function totalEntries() { - $s = dba::fetch_first("SELECT COUNT(*) AS `total` FROM `workerqueue` WHERE `executed` <= ? AND NOT `done`", NULL_DATE); - if (DBM::is_result($s)) { - return $s["total"]; - } else { - return 0; - } + return dba::count('workerqueue', ["`executed` <= ? AND NOT `done`", NULL_DATE]); } /** @@ -718,9 +713,7 @@ class Worker */ private static function activeWorkers() { - $workers = dba::fetch_first("SELECT COUNT(*) AS `processes` FROM `process` WHERE `command` = 'Worker.php'"); - - return $workers["processes"]; + return dba::count('process', ['command' => 'Worker.php']); } /** @@ -973,9 +966,9 @@ class Worker self::clearProcesses(); - $workers = dba::fetch_first("SELECT COUNT(*) AS `processes` FROM `process` WHERE `command` = 'worker.php'"); + $workers = self::activeWorkers(); - if ($workers["processes"] == 0) { + if ($workers == 0) { self::callWorker(); } } diff --git a/src/Model/Conversation.php b/src/Model/Conversation.php index cd51a537e..17f151fe0 100644 --- a/src/Model/Conversation.php +++ b/src/Model/Conversation.php @@ -52,8 +52,8 @@ class Conversation $conversation['source'] = $arr['source']; } - $old_conv = dba::fetch_first("SELECT `item-uri`, `reply-to-uri`, `conversation-uri`, `conversation-href`, `protocol`, `source` - FROM `conversation` WHERE `item-uri` = ?", $conversation['item-uri']); + $fields = ['item-uri', 'reply-to-uri', 'conversation-uri', 'conversation-href', 'protocol', 'source']; + $old_conv = dba::selectFirst('conversation', $fields, ['item-uri' => $conversation['item-uri']]); if (DBM::is_result($old_conv)) { // Don't update when only the source has changed. // Only do this when there had been no source before. diff --git a/src/Model/Item.php b/src/Model/Item.php index c3b759f65..f448c6ba7 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -296,7 +296,7 @@ class Item extends BaseObject 'file', 'location', 'coord', 'allow_cid', 'allow_gid', 'deny_cid', 'deny_gid', 'private', 'pubmail', 'moderated', 'visible', 'starred', 'bookmark', 'unseen', 'deleted', 'origin', 'forum_mode', 'mention', - 'rendered-hash', 'rendered-html', 'global', 'shadow', 'content-warning', + 'rendered-hash', 'rendered-html', 'global', 'content-warning', 'id' => 'item_id', 'network']; $fields['author'] = ['url' => 'author-link', 'name' => 'author-name', @@ -306,7 +306,7 @@ class Item extends BaseObject 'thumb' => 'owner-avatar', 'nick' => 'owner-nick', 'network' => 'owner-network']; $fields['contact'] = ['url' => 'contact-link', 'name' => 'contact-name', 'thumb' => 'contact-avatar', - 'network', 'url', 'name', 'writable', 'self', 'id' => 'cid', 'alias', 'uid' => 'contact-uid', + 'url', 'name', 'writable', 'self', 'id' => 'cid', 'alias', 'uid' => 'contact-uid', 'photo', 'name-date', 'uri-date', 'avatar-date', 'thumb', 'dfrn-id', 'network' => 'contact-network']; $fields['parent-item'] = ['guid' => 'parent-guid', 'network' => 'parent-network']; diff --git a/src/Model/User.php b/src/Model/User.php index 76769e14c..6754f2207 100644 --- a/src/Model/User.php +++ b/src/Model/User.php @@ -211,18 +211,11 @@ class User ] ); } else { - $user = dba::fetch_first('SELECT `uid`, `password`, `legacy_password` - FROM `user` - WHERE (`email` = ? OR `username` = ? OR `nickname` = ?) - AND `blocked` = 0 - AND `account_expired` = 0 - AND `account_removed` = 0 - AND `verified` = 1 - LIMIT 1', - $user_info, - $user_info, - $user_info - ); + $fields = ['uid', 'password', 'legacy_password']; + $condition = ["(`email` = ? OR `username` = ? OR `nickname` = ?) + AND NOT `blocked` AND NOT `account_expired` AND NOT `account_removed` AND `verified`", + $user_info, $user_info, $user_info]; + $user = dba::selectFirst('user', $fields, $condition); } if (!DBM::is_result($user)) { diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 9a24c75e4..a9e836499 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -950,13 +950,13 @@ class DFRN $conversation_uri = $conversation_href; if (isset($parent_item)) { - $r = dba::fetch_first("SELECT `conversation-uri`, `conversation-href` FROM `conversation` WHERE `item-uri` = ?", $item['parent-uri']); - if (DBM::is_result($r)) { + $conversation = dba::selectFirst('conversation', ['conversation-uri', 'conversation-href'], ['item-uri' => $item['parent-uri']]); + if (DBM::is_result($conversation)) { if ($r['conversation-uri'] != '') { - $conversation_uri = $r['conversation-uri']; + $conversation_uri = $conversation['conversation-uri']; } if ($r['conversation-href'] != '') { - $conversation_href = $r['conversation-href']; + $conversation_href = $conversation['conversation-href']; } } } @@ -1537,13 +1537,11 @@ class DFRN $author["name"] = $xpath->evaluate($element."/atom:name/text()", $context)->item(0)->nodeValue; $author["link"] = $xpath->evaluate($element."/atom:uri/text()", $context)->item(0)->nodeValue; - $contact_old = dba::fetch_first("SELECT `id`, `uid`, `url`, `network`, `avatar-date`, `avatar`, `name-date`, `uri-date`, `addr`, - `name`, `nick`, `about`, `location`, `keywords`, `xmpp`, `bdyear`, `bd`, `hidden`, `contact-type` - FROM `contact` WHERE `uid` = ? AND `nurl` = ? AND `network` != ?", - $importer["importer_uid"], - normalise_link($author["link"]), - NETWORK_STATUSNET - ); + $fields = ['id', 'uid', 'url', 'network', 'avatar-date', 'avatar', 'name-date', 'uri-date', 'addr', + 'name', 'nick', 'about', 'location', 'keywords', 'xmpp', 'bdyear', 'bd', 'hidden', 'contact-type']; + $condition = ["`uid` = ? AND `nurl` = ? AND `network` != ?", + $importer["importer_uid"], normalise_link($author["link"]), NETWORK_STATUSNET]; + $contact_old = dba::selectFirst('contact', $fields, $condition); if (DBM::is_result($contact_old)) { $author["contact-id"] = $contact_old["id"]; diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index e84dddcea..957f60a2c 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -1971,14 +1971,13 @@ class OStatus $conversation_uri = $conversation_href; if (isset($parent_item)) { - $r = dba::fetch_first("SELECT `conversation-uri`, `conversation-href` FROM `conversation` WHERE `item-uri` = ?", $parent_item); - - if (DBM::is_result($r)) { + $conversation = dba::selectFirst('conversation', ['conversation-uri', 'conversation-href'], ['item-uri' => $parent_item]); + if (DBM::is_result($conversation)) { if ($r['conversation-uri'] != '') { - $conversation_uri = $r['conversation-uri']; + $conversation_uri = $conversation['conversation-uri']; } if ($r['conversation-href'] != '') { - $conversation_href = $r['conversation-href']; + $conversation_href = $conversation['conversation-href']; } } }