@@ 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 |