$networkname = str_replace($search, $replace, $s);
if ((in_array($s, array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS))) && ($profile != "")) {
- $r = q("SELECT `gserver`.`platform` FROM `gcontact`
+ $r = dba::fetch_first("SELECT `gserver`.`platform` FROM `gcontact`
INNER JOIN `gserver` ON `gserver`.`nurl` = `gcontact`.`server_url`
- WHERE `gcontact`.`nurl` = '%s' AND `platform` != ''",
- dbesc(normalise_link($profile)));
+ WHERE `gcontact`.`nurl` = ? AND `platform` != ''", normalise_link($profile));
+
if (dbm::is_result($r)) {
- $networkname = $r[0]["platform"];
+ $networkname = $r['platform'];
}
}
$clean_url = normalise_link($item['author-link']);
if (local_user()) {
- $r = q("SELECT `id` FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `nurl` = '%s' AND NOT `pending` LIMIT 1",
- dbesc(NETWORK_DFRN), intval(local_user()), dbesc(normalise_link($clean_url)));
+ $r = dba::select('contact', array('id'),
+ array('network' => NETWORK_DFRN, 'uid' => local_user(), 'nurl' => normalise_link($clean_url), 'pending' => false),
+ array('limit' => 1));
if (dbm::is_result($r)) {
- $best_url = 'redir/' . $r[0]['id'];
+ $best_url = 'redir/' . $r['id'];
$sparkle = true;
}
}
}
-if (! function_exists('item_photo_menu')) {
function item_photo_menu($item) {
$ssl_state = false;
$cid = 0;
$network = '';
$rel = 0;
- $r = q("SELECT `id`, `network`, `rel` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' LIMIT 1",
- intval(local_user()), dbesc(normalise_link($item['author-link'])));
+ $r = dba::select('contact', array('id', 'network', 'rel'), array('uid' => local_user(), 'nurl' => normalise_link($item['author-link'])), array('limit' => 1));
if (dbm::is_result($r)) {
- $cid = $r[0]['id'];
- $network = $r[0]['network'];
- $rel = $r[0]['rel'];
+ $cid = $r['id'];
+ $network = $r['network'];
+ $rel = $r['rel'];
}
if ($sparkle) {
}
}
return $o;
-}}
+}
if (! function_exists('builtin_activity_puller')) {
/**
*
* @param string $table Table name
* @param array $param parameter array
+ * @param bool $on_duplicate_update Do an update on a duplicate entry
*
* @return boolean was the insert successfull?
*/
- static public function insert($table, $param) {
+ static public function insert($table, $param, $on_duplicate_update = false) {
$sql = "INSERT INTO `".self::$dbo->escape($table)."` (`".implode("`, `", array_keys($param))."`) VALUES (".
- substr(str_repeat("?, ", count($param)), 0, -2).");";
+ substr(str_repeat("?, ", count($param)), 0, -2).")";
+
+ if ($on_duplicate_update) {
+ $sql .= " ON DUPLICATE KEY UPDATE `".implode("` = ?, `", array_keys($param))."` = ?";
+
+ $values = array_values($param);
+ $param = array_merge_recursive($values, $values);
+ }
return self::e($sql, $param);
}
* @param string $table Table name
* @param array $fields contains the fields that are updated
* @param array $condition condition array with the key values
- * @param array|boolean $old_fields array with the old field values that are about to be replaced
+ * @param array|boolean $old_fields array with the old field values that are about to be replaced (true = update on duplicate)
*
* @return boolean was the update successfull?
*/
static public function update($table, $fields, $condition, $old_fields = array()) {
- /** @todo We may use MySQL specific functions here:
- * INSERT INTO `config` (`cat`, `k`, `v`) VALUES ('%s', '%s', '%s') ON DUPLICATE KEY UPDATE `v` = '%s'"
- * But I think that it doesn't make sense here.
- */
-
$table = self::$dbo->escape($table);
if (is_bool($old_fields)) {
$sql = "SELECT * FROM `".$table."` WHERE `".
implode("` = ? AND `", array_keys($condition))."` = ? LIMIT 1";
- $params = array();
- foreach ($condition AS $value) {
- $params[] = $value;
- }
+ $params = array_values($condition);
$do_insert = $old_fields;
$old_fields = self::fetch_first($sql, $params);
if (is_bool($old_fields)) {
if ($do_insert) {
- return self::insert($table, $fields);
+ $values = array_merge($condition, $fields);
+ return self::insert($table, $values, $do_insert);
}
$old_fields = array();
}
implode("` = ?, `", array_keys($fields))."` = ? WHERE `".
implode("` = ? AND `", array_keys($condition))."` = ?";
- $params = array();
- foreach ($fields AS $value) {
- $params[] = $value;
- }
- foreach ($condition AS $value) {
- $params[] = $value;
- }
+ $params1 = array_values($fields);
+ $params2 = array_values($condition);
+ $params = array_merge_recursive($params1, $params2);
return self::e($sql, $params);
}
*/
function get_profiledata_by_nick($nickname, $uid = 0, $profile = 0) {
if (remote_user() && count($_SESSION['remote'])) {
- foreach ($_SESSION['remote'] as $visitor) {
- if ($visitor['uid'] == $uid) {
- $r = q("SELECT `profile-id` FROM `contact` WHERE `id` = %d LIMIT 1",
- intval($visitor['cid'])
- );
- if (dbm::is_result($r))
- $profile = $r[0]['profile-id'];
- break;
+ foreach ($_SESSION['remote'] as $visitor) {
+ if ($visitor['uid'] == $uid) {
+ $r = dba::select('contact', array('profile-id'), array('id' => $visitor['cid']), array('limit' => 1));
+ if (dbm::is_result($r)) {
+ $profile = $r['profile-id'];
}
+ break;
}
}
+ }
$r = null;
if ($profile) {
$profile_int = intval($profile);
- $r = q("SELECT `contact`.`id` AS `contact_id`, `contact`.`photo` AS `contact_photo`,
+ $r = dba::fetch_first("SELECT `contact`.`id` AS `contact_id`, `contact`.`photo` AS `contact_photo`,
`contact`.`thumb` AS `contact_thumb`, `contact`.`micro` AS `contact_micro`,
`profile`.`uid` AS `profile_uid`, `profile`.*,
`contact`.`avatar-date` AS picdate, `contact`.`addr`, `user`.*
FROM `profile`
INNER JOIN `contact` on `contact`.`uid` = `profile`.`uid` AND `contact`.`self`
INNER JOIN `user` ON `profile`.`uid` = `user`.`uid`
- WHERE `user`.`nickname` = '%s' AND `profile`.`id` = %d LIMIT 1",
- dbesc($nickname),
- intval($profile_int)
+ WHERE `user`.`nickname` = ? AND `profile`.`id` = ? LIMIT 1",
+ $nickname,
+ $profile_int
);
}
if (!dbm::is_result($r)) {
- $r = q("SELECT `contact`.`id` AS `contact_id`, `contact`.`photo` as `contact_photo`,
+ $r = dba::fetch_first("SELECT `contact`.`id` AS `contact_id`, `contact`.`photo` as `contact_photo`,
`contact`.`thumb` AS `contact_thumb`, `contact`.`micro` AS `contact_micro`,
`profile`.`uid` AS `profile_uid`, `profile`.*,
`contact`.`avatar-date` AS picdate, `contact`.`addr`, `user`.*
FROM `profile`
INNER JOIN `contact` ON `contact`.`uid` = `profile`.`uid` AND `contact`.`self`
INNER JOIN `user` ON `profile`.`uid` = `user`.`uid`
- WHERE `user`.`nickname` = '%s' AND `profile`.`is-default` LIMIT 1",
- dbesc($nickname)
+ WHERE `user`.`nickname` = ? AND `profile`.`is-default` LIMIT 1",
+ $nickname
);
}
- return $r[0];
-
+ return $r;
}
$conversation['source'] = $arr['source'];
}
- if (!Lock::set('store_conversation')) {
- // When using semaphores, this case never can't happen
- unset($arr['conversation-uri']);
- unset($arr['conversation-href']);
- unset($arr['protocol']);
- unset($arr['source']);
- return $arr;
- }
-
$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']);
if (dbm::is_result($old_conv)) {
logger('Conversation: update for '.$conversation['item-uri'].' from '.$conv['protocol'].' to '.$conversation['protocol'].' failed', LOGGER_DEBUG);
}
} else {
- if (!dba::insert('conversation', $conversation)) {
+ if (!dba::insert('conversation', $conversation, true)) {
logger('Conversation: insert for '.$conversation['item-uri'].' (protocol '.$conversation['protocol'].') failed', LOGGER_DEBUG);
}
}
- Lock::remove('store_conversation');
}
unset($arr['conversation-uri']);
}
}
- // Store the unescaped version
- $unescaped = $arr;
-
- dbm::esc_array($arr, true);
-
logger('item_store: ' . print_r($arr,true), LOGGER_DATA);
dba::transaction();
-
- $r = dbq("INSERT INTO `item` (`"
- . implode("`, `", array_keys($arr))
- . "`) VALUES ("
- . implode(", ", array_values($arr))
- . ")");
-
- // And restore it
- $arr = $unescaped;
+ $r = dba::insert('item', $arr);
// When the item was successfully stored we fetch the ID of the item.
if (dbm::is_result($r)) {
}}
-if (! function_exists('load_hooks')) {
function load_hooks() {
$a = get_app();
$a->hooks = array();
- $r = q("SELECT * FROM `hook` WHERE 1 ORDER BY `priority` DESC, `file`");
+ $r = dba::select('hook', array('hook', 'file', 'function'), array(), array('order' => array('priority' => 'desc', 'file')));
- if (dbm::is_result($r)) {
- foreach ($r as $rr) {
- if (! array_key_exists($rr['hook'],$a->hooks))
- $a->hooks[$rr['hook']] = array();
- $a->hooks[$rr['hook']][] = array($rr['file'],$rr['function']);
+ while ($rr = dba::fetch($r)) {
+ if (! array_key_exists($rr['hook'],$a->hooks)) {
+ $a->hooks[$rr['hook']] = array();
}
+ $a->hooks[$rr['hook']][] = array($rr['file'],$rr['function']);
}
-}}
+}
/**
* @brief Calls a hook.
intval($r[0]['parent']));
if ($unseen) {
- q("UPDATE `item` SET `unseen` = 0 WHERE `parent` = %d AND `unseen`",
- intval($r[0]['parent'])
- );
+ dba::update('item', array('unseen' => false), array('parent' => $r[0]['parent'], 'unseen' => true));
}
}
if (!$group && !$cid && !$star) {
-
- $unseen = q("SELECT `id` FROM `item` WHERE `unseen` AND `uid` = %d LIMIT 1",
- intval(local_user()));
+ $unseen = dba::select('item', array('id'), array('unseen' => true, 'uid' => local_user()), array('limit' => 1));
if (dbm::is_result($unseen)) {
- $r = q("UPDATE `item` SET `unseen` = 0
- WHERE `unseen` = 1 AND `uid` = %d",
- intval(local_user())
- );
+ $r = dba::update('item', array('unseen' => false), array('uid' => local_user(), 'unseen' => true));
}
} elseif ($update_unseen) {
-
$unseen = q("SELECT `id` FROM `item` ".$update_unseen. " LIMIT 1");
if (dbm::is_result($unseen)) {
use Friendica\Core\PConfig;
use Cache;
+use dba;
use dbm;
use Detection\MobileDetect;
$this->remove_inactive_processes();
- q('START TRANSACTION');
+ dba::transaction();
$r = q('SELECT `pid` FROM `process` WHERE `pid` = %d', intval(getmypid()));
if (!dbm::is_result($r)) {
q("INSERT INTO `process` (`pid`,`command`,`created`) VALUES (%d, '%s', '%s')", intval(getmypid()), dbesc($command), dbesc(datetime_convert()));
}
- q('COMMIT');
+ dba::commit();
}
/**
* @brief Remove inactive processes
*/
function remove_inactive_processes() {
- q('START TRANSACTION');
+ dba::transaction();
$r = q('SELECT `pid` FROM `process`');
if (dbm::is_result($r)) {
}
}
}
- q('COMMIT');
+ dba::commit();
}
/**
$dbvalue = (is_array($value) ? serialize($value) : $dbvalue);
if (is_null($stored) || !self::$in_db[$family][$key]) {
- $ret = q("INSERT INTO `config` (`cat`, `k`, `v`) VALUES ('%s', '%s', '%s') ON DUPLICATE KEY UPDATE `v` = '%s'",
- dbesc($family),
- dbesc($key),
- dbesc($dbvalue),
- dbesc($dbvalue)
- );
+ dba::insert('config', array('cat' => $family, 'k' => $key, 'v' => $dbvalue), true);
} else {
- $ret = q("UPDATE `config` SET `v` = '%s' WHERE `cat` = '%s' AND `k` = '%s'",
- dbesc($dbvalue),
- dbesc($family),
- dbesc($key)
- );
+ dba::update('config', array('v' => $dbvalue), array('cat' => $family, 'k' => $key), true);
}
+
if ($ret) {
self::$in_db[$family][$key] = true;
return $value;
$dbvalue = (is_array($value) ? serialize($value) : $dbvalue);
if (is_null($stored) || !self::$in_db[$uid][$family][$key]) {
- $ret = q("INSERT INTO `pconfig` (`uid`, `cat`, `k`, `v`) VALUES (%d, '%s', '%s', '%s') ON DUPLICATE KEY UPDATE `v` = '%s'",
- intval($uid),
- dbesc($family),
- dbesc($key),
- dbesc($dbvalue),
- dbesc($dbvalue)
- );
+ dba::insert('pconfig', array('uid' => $uid, 'cat' => $family, 'k' => $key, 'v' => $dbvalue), true);
} else {
- $ret = q("UPDATE `pconfig` SET `v` = '%s' WHERE `uid` = %d AND `cat` = '%s' AND `k` = '%s'",
- dbesc($dbvalue),
- intval($uid),
- dbesc($family),
- dbesc($key)
- );
+ dba::update('pconfig', array('v' => $dbvalue), array('uid' => $uid, 'cat' => $family, 'k' => $key), true);
}
if ($ret) {