summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/Model/Metadata.php23
-rw-r--r--doc/plugin-metadata.markdown5
2 files changed, 27 insertions, 1 deletions
diff --git a/app/Model/Metadata.php b/app/Model/Metadata.php
index 83c8f499..ae7475c4 100644
--- a/app/Model/Metadata.php
+++ b/app/Model/Metadata.php
@@ -95,4 +95,27 @@ abstract class Metadata extends Base
return ! in_array(false, $results, true);
}
+
+ /**
+ * Remove a metadata
+ *
+ * @access public
+ * @param integer $entity_id
+ * @param string $name
+ * @return bool
+ */
+ public function remove($entity_id, $name)
+ {
+
+ $this->db->startTransaction();
+
+ if (! $this->db->table(static::TABLE)->eq($this->getEntityKey(), $entity_id)->eq('name', $name)->remove()) {
+ $this->db->cancelTransaction();
+ return false;
+ }
+
+ $this->db->closeTransaction();
+
+ return true;
+ }
}
diff --git a/doc/plugin-metadata.markdown b/doc/plugin-metadata.markdown
index 0249e60c..1f4bfa2b 100644
--- a/doc/plugin-metadata.markdown
+++ b/doc/plugin-metadata.markdown
@@ -7,7 +7,7 @@ Metadata are custom fields, it's a key/value table.
For example your plugin can store external information for a task or new settings for a project.
Basically that allow you to extend the default fields without having to create new tables.
-Attach metadata to tasks
+Attach metadata to tasks and remove them
------------------------
```php
@@ -23,6 +23,9 @@ $this->taskMetadata->exists($task_id, 'my_plugin_variable');
// Create or update metadata for the task
$this->taskMetadata->save($task_id, ['my_plugin_variable' => 'something']);
+
+// Remove a metadata from a project
+$this->projectMetadata->remove($project_id, my_plugin_variable);
```
Metadata types