Wilkins has uploaded a new change for review.
https://gerrit.wikimedia.org/r/245906
Change subject: PSR2 Syntax and one class per file
......................................................................
PSR2 Syntax and one class per file
Change-Id: I9aa98b6d408866cf9c440fe1e0dfc95624d5af11
---
M AncestorsFamilyTree.php
M DescendantFamilyTree.php
M FamilyTree.php
M FamilyTreeFactory.php
M FamilyTreeTag.php
A Gedcom5FilePrinter.php
M Gedcom5ResultPrinter.php
M GenealogicalFilePrinter.php
M PersonPageValues.php
M RelationFamilyTree.php
M SemanticGenealogy.alias.php
M SemanticGenealogy.body.php
M SemanticGenealogy.i18n.php
M SemanticGenealogy.php
M SpecialFamilyTree.php
15 files changed, 691 insertions(+), 644 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/SemanticGenealogy
refs/changes/06/245906/1
diff --git a/AncestorsFamilyTree.php b/AncestorsFamilyTree.php
index a527e20..25ff254 100644
--- a/AncestorsFamilyTree.php
+++ b/AncestorsFamilyTree.php
@@ -4,7 +4,7 @@
* AncestorsFamilyTree object
*
* Handle a FamilyTree to display the ancestors of the person
- *
+ *
* @file AncestorsFamilyTree.php
* @ingroup SemanticGenealogy
*
@@ -23,10 +23,10 @@
public function getAncestors()
{
$tree = array();
- $tree[0][1] = new PersonPageValues( $this->person );
+ $tree[0][1] = new PersonPageValues($this->person);
- for($i = 0; $i < $this->numOfGenerations && $tree[$i] !== null; $i++ )
{
- $tree = $this->addGenInTree( $i + 1, $tree );
+ for ($i = 0; $i < $this->numOfGenerations && $tree[$i] !== null; $i++)
{
+ $tree = $this->addGenInTree($i + 1, $tree);
}
return $tree;
}
@@ -43,19 +43,20 @@
$output = $this->getOutput();
$output->addHTML('<table style="text-align:center;">');
$col = 1;
- for( $i = $this->numOfGenerations - 1; $i >= 0; $i-- ) {
- if( isset( $tree[$i] ) ) {
+ for ($i = $this->numOfGenerations - 1; $i >= 0; $i--) {
+ if (isset( $tree[$i] )) {
$output->addHTML('<tr>');
foreach ($tree[$i] as $sosa => $person) {
$output->addHTML('<td colspan="' . $col . '">');
- if($person !== null) {
- $output->addHTML($sosa . '<br/>' );
- $output->addWikiText(
$person->getDescriptionWikiText( true ) );
- if($sosa != 1) {
- if($sosa % 2 == 0)
- $output->addHTML( '<br/>\\' );
- else
- $output->addHTML( '<br/>/' );
+ if ($person !== null) {
+ $output->addHTML($sosa . '<br/>');
+
$output->addWikiText($person->getDescriptionWikiText(true));
+ if ($sosa != 1) {
+ if ($sosa % 2 == 0) {
+ $output->addHTML('<br/>\\');
+ } else {
+ $output->addHTML('<br/>/');
+ }
}
}
$output->addHTML('</td>');
diff --git a/DescendantFamilyTree.php b/DescendantFamilyTree.php
index ab60323..36c21e4 100644
--- a/DescendantFamilyTree.php
+++ b/DescendantFamilyTree.php
@@ -4,7 +4,7 @@
* DescandantFamilyTree object
*
* Handle a FamilyTree to display the descendants of a person
- *
+ *
* @file DescendantFamilyTree.php
* @ingroup SemanticGenealogy
*
@@ -20,15 +20,17 @@
*
* @return void
*/
- public function outputDescendantLine( $person, $pellissier, $end ) {
+ public function outputDescendantLine($person, $pellissier, $end)
+ {
$output = $this->getOutput();
$children = $person->getChildren();
$i = 1;
- foreach($children as $child) {
+ foreach ($children as $child) {
$pel = $pellissier . $i . '.';
- $output->addWikiText( $pel . ' ' . $child->getDescriptionWikiText(
false ) );
- if( $end > 0 )
- $this->outputDescendantLine( $child, $pel, $end - 1);
+ $output->addWikiText($pel . ' ' .
$child->getDescriptionWikiText(false));
+ if ($end > 0) {
+ $this->outputDescendantLine($child, $pel, $end - 1);
+ }
$i++;
}
}
@@ -41,8 +43,8 @@
public function render()
{
$output = $this->getOutput();
- $main = new PersonPageValues( $this->person );
- $output->addWikiText( $main->getDescriptionWikiText( false ) );
- $this->outputDescendantLine( $main, '', $this->numOfGenerations );
+ $main = new PersonPageValues($this->person);
+ $output->addWikiText($main->getDescriptionWikiText(false));
+ $this->outputDescendantLine($main, '', $this->numOfGenerations);
}
}
diff --git a/FamilyTree.php b/FamilyTree.php
index ed4d10a..c1c0f3f 100644
--- a/FamilyTree.php
+++ b/FamilyTree.php
@@ -4,7 +4,7 @@
* FamilyTree object
*
* This class is abstract and cannot be instanciated. Please use the
FamilyTreeFactory to create a specific type of FamilyTree (ancestors,
descendant or relation)
- *
+ *
* @file FamilyTree.php
* @ingroup SemanticGenealogy
*
@@ -22,7 +22,7 @@
/**
* Setter for the person
- *
+ *
* @param string $personName the name of the page of the person
*
* @return void
@@ -35,7 +35,7 @@
/**
* Setter for the number of generations
- *
+ *
* @param integer $numOfGenerations the number of generations
*
* @return void
@@ -47,7 +47,7 @@
/**
* Setter for the ouput object
- *
+ *
* @param OutputPage $output the output object
*
* @return void
@@ -59,7 +59,7 @@
/**
* Getter for the ouput object
- *
+ *
* @return OutputPage the output object
*/
public function getOutput()
@@ -73,10 +73,10 @@
* @param int $gen The number of the generation (beginning at 0)
* @return int
*/
- public static function getNumOfPeopleInGen( $gen )
+ public static function getNumOfPeopleInGen($gen)
{
$result = 1;
- for($i = 0; $i < $gen; $i++ ) {
+ for ($i = 0; $i < $gen; $i++) {
$result *= 2;
}
return $result;
@@ -91,16 +91,16 @@
*
* @return array the resulting tree
*/
- public function addGenInTree( $gen, array $tree )
+ public function addGenInTree($gen, array $tree)
{
$empty = true;
- $son = self::getNumOfPeopleInGen( $gen - 1 );
+ $son = self::getNumOfPeopleInGen($gen - 1);
$end = $son * 4;
- for( $parent = $son * 2; $parent < $end; true ) {
- if( isset( $tree[$gen - 1][$son] ) ) {
+ for ($parent = $son * 2; $parent < $end; true) {
+ if (isset( $tree[$gen - 1][$son] )) {
$father = $tree[$gen - 1][$son]->father;
- if( $father instanceof SMWDIWikiPage ) {
- $tree[$gen][$parent] = new PersonPageValues( $father );
+ if ($father instanceof SMWDIWikiPage) {
+ $tree[$gen][$parent] = new PersonPageValues($father);
$empty = false;
} else {
$tree[$gen][$parent] = null;
@@ -108,8 +108,8 @@
$parent++;
$mother = $tree[$gen - 1][$son]->mother;
- if( $mother instanceof SMWDIWikiPage ) {
- $tree[$gen][$parent] = new PersonPageValues( $mother );
+ if ($mother instanceof SMWDIWikiPage) {
+ $tree[$gen][$parent] = new PersonPageValues($mother);
$empty = false;
} else {
$tree[$gen][$parent] = null;
@@ -121,7 +121,7 @@
$son++;
}
//Verif s'il n'y a personne dans la génération
- if($empty) {
+ if ($empty) {
$tree[$gen] = null;
}
return $tree;
@@ -132,7 +132,7 @@
* Render the tree
*
* This should not be used, because you should not use a abstract
FamilyTree
- *
+ *
* @return void
*/
public function render()
diff --git a/FamilyTreeFactory.php b/FamilyTreeFactory.php
index 0fcdbf1..563c485 100644
--- a/FamilyTreeFactory.php
+++ b/FamilyTreeFactory.php
@@ -4,21 +4,21 @@
class FamilyTreeFactory
{
- public static function create($type)
- {
- switch($type) {
- case 'ancestors':
- return new AncestorsFamilyTree();
- break;
- case 'descendant':
- return new DescendantFamilyTree();
- break;
- case 'link':
- return new RelationFamilyTree();
- break;
- default:
- $output->addWikiText( '<span class="error">' .
wfMsg( 'semanticgenealogy-specialfamilytree-error-unknowntype', $type ) .
'</span>' );
- }
+ public static function create($type)
+ {
+ switch($type) {
+ case 'ancestors':
+ return new AncestorsFamilyTree();
+ break;
+ case 'descendant':
+ return new DescendantFamilyTree();
+ break;
+ case 'link':
+ return new RelationFamilyTree();
+ break;
+ default:
+ $output->addWikiText('<span class="error">' .
wfMsg('semanticgenealogy-specialfamilytree-error-unknowntype', $type) .
'</span>');
+ }
- }
+ }
}
diff --git a/FamilyTreeTag.php b/FamilyTreeTag.php
index 2b4b66b..f89ae18 100644
--- a/FamilyTreeTag.php
+++ b/FamilyTreeTag.php
@@ -4,7 +4,7 @@
* FamilyTreeTag objecta
*
* Handle the <familytree> tag using a FamilyTree object
- *
+ *
* @file FamilyTreeTag.php
* @ingroup SemanticGenealogy
*
@@ -21,17 +21,17 @@
const ATTR_TYPE = "type";
// Hook our callback function into the parser
- public static function wfFamilytreeParserInit (Parser $parser)
+ public static function wfFamilytreeParserInit(Parser $parser)
{
- // When the parser sees the <familytree> tag, it executes
+ // When the parser sees the <familytree> tag, it executes
// the wfFamilytreeRender function (see below)
- $parser->setHook( 'familytree', array('FamilyTreeTag',
'wfFamilytreeRender') );
+ $parser->setHook('familytree', array('FamilyTreeTag',
'wfFamilytreeRender'));
return true;
}
/**
* Render the family tree
- *
+ *
* @param string $input the content of the <familytree /> tag (should be
empty)
* @param array $args the arguments
* @param Parser $parser None
@@ -39,7 +39,7 @@
*
* @return the HTML output of the tree
*/
- public static function wfFamilytreeRender ($input, array $args, Parser
$parser, PPFrame $frame)
+ public static function wfFamilytreeRender($input, array $args, Parser
$parser, PPFrame $frame)
{
// A new OutputPage writer
$output = new OutputPage;
diff --git a/Gedcom5FilePrinter.php b/Gedcom5FilePrinter.php
new file mode 100644
index 0000000..1e8aa4d
--- /dev/null
+++ b/Gedcom5FilePrinter.php
@@ -0,0 +1,215 @@
+<?php
+
+class Gedcom5FilePrinter extends GenealogicalFilePrinter
+{
+
+ protected $families = array();
+ protected $familiesByPerson = array();
+
+ /**
+ * set file in $this->file property
+ */
+ protected function setFile()
+ {
+ $this->setFamiliesList();
+
+ $this->addHead();
+ foreach ($this->people as $key => $person) {
+ $this->addPerson($key, $person);
+ }
+ foreach ($this->families as $key => $children) {
+ $this->addFamily($key, $children);
+ }
+ $this->addRow(0, 'TRLR');
+ }
+
+ protected function setFamiliesList()
+ {
+ $i = 1;
+ foreach ($this->people as $child) {
+ $id = $this->getFamilyIdForChild($child);
+ if ($id != '0S0') {
+ $this->addChildToFamily($id, $child);
+ list( $fatherId, $motherId ) = explode('S', $id);
+ $this->addFamilyToPerson($id, $fatherId);
+ $this->addFamilyToPerson($id, $motherId);
+ }
+ }
+ }
+
+ protected function getFamilyIdForChild(PersonPageValues $child)
+ {
+ $key = '';
+ if ($child->father instanceof SMWDIWikiPage && isset(
$this->people[$child->father->getTitle()->getArticleID()] )) {
+ $key .= $child->father->getTitle()->getArticleID() . 'S';
+ if ($child->mother instanceof SMWDIWikiPage && isset(
$this->people[$child->mother->getTitle()->getArticleID()] )) {
+ $key .= $child->mother->getTitle()->getArticleID();
+ } else {
+ $key .= '0';
+ }
+ } else {
+ $key .= '0S';
+ if ($child->mother instanceof SMWDIWikiPage && isset(
$this->people[$child->mother->getTitle()->getArticleID()] )) {
+ $key .= $child->mother->getTitle()->getArticleID();
+ } else {
+ $key .= '0';
+ }
+ }
+ return $key;
+ }
+
+ protected function addChildToFamily($familyKey, PersonPageValues $child)
+ {
+ $childId = $child->title->getArticleID();
+ if (isset( $this->families[$familyKey] )) {
+ if (!in_array($childId, $this->families[$familyKey])) {
+ $this->families[$familyKey][] = $childId;
+ }
+ } else {
+ $this->families[$familyKey] = array( $childId );
+ }
+ }
+
+ protected function addFamilyToPerson($familyId, $personId)
+ {
+ if ($personId != 0) {
+ if (isset( $this->familiesByPerson[$personId] )) {
+ if (!in_array($familyId, $this->familiesByPerson[$personId])) {
+ $this->familiesByPerson[$personId][] = $familyId;
+ }
+ } else {
+ $this->familiesByPerson[$personId] = array( $familyId );
+ }
+ }
+ }
+
+ /**
+ * add GEDCOM header
+ */
+ protected function addHead()
+ {
+ global $wgSitename, $wgRightsText;
+
+ $this->addRow(0, 'HEAD');
+ $this->addRow(1, 'SOUR', 'unregistered');
+ $this->addRow(2, 'NAME', 'Semantic Genealogy');
+ $this->addRow(2, 'VERS', SG_VERSION);
+ $this->addRow(2, 'DATA', $wgSitename);
+ if (isset( $wgRightsText ) && $wgRightsText) {
+ $this->addRow(3, 'COPR', $wgRightsText);
+ }
+ //$this->addRow( 1, 'FILE', ); //TODO name of the file
+ $this->addRow(1, 'DATE', strtoupper(date('d M Y')));
+ $this->addRow(2, 'TIME', date('H:i:s')); //TODO hh:mm:ss.fs
+ $this->addRow(1, 'GEDC');
+ $this->addRow(2, 'VERS', 5.5);
+ $this->addRow(2, 'FORM', 'LINEAGE-LINKED');
+ $this->addRow(1, 'CHAR', 'UTF8');
+ //$this->addRow( 1, 'LANG', ); //TODO ?
+ }
+
+ /**
+ * add the GEDCOM for a person
+ * @param $person PersonPageValues
+ */
+ protected function addPerson($id, PersonPageValues $person)
+ {
+ $this->addRow(0, '@I'. $id . '@', 'INDI');
+ $this->addRow(1, 'NAME', $this->getGedcomName($person));
+ $this->addStringValueAsRow(2, 'GIVN', $person->givenname);
+ $this->addStringValueAsRow(2, 'SURN', $person->surname);
+ $this->addStringValueAsRow(2, 'NICK', $person->nickname);
+ $this->addStringValueAsRow(2, 'NPFX', $person->prefix);
+ $this->addStringValueAsRow(2, 'NSFX', $person->suffix);
+ $this->addStringValueAsRow(1, 'SEX', $person->sex);
+ $familyId = $this->getFamilyIdForChild($person);
+ if ($familyId != '0S0') {
+ $this->addRow(1, 'FAMC', '@F'. $familyId . '@');
+ }
+ if (isset( $this->familiesByPerson[$id] )) {
+ foreach ($this->familiesByPerson[$id] as $familyId) {
+ $this->addRow(1, 'FAMS', '@F'. $familyId . '@');
+ }
+ }
+ $this->addEvent('BIRT', $person->birthdate, $person->birthplace);
+ $this->addEvent('DEAT', $person->deathdate, $person->deathplace);
+ }
+
+ protected function addFamily($id, $children)
+ {
+ list( $fatherId, $motherId ) = explode('S', $id);
+ $this->addRow(0, '@F'. $id . '@', 'FAM');
+ if ($fatherId != 0) {
+ $this->addRow(1, 'HUSB', '@I' . $fatherId . '@');
+ }
+ if ($motherId != 0) {
+ $this->addRow(1, 'WIFE', '@I' . $motherId . '@');
+ }
+ foreach ($children as $childId) {
+ $this->addRow(1, 'CHIL', '@I' . $childId . '@');
+ }
+ }
+
+ protected function getGedcomName(PersonPageValues $person)
+ {
+ $name = '';
+ if ($person->givenname instanceof SMWDIBlob &&
$person->givenname->getString() != '') {
+ $name .= $person->givenname->getString();
+ }
+ if ($person->surname instanceof SMWDIBlob &&
$person->surname->getString() != '') {
+ $name .= '/' . $person->surname->getString() . '/';
+ }
+ if ($person->suffix instanceof SMWDIBlob &&
$person->suffix->getString() != '') {
+ $name .= $person->suffixname->getString();
+ }
+ return $name;
+ }
+
+ protected function addRow($level, $key, $value = null)
+ {
+ $this->file .= $level . ' ' . $key;
+ if ($value !== null) {
+ $this->file .= ' ' . str_replace('\n', ' ', $value);
+ }
+ $this->file .= "\n";
+ }
+
+ /**
+ * TODO add places metadata support.
+ */
+ protected function addEvent($type, $date, $place)
+ {
+ if ($date === null && $place === null) {
+ return;
+ }
+ $this->addRow(1, $type);
+ $this->addTimeValueAsRow(2, 'DATE', $date);
+ if ($place instanceof SMWDIWikiPage) {
+ $this->addWikiPageValueAsRow(2, 'PLAC', $place);
+ } else {
+ $this->addStringValueAsRow(2, 'PLAC', $place);
+ }
+ }
+
+ protected function addStringValueAsRow($level, $key, $value)
+ {
+ if ($value instanceof SMWDIBlob) {
+ $this->addRow($level, $key, $value->getString());
+ }
+ }
+
+ protected function addTimeValueAsRow($level, $key, $value)
+ {
+ if ($value instanceof SMWDITime) {
+ $lang = new Language();
+ $this->addRow($level, $key, strtoupper($lang->sprintfDate('d M Y',
$value->getMwTimestamp(TS_MW))));
+ }
+ }
+
+ protected function addWikiPageValueAsRow($level, $key, $value)
+ {
+ if ($value instanceof SMWDIWikiPage) {
+ $this->addRow($level, $key, $value->getTitle()->getText());
+ }
+ }
+}
diff --git a/Gedcom5ResultPrinter.php b/Gedcom5ResultPrinter.php
index e8445c9..5e3cceb 100644
--- a/Gedcom5ResultPrinter.php
+++ b/Gedcom5ResultPrinter.php
@@ -9,65 +9,72 @@
* @licence GNU GPL v2+
* @author Thomas Pellissier Tanon < [email protected] >
*/
-class Gedcom5ResultPrinter extends SMWResultPrinter {
- public $ids = array();
+class Gedcom5ResultPrinter extends SMWResultPrinter
+{
+ public $ids = array();
- public function getMimeType( $res ) {
- return 'application/x-gedcom';
- }
+ public function getMimeType($res)
+ {
+ return 'application/x-gedcom';
+ }
- public function getFileName( $res ) {
- if( $this->getSearchLabel( SMW_OUTPUT_WIKI ) != '' ) {
- return str_replace( ' ', '_', $this->getSearchLabel(
SMW_OUTPUT_WIKI ) ) . '.ged';
- } else {
- return 'GEDCOM.ged';
- }
- }
+ public function getFileName($res)
+ {
+ if ($this->getSearchLabel(SMW_OUTPUT_WIKI) != '') {
+ return str_replace(' ', '_',
$this->getSearchLabel(SMW_OUTPUT_WIKI)) . '.ged';
+ } else {
+ return 'GEDCOM.ged';
+ }
+ }
- public function getQueryMode( $context ) {
- return ( $context == SMWQueryProcessor::SPECIAL_PAGE ) ?
SMWQuery::MODE_INSTANCES : SMWQuery::MODE_NONE;
- }
+ public function getQueryMode($context)
+ {
+ return ( $context == SMWQueryProcessor::SPECIAL_PAGE ) ?
SMWQuery::MODE_INSTANCES : SMWQuery::MODE_NONE;
+ }
- public function getName() {
- return wfMsg( 'semanticgenealogy-gedcomexport-desc' );
- }
+ public function getName()
+ {
+ return wfMsg('semanticgenealogy-gedcomexport-desc');
+ }
- protected function getResultText( SMWQueryResult $res, $outputmode ) {
- $result = '';
+ protected function getResultText(SMWQueryResult $res, $outputmode)
+ {
+ $result = '';
- if( $outputmode == SMW_OUTPUT_FILE ) {
- $people = array();
- $row = $res->getNext();
- while( $row !== false ) {
- $people[] = new PersonPageValues(
$row[0]->getResultSubject() );
- $row = $res->getNext();
- }
- $printer = new Gedcom5FilePrinter();
- $printer->addPeople( $people );
- $result = $printer->getFile();
- } else { // just make link
- if( $this->getSearchLabel( $outputmode ) ) {
- $label = $this->getSearchLabel( $outputmode );
- } else {
- $label = wfMsgForContent(
'semanticgenealogy-gedcomexport-link' );
- }
- $link = $res->getQueryLink( $label );
- $link->setParameter( 'gedcom5', 'format' );
- if( $this->getSearchLabel( SMW_OUTPUT_WIKI ) != '' ) {
- $link->setParameter( $this->getSearchLabel(
SMW_OUTPUT_WIKI ), 'searchlabel' );
- }
- if( array_key_exists( 'limit', $this->m_params ) ) {
- $link->setParameter( $this->m_params['limit'],
'limit' );
- } else { // use a reasonable default limit
- $link->setParameter( 20, 'limit' );
- }
- $result .= $link->getText( $outputmode, $this->mLinker
);
- $this->isHTML = ( $outputmode == SMW_OUTPUT_HTML ); //
yes, our code can be viewed as HTML if requested, no more parsing needed
- }
- return $result;
- }
+ if ($outputmode == SMW_OUTPUT_FILE) {
+ $people = array();
+ $row = $res->getNext();
+ while ($row !== false) {
+ $people[] = new PersonPageValues($row[0]->getResultSubject());
+ $row = $res->getNext();
+ }
+ $printer = new Gedcom5FilePrinter();
+ $printer->addPeople($people);
+ $result = $printer->getFile();
+ } else { // just make link
+ if ($this->getSearchLabel($outputmode)) {
+ $label = $this->getSearchLabel($outputmode);
+ } else {
+ $label =
wfMsgForContent('semanticgenealogy-gedcomexport-link');
+ }
+ $link = $res->getQueryLink($label);
+ $link->setParameter('gedcom5', 'format');
+ if ($this->getSearchLabel(SMW_OUTPUT_WIKI) != '') {
+ $link->setParameter($this->getSearchLabel(SMW_OUTPUT_WIKI),
'searchlabel');
+ }
+ if (array_key_exists('limit', $this->m_params)) {
+ $link->setParameter($this->m_params['limit'], 'limit');
+ } else { // use a reasonable default limit
+ $link->setParameter(20, 'limit');
+ }
+ $result .= $link->getText($outputmode, $this->mLinker);
+ $this->isHTML = ( $outputmode == SMW_OUTPUT_HTML ); // yes, our
code can be viewed as HTML if requested, no more parsing needed
+ }
+ return $result;
+ }
- public function getParameters() {
- return array_merge( parent::getParameters(),
$this->exportFormatParameters() );
- }
+ public function getParameters()
+ {
+ return array_merge(parent::getParameters(),
$this->exportFormatParameters());
+ }
}
diff --git a/GenealogicalFilePrinter.php b/GenealogicalFilePrinter.php
index bcbe810..ab4569b 100644
--- a/GenealogicalFilePrinter.php
+++ b/GenealogicalFilePrinter.php
@@ -9,236 +9,39 @@
* @licence GNU GPL v2+
* @author Thomas Pellissier Tanon < [email protected] >
*/
-abstract class GenealogicalFilePrinter {
- protected $file = '';
- protected $people = array();
+abstract class GenealogicalFilePrinter
+{
+ protected $file = '';
+ protected $people = array();
- /**
- * Add people to the GEDCOM file
- * @param $people array|PersonPageValues
- */
- public function addPeople( $people ) {
- foreach( $people as $person ) {
- $this->people[$person->title->getArticleID()] = $person;
- }
- if( !empty( $people ) && $this->file !== '' ) {
- $this->file = '';
- }
- }
+ /**
+ * Add people to the GEDCOM file
+ * @param $people array|PersonPageValues
+ */
+ public function addPeople($people)
+ {
+ foreach ($people as $person) {
+ $this->people[$person->title->getArticleID()] = $person;
+ }
+ if (!empty( $people ) && $this->file !== '') {
+ $this->file = '';
+ }
+ }
- /**
- * Return the file
- * @return string
- */
- public function getFile() {
- if( $this->file === '' ) {
- $this->setFile();
- }
- return $this->file;
- }
+ /**
+ * Return the file
+ * @return string
+ */
+ public function getFile()
+ {
+ if ($this->file === '') {
+ $this->setFile();
+ }
+ return $this->file;
+ }
- /**
- * set file in $this->file property
- */
- protected abstract function setFile();
-}
-
-
-class Gedcom5FilePrinter extends GenealogicalFilePrinter {
-
- protected $families = array();
- protected $familiesByPerson = array();
-
- /**
- * set file in $this->file property
- */
- protected function setFile() {
- $this->setFamiliesList();
-
- $this->addHead();
- foreach( $this->people as $key => $person ) {
- $this->addPerson( $key, $person );
- }
- foreach( $this->families as $key => $children ) {
- $this->addFamily( $key, $children );
- }
- $this->addRow( 0, 'TRLR' );
- }
-
- protected function setFamiliesList() {
- $i = 1;
- foreach( $this->people as $child ) {
- $id = $this->getFamilyIdForChild( $child );
- if( $id != '0S0' ) {
- $this->addChildToFamily( $id, $child );
- list( $fatherId, $motherId ) = explode('S', $id
);
- $this->addFamilyToPerson( $id, $fatherId );
- $this->addFamilyToPerson( $id, $motherId );
- }
- }
- }
-
- protected function getFamilyIdForChild( PersonPageValues $child ) {
- $key = '';
- if( $child->father instanceof SMWDIWikiPage && isset(
$this->people[$child->father->getTitle()->getArticleID()] ) ) {
- $key .= $child->father->getTitle()->getArticleID() .
'S';
- if( $child->mother instanceof SMWDIWikiPage && isset(
$this->people[$child->mother->getTitle()->getArticleID()] ) ) {
- $key .=
$child->mother->getTitle()->getArticleID();
- } else {
- $key .= '0';
- }
- } else {
- $key .= '0S';
- if( $child->mother instanceof SMWDIWikiPage && isset(
$this->people[$child->mother->getTitle()->getArticleID()] ) ) {
- $key .=
$child->mother->getTitle()->getArticleID();
- } else {
- $key .= '0';
- }
- }
- return $key;
- }
-
- protected function addChildToFamily( $familyKey, PersonPageValues
$child ) {
- $childId = $child->title->getArticleID();
- if( isset( $this->families[$familyKey] ) ) {
- if( !in_array( $childId, $this->families[$familyKey] )
) {
- $this->families[$familyKey][] = $childId;
- }
- } else {
- $this->families[$familyKey] = array( $childId );
- }
- }
-
- protected function addFamilyToPerson( $familyId, $personId ) {
- if( $personId != 0 ) {
- if( isset( $this->familiesByPerson[$personId] ) ) {
- if( !in_array( $familyId,
$this->familiesByPerson[$personId] ) ) {
- $this->familiesByPerson[$personId][] =
$familyId;
- }
- } else {
- $this->familiesByPerson[$personId] = array(
$familyId );
- }
- }
- }
-
- /**
- * add GEDCOM header
- */
- protected function addHead() {
- global $wgSitename, $wgRightsText;
-
- $this->addRow( 0, 'HEAD' );
- $this->addRow( 1, 'SOUR', 'unregistered' );
- $this->addRow( 2, 'NAME', 'Semantic Genealogy' );
- $this->addRow( 2, 'VERS', SG_VERSION );
- $this->addRow( 2, 'DATA', $wgSitename );
- if( isset( $wgRightsText ) && $wgRightsText ) {
- $this->addRow( 3, 'COPR', $wgRightsText );
- }
- //$this->addRow( 1, 'FILE', ); //TODO name of the file
- $this->addRow( 1, 'DATE', strtoupper( date( 'd M Y' ) ) );
- $this->addRow( 2, 'TIME', date( 'H:i:s' ) ); //TODO hh:mm:ss.fs
- $this->addRow( 1, 'GEDC' );
- $this->addRow( 2, 'VERS', 5.5 );
- $this->addRow( 2, 'FORM', 'LINEAGE-LINKED' );
- $this->addRow( 1, 'CHAR', 'UTF8' );
- //$this->addRow( 1, 'LANG', ); //TODO ?
- }
-
- /**
- * add the GEDCOM for a person
- * @param $person PersonPageValues
- */
- protected function addPerson( $id, PersonPageValues $person ) {
- $this->addRow( 0, '@I'. $id . '@', 'INDI' );
- $this->addRow( 1, 'NAME', $this->getGedcomName( $person ) );
- $this->addStringValueAsRow( 2, 'GIVN', $person->givenname );
- $this->addStringValueAsRow( 2, 'SURN', $person->surname );
- $this->addStringValueAsRow( 2, 'NICK', $person->nickname );
- $this->addStringValueAsRow( 2, 'NPFX', $person->prefix );
- $this->addStringValueAsRow( 2, 'NSFX', $person->suffix );
- $this->addStringValueAsRow( 1, 'SEX', $person->sex );
- $familyId = $this->getFamilyIdForChild( $person );
- if( $familyId != '0S0' ) {
- $this->addRow( 1, 'FAMC', '@F'. $familyId . '@' );
- }
- if( isset( $this->familiesByPerson[$id] ) ) {
- foreach( $this->familiesByPerson[$id] as $familyId ) {
- $this->addRow( 1, 'FAMS', '@F'. $familyId . '@'
);
- }
- }
- $this->addEvent( 'BIRT', $person->birthdate,
$person->birthplace );
- $this->addEvent( 'DEAT', $person->deathdate,
$person->deathplace );
- }
-
- protected function addFamily( $id, $children ) {
- list( $fatherId, $motherId ) = explode('S', $id );
- $this->addRow( 0, '@F'. $id . '@', 'FAM' );
- if( $fatherId != 0 ) {
- $this->addRow( 1, 'HUSB', '@I' . $fatherId . '@' );
- }
- if( $motherId != 0 ) {
- $this->addRow( 1, 'WIFE', '@I' . $motherId . '@' );
- }
- foreach( $children as $childId ) {
- $this->addRow( 1, 'CHIL', '@I' . $childId . '@' );
- }
- }
-
- protected function getGedcomName( PersonPageValues $person ) {
- $name = '';
- if( $person->givenname instanceof SMWDIBlob &&
$person->givenname->getString() != '' ) {
- $name .= $person->givenname->getString();
- }
- if( $person->surname instanceof SMWDIBlob &&
$person->surname->getString() != '' ) {
- $name .= '/' . $person->surname->getString() . '/';
- }
- if( $person->suffix instanceof SMWDIBlob &&
$person->suffix->getString() != '' ) {
- $name .= $person->suffixname->getString();
- }
- return $name;
- }
-
- protected function addRow( $level, $key, $value = null ) {
- $this->file .= $level . ' ' . $key;
- if( $value !== null ) {
- $this->file .= ' ' . str_replace( '\n', ' ', $value );
- }
- $this->file .= "\n";
- }
-
- /**
- * TODO add places metadata support.
- */
- protected function addEvent( $type, $date, $place ) {
- if( $date === null && $place === null ) {
- return;
- }
- $this->addRow( 1, $type );
- $this->addTimeValueAsRow( 2, 'DATE', $date );
- if( $place instanceof SMWDIWikiPage ) {
- $this->addWikiPageValueAsRow( 2, 'PLAC', $place );
- } else {
- $this->addStringValueAsRow( 2, 'PLAC', $place );
- }
- }
-
- protected function addStringValueAsRow( $level, $key, $value ) {
- if( $value instanceof SMWDIBlob ) {
- $this->addRow( $level, $key, $value->getString() );
- }
- }
-
- protected function addTimeValueAsRow( $level, $key, $value ) {
- if( $value instanceof SMWDITime ) {
- $lang = new Language();
- $this->addRow( $level, $key, strtoupper(
$lang->sprintfDate( 'd M Y', $value->getMwTimestamp( TS_MW ) ) ) );
- }
- }
-
- protected function addWikiPageValueAsRow( $level, $key, $value ) {
- if( $value instanceof SMWDIWikiPage ) {
- $this->addRow( $level, $key,
$value->getTitle()->getText() );
- }
- }
+ /**
+ * set file in $this->file property
+ */
+ abstract protected function setFile();
}
diff --git a/PersonPageValues.php b/PersonPageValues.php
index b37ad6b..d0a8e08 100644
--- a/PersonPageValues.php
+++ b/PersonPageValues.php
@@ -9,132 +9,139 @@
* @licence GNU GPL v2+
* @author Thomas Pellissier Tanon < [email protected] >
*/
-class PersonPageValues {
- protected $page;
- public $title;
- public $fullname;
- public $surname;
- public $givenname;
- public $nickname;
- public $prefix;
- public $suffix;
- public $sex;
- public $birthdate;
- public $birthplace;
- public $deathdate;
- public $deathplace;
- public $father;
- public $mother;
- protected $children;
+class PersonPageValues
+{
+ protected $page;
+ public $title;
+ public $fullname;
+ public $surname;
+ public $givenname;
+ public $nickname;
+ public $prefix;
+ public $suffix;
+ public $sex;
+ public $birthdate;
+ public $birthplace;
+ public $deathdate;
+ public $deathplace;
+ public $father;
+ public $mother;
+ protected $children;
- /**
- * Constructor for a single indi in the file.
- */
- public function __construct( SMWDIWikiPage $page ) {
- $values = array();
- $storage = smwfGetStore();
- $this->page = $page;
- $this->title = $page->getTitle();
- $properties = SemanticGenealogy::getProperties();
- foreach( $properties as $key => $prop ) {
- $values = $storage->getPropertyValues( $page, $prop );
- if ( count( $values ) != 0 &&
property_exists('PersonPageValues', $key) ) {
- $this->$key = $values[0];
- }
- }
+ /**
+ * Constructor for a single indi in the file.
+ */
+ public function __construct(SMWDIWikiPage $page)
+ {
+ $values = array();
+ $storage = smwfGetStore();
+ $this->page = $page;
+ $this->title = $page->getTitle();
+ $properties = SemanticGenealogy::getProperties();
+ foreach ($properties as $key => $prop) {
+ $values = $storage->getPropertyValues($page, $prop);
+ if (count($values) != 0 && property_exists('PersonPageValues',
$key)) {
+ $this->$key = $values[0];
+ }
+ }
- if( !( $this->fullname instanceof SMWDIBlob ) ) {
- if( $this->surname instanceof SMWDIBlob &&
$this->surname->getString() != '' ) {
- $fullname = '';
- if( $this->givenname instanceof SMWDIBlob ) {
- $fullname .=
$this->givenname->getString() . ' ';
- }
- $this->fullname = new SMWDIBlob( $fullname .
$this->surname->getString() );
- } else {
- $this->fullname = new SMWDIBlob(
$this->title->getText() );
- }
- }
- }
+ if (!( $this->fullname instanceof SMWDIBlob )) {
+ if ($this->surname instanceof SMWDIBlob &&
$this->surname->getString() != '') {
+ $fullname = '';
+ if ($this->givenname instanceof SMWDIBlob) {
+ $fullname .= $this->givenname->getString() . ' ';
+ }
+ $this->fullname = new SMWDIBlob($fullname .
$this->surname->getString());
+ } else {
+ $this->fullname = new SMWDIBlob($this->title->getText());
+ }
+ }
+ }
- /**
- * Return all the children as PersonPageValues
- *
- * @return array
- */
- public function getChildren() {
- if( $this->children !== null )
- return $this->children;
+ /**
+ * Return all the children as PersonPageValues
+ *
+ * @return array
+ */
+ public function getChildren()
+ {
+ if ($this->children !== null) {
+ return $this->children;
+ }
- $this->children = array();
- $storage = smwfGetStore();
- $properties = SemanticGenealogy::getProperties();
- if( $properties['father'] instanceof SMWDIProperty ) {
- $childrenPage = $storage->getPropertySubjects(
$properties['father'], $this->page );
- foreach($childrenPage as $page) {
- $this->children[] = new PersonPageValues( $page
);
- }
- }
- if( $properties['mother'] instanceof SMWDIProperty ) {
- $childrenPage = $storage->getPropertySubjects(
$properties['mother'], $this->page );
- foreach($childrenPage as $page) {
- $this->children[] = new PersonPageValues( $page
);
- }
- }
+ $this->children = array();
+ $storage = smwfGetStore();
+ $properties = SemanticGenealogy::getProperties();
+ if ($properties['father'] instanceof SMWDIProperty) {
+ $childrenPage =
$storage->getPropertySubjects($properties['father'], $this->page);
+ foreach ($childrenPage as $page) {
+ $this->children[] = new PersonPageValues($page);
+ }
+ }
+ if ($properties['mother'] instanceof SMWDIProperty) {
+ $childrenPage =
$storage->getPropertySubjects($properties['mother'], $this->page);
+ foreach ($childrenPage as $page) {
+ $this->children[] = new PersonPageValues($page);
+ }
+ }
- usort( $this->children, array( "PersonPageValues",
"comparePeopleByBirthDate" ) );
- return $this->children;
- }
+ usort($this->children, array( "PersonPageValues",
"comparePeopleByBirthDate" ));
+ return $this->children;
+ }
- public static function comparePeopleByBirthDate(PersonPageValues $a,
PersonPageValues $b) {
- if( $a->birthdate instanceof SMWDITime ) {
- $aKey = $a->birthdate->getSortKey();
- } else {
- $aKey = 3000;
- }
+ public static function comparePeopleByBirthDate(PersonPageValues $a,
PersonPageValues $b)
+ {
+ if ($a->birthdate instanceof SMWDITime) {
+ $aKey = $a->birthdate->getSortKey();
+ } else {
+ $aKey = 3000;
+ }
- if( $b->birthdate instanceof SMWDITime ) {
- $bKey = $b->birthdate->getSortKey();
- } else {
- $bKey = 3000;
- }
+ if ($b->birthdate instanceof SMWDITime) {
+ $bKey = $b->birthdate->getSortKey();
+ } else {
+ $bKey = 3000;
+ }
- if( $bKey < $aKey ) {
- return 1;
- } elseif( $bKey == $aKey ) {
- return 0;
- } else {
- return -1;
- }
- }
+ if ($bKey < $aKey) {
+ return 1;
+ } elseif ($bKey == $aKey) {
+ return 0;
+ } else {
+ return -1;
+ }
+ }
- public function getDescriptionWikiText( $withBr = false ) {
- $text = '[[' . $this->title->getFullText() . '|' .
$this->fullname->getString() . ']]';
- if( $this->birthdate || $this->deathdate ) {
- if( $withBr ) {
- $text .= '<br />';
- }
- $text .= ' (';
- if( $this->birthdate instanceof SMWDITime ) {
- $text .= self::getWikiTextDateFromSMWDITime(
$this->birthdate ) . ' ';
- }
- $text .= '-';
- if( $this->deathdate instanceof SMWDITime ) {
- $text .= ' ' .
self::getWikiTextDateFromSMWDITime( $this->deathdate );
- }
- $text .= ')';
- }
- return $text;
- }
+ public function getDescriptionWikiText($withBr = false)
+ {
+ $text = '[[' . $this->title->getFullText() . '|' .
$this->fullname->getString() . ']]';
+ if ($this->birthdate || $this->deathdate) {
+ if ($withBr) {
+ $text .= '<br />';
+ }
+ $text .= ' (';
+ if ($this->birthdate instanceof SMWDITime) {
+ $text .= self::getWikiTextDateFromSMWDITime($this->birthdate)
. ' ';
+ }
+ $text .= '-';
+ if ($this->deathdate instanceof SMWDITime) {
+ $text .= ' ' .
self::getWikiTextDateFromSMWDITime($this->deathdate);
+ }
+ $text .= ')';
+ }
+ return $text;
+ }
- protected static function getWikiTextDateFromSMWDITime( SMWDITime $di )
{
- $val = new SMWTimeValue( SMWDataItem::TYPE_TIME );
- $val->setDataItem( $di );
- return $val->getShortWikiText();
+ protected static function getWikiTextDateFromSMWDITime(SMWDITime $di)
+ {
+ $val = new SMWTimeValue(SMWDataItem::TYPE_TIME);
+ $val->setDataItem($di);
+ return $val->getShortWikiText();
}
public static function getPageFromName($pageName)
{
- $pageTitle = Title::newFromText($pageName);
+ $pageTitle = Title::newFromText($pageName);
return SMWDIWikiPage::newFromTitle($pageTitle);
}
}
diff --git a/RelationFamilyTree.php b/RelationFamilyTree.php
index 1bc9490..8df14ac 100644
--- a/RelationFamilyTree.php
+++ b/RelationFamilyTree.php
@@ -5,7 +5,7 @@
*
* Handle a FamilyTree to display the relationship between 2 persons.
* Find the closest common ancestor
- *
+ *
* @file RelationFamilyTree.php
* @ingroup SemanticGenealogy
*
@@ -25,7 +25,7 @@
* @param string $personName2 the page name of the person
*
* @see PersonPageValues::getPageFromName
- *
+ *
* @return void
*/
public function setPerson2($personName2)
@@ -37,57 +37,59 @@
/**
* Get the relation between the 2 persons (this->person and $this->person2)
- *
+ *
* @return array an array of 2 trees
*/
public function getRelation()
{
$tree1 = array();
$tree2 = array();
- $tree1[0][1] = new PersonPageValues( $this->person );
- $tree2[0][1] = new PersonPageValues( $this->person2 );
+ $tree1[0][1] = new PersonPageValues($this->person);
+ $tree2[0][1] = new PersonPageValues($this->person2);
- for($i = 0; $tree1[$i] !== null && $tree2[$i] !== null; $i++ ) {
- $tree1 = $this->addGenInTree( $i + 1, $tree1 );
- if($tree1[$i + 1] !== null) {
- $result = $this->compareGenWith($tree1[$i + 1], $tree2, $i );
- if($result !== null) {
+ for ($i = 0; $tree1[$i] !== null && $tree2[$i] !== null; $i++) {
+ $tree1 = $this->addGenInTree($i + 1, $tree1);
+ if ($tree1[$i + 1] !== null) {
+ $result = $this->compareGenWith($tree1[$i + 1], $tree2, $i);
+ if ($result !== null) {
list($sosa1, $sosa2) = $result;
break;
}
}
- $tree2 = $this->addGenInTree( $i + 1, $tree2 );
- if($tree2[$i + 1] !== null) {
- $result = $this->compareGenWith($tree2[$i + 1], $tree1, $i + 1
);
- if($result !== null) {
+ $tree2 = $this->addGenInTree($i + 1, $tree2);
+ if ($tree2[$i + 1] !== null) {
+ $result = $this->compareGenWith($tree2[$i + 1], $tree1, $i +
1);
+ if ($result !== null) {
list($sosa2, $sosa1) = $result;
break;
}
}
}
- if($result !== null)
- return array( $this->getListOfAncestors( $sosa1, $tree1 ),
$this->getListOfAncestors( $sosa2, $tree2 ) );
+ if ($result !== null) {
+ return array( $this->getListOfAncestors($sosa1, $tree1),
$this->getListOfAncestors($sosa2, $tree2) );
+ }
}
/**
* Compare a generation with a tree
- *
+ *
* @param array $gen
* @param array $tree the tree
* @param integer $max the max depth
*
* @return array an array of 2 SOSA
*/
- public function compareGenWith( array $gen, array $tree, $max ) {
- for( $i = $max; $i >= 0; $i-- ) {
- if( isset( $tree[$i] ) ) {
- foreach( $tree[$i] as $sosa2 => $person2 ) {
- if($person2 !== null) {
- foreach( $gen as $sosa1 => $person1 ) {
- if($person1 !== null) {
- if( $person1->title->equals( $person2->title )
) {
+ public function compareGenWith(array $gen, array $tree, $max)
+ {
+ for ($i = $max; $i >= 0; $i--) {
+ if (isset( $tree[$i] )) {
+ foreach ($tree[$i] as $sosa2 => $person2) {
+ if ($person2 !== null) {
+ foreach ($gen as $sosa1 => $person1) {
+ if ($person1 !== null) {
+ if ($person1->title->equals($person2->title)) {
return array( $sosa1, $sosa2 );
}
}
@@ -101,22 +103,23 @@
/**
* Get the list of ancestors for a sosa number
- *
+ *
* @param integer $sosa the SOSA number
* @param array $tree
*
* @return array the list of ancestors
*/
- public function getListOfAncestors( $sosa, array $tree ) {
+ public function getListOfAncestors($sosa, array $tree)
+ {
$num = 1;
$temp = 1;
- for($i = 0; $num < $sosa; $i++) {
+ for ($i = 0; $num < $sosa; $i++) {
$temp *= 2;
$num += $temp;
}
$list = array();
- for( $j = $i; $j >= 0; $j-- ) {
+ for ($j = $i; $j >= 0; $j--) {
$list[] = $tree[$j][$sosa];
$sosa /= 2;
}
@@ -132,33 +135,35 @@
{
$output = $this->getOutput();
$tree = $this->getRelation();
- if (!$tree)
- {
- $output->addWikiText( '<span class="error">' . wfMsg(
'semanticgenealogy-specialfamilytree-error-nolinkfound', $this->personName,
$this->personName2 ) . '</span>' );
+ if (!$tree) {
+ $output->addWikiText('<span class="error">' .
wfMsg('semanticgenealogy-specialfamilytree-error-nolinkfound',
$this->personName, $this->personName2) . '</span>');
return;
}
list($tree1, $tree2) = $tree;
- $output->addHTML( '<table style="text-align:center;">' );
- $output->addHTML( '<tr><td colspan="2">' );
+ $output->addHTML('<table style="text-align:center;">');
+ $output->addHTML('<tr><td colspan="2">');
$person = $tree1[0];
- if( $person->fullname instanceof SMWDIBlob )
- $output->addWikiText( $person->getDescriptionWikiText( false ) );
- $output->addHTML( '</td></tr>' );
+ if ($person->fullname instanceof SMWDIBlob) {
+ $output->addWikiText($person->getDescriptionWikiText(false));
+ }
+ $output->addHTML('</td></tr>');
- $length = max( count( $tree1 ), count( $tree2 ) );
- for($i = 1; $i < $length; $i++ ) {
+ $length = max(count($tree1), count($tree2));
+ for ($i = 1; $i < $length; $i++) {
$output->addHTML('<tr><td>');
- if( isset( $tree1[$i] ) ) {
+ if (isset( $tree1[$i] )) {
$person = $tree1[$i];
- if( $person->fullname instanceof SMWDIBlob )
- $output->addWikiText( '|<br/>' .
$person->getDescriptionWikiText( false ) );
+ if ($person->fullname instanceof SMWDIBlob) {
+ $output->addWikiText('|<br/>' .
$person->getDescriptionWikiText(false));
+ }
}
$output->addHTML('</td><td>');
- if( isset( $tree2[$i] ) ) {
+ if (isset( $tree2[$i] )) {
$person = $tree2[$i];
- if( $person->fullname instanceof SMWDIBlob )
- $output->addWikiText( '|<br/>' .
$person->getDescriptionWikiText( false ) );
+ if ($person->fullname instanceof SMWDIBlob) {
+ $output->addWikiText('|<br/>' .
$person->getDescriptionWikiText(false));
+ }
}
$output->addHTML('</td></tr>');
}
diff --git a/SemanticGenealogy.alias.php b/SemanticGenealogy.alias.php
index 183653a..6d1632a 100644
--- a/SemanticGenealogy.alias.php
+++ b/SemanticGenealogy.alias.php
@@ -13,10 +13,10 @@
/** English (English) */
$specialPageAliases['en'] = array(
- 'FamilyTree' => array( 'FamilyTree' ),
+ 'FamilyTree' => array( 'FamilyTree' ),
);
/** French (Français) */
$specialPageAliases['fr'] = array(
- 'FamilyTree' => array( 'ArbreGénéalogique'),
+ 'FamilyTree' => array( 'ArbreGénéalogique'),
);
diff --git a/SemanticGenealogy.body.php b/SemanticGenealogy.body.php
index 3546cb5..5d23d3e 100644
--- a/SemanticGenealogy.body.php
+++ b/SemanticGenealogy.body.php
@@ -9,30 +9,33 @@
* @licence GNU GPL v2+
* @author Thomas Pellissier Tanon < [email protected] >
*/
-class SemanticGenealogy {
+class SemanticGenealogy
+{
- /**
- * Get an array key => value of genealogical properties as SMWDIProperty
- * @throws MWException
- */
- public static function getProperties() {
- static $properties;
+ /**
+ * Get an array key => value of genealogical properties as SMWDIProperty
+ * @throws MWException
+ */
+ public static function getProperties()
+ {
+ static $properties;
- if( $properties !== null )
- return $properties;
+ if ($properties !== null) {
+ return $properties;
+ }
- global $wgGenealogicalProperties, $wgOut;
- $properties = array();
+ global $wgGenealogicalProperties, $wgOut;
+ $properties = array();
- if( !is_array( $wgGenealogicalProperties ) ) {
- throw new MWException( 'Configuration variable
$wgGenealogicalProperties must be an array !' );
- }
+ if (!is_array($wgGenealogicalProperties)) {
+ throw new MWException('Configuration variable
$wgGenealogicalProperties must be an array !');
+ }
- foreach( $wgGenealogicalProperties as $key => $value ) {
- if( $value ) {
- $properties[$key] =
SMWDIProperty::newFromUserLabel( $value );
- }
- }
- return $properties;
- }
+ foreach ($wgGenealogicalProperties as $key => $value) {
+ if ($value) {
+ $properties[$key] = SMWDIProperty::newFromUserLabel($value);
+ }
+ }
+ return $properties;
+ }
}
diff --git a/SemanticGenealogy.i18n.php b/SemanticGenealogy.i18n.php
index fc01394..16d23b4 100644
--- a/SemanticGenealogy.i18n.php
+++ b/SemanticGenealogy.i18n.php
@@ -11,25 +11,26 @@
* This shim maintains compatibility back to MediaWiki 1.17.
*/
$messages = array();
-if ( !function_exists( 'wfJsonI18nShimc57238e8287ad032' ) ) {
- function wfJsonI18nShimc57238e8287ad032( $cache, $code, &$cachedData ) {
- $codeSequence = array_merge( array( $code ),
$cachedData['fallbackSequence'] );
- foreach ( $codeSequence as $csCode ) {
- $fileName = dirname( __FILE__ ) . "/i18n/$csCode.json";
- if ( is_readable( $fileName ) ) {
- $data = FormatJson::decode( file_get_contents(
$fileName ), true );
- foreach ( array_keys( $data ) as $key ) {
- if ( $key === '' || $key[0] === '@' ) {
- unset( $data[$key] );
- }
- }
- $cachedData['messages'] = array_merge( $data,
$cachedData['messages'] );
- }
+if (!function_exists('wfJsonI18nShimc57238e8287ad032')) {
+ function wfJsonI18nShimc57238e8287ad032($cache, $code, &$cachedData)
+ {
+ $codeSequence = array_merge(array( $code ),
$cachedData['fallbackSequence']);
+ foreach ($codeSequence as $csCode) {
+ $fileName = dirname(__FILE__) . "/i18n/$csCode.json";
+ if (is_readable($fileName)) {
+ $data = FormatJson::decode(file_get_contents($fileName), true);
+ foreach (array_keys($data) as $key) {
+ if ($key === '' || $key[0] === '@') {
+ unset( $data[$key] );
+ }
+ }
+ $cachedData['messages'] = array_merge($data,
$cachedData['messages']);
+ }
- $cachedData['deps'][] = new FileDependency( $fileName );
- }
- return true;
- }
+ $cachedData['deps'][] = new FileDependency($fileName);
+ }
+ return true;
+ }
- $GLOBALS['wgHooks']['LocalisationCacheRecache'][] =
'wfJsonI18nShimc57238e8287ad032';
+ $GLOBALS['wgHooks']['LocalisationCacheRecache'][] =
'wfJsonI18nShimc57238e8287ad032';
}
diff --git a/SemanticGenealogy.php b/SemanticGenealogy.php
index 9ce5a0d..3789f1b 100644
--- a/SemanticGenealogy.php
+++ b/SemanticGenealogy.php
@@ -19,50 +19,50 @@
* @defgroup SemanticGenealogy Semantic Genealogy
*/
-if ( !defined( 'MEDIAWIKI' ) ) {
- die( 'Not an entry point.' );
+if (!defined('MEDIAWIKI')) {
+ die( 'Not an entry point.' );
}
-if ( version_compare( $wgVersion, '1.19', '<' ) ) {
- die( '<b>Error:</b> This version of Semantic Genealogy requires
MediaWiki 1.19 or above.' );
+if (version_compare($wgVersion, '1.19', '<')) {
+ die( '<b>Error:</b> This version of Semantic Genealogy requires MediaWiki
1.19 or above.' );
}
// Show a warning if Semantic MediaWiki is not loaded.
-if ( ! defined( 'SMW_VERSION' ) ) {
- die( '<b>Error:</b> You need to have <a
href="http://semantic-mediawiki.org/wiki/Semantic_MediaWiki">Semantic
MediaWiki</a> installed in order to use <a
href="http://www.mediawiki.org/wiki/Extension:Semantic Maps">Semantic
Maps</a>.<br />' );
+if (! defined('SMW_VERSION')) {
+ die( '<b>Error:</b> You need to have <a
href="http://semantic-mediawiki.org/wiki/Semantic_MediaWiki">Semantic
MediaWiki</a> installed in order to use <a
href="http://www.mediawiki.org/wiki/Extension:Semantic Maps">Semantic
Maps</a>.<br />' );
}
-if ( version_compare( SMW_VERSION, '1.7.0 alpha', '<' ) ) {
- die( '<b>Error:</b> This version of Semantic Genealogy requires
Semantic MediaWiki 1.7 or above.' );
+if (version_compare(SMW_VERSION, '1.7.0 alpha', '<')) {
+ die( '<b>Error:</b> This version of Semantic Genealogy requires Semantic
MediaWiki 1.7 or above.' );
}
-define( 'SG_VERSION', '0.2.0 alpha' );
+define('SG_VERSION', '0.2.0 alpha');
$wgExtensionCredits['semantic'][] = array(
- 'path' => __FILE__,
- 'name' => 'Semantic Genealogy',
- 'version' => SG_VERSION,
- 'author' => array(
- '[http://www.mediawiki.org/wiki/User:Tpt Tpt]'
- ),
- 'url' => 'https://www.mediawiki.org/wiki/Extension:Semantic_Genealogy',
- 'descriptionmsg' => 'semanticgenealogy-desc'
+ 'path' => __FILE__,
+ 'name' => 'Semantic Genealogy',
+ 'version' => SG_VERSION,
+ 'author' => array(
+ '[http://www.mediawiki.org/wiki/User:Tpt Tpt]'
+ ),
+ 'url' => 'https://www.mediawiki.org/wiki/Extension:Semantic_Genealogy',
+ 'descriptionmsg' => 'semanticgenealogy-desc'
);
$wgGenealogicalProperties = array(
- 'givenname' => 'Prénom',
- 'surname' => 'Nom',
- 'nickname' => '',
- 'sex' => 'Sexe',
- 'birthdate' => 'Date de naissance',
- 'birthplace' => 'Lieu de naissance',
- 'deathdate' => 'Date de décès',
- 'deathplace' => 'Lieu de décès',
- 'father' => 'Père',
- 'mother' => 'Mère'
+ 'givenname' => 'Prénom',
+ 'surname' => 'Nom',
+ 'nickname' => '',
+ 'sex' => 'Sexe',
+ 'birthdate' => 'Date de naissance',
+ 'birthplace' => 'Lieu de naissance',
+ 'deathdate' => 'Date de décès',
+ 'deathplace' => 'Lieu de décès',
+ 'father' => 'Père',
+ 'mother' => 'Mère'
);
-$dir = dirname( __FILE__ ) . '/';
+$dir = dirname(__FILE__) . '/';
$wgMessagesDirs['SemanticGenealogy'] = __DIR__ . '/i18n';
$wgExtensionMessagesFiles['SemanticGenealogy'] = $dir .
'SemanticGenealogy.i18n.php';
@@ -78,7 +78,7 @@
$wgAutoloadClasses['FamilyTreeFactory'] = $dir . 'FamilyTreeFactory.php';
$wgAutoloadClasses['GenealogicalFilePrinter'] = $dir .
'GenealogicalFilePrinter.php';
-$wgAutoloadClasses['Gedcom5FilePrinter'] = $dir .
'GenealogicalFilePrinter.php';
+$wgAutoloadClasses['Gedcom5FilePrinter'] = $dir . 'Gedcom5FilePrinter.php';
$wgAutoloadClasses['Gedcom5ResultPrinter'] = $dir . 'Gedcom5ResultPrinter.php';
$smwgResultFormats['gedcom'] = 'Gedcom5ResultPrinter';
$smwgResultFormats['gedcom5'] = 'Gedcom5ResultPrinter';
@@ -87,16 +87,16 @@
$wgSpecialPages['FamilyTree'] = 'SpecialFamilyTree';
$moduleTemplate = array(
- 'localBasePath' => $dir,
- 'remoteBasePath' => ( $wgExtensionAssetsPath === false ? $wgScriptPath
. '/extensions' : $wgExtensionAssetsPath ) . '/SemanticGenealogy',
- 'group' => 'ext.smg'
+ 'localBasePath' => $dir,
+ 'remoteBasePath' => ( $wgExtensionAssetsPath === false ? $wgScriptPath .
'/extensions' : $wgExtensionAssetsPath ) . '/SemanticGenealogy',
+ 'group' => 'ext.smg'
);
$wgResourceModules['ext.smg.specialfamilytree'] = $moduleTemplate + array(
- 'scripts' => 'specialFamilyTree.js',
- 'dependencies' => array( 'jquery.ui.autocomplete' ),
- 'messages' => array(
- )
+ 'scripts' => 'specialFamilyTree.js',
+ 'dependencies' => array( 'jquery.ui.autocomplete' ),
+ 'messages' => array(
+ )
);
diff --git a/SpecialFamilyTree.php b/SpecialFamilyTree.php
index 90b19b4..852f414 100644
--- a/SpecialFamilyTree.php
+++ b/SpecialFamilyTree.php
@@ -2,7 +2,7 @@
/**
* Special page that show a family tree
- *
+ *
* @file SpecialFamilyTree.php
* @ingroup SemanticGenealogy
*
@@ -19,9 +19,9 @@
*
* @return void
*/
- public function __construct( $name = 'FamilyTree' )
+ public function __construct($name = 'FamilyTree')
{
- parent::__construct( $name, 'other' );
+ parent::__construct($name, 'other');
$this->mIncludable = true;
}
@@ -32,88 +32,88 @@
*
* @return boolean the status of the rendered page
*/
- public function execute( $par )
+ public function execute($par)
{
global $wgRequest, $wgScript;
$this->setHeaders();
$output = $this->getOutput();
- if( $par != '') {
- $parts = explode('/', urldecode( $par ));
+ if ($par != '') {
+ $parts = explode('/', urldecode($par));
} else {
$parts = array();
}
- $type = isset( $parts[0] ) ? $parts[0] : $wgRequest->getText( 'type' );
- if($type == '') {
+ $type = isset( $parts[0] ) ? $parts[0] : $wgRequest->getText('type');
+ if ($type == '') {
$type = 'ancestors';
}
- $pageName = isset( $parts[1] ) ? $parts[1] : $wgRequest->getText(
'page' );
+ $pageName = isset( $parts[1] ) ? $parts[1] :
$wgRequest->getText('page');
- if( $type == 'link' ) {
- $pageName2 = isset( $parts[2] ) ? $parts[2] : $wgRequest->getText(
'page2' );
+ if ($type == 'link') {
+ $pageName2 = isset( $parts[2] ) ? $parts[2] :
$wgRequest->getText('page2');
$numOfGenerations = 0;
} else {
- $numOfGenerations = isset( $parts[2] ) ? intval( $parts[2] ) :
$wgRequest->getInt( 'gen' );
- if($numOfGenerations <= 0) {
+ $numOfGenerations = isset( $parts[2] ) ? intval($parts[2]) :
$wgRequest->getInt('gen');
+ if ($numOfGenerations <= 0) {
$numOfGenerations = 5;
}
$pageName2 = '';
}
- if( !$this->mIncluding ) {
- $output->addModules( 'ext.smg.specialfamilytree' );
- $typeSelect = new XmlSelect( 'type', 'type', $type );
- $typeSelect->addOption( wfMsg(
'semanticgenealogy-specialfamilytree-type-ancestors' ), 'ancestors' );
- $typeSelect->addOption( wfMsg(
'semanticgenealogy-specialfamilytree-type-descendant' ), 'descendant' );
- $typeSelect->addOption( wfMsg(
'semanticgenealogy-specialfamilytree-type-link' ), 'link' );
+ if (!$this->mIncluding) {
+ $output->addModules('ext.smg.specialfamilytree');
+ $typeSelect = new XmlSelect('type', 'type', $type);
+
$typeSelect->addOption(wfMsg('semanticgenealogy-specialfamilytree-type-ancestors'),
'ancestors');
+
$typeSelect->addOption(wfMsg('semanticgenealogy-specialfamilytree-type-descendant'),
'descendant');
+
$typeSelect->addOption(wfMsg('semanticgenealogy-specialfamilytree-type-link'),
'link');
$output->addHTML(
- Xml::openElement( 'form', array( 'action' => $wgScript ) ) .
- Html::hidden( 'title',
$this->getPageTitle()->getPrefixedText() ) .
- Xml::openElement( 'fieldset' ) .
- Xml::openElement( 'table', array( 'id' =>
'smg-familyTree-form' ) ) .
- Xml::openElement( 'tr', array('id' =>
'smg-form-entry-page' ) ) .
- Xml::openElement( 'th', array('class' =>
'mw-label') ) .
- Xml::label( wfMsg(
'semanticgenealogy-specialfamilytree-label-page' ), 'page' ) .
- Xml::closeElement( 'th' ) .
- Xml::openElement( 'td', array('class' =>
'mw-input') ) .
- Xml::input( 'page', 30, $pageName, array(
'class' => 'smg-input-page' ) ) .
- Xml::closeElement( 'td' ) .
- Xml::closeElement( 'tr' ) .
- Xml::openElement( 'tr', array('id' =>
'smg-form-entry-type' ) ) .
- Xml::openElement( 'th', array('class' =>
'mw-label') ) .
- Xml::label( wfMsg(
'semanticgenealogy-specialfamilytree-label-type' ), 'type' ) .
- Xml::closeElement( 'th' ) .
- Xml::openElement( 'td', array('class' =>
'mw-input') ) .
- $typeSelect->getHtml() .
- Xml::closeElement( 'td' ) .
- Xml::closeElement( 'tr' ) .
- Xml::openElement( 'tr', array('id' =>
'smg-form-entry-gen' ) ) .
- Xml::openElement( 'th', array('class' =>
'mw-label') ) .
- Xml::label( wfMsg(
'semanticgenealogy-specialfamilytree-label-gen' ), 'gen' ) .
- Xml::closeElement( 'th' ) .
- Xml::openElement( 'td', array('class' =>
'mw-input') ) .
- Xml::input( 'gen', 2, $numOfGenerations ) .
- Xml::closeElement( 'td' ) .
- Xml::closeElement( 'tr' ) .
- Xml::openElement( 'tr', array('id' =>
'smg-form-entry-page2' ) ) .
- Xml::openElement( 'th', array('class' =>
'mw-label') ) .
- Xml::label( wfMsg(
'semanticgenealogy-specialfamilytree-label-page2' ), 'page2' ) .
- Xml::closeElement( 'th' ) .
- Xml::openElement( 'td', array('class' =>
'mw-input') ) .
- Xml::input( 'page2', 30, $pageName2,
array( 'class' => 'smg-input-page' ) ) .
- Xml::closeElement( 'td' ) .
- Xml::closeElement( 'tr' ) .
- Xml::closeElement( 'table' ) .
- Xml::submitButton( wfMsg(
'semanticgenealogy-specialfamilytree-button-submit' ) ) .
- Xml::closeElement( 'fieldset' ) .
- Xml::closeElement( 'form' )
+ Xml::openElement('form', array( 'action' => $wgScript )) .
+ Html::hidden('title',
$this->getPageTitle()->getPrefixedText()) .
+ Xml::openElement('fieldset') .
+ Xml::openElement('table', array( 'id' => 'smg-familyTree-form'
)) .
+ Xml::openElement('tr', array('id' => 'smg-form-entry-page' )) .
+ Xml::openElement('th', array('class' => 'mw-label')) .
+
Xml::label(wfMsg('semanticgenealogy-specialfamilytree-label-page'), 'page') .
+ Xml::closeElement('th') .
+ Xml::openElement('td', array('class' => 'mw-input')) .
+ Xml::input('page', 30, $pageName, array( 'class' =>
'smg-input-page' )) .
+ Xml::closeElement('td') .
+ Xml::closeElement('tr') .
+ Xml::openElement('tr', array('id' => 'smg-form-entry-type' )) .
+ Xml::openElement('th', array('class' => 'mw-label')) .
+
Xml::label(wfMsg('semanticgenealogy-specialfamilytree-label-type'), 'type') .
+ Xml::closeElement('th') .
+ Xml::openElement('td', array('class' => 'mw-input')) .
+ $typeSelect->getHtml() .
+ Xml::closeElement('td') .
+ Xml::closeElement('tr') .
+ Xml::openElement('tr', array('id' => 'smg-form-entry-gen' )) .
+ Xml::openElement('th', array('class' => 'mw-label')) .
+
Xml::label(wfMsg('semanticgenealogy-specialfamilytree-label-gen'), 'gen') .
+ Xml::closeElement('th') .
+ Xml::openElement('td', array('class' => 'mw-input')) .
+ Xml::input('gen', 2, $numOfGenerations) .
+ Xml::closeElement('td') .
+ Xml::closeElement('tr') .
+ Xml::openElement('tr', array('id' => 'smg-form-entry-page2' ))
.
+ Xml::openElement('th', array('class' => 'mw-label')) .
+
Xml::label(wfMsg('semanticgenealogy-specialfamilytree-label-page2'), 'page2') .
+ Xml::closeElement('th') .
+ Xml::openElement('td', array('class' => 'mw-input')) .
+ Xml::input('page2', 30, $pageName2, array( 'class' =>
'smg-input-page' )) .
+ Xml::closeElement('td') .
+ Xml::closeElement('tr') .
+ Xml::closeElement('table') .
+
Xml::submitButton(wfMsg('semanticgenealogy-specialfamilytree-button-submit')) .
+ Xml::closeElement('fieldset') .
+ Xml::closeElement('form')
);
}
- if( $pageName == '') {
+ if ($pageName == '') {
return;
}
@@ -137,7 +137,8 @@
*
* @return boolean
*/
- public function isCacheable() {
+ public function isCacheable()
+ {
return false;
}
@@ -146,8 +147,9 @@
*
* @return string
*/
- public function getDescription( ) {
- return wfMsg( 'semanticgenealogy-specialfamilytree-title' );
+ public function getDescription()
+ {
+ return wfMsg('semanticgenealogy-specialfamilytree-title');
}
@@ -156,7 +158,8 @@
*
* @return string
*/
- protected function getGroupName() {
+ protected function getGroupName()
+ {
return 'other';
}
}
--
To view, visit https://gerrit.wikimedia.org/r/245906
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I9aa98b6d408866cf9c440fe1e0dfc95624d5af11
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/SemanticGenealogy
Gerrit-Branch: master
Gerrit-Owner: Wilkins <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits