⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.62
Server IP:
41.128.143.86
Server:
Linux host.raqmix.cloud 6.8.0-1025-azure #30~22.04.1-Ubuntu SMP Wed Mar 12 15:28:20 UTC 2025 x86_64
Server Software:
Apache
PHP Version:
8.3.23
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
usr
/
share
/
psa-horde
/
imp
/
lib
/
Sentmail
/
Edit File: Mongo.php
<?php /** * Copyright 2013-2017 Horde LLC (http://www.horde.org/) * * See the enclosed file COPYING for license information (GPL). If you * did not receive this file, see http://www.horde.org/licenses/gpl. * * @category Horde * @copyright 2013-2017 Horde LLC * @license http://www.horde.org/licenses/gpl GPL * @package IMP */ /** * Sentmail driver implementation for MongoDB databases. * * @author Michael Slusarz <slusarz@horde.org> * @category Horde * @copyright 2013-2017 Horde LLC * @license http://www.horde.org/licenses/gpl GPL * @package IMP */ class IMP_Sentmail_Mongo extends IMP_Sentmail implements Horde_Mongo_Collection_Index { /* Field names. */ const ACTION = 'action'; const MESSAGEID = 'msgid'; const RECIPIENT = 'recip'; const SUCCESS = 'success'; const TS = 'ts'; const WHO = 'who'; /** * Handle for the current database connection. * * @var MongoCollection */ protected $_db; /** * Indices list. * * @var array */ protected $_indices = array( 'index_ts' => array( self::TS => 1 ), 'index_who' => array( self::WHO => 1 ), 'index_success' => array( self::SUCCESS => 1 ) ); /** * @param array $params Parameters: * - collection: (string) The name of the sentmail collection. * - mongo_db: (Horde_Mongo_Client) [REQUIRED] The DB instance. */ public function __construct(array $params = array()) { if (!isset($params['mongo_db'])) { throw new InvalidArgumentException('Missing mongo_db parameter.'); } parent::__construct(array_merge(array( 'collection' => 'imp_sentmail' ), $params)); $this->_db = $this->_params['mongo_db']->selectCollection(null, $this->_params['collection']); } /** */ protected function _log($action, $message_id, $recipient, $success) { try { $this->_db->insert(array( self::ACTION => $action, self::MESSAGEID => $message_id, self::RECIPIENT => $recipient, self::SUCCESS => intval($success), self::TS => time(), self::WHO => $GLOBALS['registry']->getAuth() )); } catch (MongoException $e) {} } /** */ public function favouriteRecipients($limit, $filter = null) { $query = array( self::SUCCESS => 1, self::WHO => $GLOBALS['registry']->getAuth() ); if (!empty($filter)) { $query[self::ACTION] = array('$in' => $filter); } $out = array(); try { $res = $this->_db->aggregate(array( /* Match the query. */ array('$match' => $query), /* Group by recipient. */ array( '$group' => array( '_id' => '$' . self::RECIPIENT, 'count' => array( '$sum' => 1 ) ) ), /* Sort by recipient. */ array( '$sort' => array('count' => -1) ), /* Limit the return. */ array( '$limit' => $limit ) )); if (isset($res['result'])) { foreach ($res['result'] as $val) { $out[] = $val['_id']; } } } catch (MongoException $e) {} return $out; } /** */ public function numberOfRecipients($hours, $user = false) { $query = array( self::SUCCESS => 1, self::TS => array( '$gt' => (time() - ($hours * 3600)) ) ); if ($user) { $query[self::WHO] = $GLOBALS['registry']->getAuth(); } try { return $this->_db->count($query); } catch (MongoException $e) { return 0; } } /** */ protected function _deleteOldEntries($before) { try { $this->_db->remove(array( self::TS => array( '$lt' => $before ) )); } catch (MongoException $e) {} } /* Horde_Mongo_Collection_Index methods. */ /** */ public function checkMongoIndices() { return $this->_params['mongo_db']->checkIndices($this->_db, $this->_indices); } /** */ public function createMongoIndices() { $this->_params['mongo_db']->createIndices($this->_db, $this->_indices); } }
Simpan