make metadata more general
[bse.git] / site / cgi-bin / modules / BSE / MetaOwnerBase.pm
CommitLineData
f5b7b326
TC
1package BSE::MetaOwnerBase;
2use strict;
3
4our $VERSION = "1.000";
5
6sub clear_metadata {
7 my ($self) = @_;
8
9 BSE::DB->run(bseClearArticleFileMetadata => $self->id, $self->meta_owner_type);
10}
11
12sub clear_app_metadata {
13 my ($self) = @_;
14
15 BSE::DB->run(bseClearArticleFileAppMetadata => $self->id, $self->meta_owner_type);
16}
17
18sub clear_sys_metadata {
19 my ($self) = @_;
20
21 BSE::DB->run(bseClearArticleFileSysMetadata => $self->id, $self->meta_owner_type);
22}
23
24sub delete_meta_by_name {
25 my ($self, $name) = @_;
26
27print STDERR "Delete ", $self->id, ",", $name, ",", $self->meta_owner_type, ")\n";
28 BSE::DB->run(bseDeleteArticleFileMetaByName => $self->id, $name, $self->meta_owner_type);
29}
30
31sub add_meta {
32 my ($self, %opts) = @_;
33
34 require BSE::TB::Metadata;
35 return BSE::TB::Metadata->make
36 (
37 file_id => $self->id,
38 owner_type => $self->meta_owner_type,
39 %opts,
40 );
41}
42
43sub metadata {
44 my ($self) = @_;
45
46 require BSE::TB::Metadata;
47 return BSE::TB::Metadata->getBy
48 (
49 file_id => $self->id,
50 owner_type => $self->meta_owner_type,
51 );
52}
53
54sub text_metadata {
55 my ($self) = @_;
56
57 require BSE::TB::Metadata;
58 return BSE::TB::Metadata->getBy
59 (
60 file_id => $self->id,
61 owner_type => $self->meta_owner_type,
62 content_type => "text/plain",
63 );
64}
65
66sub meta_by_name {
67 my ($self, $name) = @_;
68
69 require BSE::TB::Metadata;
70 my ($result) = BSE::TB::Metadata->getBy
71 (
72 file_id => $self->id,
73 owner_type => $self->meta_owner_type,
74 name => $name
75 )
76 or return;
77
78 return $result;
79}
80
811;