/inc/app/news/lib/Functions.php

https://github.com/durand54/sitellite · PHP · 207 lines · 185 code · 20 blank · 2 comment · 43 complexity · d6cc847c292a37cce71188cc4bdc1f9a MD5 · raw file

  1. <?php
  2. loader_import ('saf.Date');
  3. function news_shortdate ($date) {
  4. return Date::format ($date, appconf ('shortdate'));
  5. }
  6. function news_date ($date) {
  7. return Date::format ($date, appconf ('date'));
  8. }
  9. function news_time ($time) {
  10. return Date::time ($time, appconf ('time'));
  11. }
  12. function news_date_comments ($time) {
  13. return Date::timestamp ($time, appconf ('date_time'));
  14. }
  15. function news_comment_body ($body) {
  16. return preg_replace (
  17. '|(http://[^\r\n\t ]+)|is',
  18. '<a href="\1" target="_blank">\1</a>',
  19. str_replace (
  20. NEWLINE,
  21. '<br />' . NEWLINE,
  22. htmlentities_compat ($body)
  23. )
  24. );
  25. }
  26. function news_comment_body_email ($body) {
  27. return htmlentities_compat ($body);
  28. }
  29. function news_page_split ($body) {
  30. return preg_split ('/<hr[^>]*>/is', $body);
  31. }
  32. function news_page_nav ($pages, $pagenum, $story, $highlight = '') {
  33. if (count ($pages) == 0) {
  34. return '';
  35. }
  36. if (count ($pages) == 1) {
  37. return array_shift ($pages);
  38. }
  39. switch (appconf ('page_nav_style')) {
  40. case 'pager':
  41. // build links
  42. $links = '<p class="news-page-nav">' . intl_get ('Page') . ':';
  43. if (! empty ($highlight)) {
  44. $highlight = '?highlight=' . urlencode ($highlight);
  45. }
  46. if ($pagenum > 1) {
  47. $links .= ' &nbsp; <a href="' . site_prefix () . '/index/news-app/story.' . $story . '/pagenum.' . ($pagenum - 1) . '">' . intl_get ('Previous') . '</a>';
  48. } else {
  49. $links .= ' &nbsp; <span class="news-page-nav-inactive">' . intl_get ('Previous') . '</span>';
  50. }
  51. for ($i = 0; $i < count ($pages); $i++) {
  52. if ($pagenum == ($i + 1)) {
  53. $links .= ' &nbsp; <strong class="news-page-nav-current">' . $pagenum . '</strong>';
  54. } else {
  55. $links .= ' &nbsp; <a href="' . site_prefix () . '/index/news-app/story.' . $story . '/pagenum.' . ($i + 1) . $highlight . '">' . ($i + 1) . '</a>';
  56. }
  57. }
  58. if ($pagenum != 'all' && $pagenum < count ($pages)) {
  59. $links .= ' &nbsp; <a href="' . site_prefix () . '/index/news-app/story.' . $story . '/pagenum.' . ($pagenum + 1) . '">' . intl_get ('Next') . '</a>';
  60. } else {
  61. $links .= ' &nbsp; <span class="news-page-nav-inactive">' . intl_get ('Next') . '</span>';
  62. }
  63. if ($pagenum == 'all') {
  64. $links .= ' &nbsp; <strong class="news-page-nav-current">' . intl_get ('All') . '</strong>';
  65. } else {
  66. $links .= ' &nbsp; <a href="' . site_prefix () . '/index/news-app/story.' . $story . '/pagenum.all">' . intl_get ('All') . '</a>';
  67. }
  68. $links .= '</p>';
  69. break;
  70. case 'headers':
  71. $links = '';
  72. $op = '';
  73. foreach ($pages as $k => $page) {
  74. if ($k + 1 == $pagenum) {
  75. if (preg_match ('|<(h[0-6]).*?' . '>([^<]+)</\1>|is', $page, $regs)) {
  76. $links .= $op . intl_get ('Page') . ' ' . ($k + 1) . ': ' . $regs[2] . '';
  77. $op = "<br />\n";
  78. } else {
  79. $text = trim (strip_tags ($page));
  80. $links .= $op . intl_get ('Page') . ' ' . ($k + 1) . ': ' . substr ($text, 0, 32) . '...';
  81. $op = "<br />\n";
  82. }
  83. } else {
  84. if (preg_match ('|<(h[0-6]).*?' . '>([^<]+)</\1>|is', $page, $regs)) {
  85. $links .= $op . intl_get ('Page') . ' ' . ($k + 1) . ': <a href="' . site_prefix () . '/index/news-app/story.' . $story . '/pagenum.' . ($k + 1) . '">' . $regs[2] . '</a>';
  86. $op = "<br />\n";
  87. } else {
  88. $text = trim (strip_tags ($page));
  89. $links .= $op . intl_get ('Page') . ' ' . ($k + 1) . ': <a href="' . site_prefix () . '/index/news-app/story.' . $story . '/pagenum.' . ($k + 1) . '">' . substr ($text, 0, 32) . '...</a>';
  90. $op = "<br />\n";
  91. }
  92. }
  93. }
  94. if (! empty ($links)) {
  95. $links = '<p class="news-page-nav">' . $links . '</p>';
  96. }
  97. break;
  98. case 'prev-next':
  99. $links = '';
  100. if (isset ($pages[$pagenum - 2])) {
  101. $prev = $pages[$pagenum - 2];
  102. if (preg_match ('|<(h[0-6]).*?' . '>([^<]+)</\1>|is', $prev, $regs)) {
  103. $links .= intl_get ('Previous') . ': <a href="' . site_prefix () . '/index/news-app/story.' . $story . '/pagenum.' . ($pagenum - 1) . '">' . $regs[2] . '</a>';
  104. } else {
  105. $text = trim (strip_tags ($prev));
  106. $links .= intl_get ('Previous') . ': <a href="' . site_prefix () . '/index/news-app/story.' . $story . '/pagenum.' . ($pagenum - 1) . '">' . substr ($text, 0, 32) . '...</a>';
  107. $op = "<br />\n";
  108. }
  109. }
  110. if (isset ($pages[$pagenum])) {
  111. $next = $pages[$pagenum];
  112. if (preg_match ('|<(h[0-6]).*?' . '>([^<]+)</\1>|is', $next, $regs)) {
  113. if (! empty ($links)) {
  114. $links .= "<br />\n";
  115. }
  116. $links .= intl_get ('Next') . ': <a href="' . site_prefix () . '/index/news-app/story.' . $story . '/pagenum.' . ($pagenum + 1) . '">' . $regs[2] . '</a>';
  117. } else {
  118. if (! empty ($links)) {
  119. $links .= "<br />\n";
  120. }
  121. $text = trim (strip_tags ($next));
  122. $links .= intl_get ('Next') . ': <a href="' . site_prefix () . '/index/news-app/story.' . $story . '/pagenum.' . ($pagenum + 1) . '">' . substr ($text, 0, 32) . '...</a>';
  123. $op = "<br />\n";
  124. }
  125. }
  126. if (! empty ($links)) {
  127. $links = '<p class="news-page-nav">' . $links . '</p>';
  128. }
  129. break;
  130. default:
  131. $links = '';
  132. }
  133. // remove leading/trailing breaks from body
  134. $body = "";
  135. foreach (array_keys ($pages) as $n) {
  136. $pages[$n] = preg_replace ('/^([\r\n\t ]*<br[^>]*>[\r\n\t ]*)*/is', '', $pages[$n]);
  137. $pages[$n] = preg_replace ('/([\r\n\t ]*<br[^>]*>[\r\n\t ]*)*$/is', '', $pages[$n]);
  138. $body .= NEWLINE;
  139. if ($pagenum == 'all') {
  140. $body .= '<div class="news-split" id="news-page' . ($n + 1) . '">' . $pages[$n] . '</div>';
  141. if ($n != count ($pages) - 1) {
  142. $body .= '<p class="news-spacer"></p>';
  143. }
  144. } elseif ($n == $pagenum - 1) {
  145. $body .= '<div class="news-split" id="news-page' . ($n + 1) . '">' . $pages[$n] . '</div>';
  146. } else {
  147. $body .= '<div class="news-hidden news-split" id="news-page' . ($n + 1) . '">' . $pages[$n] . '</div>';
  148. }
  149. }
  150. switch (appconf ('page_nav_location')) {
  151. case 'top':
  152. return $links . $body . '<p class="news-spacer"></p>';
  153. case 'bottom':
  154. return $body . '<p class="news-spacer"></p>' . $links;
  155. case 'both':
  156. default:
  157. return $links . $body . '<p class="news-spacer"></p>' . $links;
  158. }
  159. }
  160. function news_highlight ($text) {
  161. global $cgi;
  162. return preg_replace ('/(' . preg_quote ($cgi->query, '/') . ')/i', '<strong>\1</strong>', htmlentities_compat ($text));
  163. }
  164. function news_get_categories () {
  165. $list = array ();
  166. foreach (db_fetch_array ('select * from sitellite_news_category') as $row) {
  167. $list[] = $row->name;
  168. }
  169. return $list;
  170. }
  171. function news_timezone ($offset) {
  172. $out = $offset[0];
  173. $offset = substr ($offset, 1);
  174. $h = floor ($offset / 3600);
  175. $m = floor (($offset % 3600) / 60);
  176. return $out . str_pad ($h, 2, '0', STR_PAD_LEFT) . ':' . str_pad ($m, 2, '0', STR_PAD_LEFT);
  177. }
  178. function news_link_title ($t) {
  179. return strtolower (
  180. preg_replace (
  181. '/[^a-zA-Z0-9]+/',
  182. '-',
  183. $t
  184. )
  185. );
  186. }
  187. ?>