function getValue($field) { if (0 === strpos($field, 'bible_')) { // eg bible_read_1 or bible_preach_all $bits = explode('_', $field); list($bible, $type, $number) = $bits; $short = array_get($bits, 3) == 'short'; $candidate_readings = $this->getRawBibleReadings($type); if ($number == 'all') { $res = array(); foreach ($candidate_readings as $reading) { $br = new Bible_Ref($reading['bible_ref']); $res[] = $br->toString($short); } return implode(', ', $res); } else { $bc = array_get($candidate_readings, $number - 1); if ($bc) { $br = new Bible_Ref($bc['bible_ref']); return $br->toString(); } else { return ''; } } } else { return parent::getValue($field); } }