66 import(
'lib.pkp.classes.metadata.MetadataProperty');
100 function __construct($name, $namespace, $classname, $assocTypes) {
101 assert(is_string($name) && is_string($namespace) && is_string($classname));
102 assert(is_array($assocTypes) || is_integer($assocTypes));
105 $this->_name = $name;
106 $this->_namespace = $namespace;
107 $this->_classname = $classname;
110 if (!is_array($assocTypes)) {
111 $assocTypes = array($assocTypes);
113 $this->_assocTypes = $assocTypes;
167 assert(is_string($propertyName));
169 $property =& $this->_properties[$propertyName];
184 assert(is_a($property,
'MetadataProperty'));
185 return $this->
getNamespace().ucfirst($property->getId());
194 $this->_properties = array();
197 foreach($properties as $property) {
212 function addProperty($name, $allowedTypes = METADATA_PROPERTY_TYPE_STRING,
213 $translated =
false, $cardinality = METADATA_PROPERTY_CARDINALITY_ONE, $displayName =
null, $validationMessage =
null, $mandatory =
false) {
215 assert(!is_null($name) && !isset($this->_properties[$name]));
218 $property =
new MetadataProperty($name, $this->_assocTypes, $allowedTypes, $translated, $cardinality, $displayName, $validationMessage, $mandatory);
221 $this->_properties[$name] =& $property;
229 return array_keys($this->_properties);
240 $propertyNames = array();
241 foreach($this->_properties as $property) {
242 $allowedPropertyTypes = $property->getAllowedTypes();
243 if (isset($allowedPropertyTypes[$propertyType])) {
244 $propertyNames[] = $property->getName();
248 return $propertyNames;
257 return isset($this->_properties[$propertyName]);