/[Grep]/lib/Grep/Model/Feed.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /lib/Grep/Model/Feed.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 196 - (show annotations)
Wed May 28 17:52:06 2008 UTC (15 years, 11 months ago) by dpavlin
File size: 2320 byte(s)
added login and passwd to feed model in preparation
to handle 401 Authorization Required
1 use strict;
2 use warnings;
3
4 package Grep::Model::Feed;
5 use Jifty::DBI::Schema;
6
7 use Feed::Find;
8 use Scalar::Defer;
9 use Grep::Model::User;
10
11 use Grep::Record schema {
12
13 column uri =>
14 type is 'text',
15 label is 'URI',
16 hints is 'Replace search string in URI with %s (grep will be replaced automatically)',
17 is mandatory;
18
19 column title =>
20 type is 'text',
21 label is 'Title',
22 hints is 'Use something descriptive to you',
23 since '0.0.2';
24
25 column cookie =>
26 type is 'text',
27 label is 'Cookie',
28 render as 'textarea',
29 hints is 'If you leave Cookie data Grep will impersonate you to feed provider!',
30 since '0.0.3';
31
32 column owner =>
33 refers_to Grep::Model::User by 'id',
34 label is 'Feed owner',
35 default is defer { Jifty->web->current_user->id },
36 since '0.0.5';
37
38 column created_on =>
39 type is 'timestamp',
40 label is 'Created On',
41 default is defer { DateTime->now },
42 filters are 'Jifty::DBI::Filter::DateTime',
43 since '0.0.5';
44
45 column source =>
46 type is 'text',
47 label is 'Source',
48 default is 'Grep::Source::Feed',
49 # available are defer { Grep::Source::Feed->sources },
50 since '0.0.6';
51
52 column login =>
53 type is 'text',
54 label is 'Login',
55 since '0.0.8';
56
57 column passwd =>
58 type is 'text',
59 label is 'Login',
60 since '0.0.8';
61
62 };
63
64 sub since { '0.0.1' }
65
66 # Your model-specific methods go here.
67
68 =head2 search_uri
69
70 print $feed->search_uri('search string');
71
72 This function will decode field delimiters C<|!|> into normal C<;>
73 (which are protected to make AJAX validation work)
74
75 =cut
76
77 sub search_uri {
78 my $self = shift;
79 my $search = shift;
80
81 my $uri = $self->uri or die "no uri?";
82 $uri =~ s/^https:/http:/;
83 $uri =~ s/\Q|!|\E/;/g;
84 $uri =~ s/{x!(26|3b)}/chr(hex($1))/gei;
85 return sprintf( $uri, $search );
86 }
87
88 =head2 home_page_uri
89
90 print $feed->home_page_uri
91
92 Try to strip search arguments from C<uri> and construct home page URI
93
94 =cut
95
96 sub home_page_uri {
97 my $self = shift;
98 my $uri = $self->search_uri('foo');
99 $uri =~ s/\?.*$//g;
100 return $uri;
101 }
102
103
104 sub current_user_can {
105 my $self = shift;
106 my $what = shift;
107
108 my $uid = Jifty->web->current_user->id;
109
110 # superuser
111 return 1 if ( defined $uid && $uid == 0 );
112
113 return 1 if ( $uid && $what eq 'create' );
114
115 return 1 if ( $uid && ! $self->id );
116
117 return 1 if ( $uid && $uid == $self->owner->id );
118
119 #warn "$uid can't $what";
120 }
121
122 1;
123

  ViewVC Help
Powered by ViewVC 1.1.26