You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							75 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
	
	
							75 lines
						
					
					
						
							1.8 KiB
						
					
					
				<?php | 
						|
/** | 
						|
 * @link http://www.yiiframework.com/ | 
						|
 * @copyright Copyright (c) 2008 Yii Software LLC | 
						|
 * @license http://www.yiiframework.com/license/ | 
						|
 */ | 
						|
 | 
						|
namespace yii\mongodb\file; | 
						|
 | 
						|
use Yii; | 
						|
 | 
						|
/** | 
						|
 * Query represents Mongo "find" operation for GridFS collection. | 
						|
 * | 
						|
 * Query behaves exactly as regular [[\yii\mongodb\Query]]. | 
						|
 * Found files will be represented as arrays of file document attributes with | 
						|
 * additional 'file' key, which stores [[\MongoGridFSFile]] instance. | 
						|
 * | 
						|
 * @property Collection $collection Collection instance. This property is read-only. | 
						|
 * | 
						|
 * @author Paul Klimov <klimov.paul@gmail.com> | 
						|
 * @since 2.0 | 
						|
 */ | 
						|
class Query extends \yii\mongodb\Query | 
						|
{ | 
						|
	/** | 
						|
	 * Returns the Mongo collection for this query. | 
						|
	 * @param \yii\mongodb\Connection $db Mongo connection. | 
						|
	 * @return Collection collection instance. | 
						|
	 */ | 
						|
	public function getCollection($db = null) | 
						|
	{ | 
						|
		if ($db === null) { | 
						|
			$db = Yii::$app->getComponent('mongodb'); | 
						|
		} | 
						|
		return $db->getFileCollection($this->from); | 
						|
	} | 
						|
 | 
						|
	/** | 
						|
	 * @param \MongoGridFSCursor $cursor Mongo cursor instance to fetch data from. | 
						|
	 * @param boolean $all whether to fetch all rows or only first one. | 
						|
	 * @param string|callable $indexBy value to index by. | 
						|
	 * @return array|boolean result. | 
						|
	 * @see Query::fetchRows() | 
						|
	 */ | 
						|
	protected function fetchRowsInternal($cursor, $all, $indexBy) | 
						|
	{ | 
						|
		$result = []; | 
						|
		if ($all) { | 
						|
			foreach ($cursor as $file) { | 
						|
				$row = $file->file; | 
						|
				$row['file'] = $file; | 
						|
				if ($indexBy !== null) { | 
						|
					if (is_string($indexBy)) { | 
						|
						$key = $row[$indexBy]; | 
						|
					} else { | 
						|
						$key = call_user_func($indexBy, $row); | 
						|
					} | 
						|
					$result[$key] = $row; | 
						|
				} else { | 
						|
					$result[] = $row; | 
						|
				} | 
						|
			} | 
						|
		} else { | 
						|
			if ($cursor->hasNext()) { | 
						|
				$file = $cursor->getNext(); | 
						|
				$result = $file->file; | 
						|
				$result['file'] = $file; | 
						|
			} else { | 
						|
				$result = false; | 
						|
			} | 
						|
		} | 
						|
		return $result; | 
						|
	} | 
						|
} |