Skip to content

Commit

Permalink
* Include changes from iwind/rockmongo#110
Browse files Browse the repository at this point in the history
* Log to std out
* Add php5-json package for queries from ui to work
  • Loading branch information
rr0hit committed Apr 25, 2020
0 parents commit 64dba7f
Show file tree
Hide file tree
Showing 3 changed files with 629 additions and 0 deletions.
5 changes: 5 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
FROM tadaweb/rockmongo:1.1.7
COPY RMongo.php /var/www/localhost/rockmongo/app/lib/mongo/RMongo.php
RUN apk update
RUN apk add php5-json
COPY lighttpd.conf /etc/lighthttpd/lighthttpd.conf
300 changes: 300 additions & 0 deletions RMongo.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,300 @@
<?php
/**
* RMongo for compatibility between Mongo and MongoClient
*
* @author Liu <[email protected]>
*/
class RMongo {
private static $_lastId;

private $_mongo;

/**
* Contruct a new object
*
* @param string $server Server definition
* @param array $options Options
*/
public function __construct($server, array $options = array()) {
if (class_exists("MongoClient")) {
$this->_mongo = new MongoClient($server, $options);
}
else {
$this->_mongo = new Mongo($server, $options);
}
}

/**
* Closes this connection
*
* @param boolean|string $connection Connection
* @return boolean
*/
public function close($connection) {
return $this->_mongo->close($connection);
}

/**
* Connects to a database server
*/
public function connect() {
return $this->_mongo->connect();
}

/**
* Drops a database
*
* @param mixed $db The database to drop. Can be a MongoDB object or the name of the database
* @return array
*/
public function dropDB($db) {
if (!is_object($db)) {
$db = $this->selectDB($db);
}
if (method_exists($db, "drop")) {
return $db->drop();
}
if (method_exists($this->_mongo, "dropDB")) {
$this->_mongo->dropDB($db);
}
}

/**
* Force server to response error
*/
public function forceError() {
if (method_exists($this->_mongo, "forceError")) {
return $this->_mongo->forceError();
}
return false;
}

/**
* Gets a database
*
* @param string $dbname The database name
* @return MongoDB
*/
public function __get($dbname) {
return $this->_mongo->$dbname;
}

/**
* Updates status for all associated hosts
*
* @return array
* @todo implement it under different versions
*/
public function getHosts() {
if (method_exists($this->_mongo, "getHosts")) {
return $this->_mongo->getHosts();
}
return array();
}

/**
* Get the read preference for this connection
*
* @return array
* @todo implement it under different versions
*/
public function getReadPreference() {
if (method_exists($this->_mongo, "getReadPreference")) {
return $this->_mongo->getReadPreference();
}
return array();
}

/**
* Get last erro
*
* @return array
*/
public function lastError() {
if (method_exists($this->_mongo, "lastError")) {
return $this->_mongo->lastError();
}
return array();
}

/**
* Lists all of the databases available
*
* @return array
*/
public function listDBs() {
return $this->_mongo->listDBs();
}

/**
* Connect pair servers
*
* @return boolean
*/
public function pairConnect() {
if (method_exists($this->_mongo, "pairConnect")) {
return $this->_mongo->pairConnect();
}
return false;
}

/**
* Create pair persist connection
*
* @param string $username
* @param string $password
* @return boolean
*/
public function pairPersistConnect($username = "" , $password = "") {
if (method_exists($this->_mongo, "pairPersistConnect")) {
return $this->_mongo->pairPersistConnect($username, $password);
}
return false;
}

/**
* Create persist connection
*
* @param string $username Username
* @param string $password Password
* @return boolean
*/
public function persistConnect($username = "" , $password = "" ) {
if (method_exists($this->_mongo, "persistConnect")) {
return $this->_mongo->persistConnect($username, $password);
}
return false;
}

/**
* Get previous error
*
* @return array
*/
public function prevError() {
if (method_exists($this->_mongo, "prevError")) {
return $this->_mongo->prevError();
}
return array();
}

/**
* Reset error
*
* @return array
*/
public function resetError() {
if (method_exists($this->_mongo, "resetError")) {
return $this->_mongo->resetError();
}
return array();
}

/**
* Gets a database collection
*
* @param string $db The database name
* @param string $collection The collection name
* @return MongoCollection
*/
public function selectCollection($db, $collection) {
return $this->_mongo->selectCollection($db, $collection);
}

/**
* Gets a database
*
* @param string $db The database name
* @return MongoDB
*/
public function selectDB($db) {
return $this->_mongo->selectDB($db);
}

/**
* Set the read preference for this connection
*
* @param int $readPreference The read preference mode: Mongo::RP_PRIMARY, Mongo::RP_PRIMARY_PREFERRED, Mongo::RP_SECONDARY, Mongo::RP_SECONDARY_PREFERRED, or Mongo::RP_NEAREST
* @param array $tags An array of zero or more tag sets, where each tag set is itself an array of criteria used to match tags on replica set members
* @return boolean
*/
public function setReadPreference($readPreference, array $tags = array()) {
if (method_exists($this->_mongo, "setReadPreference")) {
return $this->_mongo->setReadPreference($readPreference, $tags);
}
return false;
}

/**
* Change slaveOkay setting for this connection
*
* @param boolean $ok If reads should be sent to secondary members of a replica set for all possible queries using this Mongo instance
* @return boolean
*/
public function setSlaveOkay($ok) {
if (method_exists($this->_mongo, "setSlaveOkay")) {
return $this->_mongo->setSlaveOkay($ok);
}
elseif (method_exists($this->_mongo, 'setReadPreference')) {
$result = $this->_mongo->setReadPreference(MongoClient::RP_PRIMARY_PREFERRED);
}
else {
$result = false;
}
return $result;
}

/**
* String representation of this connection
*
* @return string
*/
public function __toString() {
return $this->_mongo->__toString();
}

/**
* Get mongo driver version
*
* @return string
* @since 1.1.4
*/
public static function getVersion() {
if (class_exists("MongoClient")) {
return MongoClient::VERSION;
}
if (class_exists("Mongo")) {
return Mongo::VERSION;
}
return "0";
}

/**
* Compare another version with current version
*
* @param string $version Version to compare
* @return integer -1,0,1
* @since 1.1.4
*/
public static function compareVersion($version) {
$currentVersion = self::getVersion();
preg_match("/^[\\.\\d]+/", $currentVersion, $match);
$number = $match[0];
return version_compare($number, $version);
}

static function setLastInsertId($lastId) {
self::$_lastId = $lastId;
}

/**
* Enter description here...
*
* @return string
*/
static function lastInsertId() {
return self::$_lastId;
}
}

?>
Loading

0 comments on commit 64dba7f

Please sign in to comment.