PageRenderTime 60ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/galleries/trunk/admin/tags.php

http://bitcero-modules.googlecode.com/
PHP | 370 lines | 236 code | 98 blank | 36 comment | 33 complexity | d16071c418f6a8c82279486b987624a8 MD5 | raw file
Possible License(s): LGPL-2.1
  1. <?php
  2. // $Id: tags.php 900 2012-01-03 07:07:52Z i.bitcero $
  3. // --------------------------------------------------------------
  4. // MyGalleries
  5. // Module for advanced image galleries management
  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. include 'header.php';
  12. /**
  13. * @desc Visualiza todas los etiquetas existentes
  14. **/
  15. function showTags(){
  16. global $xoopsModule, $xoopsSecurity, $xoopsModuleConfig;
  17. $db = XoopsDatabaseFactory::getDatabaseConnection();
  18. $mc =&$xoopsModuleConfig;
  19. $page = isset($_REQUEST['page']) ? $_REQUEST['page'] : 1;
  20. $page = $page<1 ? 1 : $page;
  21. $limit = 15;
  22. $search = isset($_REQUEST['search']) ? $_REQUEST['search'] : '';
  23. //Barra de Navegación
  24. $sql = "SELECT COUNT(*) FROM ".$db->prefix('gs_tags');
  25. $sql1 = '';
  26. $words = array();
  27. if ($search){
  28. //Separamos en palabras
  29. $words = explode(" ",$search);
  30. foreach ($words as $k){
  31. $k = trim($k);
  32. if (strlen($k)<$mc['min_tag'] || strlen($k)>$mc['max_tag']){
  33. continue;
  34. }
  35. $sql1.= $sql1=='' ? " WHERE (tag LIKE '%$k%')" : " OR (tag LIKE '%$k%')";
  36. }
  37. }
  38. list($num)=$db->fetchRow($db->query($sql.$sql1));
  39. $start = $num<=0 ? 0 : ($page - 1) * $limit;
  40. $tpages = ceil($num / $limit);
  41. $nav = new RMPageNav($num, $limit, $page, 5);
  42. $nav->target_url("tags.php?search=".urlencode($search)."&amp;page={PAGE_NUM}");
  43. $showmax = $start + $limit;
  44. $showmax = $showmax > $num ? $num : $showmax;
  45. //Fin de barra de navegación
  46. $sql = "SELECT * FROM ".$db->prefix('gs_tags');
  47. $sql2 = " LIMIT $start,$limit";
  48. $result = $db->query($sql.$sql1.$sql2);
  49. $tags = array();
  50. while ($rows = $db->fetchArray($result)){
  51. foreach ($words as $k){
  52. $rows['tag'] = eregi_replace("($k)","<span class='searchResalte'>\\1</span>", $rows['tag']);
  53. }
  54. $tag = new GSTag();
  55. $tag->assignVars($rows);
  56. //Obtenemos todas las imágenes pertenecientes a la etiqueta
  57. $sql = "SELECT COUNT(*) FROM ".$db->prefix('gs_tagsimages')." WHERE id_tag=".$tag->id();
  58. list($pics) = $db->fetchRow($db->query($sql));
  59. $tags[] = array('id'=>$tag->id(),'name'=>$tag->tag(),'pics'=>$pics,'url'=>$tag->url());
  60. }
  61. GSFunctions::toolbar();
  62. xoops_cp_location("<a href='./'>".$xoopsModule->name()."</a> &raquo; ".__('Tags Management','galleries'));
  63. RMTemplate::get()->assign('xoops_pagetitle',__('Tags Management','galleries'));
  64. $cHead = '<link href="'.XOOPS_URL.'/modules/galleries/styles/admin.css" media="all" rel="stylesheet" type="text/css" />';
  65. xoops_cp_header($cHead);
  66. include RMTemplate::get()->get_template("admin/gs_tags.php",'module','galleries');
  67. RMTemplate::get()->add_script(RMCURL.'/include/js/jquery.checkboxes.js');
  68. RMTemplate::get()->add_script('../include/js/gsscripts.php?file=sets&form=frm-tags');
  69. RMTemplate::get()->add_script('../include/js/gsscripts.php?file=tags');
  70. RMTemplate::get()->add_head("<script type='text/javascript'>\nvar delete_warning='".__('Do you really wish to delete selected tags?','galleries')."';\n</script>");
  71. xoops_cp_footer();
  72. }
  73. /**
  74. * @desc Formulario de creación/Edición de etiquetas
  75. **/
  76. function formTags($edit = 0){
  77. global $xoopsModule;
  78. $page = isset($_REQUEST['pag']) ? $_REQUEST['pag'] : '';
  79. $search = isset($_REQUEST['search']) ? $_REQUEST['search'] : '';
  80. $ruta = "pag=$page&search=$search";
  81. $ids = isset($_REQUEST['ids']) ? $_REQUEST['ids'] : 0;
  82. $num = 10;
  83. if($edit){
  84. //Verificamos si nos proporcionaron al menos una etiqueta para editar
  85. if (!is_array($ids) && $ids<=0){
  86. redirectMsg('./tags.php?'.$ruta,__('Specify some valid IDs','galleries'),1);
  87. die();
  88. }
  89. if (!is_array($ids)){
  90. $ids = array($ids);
  91. }
  92. }
  93. GSFunctions::toolbar();
  94. xoops_cp_location("<a href='./'>".$xoopsModule->name()."</a> &raquo; <a href='./tags.php'>".__('Tags Management','galleries')."</a> &raquo; ".($edit ? _AS_GS_EDITTAG : _AS_GS_NEWTAG));
  95. RMTemplate::get()->assign('xoops_pagetitle',$edit ? __('Edit Tags','galleries') : __('Add Tags','galleries'));
  96. xoops_cp_header();
  97. $form = new RMForm($edit ? __('Editing tags','galleries') : __('Add tags','galleries'),'frmtags','tags.php');
  98. if($edit){
  99. $errors = '';
  100. foreach ($ids as $k){
  101. //Verificamos si la etiqueta es válida
  102. if($k<=0){
  103. $errors .= sprintf(__('ID "%s" is not valid','galleries'), $k);
  104. continue;
  105. }
  106. //Verificamos si la etiqueta existe
  107. $tag = new GSTag($k);
  108. if ($tag->isNew()){
  109. $errors .= sprintf(__('Tag "%s" does not exists','galleries'), $k);
  110. continue;
  111. }
  112. $form->addElement(new RMFormText(__('Tag name','galleries'),'tags['.$tag->id().']',50,100,$edit ? $tag->tag() : ''));
  113. }
  114. }else{
  115. for ($i=0; $i<$num; $i++){
  116. $form->addElement(new RMFormText(__('Tag name','galleries'),'tags['.$i.']',50,100,$edit ? $tag->tag() : ''));
  117. }
  118. }
  119. $form->addElement(new RMFormHidden('op',$edit ? 'saveedit' : 'save'));
  120. $form->addElement(new RMFormHidden('page',$page));
  121. $form->addElement(new RMFormHidden('search',$search));
  122. $buttons = new RMFormButtonGroup();
  123. $buttons->addButton('sbt',$edit ? __('Save Changes','galleries') : __('Create tags','galleries'),'submit');
  124. $buttons->addButton('cancel',__('Cancel','galleries'),'button','onclick="window.location=\'tags.php?'.$ruta.'\'"');
  125. $form->addElement($buttons);
  126. $form->display();
  127. xoops_cp_footer();
  128. }
  129. /**
  130. * @desc Almacena la información de la etiqueta en la base de datos
  131. **/
  132. function saveTags($edit = 0){
  133. global $xoopsModuleConfig, $xoopsSecurity;
  134. $mc =&$xoopsModuleConfig;
  135. $db = XoopsDatabaseFactory::getDatabaseConnection();
  136. foreach ($_POST as $k => $v){
  137. $$k = $v;
  138. }
  139. $ruta = "&pag=$page&search=$search";
  140. if (!$xoopsSecurity->check()){
  141. redirectMsg('./tags.php?'.$ruta,__('Session token expired!','galleries'),1);
  142. die();
  143. }
  144. if ($edit){
  145. $errors = '';
  146. foreach ($tags as $k => $v){
  147. $v = trim($v);
  148. if (!$v) continue;
  149. //Verificamos el tamańo máximo y mínimo de la etiqueta
  150. if (strlen($v)<$mc['min_tag'] || strlen($v)>$mc['max_tag']){
  151. $errors .=sprintf(__('Tag "%s" does not have the correct length!','galleries'), $v);
  152. continue;
  153. }
  154. //Verificamos que la etiqueta no exista
  155. $sql = "SELECT COUNT(*) FROM ".$db->prefix('gs_tags')." WHERE tag='$v' AND id_tag<>$k";
  156. list($num) = $db->fetchRow($db->query($sql));
  157. if ($num>0){
  158. $errors .= sprintf(__('There are another tag with name "%s" already registered!','galleries'), $v);
  159. continue;
  160. }
  161. //Verificamos si la etiqueta es válida
  162. if($k<=0){
  163. $errors .= sprintf(__('ID "%s" is not valid','galleries'), $k);
  164. continue;
  165. }
  166. //Verificamos si la etiqueta existe
  167. $tag = new GSTag($k);
  168. if ($tag->isNew()){
  169. $errors .= sprintf('Tag "%s" does not exists', $v);
  170. continue;
  171. }
  172. $tag->setTag(strtolower($v));
  173. if (!$tag->save()){
  174. $errors .= sprintf(__('Errors while trying to save tag "%s"','galleries'), $v);
  175. }
  176. }
  177. }else{
  178. $errors = '';
  179. foreach ($tags as $k => $v){
  180. $v = trim($v);
  181. if (!$v) continue;
  182. //Verificamos el tamańo máximo y mínimo de la etiqueta
  183. if (strlen($v)<$mc['min_tag'] || strlen($v)>$mc['max_tag']){
  184. $errors .=sprintf(__('Tag "%s" does not have the correct length!','galleries'), $v);
  185. continue;
  186. }
  187. //Verificamos que la etiqueta no exista
  188. $sql = "SELECT COUNT(*) FROM ".$db->prefix('gs_tags')." WHERE tag='$v'";
  189. list($num) = $db->fetchRow($db->query($sql));
  190. if ($num>0){
  191. $errors .= sprintf(__('There are another tag with name "%s" already registered!','galleries'), $v);
  192. continue;
  193. }
  194. $tag = new GSTag();
  195. $tag->setTag(strtolower($v));
  196. if (!$tag->save()){
  197. $errors .= sprintf(__('Errors while trying to save tag "%s"','galleries'), $v);
  198. }
  199. }
  200. }
  201. if ($errors!=''){
  202. redirectMsg('./tags.php?'.$ruta,__('Errors ocurred while trying to save tags.','galleries').'<br />'.$errors,1);
  203. die();
  204. }else{
  205. redirectMsg('./tags.php?'.$ruta,__('Tags saved successfully!','galleries'),0);
  206. die();
  207. }
  208. }
  209. /**
  210. * @desc Elimina las etiquetas especificadas de la base de datos
  211. **/
  212. function deleteTags(){
  213. global $xoopsSecurity, $xoopsModule;
  214. $ids = isset($_REQUEST['ids']) ? $_REQUEST['ids'] : 0;
  215. $page = isset($_REQUEST['pag']) ? $_REQUEST['pag'] : '';
  216. $search = isset($_REQUEST['search']) ? $_REQUEST['search'] : '';
  217. $ruta = "&pag=$page&search=$search";
  218. //Verificamos si nos proporcionaron al menos una etiqueta para eliminar
  219. if (!is_array($ids)){
  220. redirectMsg('./tags.php?'.$ruta,__('Select at least one tag to delete','galleries'),1);
  221. die();
  222. }
  223. if (!$xoopsSecurity->check()){
  224. redirectMsg('./tags.php?'.$ruta,__('Session token expired!','galleries'),1);
  225. die();
  226. }
  227. $errors = '';
  228. foreach ($ids as $k){
  229. //Verificamos si la etiqueta es válida
  230. if($k<=0){
  231. $errors .= sprintf(__('ID "%s" is not valid','galleries'), $k);
  232. continue;
  233. }
  234. //Verificamos si la etiqueta existe
  235. $tag = new GSTag($k);
  236. if ($tag->isNew()){
  237. $errors .= sprintf(__('Tag "%s" does not exists','galleries'), $k);
  238. continue;
  239. }
  240. if(!$tag->delete()){
  241. $errors .= sprintf(__('Tag "%s" could not be deleted!'), $k);
  242. }
  243. }
  244. if($erros!=''){
  245. redirectMsg('./tags.php?'.$ruta,__('Errors ocurred while trying to delete tags.','galleries').'<br />'.$errors,1);
  246. die();
  247. }else{
  248. redirectMsg('./tags.php?'.$ruta,__('Tags deleted successfully!','galleries'),0);
  249. die();
  250. }
  251. }
  252. $op = rmc_server_var($_REQUEST, 'op', '');
  253. switch($op){
  254. case 'new':
  255. formTags();
  256. break;
  257. case 'edit':
  258. formTags(1);
  259. break;
  260. case 'save':
  261. saveTags();
  262. break;
  263. case 'saveedit':
  264. saveTags(1);
  265. break;
  266. case 'delete':
  267. deleteTags();
  268. break;
  269. default:
  270. showTags();
  271. break;
  272. }