Code Duplication    Length = 12-13 lines in 4 locations

src/Webtrees/Module/Sosa/Model/SosaProvider.php 4 locations

@@ 264-276 (lines=13) @@
261
     * @param int $ged_id ID of the gedcom file
262
     * @return array Associative array of Sosa ancestors, with their generation, comma separated
263
     */
264
    public function getAllSosaWithGenerations(){
265
        if(!$this->is_setup) return array();
266
        return Database::prepare(
267
            'SELECT majs_i_id AS indi,' .
268
            ' GROUP_CONCAT(DISTINCT majs_gen ORDER BY majs_gen ASC SEPARATOR ",") AS generations' .
269
            ' FROM `##maj_sosa`' .
270
            ' WHERE majs_gedcom_id=:tree_id AND majs_user_id=:user_id' .
271
            ' GROUP BY majs_i_id'
272
        )->execute(array(
273
            'tree_id' => $this->tree->getTreeId(),
274
            'user_id' => $this->user->getUserId()
275
        ))->fetchAssoc();
276
    }
277
    
278
    /**
279
     * Get an associative array of Sosa individuals in generation G. Keys are Sosa numbers, values individuals.
@@ 446-457 (lines=12) @@
443
     * @param number $gen Generation
444
     * @return number Number of Sosas in generation
445
     */
446
    public function getSosaCountAtGeneration($gen){
447
        if(!$this->is_setup) return 0;
448
        return Database::prepare(
449
            'SELECT SQL_CACHE COUNT(majs_sosa) FROM `##maj_sosa`' .
450
            ' WHERE majs_gedcom_id=:tree_id AND majs_user_id=:user_id'.
451
            ' AND majs_gen= :gen')
452
        ->execute(array(
453
                'tree_id' => $this->tree->getTreeId(), 
454
                'user_id' => $this->user->getUserId(),
455
                'gen' => $gen            
456
        ))->fetchOne() ?: 0;
457
    }
458
    
459
    /**
460
     * Get the total number of Sosa up to a specific generation.
@@ 465-476 (lines=12) @@
462
     * @param number $gen Generation
463
     * @return number Total number of Sosas up to generation
464
     */
465
    public function getSosaCountUpToGeneration($gen){
466
        if(!$this->is_setup) return 0;
467
        return Database::prepare(
468
            'SELECT SQL_CACHE COUNT(majs_sosa) FROM `##maj_sosa`' .
469
            ' WHERE majs_gedcom_id=:tree_id AND majs_user_id=:user_id'.
470
            ' AND majs_gen <= :gen')
471
        ->execute(array(
472
                'tree_id' => $this->tree->getTreeId(), 
473
                'user_id' => $this->user->getUserId(),
474
                'gen' => $gen 
475
        ))->fetchOne() ?: 0;
476
    }
477
    
478
    /**
479
     * Get the total number of distinct Sosa individual for all generations.
@@ 500-511 (lines=12) @@
497
     * @param number $gen Generation
498
     * @return number Number of distinct Sosa individuals up to generation
499
     */
500
    public function getDifferentSosaCountUpToGeneration($gen){
501
        if(!$this->is_setup) return 0;
502
        return Database::prepare(
503
            'SELECT SQL_CACHE COUNT(DISTINCT majs_i_id) FROM `##maj_sosa`' .
504
            ' WHERE majs_gedcom_id=:tree_id AND majs_user_id=:user_id'.
505
            ' AND majs_gen <= :gen')
506
        ->execute(array(
507
                'tree_id' => $this->tree->getTreeId(), 
508
                'user_id' => $this->user->getUserId(),
509
                'gen' => $gen 
510
        ))->fetchOne() ?: 0;
511
    }
512
    
513
    /**
514
     * Get an array of birth statistics for a specific generation