Code Duplication    Length = 21-22 lines in 2 locations

lib/Doctrine/ODM/MongoDB/UnitOfWork.php 2 locations

@@ 2029-2049 (lines=21) @@
2026
     * @param object $document
2027
     * @param array $visited
2028
     */
2029
    private function cascadeDetach($document, array &$visited)
2030
    {
2031
        $class = $this->dm->getClassMetadata(get_class($document));
2032
        foreach ($class->fieldMappings as $mapping) {
2033
            if ( ! $mapping['isCascadeDetach']) {
2034
                continue;
2035
            }
2036
            $relatedDocuments = $class->reflFields[$mapping['fieldName']]->getValue($document);
2037
            if (($relatedDocuments instanceof Collection || is_array($relatedDocuments))) {
2038
                if ($relatedDocuments instanceof PersistentCollectionInterface) {
2039
                    // Unwrap so that foreach() does not initialize
2040
                    $relatedDocuments = $relatedDocuments->unwrap();
2041
                }
2042
                foreach ($relatedDocuments as $relatedDocument) {
2043
                    $this->doDetach($relatedDocument, $visited);
2044
                }
2045
            } elseif ($relatedDocuments !== null) {
2046
                $this->doDetach($relatedDocuments, $visited);
2047
            }
2048
        }
2049
    }
2050
    /**
2051
     * Cascades a merge operation to associated documents.
2052
     *
@@ 2144-2165 (lines=22) @@
2141
     * @param object $document
2142
     * @param array $visited
2143
     */
2144
    private function cascadeRemove($document, array &$visited)
2145
    {
2146
        $class = $this->dm->getClassMetadata(get_class($document));
2147
        foreach ($class->fieldMappings as $mapping) {
2148
            if ( ! $mapping['isCascadeRemove']) {
2149
                continue;
2150
            }
2151
            if ($document instanceof Proxy && ! $document->__isInitialized__) {
2152
                $document->__load();
2153
            }
2154
2155
            $relatedDocuments = $class->reflFields[$mapping['fieldName']]->getValue($document);
2156
            if ($relatedDocuments instanceof Collection || is_array($relatedDocuments)) {
2157
                // If its a PersistentCollection initialization is intended! No unwrap!
2158
                foreach ($relatedDocuments as $relatedDocument) {
2159
                    $this->doRemove($relatedDocument, $visited);
2160
                }
2161
            } elseif ($relatedDocuments !== null) {
2162
                $this->doRemove($relatedDocuments, $visited);
2163
            }
2164
        }
2165
    }
2166
2167
    /**
2168
     * Acquire a lock on the given document.