Code Duplication    Length = 21-22 lines in 2 locations

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

@@ 2286-2306 (lines=21) @@
2283
     * @param object $document
2284
     * @param array $visited
2285
     */
2286
    private function cascadeDetach($document, array &$visited)
2287
    {
2288
        $class = $this->dm->getClassMetadata(get_class($document));
2289
        foreach ($class->fieldMappings as $mapping) {
2290
            if ( ! $mapping['isCascadeDetach']) {
2291
                continue;
2292
            }
2293
            $relatedDocuments = $class->reflFields[$mapping['fieldName']]->getValue($document);
2294
            if (($relatedDocuments instanceof Collection || is_array($relatedDocuments))) {
2295
                if ($relatedDocuments instanceof PersistentCollection) {
2296
                    // Unwrap so that foreach() does not initialize
2297
                    $relatedDocuments = $relatedDocuments->unwrap();
2298
                }
2299
                foreach ($relatedDocuments as $relatedDocument) {
2300
                    $this->doDetach($relatedDocument, $visited);
2301
                }
2302
            } elseif ($relatedDocuments !== null) {
2303
                $this->doDetach($relatedDocuments, $visited);
2304
            }
2305
        }
2306
    }
2307
    /**
2308
     * Cascades a merge operation to associated documents.
2309
     *
@@ 2406-2427 (lines=22) @@
2403
     * @param object $document
2404
     * @param array $visited
2405
     */
2406
    private function cascadeRemove($document, array &$visited)
2407
    {
2408
        $class = $this->dm->getClassMetadata(get_class($document));
2409
        foreach ($class->fieldMappings as $mapping) {
2410
            if ( ! $mapping['isCascadeRemove']) {
2411
                continue;
2412
            }
2413
            if ($document instanceof Proxy && ! $document->__isInitialized__) {
2414
                $document->__load();
2415
            }
2416
2417
            $relatedDocuments = $class->reflFields[$mapping['fieldName']]->getValue($document);
2418
            if (($relatedDocuments instanceof Collection || is_array($relatedDocuments))) {
2419
                // If its a PersistentCollection initialization is intended! No unwrap!
2420
                foreach ($relatedDocuments as $relatedDocument) {
2421
                    $this->doRemove($relatedDocument, $visited);
2422
                }
2423
            } elseif ($relatedDocuments !== null) {
2424
                $this->doRemove($relatedDocuments, $visited);
2425
            }
2426
        }
2427
    }
2428
2429
    /**
2430
     * Acquire a lock on the given document.