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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2 by dpavlin, Sat Feb 17 16:17:18 2007 UTC revision 167 by dpavlin, Wed Jul 4 09:37:18 2007 UTC
# Line 4  use warnings; Line 4  use warnings;
4  package Grep::Model::Feed;  package Grep::Model::Feed;
5  use Jifty::DBI::Schema;  use Jifty::DBI::Schema;
6    
7    use Feed::Find;
8    use Scalar::Defer;
9    use Grep::Model::User;
10    
11  use Grep::Record schema {  use Grep::Record schema {
12    
13          column uri =>          column uri =>
14                  type is 'text',                  type is 'text',
15                  label is 'URI',                  label is 'URI',
16                  is mandatory,                  hints is 'Replace search string in URI with %s (grep will be replaced automatically)',
17                  distinct;                  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  };  };
53    
54    sub since { '0.0.1' }
55    
56  # Your model-specific methods go here.  # Your model-specific methods go here.
57    
58    =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            $uri =~ s/^https:/http:/;
73            $uri =~ s/\Q|!|\E/;/g;
74            $uri =~ s/{x!(26|3b)}/chr(hex($1))/gei;
75            return sprintf( $uri, $search );
76    }
77    
78    =head2 home_page_uri
79    
80      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    sub current_user_can {
95            my $self = shift;
96            my $what = shift;
97    
98            my $uid = Jifty->web->current_user->id;
99    
100            # superuser
101            return 1 if ( defined $uid && $uid == 0 );
102    
103            return 1 if ( $uid && $what eq 'create' );
104    
105            return 1 if ( $uid && ! $self->id );
106    
107            return 1 if ( $uid && $uid == $self->owner->id );
108    
109            #warn "$uid can't $what";
110    }
111    
112  1;  1;
113    

Legend:
Removed from v.2  
changed lines
  Added in v.167

  ViewVC Help
Powered by ViewVC 1.1.26