aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSilvio <silvio@devlet.com.br>2010-07-15 18:07:01 -0300
committerSilvio <silvio@devlet.com.br>2010-07-15 18:07:01 -0300
commitd83a35ce8486256ff865596066c6dbf23bfe5b18 (patch)
treeadbee4754fedb9f981d9a155974854311906f823
parent1457718f111ea45705555439e6a732e293cc7bef (diff)
downloadcinisis-d83a35ce8486256ff865596066c6dbf23bfe5b18.tar.gz
cinisis-d83a35ce8486256ff865596066c6dbf23bfe5b18.tar.bz2
Adding IsisNormalSubfieldFilterIterator
-rw-r--r--classes/IsisConnector.php39
-rw-r--r--classes/IsisNormalSubfieldFilterIterator.php14
-rw-r--r--classes/IsisSubfieldIterator.php2
-rw-r--r--schemas/fbe.yaml12
4 files changed, 66 insertions, 1 deletions
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 @@
+<?php
+
+/**
+ * Isis normal subfield iterator. Filter out special subfields.
+ */
+class IsisNormalSubfieldFilterIterator extends FilterIterator {
+ public function accept()
+ {
+ $field = $this->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);
diff --git a/schemas/fbe.yaml b/schemas/fbe.yaml
index 9fb771f..2052e09 100644
--- a/schemas/fbe.yaml
+++ b/schemas/fbe.yaml
@@ -164,6 +164,7 @@ fields:
type: Performers
description:
n: Direção especializada (ação, filmagem aérea, etc.)
+ special: [w]
67:
name: Argumento/roteiro
repeat: Yes
@@ -176,7 +177,7 @@ fields:
f: diálogos
g: adaptado por
h: autoria do texto de locução / redator
- i: baseada # TODO: not a performer field
+ i: baseada
j: diálogos adicionais
k: supervisão de roteiro
l: enquadração (nomenclatura de época)
@@ -191,6 +192,7 @@ fields:
a: Argumentista/entrecho/argumento
d: Roteirista/entrecho organizado em cenas/roteiro
i: Baseada (Inspirada) em, na, no, / romance; obra, peça
+ special: [w, i]
62:
name: Fotografia
repeat: Yes
@@ -220,6 +222,7 @@ fields:
h: Operador (nomenclatura de época), operador de câmera
j: Assistência de iluminação / assistente de iluminação
l: Animador / empresa encarregada da animação
+ special: [w]
72:
name: Dados adicionais de fotografia
repeat: Yes
@@ -239,6 +242,7 @@ fields:
w: (qualificador)
map:
type: Performers
+ special: [w]
64:
name: Som
repeat: Yes
@@ -258,6 +262,7 @@ fields:
w: (qualificador)
map:
type: Performers
+ special: [w]
74:
name: Dados adicionais de som
repeat: Yes
@@ -284,6 +289,7 @@ fields:
type: Performers
description:
o: Microfonista (operador de microfone/operador de boom = microfonista)
+ special: [w]
65:
name: Montagem
repeat: Yes
@@ -302,6 +308,7 @@ fields:
a: Montagem/montador (nos filmes até cerca de 1960, usava-se os termos coordenação/coordenador/corte ou corte final)
b: Edição (editor)
c: Assistente de montagem (assistência de montagem)
+ special: [w]
75:
name: Montagem - dados adicionais
repeat: Yes
@@ -316,6 +323,7 @@ fields:
w: (qualificador)
map:
type: Performers
+ special: [w]
61:
name: Direção de arte
repeat: Yes
@@ -335,6 +343,7 @@ fields:
w: (qualificador)
map:
type: Performers
+ special: [w]
71:
name: Direção de arte - dados adicionais
subfields:
@@ -361,6 +370,7 @@ fields:
w: (qualificador)
map:
type: Performers
+ special: [w]
#
# Sound/music