Some of the last direct SQL calls to the item table had been changed

This commit is contained in:
Michael 2018-06-21 06:21:51 +00:00
parent dd1e6dd4a5
commit 70af2cecf2
6 changed files with 63 additions and 99 deletions

View File

@ -474,7 +474,7 @@ function perms2str($p) {
*/ */
function load_view_file($s) { function load_view_file($s) {
global $lang, $a; global $lang, $a;
if (! isset($lang)) { if (!isset($lang)) {
$lang = 'en'; $lang = 'en';
} }
$b = basename($s); $b = basename($s);
@ -519,7 +519,7 @@ function get_intltext_template($s) {
$engine = "/smarty3"; $engine = "/smarty3";
} }
if (! isset($lang)) { if (!isset($lang)) {
$lang = 'en'; $lang = 'en';
} }
@ -621,8 +621,8 @@ function logger($msg, $level = 0) {
$loglevel = intval(Config::get('system','loglevel')); $loglevel = intval(Config::get('system','loglevel'));
if ( if (
! $debugging !$debugging
|| ! $logfile || !$logfile
|| $level > $loglevel || $level > $loglevel
) { ) {
return; return;
@ -689,7 +689,7 @@ function dlogger($msg, $level = 0) {
} }
$logfile = Config::get('system', 'dlogfile'); $logfile = Config::get('system', 'dlogfile');
if (! $logfile) { if (!$logfile) {
return; return;
} }
@ -1253,7 +1253,7 @@ function prepare_body(array &$item, $attach = false, $is_preview = false)
$s = $hook_data['html']; $s = $hook_data['html'];
unset($hook_data); unset($hook_data);
if (! $attach) { if (!$attach) {
// Replace the blockquotes with quotes that are used in mails. // Replace the blockquotes with quotes that are used in mails.
$mailquote = '<blockquote type="cite" class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">'; $mailquote = '<blockquote type="cite" class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">';
$s = str_replace(['<blockquote>', '<blockquote class="spoiler">', '<blockquote class="author">'], [$mailquote, $mailquote, $mailquote], $s); $s = str_replace(['<blockquote>', '<blockquote class="spoiler">', '<blockquote class="author">'], [$mailquote, $mailquote, $mailquote], $s);
@ -1553,7 +1553,7 @@ function generate_user_guid() {
$x = q("SELECT `uid` FROM `user` WHERE `guid` = '%s' LIMIT 1", $x = q("SELECT `uid` FROM `user` WHERE `guid` = '%s' LIMIT 1",
dbesc($guid) dbesc($guid)
); );
if (! DBM::is_result($x)) { if (!DBM::is_result($x)) {
$found = false; $found = false;
} }
} while ($found == true); } while ($found == true);
@ -1595,7 +1595,7 @@ function base64url_decode($s) {
* // Uncomment if you find you need it. * // Uncomment if you find you need it.
* *
* $l = strlen($s); * $l = strlen($s);
* if (! strpos($s,'=')) { * if (!strpos($s,'=')) {
* $m = $l % 4; * $m = $l % 4;
* if ($m == 2) * if ($m == 2)
* $s .= '=='; * $s .= '==';
@ -1818,7 +1818,7 @@ function file_tag_update_pconfig($uid, $file_old, $file_new, $type = 'file') {
$check_new_tags = explode(",",file_tag_file_to_list($file_new,$type)); $check_new_tags = explode(",",file_tag_file_to_list($file_new,$type));
foreach ($check_new_tags as $tag) { foreach ($check_new_tags as $tag) {
if (! stristr($saved,$lbracket . file_tag_encode($tag) . $rbracket)) { if (!stristr($saved,$lbracket . file_tag_encode($tag) . $rbracket)) {
$new_tags[] = $tag; $new_tags[] = $tag;
} }
} }
@ -1830,7 +1830,7 @@ function file_tag_update_pconfig($uid, $file_old, $file_new, $type = 'file') {
$check_deleted_tags = explode(",",file_tag_file_to_list($file_old,$type)); $check_deleted_tags = explode(",",file_tag_file_to_list($file_old,$type));
foreach ($check_deleted_tags as $tag) { foreach ($check_deleted_tags as $tag) {
if (! stristr($file_new,$lbracket . file_tag_encode($tag) . $rbracket)) { if (!stristr($file_new,$lbracket . file_tag_encode($tag) . $rbracket)) {
$deleted_tags[] = $tag; $deleted_tags[] = $tag;
} }
} }
@ -1859,20 +1859,17 @@ function file_tag_update_pconfig($uid, $file_old, $file_new, $type = 'file') {
return true; return true;
} }
function file_tag_save_file($uid, $item, $file) function file_tag_save_file($uid, $item_id, $file)
{ {
if (! intval($uid)) { if (!intval($uid)) {
return false; return false;
} }
$r = q("SELECT `file` FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1", $item = Item::selectFirst(['file'], ['id' => $item_id, 'uid' => $uid]);
intval($item), if (DBM::is_result($item)) {
intval($uid) if (!stristr($item['file'],'[' . file_tag_encode($file) . ']')) {
); $fields = ['file' => $item['file'] . '[' . file_tag_encode($file) . ']'];
if (DBM::is_result($r)) { Item::update($fields, ['id' => $item_id]);
if (!stristr($r[0]['file'],'[' . file_tag_encode($file) . ']')) {
$fields = ['file' => $r[0]['file'] . '[' . file_tag_encode($file) . ']'];
Item::update($fields, ['id' => $item]);
} }
$saved = PConfig::get($uid, 'system', 'filetags'); $saved = PConfig::get($uid, 'system', 'filetags');
if (!strlen($saved) || !stristr($saved, '[' . file_tag_encode($file) . ']')) { if (!strlen($saved) || !stristr($saved, '[' . file_tag_encode($file) . ']')) {
@ -1883,9 +1880,9 @@ function file_tag_save_file($uid, $item, $file)
return true; return true;
} }
function file_tag_unsave_file($uid, $item, $file, $cat = false) function file_tag_unsave_file($uid, $item_id, $file, $cat = false)
{ {
if (! intval($uid)) { if (!intval($uid)) {
return false; return false;
} }
@ -1897,16 +1894,13 @@ function file_tag_unsave_file($uid, $item, $file, $cat = false)
$termtype = TERM_FILE; $termtype = TERM_FILE;
} }
$r = q("SELECT `file` FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1", $item = Item::selectFirst(['file'], ['id' => $item_id, 'uid' => $uid]);
intval($item), if (!DBM::is_result($item)) {
intval($uid)
);
if (! DBM::is_result($r)) {
return false; return false;
} }
$fields = ['file' => str_replace($pattern,'',$r[0]['file'])]; $fields = ['file' => str_replace($pattern,'',$item['file'])];
Item::update($fields, ['id' => $item]); Item::update($fields, ['id' => $item_id]);
$r = q("SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d AND `uid` = %d", $r = q("SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d AND `uid` = %d",
dbesc($file), dbesc($file),

View File

@ -11,32 +11,29 @@ function starred_init(App $a) {
$starred = 0; $starred = 0;
$message_id = null; $message_id = null;
if (! local_user()) { if (!local_user()) {
killme(); killme();
} }
if ($a->argc > 1) { if ($a->argc > 1) {
$message_id = intval($a->argv[1]); $message_id = intval($a->argv[1]);
} }
if (! $message_id) { if (!$message_id) {
killme(); killme();
} }
$r = q("SELECT `starred` FROM `item` WHERE `uid` = %d AND `id` = %d LIMIT 1", $item = Item::selectForUser(local_user(), ['starred'], ['uid' => local_user(), 'id' => $message_id]);
intval(local_user()), if (!DBM::is_result($item)) {
intval($message_id)
);
if (! DBM::is_result($r)) {
killme(); killme();
} }
if (! intval($r[0]['starred'])) { if (!intval($item['starred'])) {
$starred = 1; $starred = 1;
} }
Item::update(['starred' => $starred], ['id' => $message_id]); Item::update(['starred' => $starred], ['id' => $message_id]);
// See if we've been passed a return path to redirect to // See if we've been passed a return path to redirect to
$return_path = ((x($_REQUEST,'return')) ? $_REQUEST['return'] : ''); $return_path = (x($_REQUEST,'return') ? $_REQUEST['return'] : '');
if ($return_path) { if ($return_path) {
$rand = '_=' . time(); $rand = '_=' . time();
if (strpos($return_path, '?')) { if (strpos($return_path, '?')) {

View File

@ -175,23 +175,19 @@ EOT;
} }
// if the original post is on this site, update it. // if the original post is on this site, update it.
$original_item = Item::selectFirst(['tag','id','uid'], ['origin' => true, 'uri' => $item['uri']]);
$r = q("SELECT `tag`,`id`,`uid` FROM `item` WHERE `origin`=1 AND `uri`='%s' LIMIT 1", if (DBM::is_result($original_item)) {
dbesc($item['uri'])
);
if (DBM::is_result($r)) {
$x = q("SELECT `blocktags` FROM `user` WHERE `uid`=%d LIMIT 1", $x = q("SELECT `blocktags` FROM `user` WHERE `uid`=%d LIMIT 1",
intval($r[0]['uid']) intval($original_item['uid'])
); );
$t = q("SELECT COUNT(`tid`) AS `tcount` FROM `term` WHERE `oid`=%d AND `term`='%s'", $t = q("SELECT COUNT(`tid`) AS `tcount` FROM `term` WHERE `oid`=%d AND `term`='%s'",
intval($r[0]['id']), intval($original_item['id']),
dbesc($term) dbesc($term)
); );
if (DBM::is_result($x) && !$x[0]['blocktags'] && $t[0]['tcount'] == 0){ if (DBM::is_result($x) && !$x[0]['blocktags'] && $t[0]['tcount'] == 0){
q("INSERT INTO term (`oid`, `otype`, `type`, `term`, `url`, `uid`) VALUE (%d, %d, %d, '%s', '%s', %d)", q("INSERT INTO term (`oid`, `otype`, `type`, `term`, `url`, `uid`) VALUE (%d, %d, %d, '%s', '%s', %d)",
intval($r[0]['id']), intval($original_item['id']),
$term_objtype, $term_objtype,
TERM_HASHTAG, TERM_HASHTAG,
dbesc($term), dbesc($term),

View File

@ -938,10 +938,10 @@ class DFRN
if (($item['parent'] != $item['id']) || ($item['parent-uri'] !== $item['uri']) || (($item['thr-parent'] !== '') && ($item['thr-parent'] !== $item['uri']))) { if (($item['parent'] != $item['id']) || ($item['parent-uri'] !== $item['uri']) || (($item['thr-parent'] !== '') && ($item['thr-parent'] !== $item['uri']))) {
$parent_item = (($item['thr-parent']) ? $item['thr-parent'] : $item['parent-uri']); $parent_item = (($item['thr-parent']) ? $item['thr-parent'] : $item['parent-uri']);
$parent = q("SELECT `guid`,`plink` FROM `item` WHERE `uri` = '%s' AND `uid` = %d", dbesc($parent_item), intval($item['uid'])); $parent = Item::selectFirst(['guid','plink'], ['uri' => $parent_item, 'uid' => $item['uid']]);
$attributes = ["ref" => $parent_item, "type" => "text/html", $attributes = ["ref" => $parent_item, "type" => "text/html",
"href" => $parent[0]['plink'], "href" => $parent['plink'],
"dfrn:diaspora_guid" => $parent[0]['guid']]; "dfrn:diaspora_guid" => $parent['guid']];
XML::addElement($doc, $entry, "thr:in-reply-to", "", $attributes); XML::addElement($doc, $entry, "thr:in-reply-to", "", $attributes);
} }
@ -2161,13 +2161,8 @@ class DFRN
$is_a_remote_action = false; $is_a_remote_action = false;
$r = q( $parent = Item::selectFirst(['parent-uri'], ['uri' => $item["parent-uri"]]);
"SELECT `item`.`parent-uri` FROM `item` if (DBM::is_result($parent)) {
WHERE `item`.`uri` = '%s'
LIMIT 1",
dbesc($item["parent-uri"])
);
if (DBM::is_result($r)) {
$r = q( $r = q(
"SELECT `item`.`forum_mode`, `item`.`wall` FROM `item` "SELECT `item`.`forum_mode`, `item`.`wall` FROM `item`
INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id` INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
@ -2175,9 +2170,9 @@ class DFRN
AND `item`.`uid` = %d AND `item`.`uid` = %d
$sql_extra $sql_extra
LIMIT 1", LIMIT 1",
dbesc($r[0]["parent-uri"]), dbesc($parent["parent-uri"]),
dbesc($r[0]["parent-uri"]), dbesc($parent["parent-uri"]),
dbesc($r[0]["parent-uri"]), dbesc($parent["parent-uri"]),
intval($importer["importer_uid"]) intval($importer["importer_uid"])
); );
if (DBM::is_result($r)) { if (DBM::is_result($r)) {
@ -2318,25 +2313,15 @@ class DFRN
$item["gravity"] = GRAVITY_LIKE; $item["gravity"] = GRAVITY_LIKE;
// only one like or dislike per person // only one like or dislike per person
// splitted into two queries for performance issues // splitted into two queries for performance issues
$r = q( $condition = ['uid' => $item["uid"], 'author-id' => $item["author-id"],
"SELECT `id` FROM `item` WHERE `uid` = %d AND `author-id` = %d AND `verb` = '%s' AND `parent-uri` = '%s' AND NOT `deleted` LIMIT 1", 'verb' => $item["verb"], 'parent-uri' => $item["parent-uri"]];
intval($item["uid"]), if (dba::exists('item', $condition)) {
intval($item["author-id"]),
dbesc($item["verb"]),
dbesc($item["parent-uri"])
);
if (DBM::is_result($r)) {
return false; return false;
} }
$r = q( $condition = ['uid' => $item["uid"], 'author-id' => $item["author-id"],
"SELECT `id` FROM `item` WHERE `uid` = %d AND `author-id` = %d AND `verb` = '%s' AND `thr-parent` = '%s' AND NOT `deleted` LIMIT 1", 'verb' => $item["verb"], 'thr-parent' => $item["parent-uri"]];
intval($item["uid"]), if (dba::exists('item', $condition)) {
intval($item["author-id"]),
dbesc($item["verb"]),
dbesc($item["parent-uri"])
);
if (DBM::is_result($r)) {
return false; return false;
} }
} else { } else {
@ -2348,22 +2333,17 @@ class DFRN
$xt = XML::parseString($item["target"], false); $xt = XML::parseString($item["target"], false);
if ($xt->type == ACTIVITY_OBJ_NOTE) { if ($xt->type == ACTIVITY_OBJ_NOTE) {
$r = q( $item_tag = Item::selectFirst(['id', 'tag'], ['uri' => $xt->id, 'uid' => $importer["importer_uid"]]);
"SELECT `id`, `tag` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", if (!DBM::is_result($item_tag)) {
dbesc($xt->id),
intval($importer["importer_uid"])
);
if (!DBM::is_result($r)) {
logger("Query failed to execute, no result returned in " . __FUNCTION__); logger("Query failed to execute, no result returned in " . __FUNCTION__);
return false; return false;
} }
// extract tag, if not duplicate, add to parent item // extract tag, if not duplicate, add to parent item
if ($xo->content) { if ($xo->content) {
if (!stristr($r[0]["tag"], trim($xo->content))) { if (!stristr($item_tag["tag"], trim($xo->content))) {
$tag = $r[0]["tag"] . (strlen($r[0]["tag"]) ? ',' : '') . '#[url=' . $xo->id . ']'. $xo->content . '[/url]'; $tag = $item_tag["tag"] . (strlen($item_tag["tag"]) ? ',' : '') . '#[url=' . $xo->id . ']'. $xo->content . '[/url]';
Item::update(['tag' => $tag], ['id' => $r[0]["id"]]); Item::update(['tag' => $tag], ['id' => $item_tag["id"]]);
} }
} }
} }

View File

@ -438,12 +438,10 @@ class OnePoll
$refs_arr[$x] = "'" . Email::msgid2iri(str_replace(['<', '>', ' '],['', '', ''],dbesc($refs_arr[$x]))) . "'"; $refs_arr[$x] = "'" . Email::msgid2iri(str_replace(['<', '>', ' '],['', '', ''],dbesc($refs_arr[$x]))) . "'";
} }
} }
$qstr = implode(',', $refs_arr); $condition = ['uri' => $refs_arr, 'uid' => $importer_uid];
$r = q("SELECT `parent-uri` FROM `item` USE INDEX (`uid_uri`) WHERE `uri` IN ($qstr) AND `uid` = %d LIMIT 1", $parent = Item::selectFirst(['parent-uri'], $condition);
intval($importer_uid) if (DBM::is_result($parent)) {
); $datarray['parent-uri'] = $parent['parent-uri']; // Set the parent as the top-level item
if (DBM::is_result($r)) {
$datarray['parent-uri'] = $r[0]['parent-uri']; // Set the parent as the top-level item
} }
} }
@ -472,12 +470,11 @@ class OnePoll
// If it seems to be a reply but a header couldn't be found take the last message with matching subject // If it seems to be a reply but a header couldn't be found take the last message with matching subject
if (empty($datarray['parent-uri']) && $reply) { if (empty($datarray['parent-uri']) && $reply) {
$r = q("SELECT `parent-uri` FROM `item` WHERE `title` = \"%s\" AND `uid` = %d AND `network` = '%s' ORDER BY `created` DESC LIMIT 1", $condition = ['title' => $datarray['title'], 'uid' => importer_uid, 'network' => NETWORK_MAIL];
dbesc(protect_sprintf($datarray['title'])), $params = ['order' => ['created' => true]];
intval($importer_uid), $parent = Item::selectFirst(['parent-uri'], $condition, $params);
dbesc(NETWORK_MAIL)); if (DBM::is_result($parent)) {
if (DBM::is_result($r)) { $datarray['parent-uri'] = $parent['parent-uri'];
$datarray['parent-uri'] = $r[0]['parent-uri'];
} }
} }

View File

@ -27,7 +27,7 @@ class TagUpdate
dba::close($messages); dba::close($messages);
$messages = dba::p("SELECT `guid` FROM `item` WHERE `uid` = 0"); $messages = dba::select('item', ['guid'], ['uid' => 0]);
logger('fetched messages: ' . dba::num_rows($messages)); logger('fetched messages: ' . dba::num_rows($messages));
while ($message = dba::fetch(messages)) { while ($message = dba::fetch(messages)) {