From d83a35ce8486256ff865596066c6dbf23bfe5b18 Mon Sep 17 00:00:00 2001 From: Silvio Date: Thu, 15 Jul 2010 18:07:01 -0300 Subject: Adding IsisNormalSubfieldFilterIterator --- classes/IsisConnector.php | 39 ++++++++++++++++++++++++++++ classes/IsisNormalSubfieldFilterIterator.php | 14 ++++++++++ classes/IsisSubfieldIterator.php | 2 ++ 3 files changed, 55 insertions(+) create mode 100644 classes/IsisNormalSubfieldFilterIterator.php (limited to 'classes') diff --git a/classes/IsisConnector.php b/classes/IsisConnector.php index cc4bf62..c731d9a 100644 --- a/classes/IsisConnector.php +++ b/classes/IsisConnector.php @@ -543,4 +543,43 @@ class IsisConnector { return false; } + + /** + * Deal with special subfields. + * + * @param $field + * Field data from ISIS database schema. + * + * @param $subfield + * Subfield name. + * + * @param $return + * Specify return type. + * + * @return + * True if special subfield, false otherwise of special return type + */ + public function specialSubfield($field, $subfield, $return = 'boolean') { + if (isset($field['special'])) { + $field_key = $this->getFieldKey($field); + $subfield_key = $this->getSubfieldKey($field, $subfield); + $name = $field['name'] .':'. $subfield; + $code = $field_key .':'. $subfield_key; + + if (array_search($subfield_key, $field['special'])) { + $this->log("Found special subfield $name", 'debug'); + + if ($return == 'boolean') { + return true; + } + elseif ($return == 'code') { + return $code; + } + + return $name; + } + } + + return false; + } } diff --git a/classes/IsisNormalSubfieldFilterIterator.php b/classes/IsisNormalSubfieldFilterIterator.php new file mode 100644 index 0000000..98494a6 --- /dev/null +++ b/classes/IsisNormalSubfieldFilterIterator.php @@ -0,0 +1,14 @@ +getInnerIterator()->field; + $class = $this->getInnerIterator()->class; + $subfield = $this->getInnerIterator()->current(); + return !$class->specialSubfield($field, $subfield); + } +} diff --git a/classes/IsisSubfieldIterator.php b/classes/IsisSubfieldIterator.php index 8a35399..36d3d06 100644 --- a/classes/IsisSubfieldIterator.php +++ b/classes/IsisSubfieldIterator.php @@ -23,6 +23,8 @@ class IsisSubfieldIterator implements Iterator * Field to iterate over. */ public function __construct($class, $field) { + $this->class = $class; + $this->field = $field; $this->rows = $class->getRows($field); $this->fieldset = $class->getSubfieldList($field); $this->keys = array_keys($this->fieldset); -- cgit v1.2.3