Code Duplication    Length = 12-13 lines in 4 locations

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

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