9935820b864eed66acd958e65af1da249457d493
[bse.git] / site / cgi-bin / modules / BSE / MetaOwnerBase.pm
1 package BSE::MetaOwnerBase;
2 use strict;
3
4 our $VERSION = "1.000";
5
6 sub clear_metadata {
7   my ($self) = @_;
8
9   BSE::DB->run(bseClearArticleFileMetadata => $self->id, $self->meta_owner_type);
10 }
11
12 sub clear_app_metadata {
13   my ($self) = @_;
14
15   BSE::DB->run(bseClearArticleFileAppMetadata => $self->id, $self->meta_owner_type);
16 }
17
18 sub clear_sys_metadata {
19   my ($self) = @_;
20
21   BSE::DB->run(bseClearArticleFileSysMetadata => $self->id, $self->meta_owner_type);
22 }
23
24 sub delete_meta_by_name {
25   my ($self, $name) = @_;
26
27 print STDERR "Delete ", $self->id, ",", $name, ",", $self->meta_owner_type, ")\n";
28   BSE::DB->run(bseDeleteArticleFileMetaByName => $self->id, $name, $self->meta_owner_type);
29 }
30
31 sub 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
43 sub 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
54 sub 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
66 sub 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
81 1;