Shanty_Mongo_Document::addOperation PHP Method

addOperation() public method

Add an operation
public addOperation ( string $operation, $property = null, $value = null )
$operation string
    public function addOperation($operation, $property = null, $value = null)
    {
        // Make sure the operation is valid
        if (!Shanty_Mongo::isValidOperation($operation)) {
            require_once 'Shanty/Mongo/Exception.php';
            throw new Shanty_Mongo_Exception("'{$operation}' is not valid operation");
        }
        // Prime the specific operation
        if (!array_key_exists($operation, $this->_operations)) {
            $this->_operations[$operation] = array();
        }
        // Save the operation
        if (is_null($property)) {
            $path = $this->getPathToDocument();
        } else {
            $path = $this->getPathToProperty($property);
        }
        // Mix operation with existing operations if needed
        switch ($operation) {
            case '$pushAll':
            case '$pullAll':
                if (!array_key_exists($path, $this->_operations[$operation])) {
                    break;
                }
                $value = array_merge($this->_operations[$operation][$path], $value);
                break;
        }
        $this->_operations[$operation][$path] = $value;
    }