RSSConfiguration.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. <?php
  2. class RSSConfiguration extends Model {
  3. private $available_languages = array (
  4. 'en' => 'English',
  5. 'fr' => 'Français',
  6. );
  7. private $language;
  8. private $posts_per_page;
  9. private $view_mode;
  10. private $default_view;
  11. private $display_posts;
  12. private $lazyload;
  13. private $sort_order;
  14. private $old_entries;
  15. private $shortcuts = array ();
  16. private $mail_login = '';
  17. private $mark_when = array ();
  18. private $url_shaarli = '';
  19. public function __construct () {
  20. $confDAO = new RSSConfigurationDAO ();
  21. $this->_language ($confDAO->language);
  22. $this->_postsPerPage ($confDAO->posts_per_page);
  23. $this->_viewMode ($confDAO->view_mode);
  24. $this->_defaultView ($confDAO->default_view);
  25. $this->_displayPosts ($confDAO->display_posts);
  26. $this->_lazyload ($confDAO->lazyload);
  27. $this->_sortOrder ($confDAO->sort_order);
  28. $this->_oldEntries ($confDAO->old_entries);
  29. $this->_shortcuts ($confDAO->shortcuts);
  30. $this->_mailLogin ($confDAO->mail_login);
  31. $this->_markWhen ($confDAO->mark_when);
  32. $this->_urlShaarli ($confDAO->url_shaarli);
  33. }
  34. public function availableLanguages () {
  35. return $this->available_languages;
  36. }
  37. public function language () {
  38. return $this->language;
  39. }
  40. public function postsPerPage () {
  41. return $this->posts_per_page;
  42. }
  43. public function viewMode () {
  44. return $this->view_mode;
  45. }
  46. public function defaultView () {
  47. return $this->default_view;
  48. }
  49. public function displayPosts () {
  50. return $this->display_posts;
  51. }
  52. public function lazyload () {
  53. return $this->lazyload;
  54. }
  55. public function sortOrder () {
  56. return $this->sort_order;
  57. }
  58. public function oldEntries () {
  59. return $this->old_entries;
  60. }
  61. public function shortcuts () {
  62. return $this->shortcuts;
  63. }
  64. public function mailLogin () {
  65. return $this->mail_login;
  66. }
  67. public function markWhen () {
  68. return $this->mark_when;
  69. }
  70. public function markWhenArticle () {
  71. return $this->mark_when['article'];
  72. }
  73. public function markWhenSite () {
  74. return $this->mark_when['site'];
  75. }
  76. public function markWhenPage () {
  77. return $this->mark_when['page'];
  78. }
  79. public function urlShaarli () {
  80. return $this->url_shaarli;
  81. }
  82. public function _language ($value) {
  83. if (!isset ($this->available_languages[$value])) {
  84. $value = 'en';
  85. }
  86. $this->language = $value;
  87. }
  88. public function _postsPerPage ($value) {
  89. if (is_int (intval ($value)) && $value > 0) {
  90. $this->posts_per_page = $value;
  91. } else {
  92. $this->posts_per_page = 10;
  93. }
  94. }
  95. public function _viewMode ($value) {
  96. if ($value == 'global' || $value == 'reader') {
  97. $this->view_mode = $value;
  98. } else {
  99. $this->view_mode = 'normal';
  100. }
  101. }
  102. public function _defaultView ($value) {
  103. if ($value == 'not_read') {
  104. $this->default_view = 'not_read';
  105. } else {
  106. $this->default_view = 'all';
  107. }
  108. }
  109. public function _displayPosts ($value) {
  110. if ($value == 'yes') {
  111. $this->display_posts = 'yes';
  112. } else {
  113. $this->display_posts = 'no';
  114. }
  115. }
  116. public function _lazyload ($value) {
  117. if ($value == 'no') {
  118. $this->lazyload = 'no';
  119. } else {
  120. $this->lazyload = 'yes';
  121. }
  122. }
  123. public function _sortOrder ($value) {
  124. if ($value == 'high_to_low') {
  125. $this->sort_order = 'high_to_low';
  126. } else {
  127. $this->sort_order = 'low_to_high';
  128. }
  129. }
  130. public function _oldEntries ($value) {
  131. if (is_int (intval ($value)) && $value > 0) {
  132. $this->old_entries = $value;
  133. } else {
  134. $this->old_entries = 3;
  135. }
  136. }
  137. public function _shortcuts ($values) {
  138. foreach ($values as $key => $value) {
  139. $this->shortcuts[$key] = $value;
  140. }
  141. }
  142. public function _mailLogin ($value) {
  143. if (filter_var ($value, FILTER_VALIDATE_EMAIL)) {
  144. $this->mail_login = $value;
  145. } elseif ($value == false) {
  146. $this->mail_login = false;
  147. }
  148. }
  149. public function _markWhen ($values) {
  150. $this->mark_when['article'] = $values['article'];
  151. $this->mark_when['site'] = $values['site'];
  152. $this->mark_when['page'] = $values['page'];
  153. }
  154. public function _urlShaarli ($value) {
  155. $this->url_shaarli = '';
  156. if (filter_var ($value, FILTER_VALIDATE_URL)) {
  157. $this->url_shaarli = $value;
  158. }
  159. }
  160. }
  161. class RSSConfigurationDAO extends Model_array {
  162. public $language = 'en';
  163. public $posts_per_page = 20;
  164. public $view_mode = 'normal';
  165. public $default_view = 'not_read';
  166. public $display_posts = 'no';
  167. public $lazyload = 'yes';
  168. public $sort_order = 'low_to_high';
  169. public $old_entries = 3;
  170. public $shortcuts = array (
  171. 'mark_read' => 'r',
  172. 'mark_favorite' => 'f',
  173. 'go_website' => 'space',
  174. 'next_entry' => 'j',
  175. 'prev_entry' => 'k',
  176. 'next_page' => 'right',
  177. 'prev_page' => 'left',
  178. );
  179. public $mail_login = '';
  180. public $mark_when = array (
  181. 'article' => 'yes',
  182. 'site' => 'yes',
  183. 'page' => 'no'
  184. );
  185. public $url_shaarli = '';
  186. public function __construct () {
  187. parent::__construct (PUBLIC_PATH . '/data/Configuration.array.php');
  188. if (isset ($this->array['language'])) {
  189. $this->language = $this->array['language'];
  190. }
  191. if (isset ($this->array['posts_per_page'])) {
  192. $this->posts_per_page = $this->array['posts_per_page'];
  193. }
  194. if (isset ($this->array['view_mode'])) {
  195. $this->view_mode = $this->array['view_mode'];
  196. }
  197. if (isset ($this->array['default_view'])) {
  198. $this->default_view = $this->array['default_view'];
  199. }
  200. if (isset ($this->array['display_posts'])) {
  201. $this->display_posts = $this->array['display_posts'];
  202. }
  203. if (isset ($this->array['lazyload'])) {
  204. $this->lazyload = $this->array['lazyload'];
  205. }
  206. if (isset ($this->array['sort_order'])) {
  207. $this->sort_order = $this->array['sort_order'];
  208. }
  209. if (isset ($this->array['old_entries'])) {
  210. $this->old_entries = $this->array['old_entries'];
  211. }
  212. if (isset ($this->array['shortcuts'])) {
  213. $this->shortcuts = $this->array['shortcuts'];
  214. }
  215. if (isset ($this->array['mail_login'])) {
  216. $this->mail_login = $this->array['mail_login'];
  217. }
  218. if (isset ($this->array['mark_when'])) {
  219. $this->mark_when = $this->array['mark_when'];
  220. }
  221. if (isset ($this->array['url_shaarli'])) {
  222. $this->url_shaarli = $this->array['url_shaarli'];
  223. }
  224. }
  225. public function update ($values) {
  226. foreach ($values as $key => $value) {
  227. $this->array[$key] = $value;
  228. }
  229. $this->writeFile($this->array);
  230. }
  231. }