index.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  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();
  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)?> - I&ntilde;igo Valentin</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)?> - I&ntilde;igo Valentin'/>
  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='I&ntilde;igo Valentin'/>
  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)?> - I&ntilde;igo Valentin'/>
  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='main_column' 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"]?>'><?=$r_blog["title"]?></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/view/<?=$r_image["image"]?>'/>
  92. <img class='post_list_image alt='<?=$r_blog["title"]?>' src='<?=$lserver?>/img/blog/miniature/<?=$r_image["image"]?>'/>
  93. </a>
  94. </div>
  95. <?php
  96. }
  97. ?>
  98. <p><?=cutText($r_blog["text"], 800, text($con, "BLOG_MORE", $lang), "$lserver/blog/$r_blog[permalink]/")?></p>
  99. <hr/>
  100. <table class='post_footer'>
  101. <tr>
  102. <?php
  103. // Tags (if any), date, and comment counter
  104. $q_tag = mysqli_query($con, "SELECT tag FROM post_tag WHERE post= $r_blog[id];");
  105. if (mysqli_num_rows($q_tag) > 0){
  106. $tag_string = "<span class='tags desktop'>" . text($con, "BLOG_TAGS", $lang);
  107. $tag_raw = "";
  108. while ($r_tag = mysqli_fetch_array($q_tag)){
  109. $tag_string = $tag_string . "<a href='$proto$http_host/blog/search/tag/$r_tag[tag]'> " . text($con, $r_tag["tag"], $lang) . "</a>, ";
  110. $tag_raw = $tag_raw . "$r_tag[tag],";
  111. }
  112. $tag_string = substr($tag_string, 0, strlen($tag_string) - 2);
  113. $tag_string = $tag_string . "</span>";
  114. $tag_raw = substr($tag_raw, 0, strlen($tag_raw) - 1);
  115. ?>
  116. <meta itemprop='keywords' content='<?=$tag_raw?>'/>
  117. <td>
  118. <span class='date'><?=format_date($r_blog["dtime"], $lang, false)?></span>
  119. &nbsp;&nbsp;&nbsp;<?=$tag_string?>
  120. </td>
  121. <?php
  122. }
  123. else{
  124. ?>
  125. <td>
  126. <span class='date'><?=format_date($r_blog['dtime'], $lang, false)?></span>
  127. </td>
  128. <?php
  129. }
  130. #Comment counter
  131. if ($r_blog["comments"] == 1){
  132. $q_comment = mysqli_query($con, "SELECT count(id) AS count FROM post_comment WHERE post = $r_blog[id] AND visible = 1;");
  133. $r_comment = mysqli_fetch_array($q_comment);
  134. ?>
  135. <meta itemprop='commentCount interationCount' content='<?=$r_comment["count"]?>'/>
  136. <td class='r_comment'>
  137. <?php
  138. if ($r_comment['count'] == 1){
  139. ?>
  140. <span class='comment_counter'>1 <?=text($con, "BLOG_COMMENTS_1", $lang)?></span>
  141. <?php
  142. }
  143. else if ($r_comment['count'] == 0){
  144. ?>
  145. <span class='comment_counter'><?=text($con, "BLOG_COMMENTS_0", $lang)?></span>
  146. <?php
  147. }
  148. else{
  149. ?>
  150. <span class='comment_counter'>$<?=r_comment["count"]?> <?=text($con, "BLOG_COMMENTS_X", $lang)?></span>
  151. <?php
  152. }
  153. ?>
  154. </td>
  155. <?php
  156. } // if ($r_blog["comments"] == 1)
  157. ?>
  158. </tr>
  159. </table> <!-- .post_footer -->
  160. </div> <!-- .blog_entry -->
  161. </br>
  162. <?php
  163. } // while($r_blog = mysqli_fetch_array($q_blog))
  164. ?>
  165. </div> <!-- #main_column -->
  166. </div> <!-- #content_cell_main -->
  167. <div class='content_cell' id='content_cell_right'>
  168. <div class='section section_no_title' id='right_column'>
  169. <div class='entry'>
  170. <h4><?=text($con, "BLOG_SEARCH", $lang)?></h4>
  171. <div id='search_panel_inputs'>
  172. <form action='#' onSubmit='event.preventDefault();launchSearch("<?=$lng["search_field_all"]?>");'>
  173. <input id='search_panel_input' class='search_element' type='text' name='query' placeholder='<?=text($con, "BLOG_SEARCH", $lang)?>'/>
  174. <input id='search_panel_submit' class='search_element' type='submit' value='<?=text($con, "BLOG_SEARCH", $lang)?>'/>
  175. </form>
  176. </div>
  177. </div> <!-- .entry -->
  178. <div class='entry'>
  179. <h4><?=text($con, "BLOG_TAG_CLOUD", $lang)?></h4>
  180. <?php
  181. //Get the most used tag
  182. $q_max = mysqli_query($con, "SELECT max(count) AS max FROM (SELECT count(post) AS count FROM post_tag GROUP BY tag) AS t;");
  183. $r_max = mysqli_fetch_array($q_max);
  184. $max = $r_max["max"];
  185. $q_tag = mysqli_query($con, "SELECT tag, count(post) AS count FROM post_tag GROUP BY tag;");
  186. while($r_tag = mysqli_fetch_array($q_tag)){
  187. $size = round(60 + 100 * $r_tag['count'] / $max);
  188. ?>
  189. <a href='<?=$lserver?>/blog/search/tag/<?=$r_tag["tag"]?>'>
  190. <span style='font-size: <?=$size?>%'><?=text($con, $r_tag["tag"], $lang)?></span>
  191. </a>
  192. <?php
  193. }
  194. ?>
  195. </div> <!-- .entry -->
  196. </div> <!-- #right_column -->
  197. </div> <!-- #content -->
  198. <?php
  199. include $doc_root . "footer.php";
  200. stats($con, $cur_section, $cur_entry);
  201. ?>
  202. </body>
  203. </html>