本文整理汇总了PHP中rcube_db::encode方法的典型用法代码示例。如果您正苦于以下问题:PHP rcube_db::encode方法的具体用法?PHP rcube_db::encode怎么用?PHP rcube_db::encode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类rcube_db
的用法示例。
在下文中一共展示了rcube_db::encode方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: serialize
/**
* Saves the message in cache.
*
* @param string $mailbox Folder name
* @param rcube_message_header $message Message data
* @param bool $force Skips message in-cache existance check
*/
function add_message($mailbox, $message, $force = false)
{
if (!is_object($message) || empty($message->uid)) {
return;
}
$msg = serialize($this->db->encode(clone $message));
$flags = 0;
if (!empty($message->flags)) {
foreach ($this->flags as $idx => $flag) {
if (!empty($message->flags[$flag])) {
$flags += $idx;
}
}
}
unset($msg->flags);
// update cache record (even if it exists, the update
// here will work as select, assume row exist if affected_rows=0)
if (!$force) {
$res = $this->db->query("UPDATE " . $this->db->table_name('cache_messages') . " SET flags = ?, data = ?, changed = " . $this->db->now() . " WHERE user_id = ?" . " AND mailbox = ?" . " AND uid = ?", $flags, $msg, $this->userid, $mailbox, (int) $message->uid);
if ($this->db->affected_rows()) {
return;
}
}
// insert new record
$this->db->query("INSERT INTO " . $this->db->table_name('cache_messages') . " (user_id, mailbox, uid, flags, changed, data)" . " VALUES (?, ?, ?, ?, " . $this->db->now() . ", ?)", $this->userid, $mailbox, (int) $message->uid, $flags, $msg);
}
示例2: serialize
/**
* Serializes data for storing
*/
private function serialize($data)
{
if ($this->type == 'db') {
return $this->db->encode($data, $this->packed);
}
return $this->packed ? serialize($data) : $data;
}
示例3: add_thread_row
/**
* Saves thread data into database
*/
private function add_thread_row($mailbox, $data, $mbox_data = array(), $exists = false)
{
$data = array($this->db->encode($data, true), (int) $this->skip_deleted, (int) $mbox_data['UIDVALIDITY'], (int) $mbox_data['UIDNEXT']);
$data = implode('@', $data);
if ($exists) {
$sql_result = $this->db->query("UPDATE " . $this->db->table_name('cache_thread') . " SET data = ?, changed = " . $this->db->now() . " WHERE user_id = ?" . " AND mailbox = ?", $data, $this->userid, $mailbox);
} else {
$sql_result = $this->db->query("INSERT INTO " . $this->db->table_name('cache_thread') . " (user_id, mailbox, data, changed)" . " VALUES (?, ?, ?, " . $this->db->now() . ")", $this->userid, $mailbox, $data);
}
}
示例4: add_thread_row
/**
* Saves thread data into database
*/
private function add_thread_row($mailbox, $data, $mbox_data = array(), $exists = false)
{
$data = array($this->db->encode($data, true), (int) $this->skip_deleted, (int) $mbox_data['UIDVALIDITY'], (int) $mbox_data['UIDNEXT']);
$data = implode('@', $data);
$expires = $this->ttl ? $this->db->now($this->ttl) : 'NULL';
if ($exists) {
$res = $this->db->query("UPDATE {$this->thread_table}" . " SET `data` = ?, `expires` = {$expires}" . " WHERE `user_id` = ?" . " AND `mailbox` = ?", $data, $this->userid, $mailbox);
if ($this->db->affected_rows($res)) {
return;
}
}
$this->db->set_option('ignore_key_errors', true);
$res = $this->db->query("INSERT INTO {$this->thread_table}" . " (`user_id`, `mailbox`, `expires`, `data`)" . " VALUES (?, ?, {$expires}, ?)", $this->userid, $mailbox, $data);
// race-condition, insert failed so try update (#1489146)
// thanks to ignore_key_errors "duplicate row" errors will be ignored
if (!$exists && !$res && !$this->db->is_error($res)) {
$this->db->query("UPDATE {$this->thread_table}" . " SET `expires` = {$expires}, `data` = ?" . " WHERE `user_id` = ?" . " AND `mailbox` = ?", $data, $this->userid, $mailbox);
}
$this->db->set_option('ignore_key_errors', false);
}