RSSConfiguration.php 5.6 KB

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