Reader/Feed.php
[web.Reader] / Reader.php
1 <?php
2
3
4
5 require_once 'Pman.php';
6
7 require_once 'Pman/Core/AssetTrait.php'; // includes Traits...
8
9
10 class Reader extends Pman
11 {
12     use Pman_Core_AssetTrait;   // output Compiled JS/CSS
13     // outputCssDir()
14     // outputJavascriptDir()
15     
16     var $template = 'feeds.html';
17     
18     var $view_has_read = 0;
19     
20     function getAuth()
21     {
22         parent::getAuth();
23         
24         
25         if (!$this->getAuthUser()) {
26              
27             return 'Login';
28         }
29         
30     }
31     function get()
32     {
33         if (!empty($_REQUEST['test-bs'])) {
34              
35             $this->masterTemplate = 'master-bs.html';
36         }
37         
38         if (!empty($_REQUEST['show_read'])) {
39             $this->view_has_read = 1;
40             
41         }
42         
43         // list of feeds and how many unread..
44         //DB_DataObject::debugLevel(1);
45         $p= DB_DataObject::factory('reader_sub');
46         $p->person_id = $this->authUser->id;
47         if (!$p->count()) {
48             // user is not subscribed to anything..
49             // so send them off to sign up to stuff.
50             header("Location: {$this->baseURL}/Manage/Add");
51             exit;
52         }
53         
54         
55         $ufeeds = $p->fetchAll('feed_id');
56         $feed = DB_DataObject::factory('reader_feed');
57         $feed->whereAddin('reader_feed.id', $ufeeds, 'int');
58         $feed->autoJoin();
59         $feed->_join .= "
60                 LEFT JOIN (SELECT feed_id,
61                     sum(CASE when  has_read = false THEN 1 ELSE 0 END) as  no_unread,
62                     count(id) as   no_avail 
63                       
64                  FROM
65                     reader_read
66                 WHERE 
67                     person_id = {$this->authUser->id}
68                 GROUP BY feed_id
69             )x ON
70             x.feed_id = reader_feed.id";
71         
72         $feed->selectAdd("no_unread, no_avail");
73         
74         if ($this->view_has_read) {
75             
76              
77         } else { 
78             $feed->whereAdd('no_unread > 0');
79         }
80         //DB_DataObject::debugLevel(1);
81         $all_feed = clone($feed);
82         $this->feeds = $feed->fetchAll();
83         
84         return; // what's summary used for?
85     
86     
87     
88         // total read / un-read ?? since when??
89         $all_feed->selectAdd();
90         $all_feed->selectAdd(" 
91             SUM((SELECT
92                     count( reader_read.id )
93                 FROM
94                     reader_read
95                 WHERE
96                     person_id = {$this->authUser->id}
97                 AND
98                     feed_id = reader_feed.id
99                 AND
100                     has_read = false
101             )) as no_unread,
102                 
103             SUM((SELECT
104                     count( reader_read.id )
105                 FROM
106                     reader_read
107                 LEFT JOIN
108                     reader_article
109                 ON
110                     reader_read.article_id = reader_article.id
111                 WHERE
112                     person_id = {$this->authUser->id}
113                 AND
114                     reader_read.feed_id = reader_feed.id
115                 AND
116                     (
117                         reader_read.read_dt > NOW() - INTERVAL 1 DAY
118                         OR
119                         reader_read.has_read = false
120                     )
121             )) as no_avail
122             
123         ");
124         $all_feed->find(true);
125         $this->summary = $all_feed;
126         
127         //exit;
128     }
129     
130     
131     
132     function herr( $error_name, $args = array(), $redirect=false )
133     {
134         
135         if($redirect !== false){
136             $args['errors'][$error_name] = 1;
137 //            print_r($args);exit;
138             $this->addEvent('FRONTEND:'.$error_name,  (empty($args['error_on'])) ? false : $args['error_on'], $error_name);
139             return HTML_FlexyFramework::run($redirect, $args);
140         }
141         
142         $this->errors[$error_name] = 1;
143         $this->elements =  HTML_Template_Flexy_Factory::fromArray($_REQUEST, $this->elements);
144         $this->addEvent('FRONTEND:'.$error_name,  (empty($args['error_on'])) ? false : $args['error_on'], $error_name);
145         
146         return true;
147     }
148     
149     
150  
151     
152     
153 }