HEX
Server: Apache
System: Linux SH-FR-PM-y8qo 6.6.80-paas #1 SMP PREEMPT_DYNAMIC Thu Sep 25 11:18:23 UTC 2025 x86_64
User: hosting-user (5000)
PHP: 8.3.28
Disabled: NONE
Upload Files
File: /srv/admin/htdocs/rockmongo/app/models/MCollection.php
<?php

class MCollection {
	public static function fields (MongoDB $db, $collection) {
		$one = $db->selectCollection($collection)->findOne();
		if (empty($one)) {
			return array();
		}
		$fields = array();
		self::_fieldsFromRow($fields, $one);
		return $fields;
	}

	private static function _fieldsFromRow(&$fields, $row, $prefix = null) {
		foreach ($row as $field => $value) {
			if (is_integer($field) || is_float($field)) {
				continue;
			}
			$namespace = (is_null($prefix)) ? $field : $prefix . "." . $field;
			$fields[] = $namespace;
			if (is_array($value)) {
				self::_fieldsFromRow($fields, $value, $namespace);
			}
		}
	}

	/**
	 * If a row is GridFS row
	 *
	 * @param array $row record data
	 * @return boolean
	 */
	public static function isFile(array $row) {
		return isset($row["filename"]) && isset($row["chunkSize"]);
	}

	/**
	 * get .chunks collection name from .files collection name
	 *
	 * @param string $filesCollection
	 * @return string
	 */
	public static function chunksCollection($filesCollection) {
		return preg_replace("/\\.files$/", ".chunks", $filesCollection);
	}

	/**
	 * read collection information
	 *
	 * @param MongoDB $db database
	 * @param string $collection collection name
	 */
	public static function info(MongoDB $db, $collection) {
		$ret = $db->command(array( "collStats" => $collection ));

		if (!$ret["ok"]) {
			exit("There is something wrong:<font color=\"red\">{$ret['errmsg']}</font>, please refresh the page to try again.");
		}
		if (!isset($ret["retval"]["options"])) {
			$ret["retval"]["options"] = array();
		}
		$isCapped = 0;
		$size = 0;
		$max = 0;
		$options = $ret["retval"]["options"];
		if (isset($options["capped"])) {
			$isCapped = $options["capped"];
		}
		if (isset($options["size"])) {
			$size = $options["size"];
		}
		if (isset($options["max"])) {
			$max = $options["max"];
		}
		return array( "capped" => $isCapped, "size" => $size, "max" => $max );
	}

	/**
	 * Create collection
	 *
	 * @param MongoDB $db MongoDB
	 * @param string $name Collection name
	 * @param array $options Options, capped, size, max
	 */
	public static function createCollection(MongoDB $db, $name, array $options) {
		if (RMongo::compareVersion("1.4.0") >= 0) {
			$db->createCollection($name, $options);
		}
		else {
			$db->createCollection($name, isset($options["capped"]) ? $options["capped"] : false, isset($options["size"]) ? $options["size"] : 0, isset($options["max"]) ? $options["max"] : 0);
		}
	}
}

?>