Completed
Push — master ( 023cf7...b3f7d4 )
by Andreas
02:28
created

MongoCollection::getName()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %
Metric Value
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
/*
3
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
4
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
5
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
6
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
7
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
10
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
11
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
12
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
13
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14
 */
15
16
use Alcaeus\MongoDbAdapter\TypeConverter;
17
18
/**
19
 * Represents a database collection.
20
 * @link http://www.php.net/manual/en/class.mongocollection.php
21
 */
22
class MongoCollection
1 ignored issue
show
Coding Style Compatibility introduced by
PSR1 recommends that each class must be in a namespace of at least one level to avoid collisions.

You can fix this by adding a namespace to your class:

namespace YourVendor;

class YourClass { }

When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.

Loading history...
23
{
24
    const ASCENDING = 1;
25
    const DESCENDING = -1;
26
27
    /**
28
     * @var MongoDB
29
     */
30
    public $db = NULL;
31
32
    /**
33
     * @var string
34
     */
35
    protected $name;
36
37
    /**
38
     * @var \MongoDB\Collection
39
     */
40
    protected $collection;
41
42
    /**
43
     * @var int<p>
44
     */
45
    public $w;
46
47
    /**
48
     * @var int <p>
49
     */
50
    public $wtimeout;
51
52
    /**
53
     * Creates a new collection
54
     * @link http://www.php.net/manual/en/mongocollection.construct.php
55
     * @param MongoDB $db Parent database.
56
     * @param string $name Name for this collection.
57
     * @throws Exception
58
     * @return MongoCollection
0 ignored issues
show
Comprehensibility Best Practice introduced by
Adding a @return annotation to constructors is generally not recommended as a constructor does not have a meaningful return value.

Adding a @return annotation to a constructor is not recommended, since a constructor does not have a meaningful return value.

Please refer to the PHP core documentation on constructors.

Loading history...
59
     */
60
    public function __construct(MongoDB $db, $name)
61
    {
62
        $this->db = $db;
63
        $this->name = $name;
64
        $this->collection = $this->db->getDb()->selectCollection($name);
65
    }
66
67
    /**
68
     * Gets the underlying collection for this object
69
     *
70
     * @internal This part is not of the ext-mongo API and should not be used
71
     * @return \MongoDB\Collection
72
     */
73
    public function getCollection()
74
    {
75
        return $this->collection;
76
    }
77
78
    /**
79
     * String representation of this collection
80
     * @link http://www.php.net/manual/en/mongocollection.--tostring.php
81
     * @return string Returns the full name of this collection.
82
     */
83
    public function __toString()
84
    {
85
        return (string) $this->db . '.' . $this->name;
86
    }
87
88
    /**
89
     * Gets a collection
90
     * @link http://www.php.net/manual/en/mongocollection.get.php
91
     * @param string $name The next string in the collection name.
92
     * @return MongoCollection
93
     */
94
    public function __get($name)
95
    {
96
        return $this->db->selectCollection($this->name . '.' . $name);
97
    }
98
99
    /**
100
     * @link http://www.php.net/manual/en/mongocollection.aggregate.php
101
     * @param array $pipeline
102
     * @param array $op
103
     * @return array
104
     */
105
    public function aggregate(array $pipeline, array $op = [])
106
    {
107
        if (! TypeConverter::isNumericArray($pipeline)) {
108
            $pipeline = [];
109
            $options = [];
110
111
            $i = 0;
112
            foreach (func_get_args() as $operator) {
113
                $i++;
114
                if (! is_array($operator)) {
115
                    trigger_error("Argument $i is not an array", E_WARNING);
116
                    return;
117
                }
118
119
                $pipeline[] = $operator;
120
            }
121
        } else {
122
            $options = $op;
123
        }
124
125
        $command = [
126
            'aggregate' => $this->name,
127
            'pipeline' => $pipeline
128
        ];
129
130
        $command += $options;
131
132
        return $this->db->command($command, [], $hash);
133
    }
134
135
    /**
136
     * @link http://php.net/manual/en/mongocollection.aggregatecursor.php
137
     * @param array $pipeline
138
     * @param array $options
139
     * @return MongoCommandCursor
140
     */
141
    public function aggregateCursor(array $pipeline, array $options = [])
142
    {
143
        // Build command manually, can't use mongo-php-library here
144
        $command = [
145
            'aggregate' => $this->name,
146
            'pipeline' => $pipeline
147
        ];
148
149
        // Convert cursor option
150
        if (! isset($options['cursor']) || $options['cursor'] === true || $options['cursor'] === []) {
151
            // Cursor option needs to be an object convert bools and empty arrays since those won't be handled by TypeConverter
152
            $options['cursor'] = new \stdClass;
153
        }
154
155
        $command += $options;
156
157
        return new MongoCommandCursor($this->db->getConnection(), (string) $this, $command);
158
    }
159
160
    /**
161
     * Returns this collection's name
162
     * @link http://www.php.net/manual/en/mongocollection.getname.php
163
     * @return string
164
     */
165
    public function getName()
166
    {
167
        return $this->name;
168
    }
169
170
    /**
171
     * @link http://www.php.net/manual/en/mongocollection.getslaveokay.php
172
     * @return bool
173
     */
174
    public function getSlaveOkay()
175
    {
176
        $this->notImplemented();
177
    }
178
179
    /**
180
     * @link http://www.php.net/manual/en/mongocollection.setslaveokay.php
181
     * @param bool $ok
182
     * @return bool
183
     */
184
    public function setSlaveOkay($ok = true)
0 ignored issues
show
Unused Code introduced by
The parameter $ok is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
185
    {
186
        $this->notImplemented();
187
    }
188
189
    /**
190
     * @link http://www.php.net/manual/en/mongocollection.getreadpreference.php
191
     * @return array
192
     */
193
    public function getReadPreference()
194
    {
195
        $this->notImplemented();
196
    }
197
198
    /**
199
     * @param string $read_preference
200
     * @param array $tags
201
     * @return bool
202
     */
203
    public function setReadPreference($read_preference, array $tags)
0 ignored issues
show
Unused Code introduced by
The parameter $read_preference is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Unused Code introduced by
The parameter $tags is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
204
    {
205
        $this->notImplemented();
206
    }
207
208
    /**
209
     * Drops this collection
210
     * @link http://www.php.net/manual/en/mongocollection.drop.php
211
     * @return array Returns the database response.
212
     */
213
    public function drop()
214
    {
215
        return $this->collection->drop();
216
    }
217
218
    /**
219
     * Validates this collection
220
     * @link http://www.php.net/manual/en/mongocollection.validate.php
221
     * @param bool $scan_data Only validate indices, not the base collection.
222
     * @return array Returns the database's evaluation of this object.
223
     */
224
    public function validate($scan_data = FALSE)
0 ignored issues
show
Unused Code introduced by
The parameter $scan_data is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
225
    {
226
        $this->notImplemented();
227
    }
228
229
    /**
230
     * Inserts an array into the collection
231
     * @link http://www.php.net/manual/en/mongocollection.insert.php
232
     * @param array|object $a
233
     * @param array $options
234
     * @throws MongoException if the inserted document is empty or if it contains zero-length keys. Attempting to insert an object with protected and private properties will cause a zero-length key error.
235
     * @throws MongoCursorException if the "w" option is set and the write fails.
236
     * @throws MongoCursorTimeoutException if the "w" option is set to a value greater than one and the operation takes longer than MongoCursor::$timeout milliseconds to complete. This does not kill the operation on the server, it is a client-side timeout. The operation in MongoCollection::$wtimeout is milliseconds.
237
     * @return bool|array Returns an array containing the status of the insertion if the "w" option is set.
238
     */
239
    public function insert($a, array $options = array())
240
    {
241
        return $this->collection->insertOne(TypeConverter::convertLegacyArrayToObject($a), $options);
242
    }
243
244
    /**
245
     * Inserts multiple documents into this collection
246
     * @link http://www.php.net/manual/en/mongocollection.batchinsert.php
247
     * @param array $a An array of arrays.
248
     * @param array $options Options for the inserts.
249
     * @throws MongoCursorException
250
     * @return mixed f "safe" is set, returns an associative array with the status of the inserts ("ok") and any error that may have occured ("err"). Otherwise, returns TRUE if the batch insert was successfully sent, FALSE otherwise.
251
     */
252
    public function batchInsert(array $a, array $options = array())
253
    {
254
        return $this->collection->insertMany($a, $options);
255
    }
256
257
    /**
258
     * Update records based on a given criteria
259
     * @link http://www.php.net/manual/en/mongocollection.update.php
260
     * @param array $criteria Description of the objects to update.
261
     * @param array $newobj The object with which to update the matching records.
262
     * @param array $options This parameter is an associative array of the form
263
     *        array("optionname" => boolean, ...).
264
     *
265
     *        Currently supported options are:
266
     *          "upsert": If no document matches $$criteria, a new document will be created from $$criteria and $$new_object (see upsert example).
267
     *
268
     *          "multiple": All documents matching $criteria will be updated. MongoCollection::update has exactly the opposite behavior of MongoCollection::remove- it updates one document by
269
     *          default, not all matching documents. It is recommended that you always specify whether you want to update multiple documents or a single document, as the
270
     *          database may change its default behavior at some point in the future.
271
     *
272
     *          "safe" Can be a boolean or integer, defaults to false. If false, the program continues executing without waiting for a database response. If true, the program will wait for
273
     *          the database response and throw a MongoCursorException if the update did not succeed. If you are using replication and the master has changed, using "safe" will make the driver
274
     *          disconnect from the master, throw and exception, and attempt to find a new master on the next operation (your application must decide whether or not to retry the operation on the new master).
275
     *          If you do not use "safe" with a replica set and the master changes, there will be no way for the driver to know about the change so it will continuously and silently fail to write.
276
     *          If safe is an integer, will replicate the update to that many machines before returning success (or throw an exception if the replication times out, see wtimeout).
277
     *          This overrides the w variable set on the collection.
278
     *
279
     *         "fsync": Boolean, defaults to false. Forces the update to be synced to disk before returning success. If true, a safe update is implied and will override setting safe to false.
280
     *
281
     *         "timeout" Integer, defaults to MongoCursor::$timeout. If "safe" is set, this sets how long (in milliseconds) for the client to wait for a database response. If the database does
282
     *         not respond within the timeout period, a MongoCursorTimeoutException will be thrown
283
     * @throws MongoCursorException
284
     * @return boolean
285
     */
286
    public function update(array $criteria , array $newobj, array $options = array())
287
    {
288
        $multiple = ($options['multiple']) ? $options['multiple'] : false;
289
//        $multiple = $options['multiple'] ?? false;
0 ignored issues
show
Unused Code Comprehensibility introduced by
60% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
290
        $method = $multiple ? 'updateMany' : 'updateOne';
291
292
        return $this->collection->$method($criteria, $newobj, $options);
293
    }
294
295
    /**
296
     * (PECL mongo &gt;= 0.9.0)<br/>
297
     * Remove records from this collection
298
     * @link http://www.php.net/manual/en/mongocollection.remove.php
299
     * @param array $criteria [optional] <p>Query criteria for the documents to delete.</p>
300
     * @param array $options [optional] <p>An array of options for the remove operation. Currently available options
301
     * include:
302
     * </p><ul>
303
     * <li><p><em>"w"</em></p><p>See {@link http://www.php.net/manual/en/mongo.writeconcerns.php Write Concerns}. The default value for <b>MongoClient</b> is <em>1</em>.</p></li>
304
     * <li>
305
     * <p>
306
     * <em>"justOne"</em>
307
     * </p>
308
     * <p>
309
     * Specify <strong><code>TRUE</code></strong> to limit deletion to just one document. If <strong><code>FALSE</code></strong> or
310
     * omitted, all documents matching the criteria will be deleted.
311
     * </p>
312
     * </li>
313
     * <li><p><em>"fsync"</em></p><p>Boolean, defaults to <b>FALSE</b>. If journaling is enabled, it works exactly like <em>"j"</em>. If journaling is not enabled, the write operation blocks until it is synced to database files on disk. If <strong><code>TRUE</code></strong>, an acknowledged insert is implied and this option will override setting <em>"w"</em> to <em>0</em>.</p><blockquote class="note"><p><strong class="note">Note</strong>: <span class="simpara">If journaling is enabled, users are strongly encouraged to use the <em>"j"</em> option instead of <em>"fsync"</em>. Do not use <em>"fsync"</em> and <em>"j"</em> simultaneously, as that will result in an error.</p></blockquote></li>
314
     * <li><p><em>"j"</em></p><p>Boolean, defaults to <b>FALSE</b>. Forces the write operation to block until it is synced to the journal on disk. If <strong><code>TRUE</code></strong>, an acknowledged write is implied and this option will override setting <em>"w"</em> to <em>0</em>.</p><blockquote class="note"><p><strong class="note">Note</strong>: <span class="simpara">If this option is used and journaling is disabled, MongoDB 2.6+ will raise an error and the write will fail; older server versions will simply ignore the option.</p></blockquote></li>
315
     * <li><p><em>"socketTimeoutMS"</em></p><p>This option specifies the time limit, in milliseconds, for socket communication. If the server does not respond within the timeout period, a <b>MongoCursorTimeoutException</b> will be thrown and there will be no way to determine if the server actually handled the write or not. A value of <em>-1</em> may be specified to block indefinitely. The default value for <b>MongoClient</b> is <em>30000</em> (30 seconds).</p></li>
316
     * <li><p><em>"w"</em></p><p>See {@link http://www.php.net/manual/en/mongo.writeconcerns.php Write Concerns }. The default value for <b>MongoClient</b> is <em>1</em>.</p></li>
317
     * <li><p><em>"wTimeoutMS"</em></p><p>This option specifies the time limit, in milliseconds, for {@link http://www.php.net/manual/en/mongo.writeconcerns.php write concern} acknowledgement. It is only applicable when <em>"w"</em> is greater than <em>1</em>, as the timeout pertains to replication. If the write concern is not satisfied within the time limit, a <a href="class.mongocursorexception.php" class="classname">MongoCursorException</a> will be thrown. A value of <em>0</em> may be specified to block indefinitely. The default value for {@link http://www.php.net/manual/en/class.mongoclient.php MongoClient} is <em>10000</em> (ten seconds).</p></li>
318
     * </ul>
319
     *
320
     * <p>
321
     * The following options are deprecated and should no longer be used:
322
     * </p><ul>
323
     * <li><p><em>"safe"</em></p><p>Deprecated. Please use the {@link http://www.php.net/manual/en/mongo.writeconcerns.php write concern} <em>"w"</em> option.</p></li>
324
     * <li><p><em>"timeout"</em></p><p>Deprecated alias for <em>"socketTimeoutMS"</em>.</p></li>
325
     * <li><p><b>"wtimeout"</b></p><p>Deprecated alias for <em>"wTimeoutMS"</em>.</p></p>
326
     * @throws MongoCursorException
327
     * @throws MongoCursorTimeoutException
328
     * @return bool|array <p>Returns an array containing the status of the removal if the
329
     * <em>"w"</em> option is set. Otherwise, returns <b>TRUE</b>.
330
     * </p>
331
     * <p>
332
     * Fields in the status array are described in the documentation for
333
     * <b>MongoCollection::insert()</b>.
334
     * </p>
335
     */
336
    public function remove(array $criteria = array(), array $options = array())
337
    {
338
        $multiple = isset($options['justOne']) ? !$options['justOne'] : false;
339
//        $multiple = !$options['justOne'] ?? false;
0 ignored issues
show
Unused Code Comprehensibility introduced by
63% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
340
        $method = $multiple ? 'deleteMany' : 'deleteOne';
341
342
        return $this->collection->$method($criteria, $options);
343
    }
344
345
    /**
346
     * Querys this collection
347
     * @link http://www.php.net/manual/en/mongocollection.find.php
348
     * @param array $query The fields for which to search.
349
     * @param array $fields Fields of the results to return.
350
     * @return MongoCursor
351
     */
352
    public function find(array $query = array(), array $fields = array())
353
    {
354
        return new MongoCursor($this->db->getConnection(), (string) $this, $query, $fields);
355
    }
356
357
    /**
358
     * Retrieve a list of distinct values for the given key across a collection
359
     * @link http://www.php.net/manual/ru/mongocollection.distinct.php
360
     * @param string $key The key to use.
361
     * @param array $query An optional query parameters
362
     * @return array|bool Returns an array of distinct values, or <b>FALSE</b> on failure
363
     */
364
    public function distinct($key, array $query = [])
365
    {
366
        return array_map([TypeConverter::class, 'convertToLegacyType'], $this->collection->distinct($key, $query));
367
    }
368
369
    /**
370
     * Update a document and return it
371
     * @link http://www.php.net/manual/ru/mongocollection.findandmodify.php
372
     * @param array $query The query criteria to search for.
373
     * @param array $update The update criteria.
374
     * @param array $fields Optionally only return these fields.
375
     * @param array $options An array of options to apply, such as remove the match document from the DB and return it.
376
     * @return array Returns the original document, or the modified document when new is set.
377
     */
378
    public function findAndModify(array $query, array $update = NULL, array $fields = NULL, array $options = NULL)
0 ignored issues
show
Unused Code introduced by
The parameter $query is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Unused Code introduced by
The parameter $update is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Unused Code introduced by
The parameter $fields is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Unused Code introduced by
The parameter $options is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
379
    {
380
381
    }
382
383
    /**
384
     * Querys this collection, returning a single element
385
     * @link http://www.php.net/manual/en/mongocollection.findone.php
386
     * @param array $query The fields for which to search.
387
     * @param array $fields Fields of the results to return.
388
     * @return array|null
389
     */
390
    public function findOne(array $query = array(), array $fields = array())
391
    {
392
        $document = $this->collection->findOne(TypeConverter::convertLegacyArrayToObject($query), ['projection' => $fields]);
393
        if ($document !== null) {
394
            $document = TypeConverter::convertObjectToLegacyArray($document);
395
        }
396
397
        return $document;
398
    }
399
400
    /**
401
     * Creates an index on the given field(s), or does nothing if the index already exists
402
     * @link http://www.php.net/manual/en/mongocollection.createindex.php
403
     * @param array $keys Field or fields to use as index.
404
     * @param array $options [optional] This parameter is an associative array of the form array("optionname" => <boolean>, ...).
405
     * @return array Returns the database response.
406
     */
407
    public function createIndex(array $keys, array $options = array()) {}
0 ignored issues
show
Unused Code introduced by
The parameter $keys is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Unused Code introduced by
The parameter $options is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
408
409
    /**
410
     * @deprecated Use MongoCollection::createIndex() instead.
411
     * Creates an index on the given field(s), or does nothing if the index already exists
412
     * @link http://www.php.net/manual/en/mongocollection.ensureindex.php
413
     * @param array $keys Field or fields to use as index.
414
     * @param array $options [optional] This parameter is an associative array of the form array("optionname" => <boolean>, ...).
415
     * @return boolean always true
416
     */
417
    public function ensureIndex(array $keys, array $options = array()) {}
0 ignored issues
show
Unused Code introduced by
The parameter $keys is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Unused Code introduced by
The parameter $options is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
418
419
    /**
420
     * Deletes an index from this collection
421
     * @link http://www.php.net/manual/en/mongocollection.deleteindex.php
422
     * @param string|array $keys Field or fields from which to delete the index.
423
     * @return array Returns the database response.
424
     */
425
    public function deleteIndex($keys) {}
0 ignored issues
show
Unused Code introduced by
The parameter $keys is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
426
427
    /**
428
     * Delete all indexes for this collection
429
     * @link http://www.php.net/manual/en/mongocollection.deleteindexes.php
430
     * @return array Returns the database response.
431
     */
432
    public function deleteIndexes() {}
433
434
    /**
435
     * Returns an array of index names for this collection
436
     * @link http://www.php.net/manual/en/mongocollection.getindexinfo.php
437
     * @return array Returns a list of index names.
438
     */
439
    public function getIndexInfo() {}
440
441
    /**
442
     * Counts the number of documents in this collection
443
     * @link http://www.php.net/manual/en/mongocollection.count.php
444
     * @param array|stdClass $query
445
     * @return int Returns the number of documents matching the query.
446
     */
447
    public function count($query = array())
448
    {
449
        return $this->collection->count($query);
450
    }
451
452
    /**
453
     * Saves an object to this collection
454
     * @link http://www.php.net/manual/en/mongocollection.save.php
455
     * @param array|object $a Array to save. If an object is used, it may not have protected or private properties.
456
     * Note: If the parameter does not have an _id key or property, a new MongoId instance will be created and assigned to it.
457
     * See MongoCollection::insert() for additional information on this behavior.
458
     * @param array $options Options for the save.
459
     * <dl>
460
     * <dt>"w"
461
     * <dd>See WriteConcerns. The default value for MongoClient is 1.
462
     * <dt>"fsync"
463
     * <dd>Boolean, defaults to FALSE. Forces the insert to be synced to disk before returning success. If TRUE, an acknowledged insert is implied and will override setting w to 0.
464
     * <dt>"timeout"
465
     * <dd>Integer, defaults to MongoCursor::$timeout. If "safe" is set, this sets how long (in milliseconds) for the client to wait for a database response. If the database does not respond within the timeout period, a MongoCursorTimeoutException will be thrown.
466
     * <dt>"safe"
467
     * <dd>Deprecated. Please use the WriteConcern w option.
468
     * </dl>
469
     * @throws MongoException if the inserted document is empty or if it contains zero-length keys. Attempting to insert an object with protected and private properties will cause a zero-length key error.
470
     * @throws MongoCursorException if the "w" option is set and the write fails.
471
     * @throws MongoCursorTimeoutException if the "w" option is set to a value greater than one and the operation takes longer than MongoCursor::$timeout milliseconds to complete. This does not kill the operation on the server, it is a client-side timeout. The operation in MongoCollection::$wtimeout is milliseconds.
472
     * @return array|boolean If w was set, returns an array containing the status of the save.
473
     * Otherwise, returns a boolean representing if the array was not empty (an empty array will not be inserted).
474
     */
475
    public function save($a, array $options = array()) {}
0 ignored issues
show
Unused Code introduced by
The parameter $a is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Unused Code introduced by
The parameter $options is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
476
477
    /**
478
     * Creates a database reference
479
     * @link http://www.php.net/manual/en/mongocollection.createdbref.php
480
     * @param array $a Object to which to create a reference.
481
     * @return array Returns a database reference array.
482
     */
483
    public function createDBRef(array $a) {}
0 ignored issues
show
Unused Code introduced by
The parameter $a is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
484
485
    /**
486
     * Fetches the document pointed to by a database reference
487
     * @link http://www.php.net/manual/en/mongocollection.getdbref.php
488
     * @param array $ref A database reference.
489
     * @return array Returns the database document pointed to by the reference.
490
     */
491
    public function getDBRef(array $ref) {}
0 ignored issues
show
Unused Code introduced by
The parameter $ref is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
492
493
    /**
494
     * @param  mixed $keys
495
     * @static
496
     * @return string
497
     */
498
    protected static function toIndexString($keys) {}
0 ignored issues
show
Unused Code introduced by
The parameter $keys is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
499
500
    /**
501
     * Performs an operation similar to SQL's GROUP BY command
502
     * @link http://www.php.net/manual/en/mongocollection.group.php
503
     * @param mixed $keys Fields to group by. If an array or non-code object is passed, it will be the key used to group results.
504
     * @param array $initial Initial value of the aggregation counter object.
505
     * @param MongoCode $reduce A function that aggregates (reduces) the objects iterated.
506
     * @param array $condition An condition that must be true for a row to be considered.
507
     * @return array
508
     */
509
    public function group($keys, array $initial, MongoCode $reduce, array $condition = array()) {}
0 ignored issues
show
Unused Code introduced by
The parameter $keys is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Unused Code introduced by
The parameter $initial is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Unused Code introduced by
The parameter $reduce is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Unused Code introduced by
The parameter $condition is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
510
511
    protected function notImplemented()
512
    {
513
        throw new \Exception('Not implemented');
514
    }
515
}
516
517