/**
  *
  * @param RP_Persona $persona
  * @param array $options
  * @param integer $page_id
  * @return string
  */
 public function build($persona, $options, $page_id)
 {
     $block = '';
     if ($options['hide_header'] == 0) {
         $block .= RP_Header_Panel_Creator::create($persona, $options);
     }
     if ($options['hide_bio'] == 0 && isset($persona->notes) && count($persona->notes) > 0) {
         $block .= RP_Bio_Panel_Creator::create($persona->notes, $options);
     }
     if ($options['hide_facts'] == 0 && isset($persona->facts) && count($persona->facts) > 0) {
         $block .= RP_Facts_Panel_Creator::create($persona->facts, $options);
     }
     if ($options['hide_ancestors'] == 0 && isset($persona->ancestors)) {
         $creator = new RP_Ancestors_Panel_Creator();
         $block .= $creator->create($persona->ancestors, $options);
     }
     if ($options['hide_descendancy'] == 0 && isset($persona->marriages)) {
         $creator = new RP_Descendancy_Panel_Creator();
         $block .= $creator->create($persona, $options);
     }
     if ($options['hide_family_c'] == 0 && isset($persona->ancestors)) {
         $block .= RP_Group_Sheet_Panel_Creator::create_group_child('c0', $persona->ancestors, $persona->siblings, $options);
     }
     if ($options['hide_family_s'] == 0 && isset($persona->marriages) && count($persona->marriages) > 0) {
         $cnt = count($persona->marriages);
         for ($idx = 0; $idx < $cnt; $idx++) {
             $marriage = $persona->marriages[$idx];
             $block .= RP_Group_Sheet_Panel_Creator::create_group_spouse('p' . $idx, $marriage, $options);
         }
     }
     if ($options['hide_pictures'] == 0 && isset($persona->picfiles) && count($persona->picfiles) > 0) {
         $block .= RP_Picture_Panel_Creator::create($persona, $options);
     }
     if ($options['hide_evidence'] == 0 && isset($persona->sources) && count($persona->sources) > 0) {
         $block .= RP_Evidence_Panel_Creator::create($persona, $options);
     }
     $block .= RP_Persona_Helper::get_banner($options, '');
     $block .= RP_Persona_Page_Builder::create_end_of_page($persona->id, $persona->batch_id, $page_id, $options);
     return $block;
 }
 /**
  *
  * @param array $ancestors
  * @param array $options
  * @return string
  */
 public static function create($ancestors, $options)
 {
     $pframe_color = isset($options['pframe_color']) && !empty($options['pframe_color']) ? $options['pframe_color'] : 'brown';
     $isEdit = ($options['is_system_of_record'] == '1' ? true : false) && current_user_can("edit_pages");
     $fname = $ancestors[4]->full_name;
     if ($isEdit && $fname == '?' && $ancestors[2]->full_name != '?') {
         $fname = '+';
     }
     $block = '<section class="rp_truncate">' . RP_Persona_Helper::get_banner($options, __('Ancestors', 'rootspersona')) . '<div class="rp_ancestors">' . '<table cellpadding="0" cellspacing="0" class="ancestors"><tbody>' . '<tr><td colspan="2" rowspan="6">&#160;</td>' . '<td colspan="3" rowspan="2">&#160;</td><td>&#160;</td>' . '<td rowspan="2" class="rp_nameBox" style="border-color:' . $pframe_color . ' !important">' . RP_Ancestors_Panel_Creator::buildBlock($ancestors[4], $options, $fname, $ancestors[2], 1, $ancestors[5]);
     $fname = $ancestors[2]->full_name;
     if ($isEdit && $fname == '?') {
         $fname = '+';
     }
     $block .= '</td></tr>' . '<tr><td class="rp_topleft" style="border-color:' . $pframe_color . ' !important">&#160;</td></tr>' . '<tr><td>&#160;</td>' . '<td rowspan="2" class="rp_nameBox" style="border-color:' . $pframe_color . ' !important">' . RP_Ancestors_Panel_Creator::buildBlock($ancestors[2], $options, $fname, $ancestors[1], 1, $ancestors[3]);
     $fname = $ancestors[5]->full_name;
     if ($isEdit && $fname == '?' && $ancestors[2]->full_name != '?') {
         $fname = '+';
     }
     $block .= '</td><td class="rp_bottom" style="border-color:' . $pframe_color . ' !important">&#160;</td><td colspan="2" rowspan="2" class="rp_left" style="border-color:' . $pframe_color . ' !important">&#160;</td></tr>' . '<tr><td class="rp_topleft" style="border-color:' . $pframe_color . ' !important">&#160;</td><td>&#160;</td></tr>' . '<tr><td colspan="3" rowspan="6" class="rp_left" style="border-color:' . $pframe_color . ' !important">&#160;</td><td class="rp_leftbottom" style="border-color:' . $pframe_color . ' !important">&#160;</td>' . '<td rowspan="2" class="rp_nameBox" style="border-color:' . $pframe_color . ' !important">' . RP_Ancestors_Panel_Creator::buildBlock($ancestors[5], $options, $fname, $ancestors[2], 2, $ancestors[4]);
     $block .= '</td></tr>' . '<tr><td>&#160;</td></tr><tr><td rowspan="2" class="rp_nameBox" style="border-color:' . $pframe_color . ' !important">' . RP_Ancestors_Panel_Creator::buildBlock($ancestors[1], $options, $ancestors[1]->full_name, null, null, null);
     $fname = $ancestors[6]->full_name;
     if ($isEdit && $fname == '?' && $ancestors[3]->full_name != '?') {
         $fname = '+';
     }
     $block .= '</td><td class="rp_bottom" style="border-color:' . $pframe_color . ' !important">&#160;</td><td colspan="2" rowspan="2">&#160;</td></tr>' . '<tr><td>&#160;</td></tr>' . '<tr><td colspan="2" rowspan="6">&#160;</td><td>&#160;</td><td rowspan="2" class="rp_nameBox" style="border-color:' . $pframe_color . ' !important">' . RP_Ancestors_Panel_Creator::buildBlock($ancestors[6], $options, $fname, $ancestors[3], 1, $ancestors[7]);
     $fname = $ancestors[3]->full_name;
     if ($isEdit && $fname == '?') {
         $fname = '+';
     }
     $block .= '</td></tr><tr><td class="rp_topleft" style="border-color:' . $pframe_color . ' !important">&#160;</td></tr>' . '<tr><td class="rp_leftbottom" style="border-color:' . $pframe_color . ' !important">&#160;</td><td rowspan="2" class="rp_nameBox" style="border-color:' . $pframe_color . ' !important">' . RP_Ancestors_Panel_Creator::buildBlock($ancestors[3], $options, $fname, $ancestors[1], 2, $ancestors[2]);
     $fname = $ancestors[7]->full_name;
     if ($isEdit && $fname == '?' && $ancestors[3]->full_name != '?') {
         $fname = '+';
     }
     $block .= '</td><td class="rp_bottom" style="border-color:' . $pframe_color . ' !important">&#160;</td><td colspan="2" rowspan="2" class="rp_left" style="border-color:' . $pframe_color . ' !important">&#160;</td></tr>' . '<tr><td>&#160;</td><td>&#160;</td></tr><tr><td colspan="3" rowspan="2">&#160;</td>' . '<td class="rp_leftbottom" style="border-color:' . $pframe_color . ' !important">&#160;</td><td rowspan="2" class="rp_nameBox" style="border-color:' . $pframe_color . ' !important">' . RP_Ancestors_Panel_Creator::buildBlock($ancestors[7], $options, $fname, $ancestors[3], 2, $ancestors[6]);
     $block .= '</td></tr><tr><td>&#160;</td></tr>';
     $block .= '</tbody></table></div></section>';
     return $block;
 }