A tumblelog CMS built on AJAX, PHP and MySQL.

index.php 20KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467
  1. <?php
  2. if(!defined('entry'))define('entry', true);
  3. /* ===========================
  4. gelato CMS - A PHP based tumblelog CMS
  5. development version
  6. http://www.gelatocms.com/
  7. gelato CMS is a free software licensed under the GPL 2.0
  8. Copyright (C) 2007 by Pedro Santana <pecesama at gmail dot com>
  9. =========================== */
  10. ?>
  11. <?php
  12. require('../entry.php');
  13. global $user, $conf, $tumble;
  14. $template = new plantillas("admin");
  15. $isEdition = (isset($_GET["edit"])) ? true : false;
  16. $postId = ($isEdition) ? $_GET["edit"] : NULL;
  17. if ($user->isAuthenticated()) {
  18. if (isset($_GET["delete"])) {
  19. $tumble->deletePost($_GET['delete']);
  20. header("Location: index.php?deleted=true");
  21. die();
  22. }
  23. if(isset($_POST["btnAdd"])) {
  24. unset($_POST["btnAdd"]);
  25. if ($_POST["type"]=="2") { // is Photo type
  26. if (isset($_POST["url"]) && $_POST["url"]!="") {
  27. $photoName = getFileName($_POST["url"]);
  28. if (!$tumble->savePhoto($_POST["url"])) {
  29. header("Location: ".$conf->urlGelato."/admin/index.php?photo=false");
  30. die();
  31. }
  32. $_POST["url"] = "../uploads/".sanitizeName($photoName);
  33. }
  34. if ( move_uploaded_file( $_FILES['photo']['tmp_name'], "../uploads/".sanitizeName($_FILES['photo']['name']) ) ) {
  35. $_POST["url"] = "../uploads/".sanitizeName($_FILES['photo']['name']);
  36. }
  37. unset($_POST["photo"]);
  38. unset($_POST["MAX_FILE_SIZE"]);
  39. }
  40. if ($_POST["type"]=="7") { // is MP3 type
  41. set_time_limit(300);
  42. $mp3Name = getFileName($_POST["url"]);
  43. if (!$tumble->saveMP3($_POST["url"])) {
  44. header("Location: ".$conf->urlGelato."/admin/index.php?mp3=false");
  45. die();
  46. }
  47. if (isMP3($remoteFileName)) {
  48. $_POST["url"] = $conf->urlGelato."/uploads/".$mp3Name;
  49. }
  50. }
  51. if (!get_magic_quotes_gpc()) {
  52. $_POST["title"] = addslashes($_POST["title"]);
  53. $_POST["description"] = addslashes($_POST["description"]);
  54. }
  55. /*
  56. $textile = new Textile();
  57. $_POST["title"] = $textile->TextileThis(removeBadTags($_POST["title"],true));
  58. $_POST["description"] = $textile->TextileThis(removeBadTags($_POST["description"]));
  59. */
  60. $_POST["title"] = removeBadTags($_POST["title"],true);
  61. $_POST["description"] = removeBadTags($_POST["description"]);
  62. if (isset($_POST["id_post"])) {
  63. $tumble->modifyPost($_POST, $_POST["id_post"]);
  64. } else {
  65. if ($tumble->addPost($_POST)) {
  66. header("Location: ".$conf->urlGelato."/admin/index.php?added=true");
  67. die();
  68. } else {
  69. header("Location: ".$conf->urlGelato."/admin/index.php?error=2&des=".$this->merror);
  70. die();
  71. }
  72. }
  73. } else {
  74. if ($isEdition) {
  75. $post = $tumble->getPost($postId);
  76. }
  77. ?>
  78. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  79. <html xmlns="http://www.w3.org/1999/xhtml">
  80. <head>
  81. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  82. <meta name="generator" content="gelato cms <?php echo version();?>" />
  83. <title>gelato :: <?php echo __("control panel")?></title>
  84. <link rel="shortcut icon" href="<?php echo $conf->urlGelato;?>/images/favicon.ico" />
  85. <script language="javascript" type="text/javascript" src="<?php echo $conf->urlGelato;?>/admin/scripts/jquery.js"></script>
  86. <script language="javascript" type="text/javascript" src="<?php echo $conf->urlGelato;?>/admin/scripts/tools.js"></script>
  87. <script language="javascript" type="text/javascript" src="<?php echo $conf->urlGelato;?>/admin/scripts/lightbox.js"></script>
  88. <script language="javascript" type="text/javascript" src="<?php echo $conf->urlGelato;?>/admin/scripts/jquery.validate.min.js"></script>
  89. <script language="javascript" type="text/javascript">
  90. $(document).ready(function(){
  91. $("#divMessages").fadeOut(5000,function(){
  92. $("#divMessages").css({display:"none"});
  93. });
  94. });
  95. Lightbox.fileLoadingImage = "css/images/loading.gif";
  96. Lightbox.fileBottomNavCloseImage = "css/images/closelabel.gif";
  97. </script>
  98. <?php
  99. if($conf->richText) {
  100. ?>
  101. <script src="<?php echo $conf->urlGelato;?>/admin/scripts/nicEdit.js" type="text/javascript"></script>
  102. <script type="text/javascript">
  103. bkLib.onDomLoaded(nicEditors.allTextAreas);
  104. </script>
  105. <?php
  106. } else {
  107. ?>
  108. <script type="text/javascript" src="<?php echo $conf->urlGelato;?>/admin/scripts/markitup/jquery.markitup.pack.js"></script>
  109. <script type="text/javascript" src="<?php echo $conf->urlGelato;?>/admin/scripts/markitup/sets/html/set.js"></script>
  110. <link rel="stylesheet" type="text/css" href="<?php echo $conf->urlGelato;?>/admin/scripts/markitup/skins/simple/style.css" />
  111. <link rel="stylesheet" type="text/css" href="<?php echo $conf->urlGelato;?>/admin/scripts/markitup/sets/html/style.css" />
  112. <script type="text/javascript" >
  113. $(document).ready(function() {
  114. $("#description").markItUp(my_html);
  115. });
  116. </script>
  117. <?php
  118. }
  119. ?>
  120. <style type="text/css" media="screen">
  121. @import "<?php echo $conf->urlGelato;?>/admin/css/style.css";
  122. @import "<?php echo $conf->urlGelato;?>/admin/css/lightbox.css";
  123. </style>
  124. </head>
  125. <body>
  126. <div id="div-process" style="display:none;"><?php echo __("Processing request&hellip;")?></div>
  127. <div id="cont">
  128. <div id="head">
  129. <h1><a href="<?php echo $conf->urlGelato;?>/admin/index.php" title="gelato :: <?php echo __("home")?>">gelato cms</a></h1>
  130. <ul id="nav">
  131. <li><a href="<?php echo $conf->urlGelato;?>/" title="<?php echo __("Take me to the tumblelog")?>"><?php echo __("View Tumblelog")?></a></li>
  132. <li><a href="close.php" title="Log off" ><?php echo __("Log out")?></a></li>
  133. </ul>
  134. </div>
  135. <div id="main">
  136. <div class="box">
  137. <ul class="menu">
  138. <h3><?php echo __("New Post")?></h3>
  139. <li<?php echo (isset($_GET["new"]) && $_GET["new"]=="conversation") ? " class=\"selected\"" : ""; ?>><a href="<?php echo $conf->urlGelato;?>/admin/index.php?new=conversation"><img src="css/images/comments.png" alt="New chat" /> <?php echo __("Chat")?></a></li>
  140. <li<?php echo (isset($_GET["new"]) && $_GET["new"]=="quote") ? " class=\"selected\"" : ""; ?>><a href="<?php echo $conf->urlGelato;?>/admin/index.php?new=quote"><img src="css/images/quote.png" alt="New qoute" /> <?php echo __("Quote")?></a></li>
  141. <li<?php echo (isset($_GET["new"]) && $_GET["new"]=="url") ? " class=\"selected\"" : ""; ?>><a href="<?php echo $conf->urlGelato;?>/admin/index.php?new=url"><img src="css/images/world.png" alt="New link" /> <?php echo __("Link")?></a></li>
  142. <li<?php echo (isset($_GET["new"]) && $_GET["new"]=="mp3") ? " class=\"selected\"" : ""; ?>><a href="<?php echo $conf->urlGelato;?>/admin/index.php?new=mp3"><img src="css/images/music.png" alt="New audio" /> <?php echo __("Audio")?></a></li>
  143. <li<?php echo (isset($_GET["new"]) && $_GET["new"]=="video") ? " class=\"selected\"" : ""; ?>><a href="<?php echo $conf->urlGelato;?>/admin/index.php?new=video"><img src="css/images/film.png" alt="New video" /> <?php echo __("Video")?></a></li>
  144. <li<?php echo (isset($_GET["new"]) && $_GET["new"]=="photo") ? " class=\"selected\"" : ""; ?>><a href="<?php echo $conf->urlGelato;?>/admin/index.php?new=photo"><img src="css/images/image.png" alt="New picture" /> <?php echo __("Picture")?></a></li>
  145. <li<?php echo (isset($_GET["new"]) && $_GET["new"]=="post") ? " class=\"selected\"" : ""; echo (!isset($_GET["new"])) ? " class=\"selected\"" : ""; ?>><a href="<?php echo $conf->urlGelato;?>/admin/index.php?new=post"><img src="css/images/page.png" alt="New post" /> <?php echo __("Regular")?></a></li>
  146. </ul>
  147. <p>&nbsp;</p>
  148. <?php
  149. if($conf->check_version){
  150. $present = version();
  151. $lastest = _file_get_contents("http://www.gelatocms.com/vgel.txt");
  152. if ($present < $lastest) {
  153. echo "<div class=\"information\" id=\"update\">".__("A new gelato version has been released and is ready <a href=\"http://www.gelatocms.com/\">for download</a>.")."</div><br />";
  154. }
  155. }
  156. if (isset($_GET["deleted"])) {
  157. if ($_GET["deleted"]=="true") {
  158. echo "<div class=\"exito\" id=\"divMessages\">".__("The post has been eliminated successfully.")."</div>";
  159. }
  160. }
  161. if (isset($_GET["modified"])) {
  162. if ($_GET["modified"]=="true") {
  163. echo "<div class=\"exito\" id=\"divMessages\">".__("The post has been modified successfully.")."</div>";
  164. }
  165. }
  166. if (isset($_GET["added"])) {
  167. if ($_GET["added"]=="true") {
  168. echo "<div class=\"exito\" id=\"divMessages\">".__("The post has been added successfully.")."</div>";
  169. }
  170. }
  171. if (isset($_GET["error"])) {
  172. if ($_GET["error"]==2) {
  173. echo "<div class=\"error\"><strong>".__("Error on the database server:")." </strong>".$_GET["des"]."</div>";
  174. }
  175. }
  176. if (isset($_GET["mp3"])) {
  177. if ($_GET["mp3"]=="false") {
  178. echo "<div class=\"error\" id=\"divMessages\">".__("Not an MP3 file or an upload problem.")."</div>";
  179. }
  180. }
  181. if (isset($_GET["photo"])) {
  182. if ($_GET["photo"]=="false") {
  183. echo "<div class=\"error\" id=\"divMessages\">".__("Not a photo file or an upload problem.")."</div>";
  184. }
  185. }
  186. ?>
  187. <form action="index.php" method="post" <?php echo (isset($_GET["new"]) && $_GET["new"]=="photo") ? "enctype=\"multipart/form-data\"" : ""?> name="frmAdd" id="autosave" class="newpost">
  188. <fieldset>
  189. <?php
  190. if ($isEdition) {
  191. ?>
  192. <input type="hidden" name="id_post" id="id_post" value="<?php echo $postId;?>" />
  193. <?php
  194. switch ($post["type"]) {
  195. case "1":
  196. $_GET["new"] = "post";
  197. break;
  198. case "2":
  199. $_GET["new"] = "photo";
  200. break;
  201. case "3":
  202. $_GET["new"] = "quote";
  203. break;
  204. case "4":
  205. $_GET["new"] = "url";
  206. break;
  207. case "5":
  208. $_GET["new"] = "conversation";
  209. break;
  210. case "6":
  211. $_GET["new"] = "video";
  212. break;
  213. case "7":
  214. $_GET["new"] = "mp3";
  215. break;
  216. }
  217. }
  218. $date = ($isEdition) ? strtotime($post["date"]) : gmmktime();
  219. $title = ($isEdition) ? htmlspecialchars(stripslashes($post["title"])) : "";
  220. $body = ($isEdition) ? stripslashes($post["description"]) : "";
  221. $url = ($isEdition) ? $post["url"] : "";
  222. if (!isset($_GET['new'])) $_GET['new'] = 'default';
  223. switch ($_GET["new"]) {
  224. case "post":
  225. $input = array("{type}", "{date}", "{id_user}", "{editTitle}", "{editBody}");
  226. $output = array("1", $date, $_SESSION['user_id'], $title, $body);
  227. $template->cargarPlantilla($input, $output, "template_add_post");
  228. $template->mostrarPlantilla();
  229. break;
  230. case "photo":
  231. $url = str_replace("../", $conf->urlGelato."/", $url);
  232. $input = array("{type}", "{date}", "{id_user}", "{editUrl}", "{editBody}");
  233. $output = array("2", $date, $_SESSION['user_id'], $url, $body);
  234. $template->cargarPlantilla($input, $output, "template_add_photo");
  235. $template->mostrarPlantilla();
  236. break;
  237. case "quote":
  238. $input = array("{type}", "{date}", "{id_user}", "{editTitle}", "{editBody}");
  239. $output = array("3", $date, $_SESSION['user_id'], $title, $body);
  240. $template->cargarPlantilla($input, $output, "template_add_quote");
  241. $template->mostrarPlantilla();
  242. break;
  243. case "url":
  244. $input = array("{type}", "{date}", "{id_user}", "{editTitle}", "{editUrl}", "{editBody}");
  245. $output = array("4", $date, $_SESSION['user_id'], $title, $url, $body);
  246. $template->cargarPlantilla($input, $output, "template_add_link");
  247. $template->mostrarPlantilla();
  248. break;
  249. case "conversation":
  250. $input = array("{type}", "{date}", "{id_user}", "{editTitle}", "{editBody}");
  251. $output = array("5", $date, $_SESSION['user_id'], $title, $body);
  252. $template->cargarPlantilla($input, $output, "template_add_conversation");
  253. $template->mostrarPlantilla();
  254. break;
  255. case "video":
  256. $input = array("{type}", "{date}", "{id_user}", "{editUrl}", "{editBody}");
  257. $output = array("6", $date, $_SESSION['user_id'], $url, $body);
  258. $template->cargarPlantilla($input, $output, "template_add_video");
  259. $template->mostrarPlantilla();
  260. break;
  261. case "mp3":
  262. $input = array("{type}", "{date}", "{id_user}", "{editUrl}", "{editBody}");
  263. $output = array("7", $date, $_SESSION['user_id'], $url, $body);
  264. $template->cargarPlantilla($input, $output, "template_add_mp3");
  265. $template->mostrarPlantilla();
  266. break;
  267. default:
  268. $input = array("{type}", "{date}", "{id_user}", "{editTitle}", "{editBody}");
  269. $output = array("1", $date, $_SESSION['user_id'], $title, $body);
  270. $template->cargarPlantilla($input, $output, "template_add_post");
  271. $template->mostrarPlantilla();
  272. break;
  273. }
  274. ?>
  275. <p>
  276. <span style="color: rgb(136, 136, 136); margin-bottom: 10px; font-size: 10px;">
  277. <?php echo __("Some HTML allowed")?>:<br />
  278. &nbsp;&nbsp;&nbsp;&nbsp;
  279. <code>
  280. &lt;strong&gt; &lt;em&gt; &lt;del&gt; &lt;ul&gt; &lt;ol&gt; &lt;li&gt; &lt;a&gt;
  281. <br />
  282. &nbsp;&nbsp;&nbsp;&nbsp;&lt;blockquote&gt;
  283. &lt;code&gt; &lt;pre&gt; &lt;img&gt;
  284. <code>
  285. <br />
  286. Bookmarklet - <a href="javascript:var w; setTimeout('w.focus()',100);w=window.open('<?php echo $conf->urlGelato; ?>/admin/bm.php?url='+encodeURIComponent(location.href)+'&sel='+encodeURIComponent(window.getSelection()),'bookmarklet','toolbar=0,resizable=0,status=1,width=650,height=460,dependent=yes' ); w.focus();"><?php echo __("add to gelato")?></a> </span> </p>
  287. <p>
  288. <input class="btn" type="submit" name="btnAdd" value="<?php echo ($isEdition) ? "Modify" : "Create"; ?> post" />
  289. </p>
  290. </fieldset>
  291. </form>
  292. <div class="footer-box">&nbsp;</div>
  293. </div>
  294. <?php
  295. if (!$isEdition) {
  296. ?>
  297. <div class="box">
  298. <ul class="menu manage">
  299. <h3>Manage</h3>
  300. <li><a href="<?php echo $conf->urlGelato;?>/admin/settings.php"><?php echo __("Settings")?></a></li>
  301. <li><a href="<?php echo $conf->urlGelato;?>/admin/options.php"><?php echo __("Options")?></a></li>
  302. <li><a href="<?php echo $conf->urlGelato;?>/admin/feeds.php"><?php echo __("Feeds")?></a></li>
  303. <li><a href="<?php echo $conf->urlGelato;?>/admin/admin.php"><?php echo __("Users")?></a></li>
  304. <li><a href="<?php echo $conf->urlGelato;?>/admin/comments.php"><?php echo __("Comments")?></a></li>
  305. <li class="selected"><a><?php echo __("Posts")?></a></li>
  306. </ul>
  307. <?php
  308. if (isset($_GET["page"])) {
  309. $page_num = $_GET["page"];
  310. } else {
  311. $page_num = NULL;
  312. }
  313. $limit=$conf->postLimit;
  314. if(isset($page_num) && is_numeric($page_num) && $page_num>0) { // Is defined the page and is numeric?
  315. $from = (($page_num-1) * $limit);
  316. } else {
  317. $from = 0;
  318. }
  319. $rs = $tumble->getPosts($limit, $from);
  320. if ($tumble->contarRegistros()>0) {
  321. while($register = mysql_fetch_array($rs)) {
  322. $formatedDate = gmdate("M d", strtotime($register["date"])+transform_offset($conf->offsetTime));
  323. $permalink = $conf->urlGelato."/index.php/post/".$register["id_post"]."/";
  324. $register["title"] = stripslashes($register["title"]);
  325. $register["description"] = stripslashes($register["description"]);
  326. switch ($tumble->getType($register["id_post"])) {
  327. case "1":
  328. $input = array("{Id_Post}", "{Date_Added}", "{Permalink}", "{Title}", "{Body}", "{URL_Tumble}");
  329. $output = array($register["id_post"], $formatedDate, $permalink, $register["title"], $register["description"], $conf->urlGelato);
  330. $template->cargarPlantilla($input, $output, "template_regular_post");
  331. $template->mostrarPlantilla();
  332. break;
  333. case "2":
  334. $fileName = "../uploads/".getFileName($register["url"]);
  335. $x = @getimagesize($fileName);
  336. if ($x[0] > 100) {
  337. $photoPath = $conf->urlGelato."/classes/imgsize.php?w=100&img=".$register["url"];
  338. } else {
  339. $photoPath = $register["url"];
  340. }
  341. $effect = " href=\"".str_replace("../", $conf->urlGelato."/", $register["url"])."\" rel=\"lightbox\"";
  342. $input = array("{Id_Post}", "{Date_Added}", "{Permalink}", "{PhotoURL}", "{PhotoAlt}", "{Caption}", "{Effect}", "{URL_Tumble}");
  343. $output = array($register["id_post"], $formatedDate, $permalink, $photoPath, strip_tags($register["description"]), $register["description"], $effect, $conf->urlGelato);
  344. $template->cargarPlantilla($input, $output, "template_photo");
  345. $template->mostrarPlantilla();
  346. break;
  347. case "3":
  348. $input = array("{Id_Post}", "{Date_Added}", "{Permalink}", "{Quote}", "{Source}", "{URL_Tumble}");
  349. $output = array($register["id_post"], $formatedDate, $permalink, $register["description"], $register["title"], $conf->urlGelato);
  350. $template->cargarPlantilla($input, $output, "template_quote");
  351. $template->mostrarPlantilla();
  352. break;
  353. case "4":
  354. if($conf->shorten_links){
  355. $register["url"] = _file_get_contents("http://api.abbrr.com/api.php?out=link&url=".$register["url"]);
  356. }
  357. $register["title"] = ($register["title"]=="")? $register["url"] : $register["title"];
  358. $input = array("{Id_Post}", "{Date_Added}", "{Permalink}", "{URL}", "{Name}", "{Description}", "{URL_Tumble}");
  359. $output = array($register["id_post"], $formatedDate, $permalink, $register["url"], $register["title"], $register["description"], $conf->urlGelato);
  360. $template->cargarPlantilla($input, $output, "template_url");
  361. $template->mostrarPlantilla();
  362. break;
  363. case "5":
  364. $input = array("{Id_Post}", "{Date_Added}", "{Permalink}", "{Title}", "{Conversation}", "{URL_Tumble}");
  365. $output = array($register["id_post"], $formatedDate, $permalink, $register["title"], $tumble->formatConversation($register["description"]), $conf->urlGelato);
  366. $template->cargarPlantilla($input, $output, "template_conversation");
  367. $template->mostrarPlantilla();
  368. break;
  369. case "6":
  370. $input = array("{Id_Post}", "{Date_Added}", "{Permalink}", "{Video}", "{Caption}", "{URL_Tumble}");
  371. $output = array($register["id_post"], $formatedDate, $permalink, $tumble->getVideoPlayer($register["url"]), $register["description"], $conf->urlGelato);
  372. $template->cargarPlantilla($input, $output, "template_video");
  373. $template->mostrarPlantilla();
  374. break;
  375. case "7":
  376. $input = array("{Id_Post}", "{Date_Added}", "{Permalink}", "{Mp3}", "{Caption}", "{URL_Tumble}");
  377. $output = array($register["id_post"], $formatedDate, $permalink, $tumble->getMp3Player($register["url"]), $register["description"], $conf->urlGelato);
  378. $template->cargarPlantilla($input, $output, "template_mp3");
  379. $template->mostrarPlantilla();
  380. break;
  381. }
  382. }
  383. $p = new pagination;
  384. $p->items($tumble->getPostsNumber());
  385. $p->limit($limit);
  386. $p->currentPage(isset($page_num) ? $page_num : 1);
  387. $p->show();
  388. } else {
  389. $template->renderizaEtiqueta(__("No posts in this tumblelog."), "div","error");
  390. }
  391. ?>
  392. <div class="footer-box">&nbsp;</div>
  393. </div>
  394. </div>
  395. <?php
  396. }
  397. ?>
  398. <div id="foot">
  399. <a href="http://www.gelatocms.com/" title="gelato CMS">gelato CMS</a> :: PHP/MySQL Tumblelog Content Management System.
  400. </div>
  401. </div>
  402. </body>
  403. </html>
  404. <?php
  405. }
  406. } else {
  407. header("Location: ".$conf->urlGelato."/login.php");
  408. }
  409. ?>