Open Monograph Press  3.3.0
MetadataTypeDescription.inc.php
1 <?php
21 import('lib.pkp.classes.filter.ClassTypeDescription');
22 
23 define('ASSOC_TYPE_ANY', -1);
24 
28 
31 
33  var $_assocType;
34 
35 
41  function __construct($typeName) {
42  parent::__construct($typeName);
43  }
44 
45  //
46  // Setters and Getters
47  //
51  function getNamespace() {
52  return TYPE_DESCRIPTION_NAMESPACE_METADATA;
53  }
54 
58  function getMetadataSchemaClass() {
59  return $this->_metadataSchemaPackageName.'.'.$this->_metadataSchemaClassName;
60  }
61 
65  function getAssocType() {
66  return $this->_assocType;
67  }
68 
69 
70  //
71  // Implement abstract template methods from TypeDescription
72  //
76  function parseTypeName($typeName) {
77  // Configure the parent class type description
78  // with the expected meta-data class.
79  parent::parseTypeName('lib.pkp.classes.metadata.MetadataDescription');
80 
81  // Split the type name into class name and assoc type.
82  $typeNameParts = explode('(', $typeName);
83  if (!count($typeNameParts) == 2) return false;
84 
85  // The meta-data schema class must be
86  // a fully qualified class name.
87  $splitMetadataSchemaClass = $this->splitClassName($typeNameParts[0]);
88  if ($splitMetadataSchemaClass === false) return false;
89  list($this->_metadataSchemaPackageName, $this->_metadataSchemaClassName) = $splitMetadataSchemaClass;
90 
91  // Identify the assoc type.
92  $assocTypeString = trim($typeNameParts[1], ')');
93  if ($assocTypeString == '*') {
94  $this->_assocType = ASSOC_TYPE_ANY;
95  } else {
96  // Make sure that the given assoc type exists.
97  $assocTypeString = 'ASSOC_TYPE_'.$assocTypeString;
98  if (!defined($assocTypeString)) return false;
99  $this->_assocType = constant($assocTypeString);
100  }
101 
102  return true;
103  }
104 
108  function checkType(&$object) {
109  // First of all check whether this is a
110  // meta-data description at all.
111  if (!parent::checkType($object)) return false;
112 
113  // Check the meta-data schema.
114  $metadataSchema =& $object->getMetadataSchema();
115  if (!is_a($metadataSchema, $this->_metadataSchemaClassName)) return false;
116 
117  // Check the assoc type
118  if ($this->_assocType != ASSOC_TYPE_ANY) {
119  if ($object->getAssocType() != $this->_assocType) return false;
120  }
121 
122  return true;
123  }
124 }
125 
MetadataTypeDescription\__construct
__construct($typeName)
Definition: MetadataTypeDescription.inc.php:50
MetadataTypeDescription\checkType
checkType(&$object)
Definition: MetadataTypeDescription.inc.php:117
ClassTypeDescription
A type description that validates objects by class type.
Definition: ClassTypeDescription.inc.php:20
MetadataTypeDescription\getNamespace
getNamespace()
Definition: MetadataTypeDescription.inc.php:60
MetadataTypeDescription\$_metadataSchemaClassName
$_metadataSchemaClassName
Definition: MetadataTypeDescription.inc.php:36
MetadataTypeDescription
Type validator for metadata input/output.
Definition: MetadataTypeDescription.inc.php:25
MetadataTypeDescription\$_assocType
$_assocType
Definition: MetadataTypeDescription.inc.php:42
MetadataTypeDescription\$_metadataSchemaPackageName
$_metadataSchemaPackageName
Definition: MetadataTypeDescription.inc.php:30
MetadataTypeDescription\parseTypeName
parseTypeName($typeName)
Definition: MetadataTypeDescription.inc.php:85
MetadataTypeDescription\getMetadataSchemaClass
getMetadataSchemaClass()
Definition: MetadataTypeDescription.inc.php:67
ClassTypeDescription\splitClassName
splitClassName($typeName)
Definition: ClassTypeDescription.inc.php:96
MetadataTypeDescription\getAssocType
getAssocType()
Definition: MetadataTypeDescription.inc.php:74