PageRenderTime 28ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 1ms

/marsl/out/admin/tags.php

https://bitbucket.org/marsl/marsl
PHP | 202 lines | 195 code | 7 blank | 0 comment | 42 complexity | 0b2d5a01bd617de8429dbb2b5ea3d9ae MD5 | raw file
  1. <?php
  2. include_once (dirname(__FILE__)."/../includes/errorHandler.php");
  3. include_once (dirname(__FILE__)."/../user/user.php");
  4. include_once (dirname(__FILE__)."/../includes/dbsocket.php");
  5. include_once (dirname(__FILE__)."/../user/auth.php");
  6. include_once (dirname(__FILE__)."/../includes/basic.php");
  7. include_once (dirname(__FILE__)."/../user/role.php");
  8. include_once (dirname(__FILE__)."/../user/auth.php");
  9. class Tags {
  10. public function admin() {
  11. $auth = new Authentication();
  12. $role = new Role();
  13. $user = new User();
  14. if ($user->isHead()) {
  15. if (isset($_GET['action'])) {
  16. if ($_GET['action']=="edit") {
  17. $id = mysql_real_escape_string($_GET['tagid']);
  18. $this->edit($id);
  19. }
  20. }
  21. else {
  22. $db = new DB();
  23. $newEntry = false;
  24. $entrySuccessful = false;
  25. if (isset($_POST['action'])) {
  26. if ($_POST['action']=="newTag") {
  27. if ($auth->checkToken($_POST['authTime'], $_POST['authToken'])) {
  28. $newEntry = true;
  29. $entry = mysql_real_escape_string($_POST['entry']);
  30. if (!$db->isExisting("SELECT * FROM `general` WHERE `tag`='$entry'")) {
  31. $db->query("INSERT INTO `general`(`tag`) VALUES('$entry')");
  32. $entrySuccessful = true;
  33. }
  34. }
  35. }
  36. }
  37. $deletionSuccessful = false;
  38. if (isset($_GET['action2'])) {
  39. if ($_GET['action2']=="delete") {
  40. if ($auth->checkToken($_GET['time'], $_GET['token'])) {
  41. $tagID = mysql_real_escape_string($_GET['tagid']);
  42. $db->query("DELETE FROM `news_tag` WHERE `tag`='$tagID' AND `type`='general'");
  43. $db->query("DELETE FROM `general` WHERE `id`='$tagID'");
  44. $deletionSuccessful = true;
  45. }
  46. }
  47. }
  48. $authTime = time();
  49. $authToken = $auth->getToken($authTime);
  50. $tags = array();
  51. $search = mysql_real_escape_string($_GET['search']);
  52. $result = $db->query("SELECT `id`, `tag` FROM `general` WHERE `tag` LIKE '$search%' ORDER BY `tag` ASC");
  53. while ($row = mysql_fetch_array($result)) {
  54. $id = $row['id'];
  55. $tag = htmlentities($row['tag'], null, "ISO-8859-1");
  56. array_push($tags, array('id'=>$id, 'tag'=>$tag));
  57. }
  58. require_once("template/tags.tpl.php");
  59. }
  60. }
  61. }
  62. private function edit($id) {
  63. $role = new Role();
  64. $auth = new Authentication();
  65. $authTime = time();
  66. $authToken = $auth->getToken($authTime);
  67. $user = new User();
  68. if ($user->isHead()) {
  69. $id = mysql_real_escape_string($id);
  70. $db = new DB();
  71. $nameconvertion = false;
  72. if (isset($_POST['action'])) {
  73. if ($_POST['action']=="name") {
  74. $nameconvertion = true;
  75. }
  76. if ($_POST['action']=="tagExists") {
  77. $nameconvertion = true;
  78. }
  79. }
  80. if ($nameconvertion) {
  81. if ($auth->checkToken($_POST['authTime'], $_POST['authToken'])) {
  82. if (isset($_POST['tag'])) {
  83. $tag = mysql_real_escape_string($_POST['tag']);
  84. }
  85. if (isset($_POST['do'])) {
  86. if ($_POST['do']=="autoRename") {
  87. $tag = mysql_real_escape_string($_POST['autoTag']);
  88. }
  89. }
  90. if (($_POST['action']=="tagExists")||$db->isExisting("SELECT `tag` FROM `general` WHERE `tag`='$tag' AND NOT(`id`='$id')")) {
  91. if ($_POST['action']=="tagExists") {
  92. if ((($_POST['do']=="rename")||($_POST['do']=="autoRename"))&&$db->isExisting("SELECT `tag` FROM `general` WHERE `tag`='$tag' AND NOT(`id`='$id')")) {
  93. $result = $db->query("SELECT `id` FROM `general` WHERE `tag`='$tag' AND NOT(`id`='$id')");
  94. while ($row = mysql_fetch_array($result)) {
  95. $duplicateID = $row['id'];
  96. $result2 = $db->query("SELECT `tag` FROM `general` WHERE `id`='$id'");
  97. while ($row2 = mysql_fetch_array($result2)) {
  98. $oldTag = htmlentities($row2['tag'], null, "ISO-8859-1");
  99. $i = 2;
  100. $autoTag = $tag." (".$i.")";
  101. while ($db->isExisting("SELECT `tag` FROM `general` WHERE `tag`='$autoTag' AND NOT(`id`='$id')")) {
  102. $i++;
  103. $autoTag = $tag." (".$i.")";
  104. }
  105. require_once("template/tags.tag.tpl.php");
  106. }
  107. }
  108. }
  109. else {
  110. if ($_POST['do']=="saveDuplicate") {
  111. $duplicateID = mysql_real_escape_string($_POST['duplicateID']);
  112. $result = $db->query("SELECT `news` FROM `news_tag` WHERE `tag`='$duplicateID' AND `type`='general'");
  113. while ($row = mysql_fetch_array($result)) {
  114. $newsID = $row['news'];
  115. $db->query("DELETE FROM `news_tag` WHERE `tag`='$id' AND `news`='$newsID' AND `type`='general'");
  116. }
  117. $db->query("UPDATE `news_tag` SET `tag`='$duplicateID' WHERE `type`='general' AND `tag`='$id'");
  118. $db->query("DELETE FROM `general` WHERE `id`='$id'");
  119. $id = $duplicateID;
  120. require_once("template/tags.edit.success.tpl.php");
  121. }
  122. if ($_POST['do']=="moveToDuplicate") {
  123. $targetTag = mysql_real_escape_string($_POST['targetTag']);
  124. $duplicateID = mysql_real_escape_string($_POST['duplicateID']);
  125. $result = $db->query("SELECT `news` FROM `news_tag` WHERE `tag`='$id' AND `type`='general'");
  126. while ($row = mysql_fetch_array($result)) {
  127. $newsID = $row['news'];
  128. $db->query("DELETE FROM `news_tag` WHERE `tag`='$duplicateID' AND `news`='$newsID' AND `type`='general'");
  129. }
  130. $db->query("UPDATE `news_tag` SET `tag`='$id' WHERE `type`='general' AND `tag`='$duplicateID'");
  131. $db->query("DELETE FROM `general` WHERE `id`='$duplicateID'");
  132. $db->query("UPDATE `general` SET `tag`='$targetTag' WHERE `id`='$id'");
  133. require_once("template/tags.edit.success.tpl.php");
  134. }
  135. if ($_POST['do']=="autoRename") {
  136. $db->query("UPDATE `general` SET `tag`='$tag' WHERE `id`='$id'");
  137. $this->buildEditingForm($id);
  138. }
  139. if ($_POST['do']=="rename") {
  140. $db->query("UPDATE `general` SET `tag`='$tag' WHERE `id`='$id'");
  141. $this->buildEditingForm($id);
  142. }
  143. }
  144. }
  145. else {
  146. $result = $db->query("SELECT `id` FROM `general` WHERE `tag`='$tag' AND NOT(`id`='$id')");
  147. while ($row = mysql_fetch_array($result)) {
  148. $duplicateID = $row['id'];
  149. $result2 = $db->query("SELECT `tag` FROM `general` WHERE `id`='$id'");
  150. while ($row2 = mysql_fetch_array($result2)) {
  151. $oldTag = htmlentities($row2['tag'], null, "ISO-8859-1");
  152. $i = 2;
  153. $autoTag = $tag." (".$i.")";
  154. while ($db->isExisting("SELECT `tag` FROM `general` WHERE `tag`='$autoTag' AND NOT(`id`='$id')")) {
  155. $i++;
  156. $autoTag = $tag." (".$i.")";
  157. }
  158. require_once("template/tags.tag.tpl.php");
  159. }
  160. }
  161. }
  162. }
  163. else {
  164. $db->query("UPDATE `general` SET `tag`='$tag' WHERE `id`='$id'");
  165. require_once("template/tags.edit.success.tpl.php");
  166. }
  167. }
  168. }
  169. else {
  170. $this->buildEditingForm($id);
  171. }
  172. }
  173. }
  174. private function buildEditingForm($id) {
  175. $auth = new Authentication();
  176. $authTime = time();
  177. $authToken = $auth->getToken($authTime);
  178. $id = mysql_real_escape_string($id);
  179. $db = new DB();
  180. $news = array();
  181. $result = $db->query("SELECT `news`, `headline`,`title` FROM `news_tag` NATURAL JOIN `news` WHERE `type`='general' AND `tag`='$id' AND `deleted`='0' AND `visible`='1' ORDER BY `postdate` DESC");
  182. while ($row = mysql_fetch_array($result)) {
  183. $newsID = $row['news'];
  184. $headline = htmlentities($row['headline'], null, "ISO-8859-1");
  185. $title = htmlentities($row['title'], null, "ISO-8859-1");
  186. array_push($news, array('news'=>$newsID, 'headline'=>$headline, 'title'=>$title));
  187. }
  188. $result = $db->query("SELECT `tag` FROM `general` WHERE `id`='$id'");
  189. while ($row = mysql_fetch_array($result)) {
  190. $tag = htmlentities($row['tag'], null, "ISO-8859-1");
  191. require_once("template/tags.edit.tpl.php");
  192. }
  193. }
  194. }
  195. ?>