PageRenderTime 41ms CodeModel.GetById 13ms RepoModel.GetById 1ms app.codeStats 0ms

/administrator/components/com_k2/models/category.php

http://getk2.googlecode.com/
PHP | 156 lines | 114 code | 32 blank | 10 comment | 17 complexity | 236d349281b675c98f56f5e3c11ea3b5 MD5 | raw file
  1. <?php
  2. /**
  3. * @version $Id: category.php 1492 2012-02-22 17:40:09Z joomlaworks@gmail.com $
  4. * @package K2
  5. * @author JoomlaWorks http://www.joomlaworks.net
  6. * @copyright Copyright (c) 2006 - 2012 JoomlaWorks Ltd. All rights reserved.
  7. * @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
  8. */
  9. // no direct access
  10. defined('_JEXEC') or die('Restricted access');
  11. jimport('joomla.application.component.model');
  12. JTable::addIncludePath(JPATH_COMPONENT.DS.'tables');
  13. class K2ModelCategory extends JModel
  14. {
  15. function getData() {
  16. $cid = JRequest::getVar('cid');
  17. $row = & JTable::getInstance('K2Category', 'Table');
  18. $row->load($cid);
  19. return $row;
  20. }
  21. function save() {
  22. $mainframe = &JFactory::getApplication();
  23. jimport('joomla.filesystem.file');
  24. require_once (JPATH_COMPONENT.DS.'lib'.DS.'class.upload.php');
  25. $row = & JTable::getInstance('K2Category', 'Table');
  26. $params = & JComponentHelper::getParams('com_k2');
  27. if (!$row->bind(JRequest::get('post'))) {
  28. $mainframe->redirect('index.php?option=com_k2&view=categories', $row->getError(), 'error');
  29. }
  30. $isNew = ($row->id) ? false : true;
  31. //Trigger the finder before save event
  32. $dispatcher = JDispatcher::getInstance();
  33. JPluginHelper::importPlugin('finder');
  34. $results = $dispatcher->trigger('onFinderBeforeSave', array('com_k2.category', $row, $isNew));
  35. $row->description = JRequest::getVar('description', '', 'post', 'string', 2);
  36. if($params->get('xssFiltering')){
  37. $filter = new JFilterInput(array(), array(), 1, 1, 0);
  38. $row->description = $filter->clean( $row->description );
  39. }
  40. if (!$row->id) {
  41. $row->ordering = $row->getNextOrder('parent = '.$row->parent.' AND trash=0');
  42. }
  43. if (!$row->check()) {
  44. $mainframe->redirect('index.php?option=com_k2&view=category&cid='.$row->id, $row->getError(), 'error');
  45. }
  46. if (!$row->store()) {
  47. $mainframe->redirect('index.php?option=com_k2&view=categories', $row->getError(), 'error');
  48. }
  49. if(!$params->get('disableCompactOrdering'))
  50. $row->reorder('parent = '.$row->parent.' AND trash=0');
  51. if((int)$params->get('imageMemoryLimit')) {
  52. ini_set('memory_limit', (int)$params->get('imageMemoryLimit').'M');
  53. }
  54. $files = JRequest::get('files');
  55. $savepath = JPATH_ROOT.DS.'media'.DS.'k2'.DS.'categories'.DS;
  56. $existingImage = JRequest::getVar('existingImage');
  57. if ( ($files['image']['error'] === 0 || $existingImage) && !JRequest::getBool('del_image')) {
  58. if($files['image']['error'] === 0){
  59. $image = $files['image'];
  60. }
  61. else{
  62. $image = JPATH_SITE.DS.JPath::clean($existingImage);
  63. }
  64. $handle = new Upload($image);
  65. if ($handle->uploaded) {
  66. $handle->file_auto_rename = false;
  67. $handle->jpeg_quality = $params->get('imagesQuality', '85');
  68. $handle->file_overwrite = true;
  69. $handle->file_new_name_body = $row->id;
  70. $handle->image_resize = true;
  71. $handle->image_ratio_y = true;
  72. $handle->image_x = $params->get('catImageWidth', '100');
  73. $handle->Process($savepath);
  74. if($files['image']['error'] === 0)
  75. $handle->Clean();
  76. }
  77. else {
  78. $mainframe->redirect('index.php?option=com_k2&view=categories', $handle->error, 'error');
  79. }
  80. $row->image = $handle->file_dst_name;
  81. }
  82. if (JRequest::getBool('del_image')) {
  83. $currentRow = & JTable::getInstance('K2Category', 'Table');
  84. $currentRow->load($row->id);
  85. if (JFile::exists(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'categories'.DS.$currentRow->image)) {
  86. JFile::delete(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'categories'.DS.$currentRow->image);
  87. }
  88. $row->image = '';
  89. }
  90. if (!$row->store()) {
  91. $mainframe->redirect('index.php?option=com_k2&view=categories', $row->getError(), 'error');
  92. }
  93. //Trigger the finder after save event
  94. $dispatcher = JDispatcher::getInstance();
  95. JPluginHelper::importPlugin('finder');
  96. $results = $dispatcher->trigger('onFinderAfterSave', array('com_k2.category', $row, $isNew));
  97. $cache = & JFactory::getCache('com_k2');
  98. $cache->clean();
  99. switch(JRequest::getCmd('task')) {
  100. case 'apply':
  101. $msg = JText::_('K2_CHANGES_TO_CATEGORY_SAVED');
  102. $link = 'index.php?option=com_k2&view=category&cid='.$row->id;
  103. break;
  104. case 'saveAndNew':
  105. $msg = JText::_('K2_CATEGORY_SAVED');
  106. $link = 'index.php?option=com_k2&view=category';
  107. break;
  108. case 'save':
  109. default:
  110. $msg = JText::_('K2_CATEGORY_SAVED');
  111. $link = 'index.php?option=com_k2&view=categories';
  112. break;
  113. }
  114. $mainframe->redirect($link, $msg);
  115. }
  116. function countCategoryItems($catid, $trash = 0) {
  117. $db = & JFactory::getDBO();
  118. $catid = (int)$catid;
  119. $query = "SELECT COUNT(*) FROM #__k2_items WHERE catid={$catid} AND trash = ".(int)$trash;
  120. $db->setQuery($query);
  121. $result = $db->loadResult();
  122. return $result;
  123. }
  124. }