/** * * @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); } } }