diff options
author | Nicolas Lœuillet <nicolas@loeuillet.org> | 2014-07-11 16:03:59 +0200 |
---|---|---|
committer | Nicolas Lœuillet <nicolas@loeuillet.org> | 2014-07-11 16:03:59 +0200 |
commit | 3602405ec0dbc576fce09ff9e865ba2404622080 (patch) | |
tree | 45f9de611f4936091b0ed29a6a21fa4fef9b330b /inc/poche/Routing.class.php | |
parent | 6400371ff93782d25cdbd50aa224c70145b3890a (diff) | |
download | wallabag-3602405ec0dbc576fce09ff9e865ba2404622080.tar.gz wallabag-3602405ec0dbc576fce09ff9e865ba2404622080.tar.zst wallabag-3602405ec0dbc576fce09ff9e865ba2404622080.zip |
WHAT. A. BIG. REFACTOR. + new license (we moved to MIT one)
Diffstat (limited to 'inc/poche/Routing.class.php')
-rw-r--r-- | inc/poche/Routing.class.php | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/inc/poche/Routing.class.php b/inc/poche/Routing.class.php new file mode 100644 index 00000000..7e259c24 --- /dev/null +++ b/inc/poche/Routing.class.php | |||
@@ -0,0 +1,149 @@ | |||
1 | <?php | ||
2 | /** | ||
3 | * wallabag, self hostable application allowing you to not miss any content anymore | ||
4 | * | ||
5 | * @category wallabag | ||
6 | * @author Nicolas Lœuillet <nicolas@loeuillet.org> | ||
7 | * @copyright 2013 | ||
8 | * @license http://opensource.org/licenses/MIT see COPYING file | ||
9 | */ | ||
10 | |||
11 | class Routing | ||
12 | { | ||
13 | protected $wallabag; | ||
14 | protected $referer; | ||
15 | protected $view; | ||
16 | protected $action; | ||
17 | protected $id; | ||
18 | protected $url; | ||
19 | protected $file; | ||
20 | protected $defaultVars = array(); | ||
21 | protected $vars = array(); | ||
22 | |||
23 | public function __construct(Poche $wallabag) | ||
24 | { | ||
25 | $this->wallabag = $wallabag; | ||
26 | $this->_init(); | ||
27 | } | ||
28 | |||
29 | private function _init() | ||
30 | { | ||
31 | # Parse GET & REFERER vars | ||
32 | $this->referer = empty($_SERVER['HTTP_REFERER']) ? '' : $_SERVER['HTTP_REFERER']; | ||
33 | $this->view = Tools::checkVar('view', 'home'); | ||
34 | $this->action = Tools::checkVar('action'); | ||
35 | $this->id = Tools::checkVar('id'); | ||
36 | $_SESSION['sort'] = Tools::checkVar('sort', 'id'); | ||
37 | $this->url = new Url((isset ($_GET['url'])) ? $_GET['url'] : ''); | ||
38 | } | ||
39 | |||
40 | public function run() | ||
41 | { | ||
42 | # vars to _always_ send to templates | ||
43 | $this->defaultVars = array( | ||
44 | 'referer' => $this->referer, | ||
45 | 'view' => $this->view, | ||
46 | 'poche_url' => Tools::getPocheUrl(), | ||
47 | 'title' => _('wallabag, a read it later open source system'), | ||
48 | 'token' => \Session::getToken(), | ||
49 | 'theme' => $this->wallabag->tpl->getTheme() | ||
50 | ); | ||
51 | |||
52 | $this->_launchAction(); | ||
53 | $this->_defineTplInformation(); | ||
54 | |||
55 | # because messages can be added in $poche->action(), we have to add this entry now (we can add it before) | ||
56 | $this->vars = array_merge($this->vars, array('messages' => $this->wallabag->messages->display('all', FALSE))); | ||
57 | |||
58 | $this->_render($this->file, $this->vars); | ||
59 | } | ||
60 | |||
61 | private function _defineTplInformation() | ||
62 | { | ||
63 | $tplFile = array(); | ||
64 | $tplVars = array(); | ||
65 | |||
66 | if (\Session::isLogged()) { | ||
67 | $this->wallabag->action($this->action, $this->url, $this->id); | ||
68 | $tplFile = Tools::getTplFile($this->view); | ||
69 | $tplVars = array_merge($this->vars, $this->wallabag->displayView($this->view, $this->id)); | ||
70 | } elseif(isset($_SERVER['PHP_AUTH_USER'])) { | ||
71 | if($this->wallabag->store->userExists($_SERVER['PHP_AUTH_USER'])) { | ||
72 | $this->wallabag->login($this->referer); | ||
73 | } else { | ||
74 | $this->wallabag->messages->add('e', _('login failed: user doesn\'t exist')); | ||
75 | Tools::logm('user doesn\'t exist'); | ||
76 | $tplFile = Tools::getTplFile('login'); | ||
77 | $tplVars['http_auth'] = 1; | ||
78 | } | ||
79 | } elseif(isset($_SERVER['REMOTE_USER'])) { | ||
80 | if($this->wallabag->store->userExists($_SERVER['REMOTE_USER'])) { | ||
81 | $this->wallabag->login($this->referer); | ||
82 | } else { | ||
83 | $this->wallabag->messages->add('e', _('login failed: user doesn\'t exist')); | ||
84 | Tools::logm('user doesn\'t exist'); | ||
85 | $tplFile = Tools::getTplFile('login'); | ||
86 | $tplVars['http_auth'] = 1; | ||
87 | } | ||
88 | } else { | ||
89 | $tplFile = Tools::getTplFile('login'); | ||
90 | $tplVars['http_auth'] = 0; | ||
91 | \Session::logout(); | ||
92 | } | ||
93 | |||
94 | $this->file = $tplFile; | ||
95 | $this->vars = array_merge($this->defaultVars, $tplVars); | ||
96 | } | ||
97 | |||
98 | private function _launchAction() | ||
99 | { | ||
100 | if (isset($_GET['login'])) { | ||
101 | // hello you | ||
102 | $this->wallabag->login($this->referer); | ||
103 | } elseif (isset($_GET['logout'])) { | ||
104 | // see you soon ! | ||
105 | $this->wallabag->logout(); | ||
106 | } elseif (isset($_GET['config'])) { | ||
107 | // update password | ||
108 | $this->wallabag->updatePassword(); | ||
109 | } elseif (isset($_GET['newuser'])) { | ||
110 | $this->wallabag->createNewUser(); | ||
111 | } elseif (isset($_GET['deluser'])) { | ||
112 | $this->wallabag->deleteUser(); | ||
113 | } elseif (isset($_GET['epub'])) { | ||
114 | $this->wallabag->createEpub(); | ||
115 | } elseif (isset($_GET['import'])) { | ||
116 | $import = $this->wallabag->import(); | ||
117 | $tplVars = array_merge($this->vars, $import); | ||
118 | } elseif (isset($_GET['download'])) { | ||
119 | Tools::downloadDb(); | ||
120 | } elseif (isset($_GET['empty-cache'])) { | ||
121 | $this->wallabag->emptyCache(); | ||
122 | } elseif (isset($_GET['export'])) { | ||
123 | $this->wallabag->export(); | ||
124 | } elseif (isset($_GET['updatetheme'])) { | ||
125 | $this->wallabag->tpl->updateTheme($_POST['theme']); | ||
126 | } elseif (isset($_GET['updatelanguage'])) { | ||
127 | $this->wallabag->language->updateLanguage($_POST['language']); | ||
128 | } elseif (isset($_GET['uploadfile'])) { | ||
129 | $this->wallabag->uploadFile(); | ||
130 | } elseif (isset($_GET['feed'])) { | ||
131 | if (isset($_GET['action']) && $_GET['action'] == 'generate') { | ||
132 | $this->wallabag->generateToken(); | ||
133 | } | ||
134 | else { | ||
135 | $tag_id = (isset($_GET['tag_id']) ? intval($_GET['tag_id']) : 0); | ||
136 | $this->wallabag->generateFeeds($_GET['token'], filter_var($_GET['user_id'],FILTER_SANITIZE_NUMBER_INT), $tag_id, $_GET['type']); | ||
137 | } | ||
138 | } | ||
139 | elseif (isset($_GET['plainurl']) && !empty($_GET['plainurl'])) { | ||
140 | $plainUrl = new Url(base64_encode($_GET['plainurl'])); | ||
141 | $this->wallabag->action('add', $plainUrl); | ||
142 | } | ||
143 | } | ||
144 | |||
145 | private function _render($file, $vars) | ||
146 | { | ||
147 | echo $this->wallabag->tpl->render($file, $vars); | ||
148 | } | ||
149 | } \ No newline at end of file | ||