PageRenderTime 40ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/mywords/trunk/admin/tags.php

http://bitcero-modules.googlecode.com/
PHP | 259 lines | 178 code | 59 blank | 22 comment | 26 complexity | 80d3b6afc0f9921918f117bfe1c37cd0 MD5 | raw file
Possible License(s): LGPL-2.1
  1. <?php
  2. // $Id: tags.php 901 2012-01-03 07:08:22Z i.bitcero $
  3. // --------------------------------------------------------------
  4. // MyWords
  5. // Blogging System
  6. // Author: Eduardo Cort?Šs <i.bitcero@gmail.com>
  7. // Email: i.bitcero@gmail.com
  8. // License: GPL 2.0
  9. // --------------------------------------------------------------
  10. define('RMCLOCATION','tags');
  11. require('header.php');
  12. /**
  13. * Show all existing tags
  14. */
  15. function show_tags(){
  16. global $xoopsModule, $xoopsSecurity;
  17. MWFunctions::include_required_files();
  18. xoops_cp_location('<a href="./">'.$xoopsModule->name().'</a> &raquo; '.__('Tags','mywords'));
  19. RMTemplate::get()->assign('xoops_pagetitle', __('Tags Management','mywords'));
  20. // More used tags
  21. $db = XoopsDatabaseFactory::getDatabaseConnection();
  22. $sql = "SELECT * FROM ".$db->prefix("mw_tags")." ORDER BY posts DESC LIMIT 0,30";
  23. $result = $db->query($sql);
  24. $mtags = array();
  25. $size = 0;
  26. while ($row = $db->fetchArray($result)){
  27. $mtags[$row['tag']] = $row;
  28. $size = $row['posts']>$size ? $row['posts'] : $size;
  29. }
  30. ksort($mtags);
  31. // All tags
  32. list($num) = $db->fetchRow($db->query("SELECT COUNT(*) FROM ".$db->prefix("mw_tags")));
  33. $page = rmc_server_var($_GET, 'page', 1);
  34. $limit = isset($limit) && $limit>0 ? $limit : 15;
  35. $tpages = ceil($num / $limit);
  36. $page = $page > $tpages ? $tpages : $page;
  37. $start = $num<=0 ? 0 : ($page - 1) * $limit;
  38. $nav = new RMPageNav($num, $limit, $page, 5);
  39. $nav->target_url('tags.php?page={PAGE_NUM}');
  40. $sql = "SELECT * FROM ".$db->prefix("mw_tags")." ORDER BY id_tag DESC LIMIT $start,$limit";
  41. $result = $db->query($sql);
  42. $tags = array();
  43. while($row = $db->fetchArray($result)){
  44. $tags[] = $row;
  45. }
  46. xoops_cp_header();
  47. RMTemplate::get()->add_script(RMCURL.'/include/js/jquery.checkboxes.js');
  48. RMTemplate::get()->add_script('..//include/js/scripts.php?file=tags-list.js');
  49. RMTemplate::get()->add_style('jquery.css','rmcommon');
  50. include RMTemplate::get()->get_template('admin/mywords_tags.php','module','mywords');
  51. xoops_cp_footer();
  52. }
  53. /**
  54. * Save a new tag or update an existing tag
  55. * @param bool Save or edit
  56. */
  57. function save_tag($edit = false){
  58. global $xoopsConfig, $xoopsSecurity;
  59. $page = rmc_server_var($_POST, 'page', 1);
  60. if (!$xoopsSecurity->check()){
  61. redirectMsg('tags.php?page='.$page, __('Operation not allowed!','mywords'), 1);
  62. die();
  63. }
  64. $name = rmc_server_var($_POST,'name','');
  65. $short = rmc_server_var($_POST,'short','');
  66. if ($name==''){
  67. redirectMsg('tags.php?page='.$page, __('You must provide a name!','mywords'), 1);
  68. die();
  69. }
  70. if ($edit){
  71. $id = rmc_server_var($_POST,'id',0);
  72. if ($id<=0){
  73. redirectMsg('tags.php?page='.$page, __('Tag id not provided!','mywords'), 1);
  74. die();
  75. }
  76. $tag = new MWTag($id);
  77. if($tag->isNew()){
  78. redirectMsg('tags.php?page='.$page, __('Tag does not exists!','mywords'), 1);
  79. die();
  80. }
  81. } else {
  82. $tag = new MWTag();
  83. }
  84. if (trim($short)==''){
  85. $short = TextCleaner::sweetstring($name);
  86. } else {
  87. $short = TextCleaner::sweetstring($short);
  88. }
  89. // Check if tag exists
  90. $db = XoopsDatabaseFactory::getDatabaseConnection();
  91. if ($edit){
  92. $sql = "SELECT COUNT(*) FROM ".$db->prefix("mw_tags")." WHERE (tag='$name' OR shortname='$short') AND id_tag<>$id";
  93. } else {
  94. $sql = "SELECT COUNT(*) FROM ".$db->prefix("mw_tags")." WHERE tag='$name' OR shortname='$short'";
  95. }
  96. list($num) = $db->fetchRow($db->query($sql));
  97. if($num>0){
  98. redirectMsg('tags.php?page='.$page, __('A tag with same name or same short name already exists!','mywords'), 1);
  99. die();
  100. }
  101. $tag->setVar('tag', $name);
  102. $tag->setVar('shortname', $short);
  103. if ($tag->save()){
  104. redirectMsg('tags.php', __('Database updated successfully!','mywords'), 0);
  105. die();
  106. } else {
  107. redirectMsg('tags.php?page='.$page, __('A problem occurs while trying to save tag.','mywords').'<br />'.$tag->errors(), 1);
  108. die();
  109. }
  110. }
  111. function edit_form(){
  112. global $xoopsModule, $xoopsSecurity;
  113. $id = rmc_server_var($_GET,'id',0);
  114. $page = rmc_server_var($_GET,'page',1);
  115. if($id<=0){
  116. redirectMsg('tags.php?page='.$page, __('Tag ID not provided!.','mywords'), 1);
  117. die();
  118. }
  119. $tag = new MWTag($id);
  120. if($tag->isNew()){
  121. redirectMsg('tags.php?page='.$page, __('Tag does not exists!','mywords'), 1);
  122. die();
  123. }
  124. MWFunctions::include_required_files();
  125. xoops_cp_location('<a href="./">'.$xoopsModule->name().'</a> &raquo; <a href="tags.php">'.__('Tags','mywords').'</a> &raquo; '.__('Edit Tag','mywords'));
  126. RMTemplate::get()->assign('xoops_pagetitle', __('Editing Tag','mywords'));
  127. xoops_cp_header();
  128. $show_edit = true;
  129. include RMTemplate::get()->get_template('admin/mywords_tags.php','module','mywords');
  130. xoops_cp_footer();
  131. }
  132. /**
  133. * Deletes a existing tag or set of tags*
  134. */
  135. function delete_tag(){
  136. global $xoopsModule, $xoopsSecurity;
  137. $page = rmc_server_var($_POST, 'page', 1);
  138. $tags = rmc_server_var($_POST, 'tags', array());
  139. if (!$xoopsSecurity->check()){
  140. redirectMsg('tags.php?page='.$page, __('Sorry, operation not allowed!','mywords'), 1);
  141. die();
  142. }
  143. if (!is_array($tags) || empty($tags)){
  144. redirectMsg('tags.php?page='.$page, __('Please, specify a valid tag id!','mywords'), 1);
  145. die();
  146. }
  147. // Delete all relations
  148. $db = XoopsDatabaseFactory::getDatabaseConnection();
  149. $sql = "DELETE FROM ".$db->prefix("mw_tagspost")." WHERE tag IN(".implode(",",$tags).")";
  150. if (!$db->queryF($sql)){
  151. redirectMsg('tags.php?page='.$page, __('Errors ocurred while trying to delete tags!','mywords').'<br />'.$db->error(), 1);
  152. die();
  153. }
  154. $sql = "DELETE FROM ".$db->prefix("mw_tags")." WHERE id_tag IN(".implode(",",$tags).")";
  155. if (!$db->queryF($sql)){
  156. redirectMsg('tags.php?page='.$page, __('Errors ocurred while trying to delete tags!','mywords').'<br />'.$db->error(), 1);
  157. die();
  158. }
  159. redirectMsg('tags.php?page='.$page, __('Database updated succesfully!','mywords'), 0);
  160. }
  161. function update_tag(){
  162. global $xoopsModule, $xoopsSecurity;
  163. $page = rmc_server_var($_POST, 'page', 1);
  164. $tags = rmc_server_var($_POST, 'tags', array());
  165. if (!$xoopsSecurity->check()){
  166. redirectMsg('tags.php?page='.$page, __('Sorry, operation not allowed!','mywords'), 1);
  167. die();
  168. }
  169. if (!is_array($tags) || empty($tags)){
  170. redirectMsg('tags.php?page='.$page, __('Please, specify a valid tag id!','mywords'), 1);
  171. die();
  172. }
  173. foreach ($tags as $id){
  174. $tag = new MWTag($id);
  175. if($tag->isNew()) continue;
  176. $tag->update_posts();
  177. }
  178. redirectMsg('tags.php?page='.$page, __('Tags updated!','mywords'), 0);
  179. }
  180. $action = rmc_server_var($_REQUEST, 'action', '');
  181. switch($action){
  182. case 'new':
  183. save_tag(false);
  184. break;
  185. case 'saveedit':
  186. save_tag(true);
  187. break;
  188. case 'edit':
  189. edit_form();
  190. break;
  191. case 'delete':
  192. delete_tag();
  193. break;
  194. case 'update':
  195. update_tag();
  196. break;
  197. default:
  198. show_tags();
  199. break;
  200. }