/**
  *
  * @param integer $batch_id
  * @param array $options
  * @return array
  */
 public function get_with_options($batch_id, $options)
 {
     $this->transaction = new RP_Transaction($this->credentials, true);
     $rows = RP_Dao_Factory::get_rp_persona_dao($this->credentials->prefix)->get_indexed_page($batch_id, $options['surname'], $options['page_nbr'], $options['per_page'], $options['style']);
     $this->transaction->close();
     $cnt = count($rows);
     $uscore = $options['uscore'];
     $index = array();
     for ($idx = 0; $idx < $cnt; $idx++) {
         $persona = $rows[$idx];
         RP_Persona_Helper::score_persona($persona, $options);
         if (!RP_Persona_Helper::is_restricted($uscore, $persona->pscore)) {
             $index[] = $persona;
         }
     }
     return $index;
 }
 private function get_persons($src, $options)
 {
     $sql = 'SELECT DISTINCT ri.id AS id' . ',rnp.surname AS surname' . ',rnp.given AS given' . ',ri.wp_page_id AS page' . ',rio.privacy_code AS privacy_code' . ' FROM rp_indi ri' . ' LEFT OUTER JOIN rp_indi_option rio' . ' ON rio.indi_batch_id = ri.batch_id AND rio.indi_id = ri.id' . ' JOIN rp_indi_name rip' . ' ON ri.id = rip.indi_id AND ri.batch_id = rip.indi_batch_id' . ' JOIN rp_name_personal rnp ON rip.name_id = rnp.id' . " WHERE ri.batch_id = ? AND ri.wp_page_id IS NOT null" . " AND IFNULL(rio.privacy_code,'Def') != '" . RP_Persona_Helper::EXC . "' AND ri.id IN " . '(SELECT ric.indi_id AS id' . ' FROM rp_indi_cite ric' . ' JOIN rp_source_cite rsc ON ric.cite_id = rsc.id' . ' WHERE rsc.source_id = ? AND rsc.source_batch_id = ?' . ' UNION' . ' SELECT rie.indi_id AS id' . ' FROM rp_indi_event rie' . ' JOIN rp_event_cite rec ON rie.event_id = rec.event_id' . ' JOIN rp_source_cite rsc ON rsc.id = rec.cite_id' . ' WHERE rsc.source_id = ? AND rsc.source_batch_id = ?' . ' UNION' . ' SELECT rif.indi_id AS id' . ' FROM rp_indi_fam rif' . ' JOIN rp_fam_cite rfc ON rfc.fam_id = rif.fam_id AND rfc.fam_batch_id = rif.fam_batch_id' . ' JOIN rp_source_cite rsc ON rsc.id = rfc.cite_id' . ' WHERE rsc.source_id = ? AND rsc.source_batch_id = ?' . ' UNION' . ' SELECT rin.indi_id AS id' . ' FROM rp_indi_name rin' . ' JOIN rp_name_cite rnc ON rnc.name_id = rin.name_id' . ' JOIN rp_source_cite rsc ON rsc.id = rnc.cite_id' . ' WHERE rsc.source_id = ? AND rsc.source_batch_id = ?)' . ' ORDER BY rnp.surname, rnp.given';
     $sql_query = new RP_Sql_Query($sql, $this->prefix);
     $sql_query->set_number($src->batch_id);
     $sql_query->set($src->id);
     $sql_query->set_number($src->batch_id);
     $sql_query->set($src->id);
     $sql_query->set_number($src->batch_id);
     $sql_query->set($src->id);
     $sql_query->set_number($src->batch_id);
     $sql_query->set($src->id);
     $sql_query->set_number($src->batch_id);
     $rows = RP_Query_Executor::execute($sql_query);
     $cnt = count($rows);
     $persons = null;
     if ($cnt > 0) {
         $persons = array();
         for ($idx = 0; $idx < $cnt; $idx++) {
             $persona = new RP_Persona();
             $persona->surname = $rows[$idx]['surname'];
             $persona->given = $rows[$idx]['given'];
             $persona->page = $rows[$idx]['page'];
             $persona->privacy = $rows[$idx]['privacy_code'];
             $persona->birth_date = RP_Dao_Factory::get_rp_persona_dao($this->prefix)->get_birth_date($src->batch_id, $rows[$idx]['id']);
             $persona->death_date = RP_Dao_Factory::get_rp_persona_dao($this->prefix)->get_death_date($src->batch_id, $rows[$idx]['id']);
             $pscore = RP_Persona_Helper::score_persona($persona, $options);
             if (!RP_Persona_Helper::is_restricted($options['uscore'], $pscore)) {
                 $persons[$idx] = $persona;
             }
         }
     }
     return $persons;
 }
 /**
  *
  * @param RP_Persona $persona
  * @param inteter $uscore
  */
 protected function check_permission($persona, $uscore, $options)
 {
     if ($persona->id != '0') {
         if (!isset($persona->pscore)) {
             RP_Persona_Helper::score_persona($persona, $options);
         }
         if (RP_Persona_Helper::is_restricted($uscore, $persona->pscore)) {
             $this->privatize($persona);
         }
     }
 }