⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mdb.php

📁 视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.
💻 PHP
📖 第 1 页 / 共 2 页
字号:
     * @return mixed  ID of the record where this mail has been put     *                or Mail_Queue_Error on error     * @access public     **/    function put($time_to_send, $id_user, $ip, $sender,                $recipient, $headers, $body, $delete_after_send=true)    {        $id = $this->db->nextId($this->sequence);        if (empty($id)) {            return new Mail_Queue_Error(MAILQUEUE_ERROR,                $this->pearErrorMode, E_USER_ERROR, __FILE__, __LINE__,                'Cannot create id in: '.$this->sequence);        }        $query = 'INSERT INTO '. $this->mail_table                .' (id, create_time, time_to_send, id_user, ip'                .', sender, recipient, delete_after_send) VALUES ('                .       $this->db->getIntegerValue($id)                .', ' . $this->db->getTimestampValue(date("Y-m-d H:i:s"))                .', ' . $this->db->getTimestampValue($time_to_send)                .', ' . $this->db->getIntegerValue($id_user)                .', ' . $this->db->getTextValue($ip)                .', ' . $this->db->getTextValue($sender)                .', ' . $this->db->getTextValue($recipient)                .', ' . ($delete_after_send ? 1 : 0)                .')';        $res = $this->db->query($query);        if (MDB::isError($res)) {            return new Mail_Queue_Error(MAILQUEUE_ERROR_QUERY_FAILED,                $this->pearErrorMode, E_USER_ERROR, __FILE__, __LINE__,                'MDB: query failed - "'.$query.'" - '.$res->getMessage());        }        foreach (array('headers', 'body') as $field) {            $query = 'UPDATE ' . $this->mail_table .' SET ' .$field. '=?'                    .' WHERE id=' . $this->db->getIntegerValue($id);            if ($prepared_query = $this->db->prepareQuery($query)) {                $char_lob = array('Error' => '',                                  'Type'  => 'data',                                  'Data'  => $$field);                if (MDB::isError($clob = $this->db->createLob($char_lob))) {                    return new Mail_Queue_Error(MAILQUEUE_ERROR_QUERY_FAILED,                        $this->pearErrorMode, E_USER_ERROR, __FILE__, __LINE__,                        'MDB: query failed - "'.$query.'" - '.$clob->getMessage());                }                $this->db->setParamClob($prepared_query,1,$clob,$field);                if (MDB::isError($error = $this->db->executeQuery($prepared_query))) {                    return new Mail_Queue_Error(MAILQUEUE_ERROR_QUERY_FAILED,                        $this->pearErrorMode, E_USER_ERROR, __FILE__, __LINE__,                        'MDB: query failed - "'.$query.'" - '.$res->getMessage());                }                $this->db->destroyLob($clob);                $this->db->freePreparedQuery($prepared_query);            } else {                //prepared query failed                return new Mail_Queue_Error(MAILQUEUE_ERROR_QUERY_FAILED,                        $this->pearErrorMode, E_USER_ERROR, __FILE__, __LINE__,                        'MDB: query failed - "'.$query.'" - '.$clob->getMessage());            }        }        return $id;    }    // }}}    // {{{ countSend()    /**     * Check how many times mail was sent.     *     * @param object  Mail_Queue_Body     * @return mixed  Integer or Mail_Queue_Error class if error.     * @access public     */    function countSend($mail)    {        if (!is_object($mail) || !is_a($mail, 'mail_queue_body')) {            return new Mail_Queue_Error(MAILQUEUE_ERROR_UNEXPECTED,                $this->pearErrorMode, E_USER_ERROR, __FILE__, __LINE__,                'Expected: Mail_Queue_Body class');        }        $count = $mail->_try();        $query = 'UPDATE ' . $this->mail_table                .' SET try_sent = ' . $this->db->getIntegerValue($count)                .' WHERE id = '     . $this->db->getIntegerValue($mail->getId());        $res = $this->db->query($query);        if (MDB::isError($res)) {            return new Mail_Queue_Error(MAILQUEUE_ERROR_QUERY_FAILED,                $this->pearErrorMode, E_USER_ERROR, __FILE__, __LINE__,                'MDB: query failed - "'.$query.'" - '.$res->getMessage());        }        return $count;    }    // }}}    // {{{ setAsSent()    /**     * Set mail as already sent.     *     * @param object Mail_Queue_Body object     * @return bool     * @access public     */    function setAsSent($mail)    {        if (!is_object($mail) || !is_a($mail, 'mail_queue_body')) {            return new Mail_Queue_Error(MAILQUEUE_ERROR_UNEXPECTED,                $this->pearErrorMode, E_USER_ERROR, __FILE__, __LINE__,                'Expected: Mail_Queue_Body class');        }        $query = 'UPDATE ' . $this->mail_table                .' SET sent_time = '.$this->db->getTimestampValue(date("Y-m-d H:i:s"))                .' WHERE id = '. $this->db->getIntegerValue($mail->getId());        $res = $this->db->query($query);        if (MDB::isError($res)) {            return new Mail_Queue_Error(MAILQUEUE_ERROR_QUERY_FAILED,                $this->pearErrorMode, E_USER_ERROR, __FILE__, __LINE__,                'MDB: query failed - "'.$query.'" - '.$res->getMessage());        }        return true;    }    // }}}    // {{{ getMailById()    /**     * Return mail by id $id (bypass mail_queue)     *     * @param integer $id  Mail ID     * @return mixed  Mail object or false on error.     * @access public     */    function getMailById($id)    {        $query = 'SELECT * FROM ' . $this->mail_table                .' WHERE id = '   . $this->db->getTextValue($id);        $res = $this->db->query($query);        if (MDB::isError($res)) {            return new Mail_Queue_Error(MAILQUEUE_ERROR_QUERY_FAILED,                $this->pearErrorMode, E_USER_ERROR, __FILE__, __LINE__,                'MDB: query failed - "'.$query.'" - '.$res->getMessage());        }        $row = $this->db->fetchRow($res, MDB_FETCHMODE_ASSOC);        if (!is_array($row)) {            return new Mail_Queue_Error(MAILQUEUE_ERROR_QUERY_FAILED,                $this->pearErrorMode, E_USER_ERROR, __FILE__, __LINE__,                'MDB: query failed - "'.$query.'" - '.$res->getMessage());        }/*//DISABLED (using a standard query, without LOBs special management://it does not work with pgsql (there's probably a problem in the MDB pgsql driver)        $query = 'SELECT id, create_time, time_to_send, sent_time'                .', id_user, ip, sender, recipient, delete_after_send'                .', try_sent FROM ' . $this->mail_table                .' WHERE id = '     . $this->db->getTextValue($id);        $res = $this->db->query($query);        if (MDB::isError($res)) {            return new Mail_Queue_Error(MAILQUEUE_ERROR_QUERY_FAILED,                $this->pearErrorMode, E_USER_ERROR, __FILE__, __LINE__,                'MDB: query failed - "'.$query.'" - '.$res->getMessage());        }        $row = $this->db->fetchRow($res, MDB_FETCHMODE_ASSOC);        if (!is_array($row)) {            return new Mail_Queue_Error(MAILQUEUE_ERROR_QUERY_FAILED,                $this->pearErrorMode, E_USER_ERROR, __FILE__, __LINE__,                'MDB: query failed - "'.$query.'" - '.$res->getMessage());        }        //now fetch lobs...        foreach (array('headers','body') as $field) {            $query = 'SELECT '.$field.' FROM ' . $this->mail_table                    .' WHERE id=' . $this->db->getIntegerValue($id);            $res = $this->db->query($query);            if (MDB::isError($res)) {                //return new Mail_Queue_Error('MDB::query failed: '                //          . $result->getMessage(), __FILE__, __LINE__);                $row[$field] = ''; //Not sure if this is better than raising the error...            } else {                if ($this->db->endOfResult($res)) {                    //no rows returned                    $row[$field] = '';                } else {                    $clob = $this->db->fetchClob($res, 0, $field);                    if (MDB::isError($clob)) {                        return new Mail_Queue_Error(MAILQUEUE_ERROR_QUERY_FAILED,                            $this->pearErrorMode, E_USER_ERROR, __FILE__, __LINE__,                            'MDB: query failed - "'.$query.'" - '.$clob->getMessage());                    }                    $row[$field] = '';                    while (!$this->db->endOfLOB($clob)) {                        if (MDB::isError($error =                                        $this->db->readLob($clob, $data, 8192) < 0)) {                            return new Mail_Queue_Error(MAILQUEUE_ERROR_QUERY_FAILED,                                $this->pearErrorMode, E_USER_ERROR, __FILE__, __LINE__,                                'MDB: query failed - "'.$query.'" - '.$error->getMessage());                        }                        $row[$field] .= $data;                        unset($data);                    }                    $this->db->destroyLob($clob);                }            }        }*/        return new Mail_Queue_Body(            $row['id'],            $row['create_time'],            $row['time_to_send'],            $row['sent_time'],            $row['id_user'],            $row['ip'],            $row['sender'],            $row['recipient'],            unserialize($row['headers']),            unserialize($row['body']),            $row['delete_after_send'],            $row['try_sent']        );    }    // }}}    // {{{ deleteMail()    /**     * Remove from queue mail with $id identifier.     *     * @param integer $id  Mail ID     * @return bool  True on success else Mail_Queue_Error class     * @access public     */    function deleteMail($id) {        $query = 'DELETE FROM ' . $this->mail_table                .' WHERE id = ' . $this->db->getTextValue($id);        $res = $this->db->query($query);        if (MDB::isError($res)) {            return new Mail_Queue_Error(MAILQUEUE_ERROR_QUERY_FAILED,                $this->pearErrorMode, E_USER_ERROR, __FILE__, __LINE__,                'MDB: query failed - "'.$query.'" - '.$res->getMessage());        }        return true;    }    // }}}}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -