Exemple #1
0
 /**
  * Set PUT data to an item type.
  *
  * @param ItemType $data
  * @param mixed $data
  */
 public function setPutData(Omeka_Record_AbstractRecord $record, $data)
 {
     if (isset($data->name)) {
         $record->name = $data->name;
     }
     if (isset($data->description)) {
         $record->description = $data->description;
     }
     if (isset($data->elements) && is_array($data->elements)) {
         $db = get_db();
         // Delete the existing item type elements.
         $sql = "DELETE FROM {$db->ItemTypesElements} WHERE item_type_id = ?";
         $db->query($sql, $record->id);
         // Insert new item type elements.
         $elementTable = $db->getTable('Element');
         $i = 1;
         foreach ($data->elements as $element) {
             if (!is_object($element) || !isset($element->id)) {
                 continue;
             }
             // Ignore if the element does not exist.
             if (!$elementTable->exists($element->id)) {
                 continue;
             }
             $itemTypesElement = new ItemTypesElements();
             $itemTypesElement->item_type_id = $record->id;
             $itemTypesElement->element_id = $element->id;
             $itemTypesElement->order = $i;
             $itemTypesElement->save();
             $i++;
         }
     }
 }
Exemple #2
0
 /**
  * Add a new element to the item type, giving the Element by its ID.
  *
  * @param int ID of the Element.
  */
 public function addElementById($elementId)
 {
     if (!$this->hasElement($elementId)) {
         // Once we have a persistent Element record, build the join record.
         $iteJoin = new ItemTypesElements();
         $iteJoin->element_id = $elementId;
         $iteJoin->item_type_id = $this->id;
         // 'order' should be last by default.
         $table = $this->getDb()->getTable('ItemTypesElements');
         $select = $table->getSelectForCount()->where('item_types_elements.item_type_id = ?');
         $iteJoin->order = (int) $table->fetchOne($select, array($this->id)) + 1;
         $iteJoin->save();
     }
 }