/** * Get a specific metadata object by its id. * If you want multiple metadata objects, use * {@link elgg_get_metadata()}. * * @param int $id The id of the metadata object being retrieved. * * @return ElggMetadata|false false if not found */ function elgg_get_metadata_from_id($id) { return _elgg_get_metastring_based_object_from_id($id, 'metadata'); }
/** * Deletes a metastring-based object by its id * * @param int $id The object's ID * @param string $type The object's metastring type: annotation or metadata * @return bool * @access private */ function _elgg_delete_metastring_based_object_by_id($id, $type) { $id = (int) $id; $db_prefix = elgg_get_config('dbprefix'); switch ($type) { case 'annotations': case 'annotation': $table = $db_prefix . 'annotations'; $type = 'annotation'; break; case 'metadata': $table = $db_prefix . 'metadata'; $type = 'metadata'; break; default: return false; } $obj = _elgg_get_metastring_based_object_from_id($id, $type); if ($obj) { // Tidy up if memcache is enabled. // @todo only metadata is supported if ($type == 'metadata') { static $metabyname_memcache; if (!$metabyname_memcache && is_memcache_available()) { $metabyname_memcache = new \ElggMemcache('metabyname_memcache'); } if ($metabyname_memcache) { // @todo why name_id? is that even populated? $metabyname_memcache->delete("{$obj->entity_guid}:{$obj->name_id}"); } } if ($obj->canEdit()) { // bc code for when we triggered 'delete', 'annotations' #4770 $result = true; if ($type == "annotation") { $result = elgg_trigger_event('delete', 'annotations', $obj); if ($result === false) { elgg_deprecated_notice("Use the event 'delete', 'annotation'", 1.9); } } if (elgg_trigger_event('delete', $type, $obj) && $result) { return (bool) delete_data("DELETE FROM {$table} WHERE id = {$id}"); } } } return false; }
/** * Get a specific annotation by its id. * If you want multiple annotation objects, use * {@link elgg_get_annotations()}. * * @param int $id The id of the annotation object being retrieved. * * @return \ElggAnnotation|false */ function elgg_get_annotation_from_id($id) { return _elgg_get_metastring_based_object_from_id($id, 'annotation'); }
public function testGetMetastringObjectFromIDWithDisabledAnnotation() { $name = 'test_annotation_name' . rand(); $value = 'test_annotation_value' . rand(); $id = create_annotation($this->object->guid, $name, $value); $annotation = elgg_get_annotation_from_id($id); $this->assertTrue($annotation->disable()); $test = _elgg_get_metastring_based_object_from_id($id, 'annotation'); $this->assertEqual(false, $test); $prev = access_get_show_hidden_status(); access_show_hidden_entities(true); $this->assertTrue(_elgg_delete_metastring_based_object_by_id($id, 'annotation')); access_show_hidden_entities($prev); }