/[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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 167 - (hide annotations)
Wed Jul 4 09:37:18 2007 UTC (16 years, 10 months ago) by dpavlin
File size: 2173 byte(s)
hush warning
1 dpavlin 2 use strict;
2     use warnings;
3    
4     package Grep::Model::Feed;
5     use Jifty::DBI::Schema;
6    
7 dpavlin 19 use Feed::Find;
8 dpavlin 58 use Scalar::Defer;
9     use Grep::Model::User;
10 dpavlin 19
11 dpavlin 2 use Grep::Record schema {
12    
13     column uri =>
14     type is 'text',
15     label is 'URI',
16 dpavlin 19 hints is 'Replace search string in URI with %s (grep will be replaced automatically)',
17 dpavlin 65 is mandatory;
18 dpavlin 2
19 dpavlin 3 column title =>
20     type is 'text',
21 dpavlin 19 label is 'Title',
22 dpavlin 12 hints is 'Use something descriptive to you',
23 dpavlin 3 since '0.0.2';
24    
25 dpavlin 19 column cookie =>
26     type is 'text',
27     label is 'Cookie',
28     render as 'textarea',
29 dpavlin 73 hints is 'If you leave Cookie data Grep will impersonate you to feed provider!',
30 dpavlin 19 since '0.0.3';
31    
32 dpavlin 58 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 dpavlin 73 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 dpavlin 2 };
53    
54 dpavlin 3 sub since { '0.0.1' }
55    
56 dpavlin 2 # Your model-specific methods go here.
57    
58 dpavlin 19 =head2 search_uri
59    
60     print $feed->search_uri('search string');
61    
62     This function will decode field delimiters C<|!|> into normal C<;>
63     (which are protected to make AJAX validation work)
64    
65     =cut
66    
67     sub search_uri {
68     my $self = shift;
69     my $search = shift;
70    
71     my $uri = $self->uri or die "no uri?";
72 dpavlin 124 $uri =~ s/^https:/http:/;
73 dpavlin 19 $uri =~ s/\Q|!|\E/;/g;
74 dpavlin 81 $uri =~ s/{x!(26|3b)}/chr(hex($1))/gei;
75 dpavlin 19 return sprintf( $uri, $search );
76     }
77    
78 dpavlin 166 =head2 home_page_uri
79 dpavlin 19
80 dpavlin 166 print $feed->home_page_uri
81    
82     Try to strip search arguments from C<uri> and construct home page URI
83    
84     =cut
85    
86     sub home_page_uri {
87     my $self = shift;
88     my $uri = $self->search_uri('foo');
89     $uri =~ s/\?.*$//g;
90     return $uri;
91     }
92    
93    
94 dpavlin 37 sub current_user_can {
95     my $self = shift;
96     my $what = shift;
97    
98 dpavlin 58 my $uid = Jifty->web->current_user->id;
99 dpavlin 37
100 dpavlin 143 # superuser
101     return 1 if ( defined $uid && $uid == 0 );
102 dpavlin 58
103 dpavlin 143 return 1 if ( $uid && $what eq 'create' );
104    
105 dpavlin 58 return 1 if ( $uid && ! $self->id );
106    
107 dpavlin 120 return 1 if ( $uid && $uid == $self->owner->id );
108 dpavlin 58
109 dpavlin 167 #warn "$uid can't $what";
110 dpavlin 37 }
111    
112 dpavlin 2 1;
113    

  ViewVC Help
Powered by ViewVC 1.1.26