-
Notifications
You must be signed in to change notification settings - Fork 14
PHP SDK Tutorial App
<html><body> <head> <title>Tutorial: FamilySearch PHP SDK</title> </head> <h1>Welcome to the Gedcom X PHP SDK tutorial.</h1> <p>To get started you must:<br> 1) Initialize your "app key" and "redirect URI".<br> 2) Authenticate with FamilySearch by logging in as a user.<br> (Use the sandbox User ID and password given you when you registered as a partner.)</p> <h3>(Read and enable the "SETUP" and "AUTHENTICATE" sections in this tutorial.php file then refresh this page. To enable a section, remove the block comment tags /* and */ for the section.)<br> </h3>
<?php
/* (remove this line) // THESE "require" AND "use" COMMANDS ARE REQUIRED FOR THE PHP SDK TO WORK require '/vendor/autoload.php'; use Gedcomx\Extensions\FamilySearch\Rs\Client\FamilySearchClient;
// INITIALIZE A PHP SESSION session_start();
// INITIALIZE "YOUR" CLIENT OPTIONS IN AN ARRAY
$clientOptions = array(
'environment' => 'sandbox',
// LOAD YOUR APP KEY
'clientId' => 'yourAppKeyGoesHere',
// MAKE SURE THIS REDIRECT URI IS ASSOCIATED WITH YOUR APP KEY.
'redirectURI' => 'http://localhost:5000/tutorial.php'
);
// AFTER YOU HAVE AUTHENTICATED, INITIALIZE THE ARRAY THAT
// IS NEEDED TO INSTANTIATE AN AUTHENTICATED CLIENT
if(isset($_SESSION['fs_access_token'])){
$clientOptions['accessToken'] = $_SESSION['fs_access_token'];
}
// INSTANTIATE A CLIENT $client = new FamilySearchClient($clientOptions);
*/ //(remove this line)
/* if(!isset($_SESSION['fs_access_token'])){ // AUTHENTICATE
if(!isset($_GET['code'])) { // GET AN AUTHORIZATION CODE
header('Location: ' . $client->getOAuth2AuthorizationURI());
}
// LOAD $code FROM THE URI PARAMS
$code = $_GET['code'];
// EXCHANGE THE AUTHORIZATION CODE FOR AN ACCESS TOKEN, AND STORE IT IN A SESSION VARIABLE
$_SESSION['fs_access_token'] = $client->authenticateViaOAuth2AuthCode($code)->getAccessToken();
}
?> <h1>Step 1: Authenticate with FamilySearch</h1> <h3>CONGRATULATIONS! Your user is authenticated.</h3> <p>The access token (Client ID) is:<br> <?=$_SESSION['fs_access_token']?> <br> It has been stored in a session so that future interactions in this tutorial are authenticated.</p> <h3>(Now, read and enable the CURRENT USER section.)</h3> <?php
*/
/* echo "<h1>Step 2: Get Current User</h1>";
// READ THE CURRENT USER PERSON AND SAVE THE RESPONSE $response = $client->familytree()->readPersonForCurrentUser(); // GET THE PERSON FROM THE RESPONSE $person = $response->getPerson(); // DISPLAY THE CURRENT USER INFO printPerson($person);
echo "<h3>(Now, read and enable the SEARCH section.)</h3>";
*/
/* ?> <h1>Step 3: Search for a Person by Name</h1> <form action="" method="post"> <p>Enter Last Name (surname): <input type="text" name="lastname" /></p> </form>
<?php if (isset($_POST['lastname'])) { // CONSTRUCT THE SEARCH QUERY $query = new Gedcomx\Rs\Client\Util\GedcomxPersonSearchQueryBuilder(); // LOAD THE SEARCH PARAMETER(S)INTO THE QUERY STRUCTURE $query→surname($_POST['lastname']); // PERFORM THE SEARCH // Search for matches and save the response $searchResponse = $client→familytree()→searchForPersons($query); if ($searchResponse→getResults()) { // MATCHES FOUND // Get the matching results $entries = $searchResponse→getResults()→getEntries();
{ // DISPLAY THE RESULTS
?>
<h3>Search Results</h3>
<table class="table">
<tr>
<th>Id</th>
<th>Name</th>
<th>Birth</th>
</tr>
<?php
foreach($entries as $entry){
// Each $entry can contain spouses and parents as well as the
// matched person. The $entry ID is the ID of the matched person.
$personId = $entry->getId();
$gedcomx = $entry->getContent()->getGedcomx();
foreach($gedcomx->getPersons() as $person){
// When examining the gedcomx content, we only display the matched person.
if($person->getId() === $personId){
$display = $person->getDisplayExtension();
?>
<tr>
<td><?= $person->getId(); ?></td>
<td><?= $display->getName(); ?></td>
<td><?= $display->getBirthDate(); ?></td>
</tr>
<?php
}
}
}
echo '</table>';
} // END DISPLAY THE RESULTS
echo "<h3>(Now, read and enable the READ PID section.)</h3>";
} // END MATCHES FOUND
}
*/
// *** END: SEARCH
/* ?> <h1>Step 4: Read a Person by Person ID</h1> <form action="" method="post"> <p>Enter a Person ID: <input type="text" name="pid" /></p> </form>
<?php if (isset($_POST['pid'])) { // READ THE PERSON AND SAVE THE RESPONSE $response = $client→familytree()→readPersonById($_POST['pid']); // GET THE PERSON FROM THE RESPONSE $person = $response→getPerson(); if (!$person) exit; // DISPLAY THE PERSON INFO echo "<h3>The person is:</h3>"; printPerson($person); echo "<h1>CONGRATULATIONS!!! You have finished the PHP tutorial app exercise.<br> NEXT: You may want to take a self-guided look at the Sample App</h1>"; } */
function printPerson($person){
if(!$person) return;
$personId = $person->getId();
$displayInfo = $person->getDisplayExtension();
?>
<h3><?= $displayInfo->getName(); ?></h3>
<div class="panel panel-default">
<table class="table">
<tr>
<th>ID</th>
<th> Gender</th>
<th> Birth Date</th>
<th> Status</th>
</tr>
<tr>
<td><?= $personId; ?></td>
<td><?= $displayInfo->getGender(); ?></td>
<td><?= $displayInfo->getBirthDate(); ?></td>
<td><?= $person->isLiving() ? 'Living' : 'Deceased'; ?></td>
</tr>
</table>
</div>
<?php
} // **END OF printPerson FUNCTION**
?> </body></html>