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