type); field_attach_delete('TripalVocab', $entity); db_delete('tripal_term') ->condition('term_id', $entity->term_id) ->execute(); } catch (Exception $e) { $transaction->rollback(); watchdog_exception('tripal_entities', $e); throw $e; return FALSE; } return TRUE; } /** * Saves the custom fields using drupal_write_record(). */ public function save($entity) { global $user; $pkeys = array(); $transaction = db_transaction(); try { // If our entity has no id, then we need to give it a // time of creation. if (empty($entity->id)) { $entity->created = time(); $invocation = 'entity_insert'; } else { $invocation = 'entity_update'; $pkeys = array('id'); } // Invoke hook_entity_presave(). module_invoke_all('entity_presave', $entity, $entity->type); // Write out the entity record. $record = array( 'namespace' => $entity->namespace, 'created' => $entity->created, 'changed' => time(), ); if ($invocation == 'entity_update') { $record['id'] = $entity->id; } $success = drupal_write_record('tripal_vocab', $record, $pkeys); if ($success == SAVED_NEW) { $entity->id = $record['id']; } // Now we need to either insert or update the fields which are // attached to this entity. We use the same primary_keys logic // to determine whether to update or insert, and which hook we // need to invoke. if ($invocation == 'entity_insert') { field_attach_insert('TripalVocab', $entity); } else { field_attach_update('TripalVocab', $entity); } // Invoke either hook_entity_update() or hook_entity_insert(). module_invoke_all('entity_postsave', $entity, $entity->type); module_invoke_all($invocation, $entity, $entity->type); return $entity; } catch (Exception $e) { $transaction->rollback(); watchdog_exception('tripal_entity', $e); drupal_set_message("Could not save the entity:" . $e->getMessage(), "error"); return FALSE; } } }