index.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. <?php
  2. session_start();
  3. $http_host = $_SERVER["HTTP_HOST"];
  4. $doc_root = $_SERVER["DOCUMENT_ROOT"] . "/";
  5. include $doc_root . "functions.php";
  6. $proto = get_protocol();
  7. $con = start_db();
  8. $server = $proto . $http_host;
  9. $lang = select_language($con);
  10. $lserver = $server . "/" . $lang;
  11. $cur_section = "blog";
  12. $cur_entry = "";
  13. ?>
  14. <!DOCTYPE html>
  15. <html>
  16. <head>
  17. <meta content='text/html; charset=utf-8' http-equiv='content-type'/>
  18. <meta charset='utf-8'/>
  19. <meta name='viewport' content='width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1'/>
  20. <title><?=text($con, "BLOG_TITLE", $lang)?> - <?=text($con, "USER_NAME", $lang);?></title>
  21. <link rel='shortcut icon' href='<?=$lserver?>/img/logo/favicon.ico'/>
  22. <!-- CSS files -->
  23. <style>
  24. <?php
  25. include $doc_root . "css/ui.css";
  26. include $doc_root . "css/blog.css";
  27. ?>
  28. </style>
  29. <!-- CSS for mobile version -->
  30. <style media='(max-width : 990px)'>
  31. <?php
  32. include $doc_root . "css/m/ui.css";
  33. include $doc_root . "css/m/blog.css";
  34. ?>
  35. </style>
  36. <!-- Script files -->
  37. <script type='text/javascript'>
  38. <?php
  39. include $doc_root . "script/ui.js";
  40. include $doc_root . "script/blog.js";
  41. ?>
  42. </script>
  43. <!-- Meta tags -->
  44. <link rel='canonical' href='<?=$lserver?>/blog/'/>
  45. <link rel='author' href='<?=$lserver?>'/>
  46. <link rel='publisher' href='<?=$lserver?>'/>
  47. <meta name='description' content='<?=text($con, "BLOG_DESCRIPTION", $lang)?>'/>
  48. <meta property='og:title' content='<?=text($con, "BLOG_TITLE", $lang)?> - <?=text($con, "USER_NAME", $lang);?>'/>
  49. <meta property='og:url' content='<?=$lserver?>/blog/'/>
  50. <meta property='og:description' content='<?=text($con, "BLOG_DESCRIPTION", $lang)?>'/>
  51. <meta property='og:image' content='<?=$lserver?>/img/logo/favicon.ico'/>
  52. <meta property='og:site_name' content='<?=text($con, "USER_NAME", $lang);?>'/>
  53. <meta property='og:type' content='website'/>
  54. <meta property='og:locale' content='<?=$lang?>'/>
  55. <meta name='twitter:card' content='summary'/>
  56. <meta name='twitter:title' content='<?=text($con, "BLOG_TITLE", $lang)?> - <?=text($con, "USER_NAME", $lang);?>'/>
  57. <meta name='twitter:description' content='<?=text($con, "BLOG_DESCRIPTION", $lang)?>'/>
  58. <meta name='twitter:image' content='<?=$lserver?>/img/logo/favicon.ico'/>
  59. <meta name='twitter:url' content='<?=$lserver?>/project/'/>
  60. <meta name='robots' content='index follow'/>
  61. </head>
  62. <body>
  63. <?php
  64. include $doc_root . "header.php";
  65. ?>
  66. <div id='content'>
  67. <div id='content_row'>
  68. <div class='content_cell' id='content_cell_main'>
  69. <div id='post_list' class='section'>
  70. <h3 class='section_title'><?=text($con, "BLOG_TITLE", $lang)?></h3>
  71. <?php
  72. $q_blog = mysqli_query($con, "SELECT id, permalink, title, text, DATE_FORMAT(dtime, '%Y-%m-%dT%T') AS isodate, dtime, comments FROM post WHERE visible = 1 ORDER BY dtime DESC;");
  73. while($r_blog = mysqli_fetch_array($q_blog)){
  74. ?>
  75. <div itemscope itemtype='http://schema.org/BlogPosting' class='entry entry_list blog_entry'>
  76. <meta itemprop='inLanguage' content='<?=$lang?>'/>
  77. <meta itemprop='datePublished dateModified' content='<?=$r_blog["isodate"]?>'/>
  78. <meta itemprop='headline name' content='<?=text($con, $r_blog["title"], $lang)?>'/>
  79. <meta itemprop='articleBody text' content='<?=text($con, $r_blog["text"], $lang)?>'/>
  80. <meta itemprop='mainEntityOfPage' content='<?=$lserver?>'/>
  81. <h3 class='entry_title'>
  82. <a itemprop='url' href='<?=$lserver?>/blog/<?=$r_blog["permalink"]?>'><?=text($con, $r_blog["title"], $lang)?></a>
  83. </h3>
  84. <?php
  85. $q_image = mysqli_query($con, "SELECT image FROM post_image WHERE post = $r_blog[id] ORDER BY idx LIMIT 1;");
  86. if (mysqli_num_rows($q_image) > 0){
  87. $r_image = mysqli_fetch_array($q_image);
  88. ?>
  89. <div class='post_list_image_container'>
  90. <a href='<?=$lserver?>/blog/<?=$r_blog["permalink"]?>'>
  91. <meta itemprop='image' content='<?=$lserver?>/img/blog/x4/<?=$r_image["image"]?>'/>
  92. <img class='post_list_image' alt='<?=$r_blog["title"]?>' src='<?=$lserver?>/img/blog/x2/<?=$r_image["image"]?>'/>
  93. </a>
  94. </div>
  95. <?php
  96. }
  97. ?>
  98. <p><?=cut_text(text($con, $r_blog["text"], $lang), 200, text($con, "BLOG_MORE", $lang), "$lserver/blog/$r_blog[permalink]/")?></p>
  99. <hr/>
  100. <table class='post_list_footer'>
  101. <tr>
  102. <td class='date'>
  103. <span class='date'><?=format_date($r_blog['dtime'], $lang, false)?></span>
  104. </td>
  105. <?php
  106. #Comment counter
  107. if ($r_blog["comments"] == 1){
  108. $q_comment = mysqli_query($con, "SELECT count(id) AS count FROM post_comment WHERE post = $r_blog[id] AND approved = 1;");
  109. $r_comment = mysqli_fetch_array($q_comment);
  110. ?>
  111. <meta itemprop='commentCount interationCount' content='<?=$r_comment["count"]?>'/>
  112. <td class='comment_counter'>
  113. <?php
  114. if ($r_comment['count'] == 1){
  115. ?>
  116. <span class='comment_counter'>1 <?=text($con, "BLOG_COMMENTS_1", $lang)?></span>
  117. <?php
  118. }
  119. else if ($r_comment['count'] == 0){
  120. ?>
  121. <span class='comment_counter'><?=text($con, "BLOG_COMMENTS_0", $lang)?></span>
  122. <?php
  123. }
  124. else{
  125. ?>
  126. <span class='comment_counter'><?=$r_comment["count"]?> <?=text($con, "BLOG_COMMENTS_X", $lang)?></span>
  127. <?php
  128. }
  129. ?>
  130. </td>
  131. <?php
  132. } // if ($r_blog["comments"] == 1)
  133. ?>
  134. </tr>
  135. </table> <!-- .post_list_footer -->
  136. <?php
  137. // Tags
  138. $q_tag = mysqli_query($con, "SELECT tag FROM post_tag WHERE post= $r_blog[id];");
  139. if (mysqli_num_rows($q_tag) > 0){
  140. $tag_string = "<span class='tags'>" . text($con, "BLOG_TAGS", $lang);
  141. $tag_raw = "";
  142. while ($r_tag = mysqli_fetch_array($q_tag)){
  143. $tag_string = $tag_string . "<a href='$proto$http_host/blog/search/tag/$r_tag[tag]'> " . text($con, $r_tag["tag"], $lang) . "</a>, ";
  144. $tag_raw = $tag_raw . "$r_tag[tag],";
  145. }
  146. $tag_string = substr($tag_string, 0, strlen($tag_string) - 2);
  147. $tag_string = $tag_string . "</span>";
  148. $tag_raw = substr($tag_raw, 0, strlen($tag_raw) - 1);
  149. ?>
  150. <meta itemprop='keywords' content='<?=$tag_raw?>'/>
  151. <?=$tag_string?>
  152. <?php
  153. }
  154. ?>
  155. </div> <!-- .blog_entry -->
  156. </br>
  157. <?php
  158. } // while($r_blog = mysqli_fetch_array($q_blog))
  159. ?>
  160. </div> <!-- #main_column -->
  161. </div> <!-- #content_cell_main -->
  162. <div class='content_cell' id='content_cell_right'>
  163. <div class='section' id='info'>
  164. <h3 class='section_title'><?=text($con, "BLOG_DETAILS", $lang)?></h3>
  165. <div id='info_search' class='entry'>
  166. <h4><?=text($con, "BLOG_SEARCH", $lang)?></h4>
  167. <div id='search_panel_inputs'>
  168. <form action='#' onSubmit='event.preventDefault();launchSearch("<?=$lng["search_field_all"]?>");'>
  169. <input id='search_panel_input' class='search_element' type='text' name='query' placeholder='<?=text($con, "BLOG_SEARCH", $lang)?>'/>
  170. <input id='search_panel_submit' class='search_element' type='submit' value='<?=text($con, "BLOG_SEARCH", $lang)?>'/>
  171. </form>
  172. </div>
  173. </div> <!-- #info_search -->
  174. <hr/>
  175. <div id='info_tag_cloud' class='entry'>
  176. <h4><?=text($con, "BLOG_TAG_CLOUD", $lang)?></h4>
  177. <div id='cloud'>
  178. <?php
  179. //Get the most used tag
  180. $q_max = mysqli_query($con, "SELECT max(count) AS max FROM (SELECT count(post) AS count FROM post_tag GROUP BY tag) AS t;");
  181. $r_max = mysqli_fetch_array($q_max);
  182. $max = $r_max["max"];
  183. $q_tag = mysqli_query($con, "SELECT tag, count(post) AS count FROM post_tag GROUP BY tag;");
  184. while($r_tag = mysqli_fetch_array($q_tag)){
  185. $size = round(60 + 100 * $r_tag['count'] / $max);
  186. ?>
  187. <a href='<?=$lserver?>/blog/search/tag/<?=$r_tag["tag"]?>'>
  188. <span style='font-size: <?=$size?>%'><?=text($con, $r_tag["tag"], $lang)?></span>
  189. </a>
  190. <?php
  191. }
  192. ?>
  193. </div>
  194. </div> <!-- #info_tag_cloud -->
  195. <hr/>
  196. <div id='info_all' class='entry'>
  197. <h4><?=text($con, "BLOG_ARCHIVE", $lang)?></h4>
  198. <?php
  199. $q_year = mysqli_query($con, "SELECT year(dtime) AS year FROM post WHERE visible = 1 GROUP BY year(dtime) ORDER BY year DESC;");
  200. while($r_year = mysqli_fetch_array($q_year)){
  201. ?>
  202. <div class='year pointer' onClick='toggleElement("year_<?=$r_year["year"]?>");'>
  203. <img class='slider' id='slid_year_<?=$r_year["year"]?>' src='<?=$server?>/img/misc/slid-right.png' alt='<?=$r_year["year"]?>'/>
  204. <span class='fake_a'><?=$r_year["year"]?></span>
  205. </div>
  206. <div class='list_year pointer' id='list_year_<?=$r_year["year"]?>'>
  207. <?php
  208. $q_month = mysqli_query($con, "SELECT month(dtime) AS month FROM post WHERE visible = 1 AND year(dtime) = $r_year[year] GROUP BY month(dtime) ORDER BY month DESC;");
  209. while($r_month = mysqli_fetch_array($q_month)){
  210. ?>
  211. <div class='month pointer' onClick='toggleElement("month_<?=$r_year["year"]?>_<?=$r_month["month"]?>");'>
  212. <img class='slider' id='slid_month_<?=$r_year["year"]?>_<?=$r_month["month"]?>' src='<?=$server?>/img/misc/slid-right.png' alt='<?=$r_month["month"]?>'/>
  213. <span class='fake_a'><?=ucfirst(text($con, "MONTH_" . str_pad($r_month["month"], 2, "0", STR_PAD_LEFT), $lang))?></span>
  214. </div>
  215. <ul id='list_month_<?=$r_year["year"]?>_<?=$r_month["month"]?>' class='post_list'>
  216. <?php
  217. $q_title = mysqli_query($con, "SELECT id, permalink, title FROM post WHERE visible = 1 AND year(dtime) = $r_year[year] AND month(dtime) = '$r_month[month]' ORDER BY dtime DESC;");
  218. while($r_title = mysqli_fetch_array($q_title)){
  219. ?>
  220. <li>
  221. <a href='<?=$lserver?>/blog/<?=$r_title["permalink"]?>'><?=text($con, $r_title["title"], $lang)?></a>
  222. </li>
  223. <?php
  224. }
  225. ?>
  226. </ul>
  227. <?php
  228. }
  229. ?>
  230. </div> <!-- #list_year_<?=$r_year["year"]?> -->
  231. <?php
  232. } //while($r_year = mysqli_fetch_array($q_year))
  233. ?>
  234. </div> <!-- #info_all -->
  235. </div> <!-- #info -->
  236. </div> <!-- .content_cell -->
  237. </div> <!-- #content_row -->
  238. </div> <!-- #content -->
  239. <?php
  240. include $doc_root . "footer.php";
  241. stats($con, $cur_section, $cur_entry);
  242. ?>
  243. </body>
  244. </html>