/**
  * Import metadata.
  *
  * @param Omeka_Record $object The Fedora object record.
  * @param string $dsid The dsid to import.
  */
 public function import($object, $dsid)
 {
     // Get object parent item.
     $item = $object->getItem();
     // Get metadata XML for the datastream.
     $xml = new DOMXPath($this->getMetadataXml($object, $dsid));
     // Get DC elements.
     $elements = $this->db->getTable('Element')->findBySet('Dublin Core');
     // Run queries and write texts.
     foreach ($elements as $element) {
         // Execute for the element.
         $queries = $this->getQueries($element->name);
         $nodes = $this->queryAll($xml, $queries);
         // Write new element texts.
         foreach ($nodes as $node) {
             $text = new ElementText();
             $text->record_id = $item->id;
             $text->record_type = 'Item';
             $text->element_id = $element->id;
             $text->html = 0;
             $text->text = $node->nodeValue;
             $text->save();
         }
     }
 }
 /**
  *Adds an element (text and ID) to an Item
  *
  * @param $record_id Item  The item to which an element will be added
  * @param $element_id string the ID of the element type
  * @param $elementText string the text to add to the element
  * @throws Omeka_Record_Exception
  * @throws Omeka_Validate_Exception
  */
 private function saveElementText($record_id, $element_id, $elementText)
 {
     $text = new ElementText();
     $text->record_id = $record_id;
     $text->record_type = 'Item';
     $text->html = 0;
     $text->element_id = $element_id;
     $text->text = $elementText;
     if ($text->isValid()) {
         $text->save();
     } else {
         throw new Omeka_Validate_Exception('invalid element(Record ID, Element ID, ElementText): ' . strval($record_id) . ',' . $element_id . ',' . $elementText);
     }
 }
 public function perform()
 {
     $db = get_db();
     $elementSet = new ElementSet();
     $elementSet->record_type = "UserProfilesType";
     $elementSet->name = "Contributor Elements";
     $elementSet->description = "";
     $elementSet->save();
     $importData = $this->_importContributorFields($elementSet);
     $type_id = $importData['type_id'];
     $contribFieldElementMap = $importData['contribFieldElementMap'];
     $userContributorMap = unserialize(file_get_contents(CONTRIBUTION_PLUGIN_DIR . '/upgrade_files/user_contributor_map.txt'));
     foreach ($userContributorMap as $userId => $contributorIds) {
         $contribIds = implode(',', $contributorIds);
         $sql = "SELECT * FROM {$db->ContributionContributorValue} WHERE `contributor_id` IN ({$contribIds})";
         $res = $db->query($sql);
         $contributorValues = $res->fetchAll();
         $profile = new UserProfilesProfile();
         $profile->owner_id = $userId;
         $profile->public = true;
         $profile->element_set_id = $elementSet->id;
         $profile->type_id = $type_id;
         $profile->setRelationData(array('subject_id' => $userId));
         $profile->save();
         $elTextArray = array();
         foreach ($contributorValues as $value) {
             //dig up element_id
             $fieldId = $value['field_id'];
             $elementId = $contribFieldElementMap[$fieldId];
             $elementText = new ElementText();
             $elementText->element_id = $elementId;
             $elementText->text = $value['value'];
             $elementText->html = 0;
             $elementText->record_type = 'UserProfilesProfile';
             $elementText->record_id = $profile->id;
             $elementText->save();
             release_object($elementText);
         }
         release_object($profile);
     }
     set_option('user_profiles_contributors_imported', true);
 }
 /**
  * Create an element text for an item.
  *
  * @param Omeka_record $item        The item.
  * @param string       $elementSet  The element set.
  * @param string       $elementName The element name.
  * @param string       $value       The value for the text.
  *
  * @return Omeka_record $text The new text.
  */
 public function __text($item, $elementSet, $elementName, $value)
 {
     // Get tables.
     $_db = get_db();
     $elementTable = $_db->getTable('Element');
     $elementTextTable = $_db->getTable('ElementText');
     $recordTypeTable = $_db->getTable('RecordType');
     // Fetch element record and the item type id.
     $element = $elementTable->findByElementSetNameAndElementName($elementSet, $elementName);
     $itemTypeId = $recordTypeTable->findIdFromName('Item');
     $text = new ElementText();
     $text->record_id = $item->id;
     $text->record_type_id = $itemTypeId;
     $text->element_id = $element->id;
     $text->text = $value;
     $text->save();
     return $text;
 }
 /**
  * This cereates and element text and adds it to an item.
  *
  * @param Item    $item    The item to add the data to.
  * @param Element $element The element to add the text to.
  * @param string  $text    The text data.
  * @param bool    $html    Is the text really HTML? (Default is FALSE.)
  *
  * @return ElementText
  * @author Eric Rochester <*****@*****.**>
  **/
 protected function addElementText($item, $element, $text, $html = 0)
 {
     $etext = new ElementText();
     $etext->setText($text);
     $etext->html = $html;
     $etext->element_id = $element->id;
     $etext->record_id = $item->id;
     $etext->record_type = get_class($item);
     $etext->save();
     $item[$element->name] = $etext;
     return $etext;
 }