/** * Set whether secondary read queries are allowed for this collection. * * This method wraps setSlaveOkay() for driver versions before 1.3.0. For * newer drivers, this method wraps setReadPreference() and specifies * SECONDARY_PREFERRED. * * @see http://php.net/manual/en/mongocollection.setreadpreference.php * @see http://php.net/manual/en/mongocollection.setslaveokay.php * @param boolean $ok * @return boolean Previous slaveOk value */ public function setSlaveOkay($ok = true) { if (version_compare(phpversion('mongo'), '1.3.0', '<')) { return $this->mongoCollection->setSlaveOkay($ok); } $prevSlaveOkay = $this->getSlaveOkay(); if ($ok) { // Preserve existing tags for non-primary read preferences $readPref = $this->getReadPreference(); $tags = !empty($readPref['tagsets']) ? $readPref['tagsets'] : array(); $this->mongoCollection->setReadPreference(\MongoClient::RP_SECONDARY_PREFERRED, $tags); } else { $this->mongoCollection->setReadPreference(\MongoClient::RP_PRIMARY); } return $prevSlaveOkay; }