Skip to content

PHP SDK Tutorial App

Daniel Marshall edited this page Aug 20, 2015 · 7 revisions

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

Home

Tutorial

  • Step 1: Register
  • Step 2: Set up your test environment
  • Step 3: Build tutorial.php
  • Step 4: Use the SDK Documentation

Sample App

Documentation

Design

Clone this wiki locally