/**
 * 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');
}
Example #2
0
/**
 * 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;
}
Example #3
0
/**
 * 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);
 }