/** * Load metadata. * * Loades the metadata associated with the entity. * * @return bool Return true on success and false on error. */ private function _loadMetadata() { assert('$this->_entity instanceof Sspmod_Janus_Entity'); $st = $this->execute('SELECT * FROM ' . self::$prefix . 'metadata WHERE `eid` = ? AND `revisionid` = ?;', array($this->_entity->getEid(), $this->_entity->getRevisionid())); if ($st === false) { SimpleSAML_Logger::error('JANUS:EntityController:_loadMetadata - Metadata could not load.'); return false; } $this->_metadata = array(); $rs = $st->fetchAll(PDO::FETCH_ASSOC); $mb = new sspmod_janus_MetadatafieldBuilder($this->_config->getArray('metadatafields.' . $this->_entity->getType())); $definitions = $mb->getMetadatafields(); foreach ($rs as $row) { $metadata = new sspmod_janus_Metadata($this->_config->getValue('store')); $metadata->setEid($row['eid']); $metadata->setRevisionid($row['revisionid']); $metadata->setKey($row['key']); if (isset($definitions[$row['key']])) { $metadata->setDefinition($definitions[$row['key']]); } if (!$metadata->load()) { throw new SimpleSAML_Error_Exception('Metadata did not load'); } $this->_metadata[] = $metadata; } return true; }