-- ------------------------------------------
-- Friendica 3.5.2-dev (Asparagus)
--- DB_UPDATE_VERSION 1220
+-- DB_UPDATE_VERSION 1221
-- ------------------------------------------
return self::e($sql, $param);
}
+ /**
+ * @brief Updates rows
+ *
+ * @param string $table Table name
+ * @param array $fields contains the fields that are updated
+ * @param array $condition condition array with the key values
+ *
+ * @return boolean was the update successfull?
+ */
+ static public function update($table, $fields, $condition) {
+
+ $sql = "UPDATE `".self::$dbo->escape($table)."` SET `".
+ implode("` = ?, `", array_keys($fields))."` = ? WHERE `".
+ implode("` = ? AND `", array_keys($condition))."` = ?";
+
+ $params = array();
+ foreach ($fields AS $value) {
+ $params[] = $value;
+ }
+ foreach ($condition AS $value) {
+ $params[] = $value;
+ }
+
+ self::e($sql, $params);
+ }
+
/**
* @brief Closes the current statement
*
"received" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE),
),
"indexes" => array(
- "PRIMARY" => array("item-uri", "protocol"),
+ "PRIMARY" => array("item-uri"),
"conversation-uri" => array("conversation-uri"),
)
);
$conversation['source'] = $arr['source'];
}
- dba::insert('conversation', $conversation);
+ $conv = dba::fetch_first("SELECT `protocol` FROM `conversation` WHERE `item-uri` = ?", $conversation['item-uri']);
+ if (dbm::is_result($conv)) {
+ // Replace the conversation entry when the new one is better
+ if (($conv['protocol'] == 0) OR ($conv['protocol'] > $conversation['protocol'])) {
+ dba::update('conversation', $conversation, array('item-uri' => $conversation['item-uri']));
+ }
+ } else {
+ dba::insert('conversation', $conversation);
+ }
}
unset($arr['conversation-uri']);