PageRenderTime 54ms CodeModel.GetById 24ms RepoModel.GetById 1ms app.codeStats 0ms

/K2/administrator/components/com_k2/models/items.php

http://joomlaworks.googlecode.com/
PHP | 1155 lines | 973 code | 154 blank | 28 comment | 160 complexity | ae620c6f023db39fd9d03550a18da3b7 MD5 | raw file
  1. <?php
  2. /**
  3. * @version $Id: items.php 1118 2011-10-11 15:26:20Z lefteris.kavadas $
  4. * @package K2
  5. * @author JoomlaWorks http://www.joomlaworks.gr
  6. * @copyright Copyright (c) 2006 - 2011 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 K2ModelItems extends JModel {
  14. function getData() {
  15. $mainframe = &JFactory::getApplication();
  16. $params = &JComponentHelper::getParams('com_k2');
  17. $option = JRequest::getCmd('option');
  18. $view = JRequest::getCmd('view');
  19. $db = &JFactory::getDBO();
  20. $limit = $mainframe->getUserStateFromRequest('global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int');
  21. $limitstart = $mainframe->getUserStateFromRequest($option.$view.'.limitstart', 'limitstart', 0, 'int');
  22. $filter_order = $mainframe->getUserStateFromRequest($option.$view.'filter_order', 'filter_order', 'i.id', 'cmd');
  23. $filter_order_Dir = $mainframe->getUserStateFromRequest($option.$view.'filter_order_Dir', 'filter_order_Dir', 'DESC', 'word');
  24. $filter_trash = $mainframe->getUserStateFromRequest($option.$view.'filter_trash', 'filter_trash', 0, 'int');
  25. $filter_featured = $mainframe->getUserStateFromRequest($option.$view.'filter_featured', 'filter_featured', -1, 'int');
  26. $filter_category = $mainframe->getUserStateFromRequest($option.$view.'filter_category', 'filter_category', 0, 'int');
  27. $filter_author = $mainframe->getUserStateFromRequest($option.$view.'filter_author', 'filter_author', 0, 'int');
  28. $filter_state = $mainframe->getUserStateFromRequest($option.$view.'filter_state', 'filter_state', -1, 'int');
  29. $search = $mainframe->getUserStateFromRequest($option.$view.'search', 'search', '', 'string');
  30. $search = JString::strtolower($search);
  31. $tag = $mainframe->getUserStateFromRequest($option.$view.'tag', 'tag', 0, 'int');
  32. $language = $mainframe->getUserStateFromRequest($option.$view.'language', 'language', '', 'string');
  33. $query = "SELECT i.*, g.name AS groupname, c.name AS category, v.name AS author, w.name as moderator, u.name AS editor FROM #__k2_items as i";
  34. $query .= " LEFT JOIN #__k2_categories AS c ON c.id = i.catid"." LEFT JOIN #__groups AS g ON g.id = i.access"." LEFT JOIN #__users AS u ON u.id = i.checked_out"." LEFT JOIN #__users AS v ON v.id = i.created_by"." LEFT JOIN #__users AS w ON w.id = i.modified_by";
  35. if($params->get('showTagFilter') && $tag){
  36. $query .= " LEFT JOIN #__k2_tags_xref AS tags_xref ON tags_xref.itemID = i.id";
  37. }
  38. $query .= " WHERE i.trash={$filter_trash}";
  39. if ($search) {
  40. $search = JString::str_ireplace('*', '', $search);
  41. $words = explode(' ', $search);
  42. for($i=0; $i<count($words); $i++){
  43. $words[$i]= '+'.$words[$i];
  44. $words[$i].= '*';
  45. }
  46. $search = implode(' ', $words);
  47. $search = $db->Quote($db->getEscaped($search, true), false);
  48. if($params->get('adminSearch')=='full')
  49. $query .= " AND MATCH(i.title, i.introtext, i.`fulltext`, i.extra_fields_search, i.image_caption,i.image_credits,i.video_caption,i.video_credits,i.metadesc,i.metakey)";
  50. else
  51. $query .= " AND MATCH( i.title )";
  52. $query.= " AGAINST ({$search} IN BOOLEAN MODE)";
  53. }
  54. if ($filter_state > - 1) {
  55. $query .= " AND i.published={$filter_state}";
  56. }
  57. if ($filter_featured > - 1) {
  58. $query .= " AND i.featured={$filter_featured}";
  59. }
  60. if ($filter_category > 0) {
  61. if ($params->get('showChildCatItems')) {
  62. require_once (JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'models'.DS.'itemlist.php');
  63. $categories = K2ModelItemlist::getCategoryTree($filter_category);
  64. $sql = @implode(',', $categories);
  65. $query .= " AND i.catid IN ({$sql})";
  66. } else {
  67. $query .= " AND i.catid={$filter_category}";
  68. }
  69. }
  70. if ($filter_author > 0) {
  71. $query .= " AND i.created_by={$filter_author}";
  72. }
  73. if($params->get('showTagFilter') && $tag){
  74. $query .= " AND tags_xref.tagID = {$tag}";
  75. }
  76. if ($language) {
  77. $query .= " AND i.language = ".$db->Quote($language);
  78. }
  79. if ($filter_order == 'i.ordering') {
  80. $query .= " ORDER BY i.catid, i.ordering {$filter_order_Dir}";
  81. } else {
  82. $query .= " ORDER BY {$filter_order} {$filter_order_Dir} ";
  83. }
  84. if(K2_JVERSION=='16'){
  85. $query = JString::str_ireplace('#__groups', '#__viewlevels', $query);
  86. $query = JString::str_ireplace('g.name', 'g.title', $query);
  87. }
  88. $db->setQuery($query, $limitstart, $limit);
  89. $rows = $db->loadObjectList();
  90. return $rows;
  91. }
  92. function getTotal() {
  93. $mainframe = &JFactory::getApplication();
  94. $params = &JComponentHelper::getParams('com_k2');
  95. $option = JRequest::getCmd('option');
  96. $view = JRequest::getCmd('view');
  97. $db = &JFactory::getDBO();
  98. $filter_trash = $mainframe->getUserStateFromRequest($option.$view.'filter_trash', 'filter_trash', 0, 'int');
  99. $filter_featured = $mainframe->getUserStateFromRequest($option.$view.'filter_featured', 'filter_featured', -1, 'int');
  100. $filter_category = $mainframe->getUserStateFromRequest($option.$view.'filter_category', 'filter_category', 0, 'int');
  101. $filter_author = $mainframe->getUserStateFromRequest($option.$view.'filter_author', 'filter_author', 0, 'int');
  102. $filter_state = $mainframe->getUserStateFromRequest($option.$view.'filter_state', 'filter_state', -1, 'int');
  103. $search = $mainframe->getUserStateFromRequest($option.$view.'search', 'search', '', 'string');
  104. $search = JString::strtolower($search);
  105. $tag = $mainframe->getUserStateFromRequest($option.$view.'tag', 'tag', 0, 'int');
  106. $language = $mainframe->getUserStateFromRequest($option.$view.'language', 'language', '', 'string');
  107. $query = "SELECT COUNT(*) FROM #__k2_items AS i ";
  108. if($params->get('showTagFilter') && $tag){
  109. $query .= " LEFT JOIN #__k2_tags_xref AS tags_xref ON tags_xref.itemID = i.id";
  110. }
  111. $query.= " WHERE trash={$filter_trash} ";
  112. if ($search) {
  113. $search = JString::str_ireplace('*', '', $search);
  114. $words = explode(' ', $search);
  115. for($i=0; $i<count($words); $i++){
  116. $words[$i]= '+'.$words[$i];
  117. $words[$i].= '*';
  118. }
  119. $search = implode(' ', $words);
  120. $search = $db->Quote($db->getEscaped($search, true), false);
  121. if($params->get('adminSearch')=='full')
  122. $query .= " AND MATCH(title, introtext, `fulltext`, extra_fields_search, image_caption, image_credits, video_caption, video_credits, metadesc, metakey)";
  123. else
  124. $query .= " AND MATCH( title )";
  125. $query.= " AGAINST ({$search} IN BOOLEAN MODE)";
  126. }
  127. if ($filter_state > - 1) {
  128. $query .= " AND published={$filter_state}";
  129. }
  130. if ($filter_featured > - 1) {
  131. $query .= " AND featured={$filter_featured}";
  132. }
  133. if ($filter_category > 0) {
  134. if ($params->get('showChildCatItems')) {
  135. require_once (JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'models'.DS.'itemlist.php');
  136. $categories = K2ModelItemlist::getCategoryTree($filter_category);
  137. $sql = @implode(',', $categories);
  138. $query .= " AND catid IN ({$sql})";
  139. } else {
  140. $query .= " AND catid={$filter_category}";
  141. }
  142. }
  143. if ($filter_author > 0) {
  144. $query .= " AND created_by={$filter_author}";
  145. }
  146. if($params->get('showTagFilter') && $tag){
  147. $query .= " AND tags_xref.tagID = {$tag}";
  148. }
  149. if ($language) {
  150. $query .= " AND language = ".$db->Quote($language);
  151. }
  152. $db->setQuery($query);
  153. $result = $db->loadResult();
  154. return $result;
  155. }
  156. function publish() {
  157. $mainframe = &JFactory::getApplication();
  158. $cid = JRequest::getVar('cid');
  159. $row = &JTable::getInstance('K2Item', 'Table');
  160. foreach ($cid as $id) {
  161. $row->load($id);
  162. $row->publish($id, 1);
  163. }
  164. $cache = &JFactory::getCache('com_k2');
  165. $cache->clean();
  166. $mainframe->redirect('index.php?option=com_k2&view=items');
  167. }
  168. function unpublish() {
  169. $mainframe = &JFactory::getApplication();
  170. $cid = JRequest::getVar('cid');
  171. $row = &JTable::getInstance('K2Item', 'Table');
  172. foreach ($cid as $id) {
  173. $row->load($id);
  174. $row->publish($id, 0);
  175. }
  176. $cache = &JFactory::getCache('com_k2');
  177. $cache->clean();
  178. $mainframe->redirect('index.php?option=com_k2&view=items');
  179. }
  180. function saveorder() {
  181. $mainframe = &JFactory::getApplication();
  182. $db = &JFactory::getDBO();
  183. $cid = JRequest::getVar('cid', array(0), 'post', 'array');
  184. $total = count($cid);
  185. $order = JRequest::getVar('order', array(0), 'post', 'array');
  186. JArrayHelper::toInteger($order, array(0));
  187. $row = &JTable::getInstance('K2Item', 'Table');
  188. $groupings = array();
  189. for ($i = 0; $i < $total; $i++) {
  190. $row->load((int) $cid[$i]);
  191. $groupings[] = $row->catid;
  192. if ($row->ordering != $order[$i]) {
  193. $row->ordering = $order[$i];
  194. if (!$row->store()) {
  195. JError::raiseError(500, $db->getErrorMsg());
  196. }
  197. }
  198. }
  199. $params = &JComponentHelper::getParams('com_k2');
  200. if(!$params->get('disableCompactOrdering')){
  201. $groupings = array_unique($groupings);
  202. foreach ($groupings as $group) {
  203. $row->reorder('catid = '.(int) $group.' AND trash=0');
  204. }
  205. }
  206. $cache = &JFactory::getCache('com_k2');
  207. $cache->clean();
  208. $msg = JText::_('K2_NEW_ORDERING_SAVED');
  209. $mainframe->redirect('index.php?option=com_k2&view=items', $msg);
  210. }
  211. function orderup() {
  212. $mainframe = &JFactory::getApplication();
  213. $cid = JRequest::getVar('cid');
  214. $row = &JTable::getInstance('K2Item', 'Table');
  215. $row->load($cid[0]);
  216. $row->move(-1, 'catid = '.(int) $row->catid.' AND trash=0');
  217. $params = &JComponentHelper::getParams('com_k2');
  218. if(!$params->get('disableCompactOrdering'))
  219. $row->reorder('catid = '.(int) $row->catid.' AND trash=0');
  220. $cache = &JFactory::getCache('com_k2');
  221. $cache->clean();
  222. $msg = JText::_('K2_NEW_ORDERING_SAVED');
  223. $mainframe->redirect('index.php?option=com_k2&view=items', $msg);
  224. }
  225. function orderdown() {
  226. $mainframe = &JFactory::getApplication();
  227. $cid = JRequest::getVar('cid');
  228. $row = &JTable::getInstance('K2Item', 'Table');
  229. $row->load($cid[0]);
  230. $row->move(1, 'catid = '.(int) $row->catid.' AND trash=0');
  231. $params = &JComponentHelper::getParams('com_k2');
  232. if(!$params->get('disableCompactOrdering'))
  233. $row->reorder('catid = '.(int) $row->catid.' AND trash=0');
  234. $cache = &JFactory::getCache('com_k2');
  235. $cache->clean();
  236. $msg = JText::_('K2_NEW_ORDERING_SAVED');
  237. $mainframe->redirect('index.php?option=com_k2&view=items', $msg);
  238. }
  239. function savefeaturedorder() {
  240. $mainframe = &JFactory::getApplication();
  241. $db = &JFactory::getDBO();
  242. $cid = JRequest::getVar('cid', array(0), 'post', 'array');
  243. $total = count($cid);
  244. $order = JRequest::getVar('order', array(0), 'post', 'array');
  245. JArrayHelper::toInteger($order, array(0));
  246. $row = &JTable::getInstance('K2Item', 'Table');
  247. $groupings = array();
  248. for ($i = 0; $i < $total; $i++) {
  249. $row->load((int) $cid[$i]);
  250. $groupings[] = $row->catid;
  251. if ($row->featured_ordering != $order[$i]) {
  252. $row->featured_ordering = $order[$i];
  253. if (!$row->store()) {
  254. JError::raiseError(500, $db->getErrorMsg());
  255. }
  256. }
  257. }
  258. $params = &JComponentHelper::getParams('com_k2');
  259. if(!$params->get('disableCompactOrdering')){
  260. $groupings = array_unique($groupings);
  261. foreach ($groupings as $group) {
  262. $row->reorder('featured = 1 AND trash=0', 'featured_ordering');
  263. }
  264. }
  265. $cache = &JFactory::getCache('com_k2');
  266. $cache->clean();
  267. $msg = JText::_('K2_NEW_FEATURED_ORDERING_SAVED');
  268. $mainframe->redirect('index.php?option=com_k2&view=items', $msg);
  269. }
  270. function featuredorderup() {
  271. $mainframe = &JFactory::getApplication();
  272. $cid = JRequest::getVar('cid');
  273. $row = &JTable::getInstance('K2Item', 'Table');
  274. $row->load($cid[0]);
  275. $row->move(-1, 'featured=1 AND trash=0', 'featured_ordering');
  276. $params = &JComponentHelper::getParams('com_k2');
  277. if(!$params->get('disableCompactOrdering'))
  278. $row->reorder('featured=1 AND trash=0', 'featured_ordering');
  279. $cache = &JFactory::getCache('com_k2');
  280. $cache->clean();
  281. $msg = JText::_('K2_NEW_ORDERING_SAVED');
  282. $mainframe->redirect('index.php?option=com_k2&view=items', $msg);
  283. }
  284. function featuredorderdown() {
  285. $mainframe = &JFactory::getApplication();
  286. $cid = JRequest::getVar('cid');
  287. $row = &JTable::getInstance('K2Item', 'Table');
  288. $row->load($cid[0]);
  289. $row->move(1, 'featured=1 AND trash=0', 'featured_ordering');
  290. $params = &JComponentHelper::getParams('com_k2');
  291. if(!$params->get('disableCompactOrdering'))
  292. $row->reorder('featured=1 AND trash=0', 'featured_ordering');
  293. $cache = &JFactory::getCache('com_k2');
  294. $cache->clean();
  295. $msg = JText::_('K2_NEW_ORDERING_SAVED');
  296. $mainframe->redirect('index.php?option=com_k2&view=items', $msg);
  297. }
  298. function accessregistered() {
  299. $mainframe = &JFactory::getApplication();
  300. $db = &JFactory::getDBO();
  301. $row = &JTable::getInstance('K2Item', 'Table');
  302. $cid = JRequest::getVar('cid');
  303. $row->load($cid[0]);
  304. $row->access = 1;
  305. if (!$row->check()) {
  306. return $row->getError();
  307. }
  308. if (!$row->store()) {
  309. return $row->getError();
  310. }
  311. $cache = &JFactory::getCache('com_k2');
  312. $cache->clean();
  313. $msg = JText::_('K2_NEW_ACCESS_SETTING_SAVED');
  314. $mainframe->redirect('index.php?option=com_k2&view=items', $msg);
  315. }
  316. function accessspecial() {
  317. $mainframe = &JFactory::getApplication();
  318. $db = &JFactory::getDBO();
  319. $row = &JTable::getInstance('K2Item', 'Table');
  320. $cid = JRequest::getVar('cid');
  321. $row->load($cid[0]);
  322. $row->access = 2;
  323. if (!$row->check()) {
  324. return $row->getError();
  325. }
  326. if (!$row->store()) {
  327. return $row->getError();
  328. }
  329. $cache = &JFactory::getCache('com_k2');
  330. $cache->clean();
  331. $msg = JText::_('K2_NEW_ACCESS_SETTING_SAVED');
  332. $mainframe->redirect('index.php?option=com_k2&view=items', $msg);
  333. }
  334. function accesspublic() {
  335. $mainframe = &JFactory::getApplication();
  336. $db = &JFactory::getDBO();
  337. $row = &JTable::getInstance('K2Item', 'Table');
  338. $cid = JRequest::getVar('cid');
  339. $row->load($cid[0]);
  340. $row->access = 0;
  341. if (!$row->check()) {
  342. return $row->getError();
  343. }
  344. if (!$row->store()) {
  345. return $row->getError();
  346. }
  347. $cache = &JFactory::getCache('com_k2');
  348. $cache->clean();
  349. $msg = JText::_('K2_NEW_ACCESS_SETTING_SAVED');
  350. $mainframe->redirect('index.php?option=com_k2&view=items', $msg);
  351. }
  352. function copy() {
  353. $mainframe = &JFactory::getApplication();
  354. jimport('joomla.filesystem.file');
  355. require_once (JPATH_COMPONENT.DS.'models'.DS.'item.php');
  356. $params = &JComponentHelper::getParams('com_k2');
  357. $itemModel = new K2ModelItem;
  358. $db = &JFactory::getDBO();
  359. $cid = JRequest::getVar('cid');
  360. JArrayHelper::toInteger($cid);
  361. $row = &JTable::getInstance('K2Item', 'Table');
  362. $nullDate = $db->getNullDate();
  363. foreach ($cid as $id) {
  364. //Load source item
  365. $item = &JTable::getInstance('K2Item', 'Table');
  366. $item->load($id);
  367. $item->id = (int) $item->id;
  368. //Source images
  369. $sourceImage = JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'src'.DS.md5("Image".$item->id).'.jpg';
  370. $sourceImageXS = JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_XS.jpg';
  371. $sourceImageS = JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_S.jpg';
  372. $sourceImageM = JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_M.jpg';
  373. $sourceImageL = JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_L.jpg';
  374. $sourceImageXL = JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_XL.jpg';
  375. $sourceImageGeneric = JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_Generic.jpg';
  376. //Source gallery
  377. $sourceGallery = JPATH_ROOT.DS.'media'.DS.'k2'.DS.'galleries'.DS.$item->id;
  378. $sourceGalleryTag = $item->gallery;
  379. //Source video
  380. preg_match_all("#^{(.*?)}(.*?){#", $item->video, $matches, PREG_PATTERN_ORDER);
  381. $videotype = $matches[1][0];
  382. $videofile = $matches[2][0];
  383. if ($videotype == 'flv' || $videotype == 'swf' || $videotype == 'wmv' || $videotype == 'mov' || $videotype == 'mp4' || $videotype == '3gp' || $videotype == 'divx') {
  384. if (JFile::exists(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'videos'.DS.$videofile.'.'.$videotype)) {
  385. $sourceVideo = $videofile.'.'.$videotype;
  386. //$row->video='{'.$videotype.'}'.$row->id.'{/'.$videotype.'}';
  387. }
  388. }
  389. //Source tags
  390. $query = "SELECT * FROM #__k2_tags_xref WHERE itemID={$item->id}";
  391. $db->setQuery($query);
  392. $sourceTags = $db->loadObjectList();
  393. //Source Attachments
  394. $sourceAttachments = $itemModel->getAttachments($item->id);
  395. //Save target item
  396. $row = &JTable::getInstance('K2Item', 'Table');
  397. $row = $item;
  398. $row->id = NULL;
  399. $row->title = JText::_('K2_COPY_OF').' '.$item->title;
  400. $row->hits = 0;
  401. $row->published = 0;
  402. $datenow = &JFactory::getDate();
  403. $row->created = $datenow->toMySQL();
  404. $row->modified = $nullDate;
  405. $row->store();
  406. //Target images
  407. if (JFile::exists($sourceImage))
  408. JFile::copy($sourceImage, JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'src'.DS.md5("Image".$row->id).'.jpg');
  409. if (JFile::exists($sourceImageXS))
  410. JFile::copy($sourceImageXS, JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$row->id).'_XS.jpg');
  411. if (JFile::exists($sourceImageS))
  412. JFile::copy($sourceImageS, JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$row->id).'_S.jpg');
  413. if (JFile::exists($sourceImageM))
  414. JFile::copy($sourceImageM, JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$row->id).'_M.jpg');
  415. if (JFile::exists($sourceImageL))
  416. JFile::copy($sourceImageL, JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$row->id).'_L.jpg');
  417. if (JFile::exists($sourceImageXL))
  418. JFile::copy($sourceImageXL, JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$row->id).'_XL.jpg');
  419. if (JFile::exists($sourceImageGeneric))
  420. JFile::copy($sourceImageGeneric, JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$row->id).'_Generic.jpg');
  421. //Target gallery
  422. if ($sourceGalleryTag){
  423. $row->gallery = '{gallery}'.$row->id.'{/gallery}';
  424. if (JFolder::exists($sourceGallery))
  425. JFolder::copy($sourceGallery, JPATH_ROOT.DS.'media'.DS.'k2'.DS.'galleries'.DS.$row->id);
  426. }
  427. //Target video
  428. if (isset($sourceVideo) && JFile::exists(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'videos'.DS.$sourceVideo)) {
  429. JFile::copy(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'videos'.DS.$sourceVideo, JPATH_ROOT.DS.'media'.DS.'k2'.DS.'videos'.DS.$row->id.'.'.$videotype);
  430. $row->video = '{'.$videotype.'}'.$row->id.'{/'.$videotype.'}';
  431. }
  432. //Target attachments
  433. $path = $params->get('attachmentsFolder', NULL);
  434. if (is_null($path))
  435. $savepath = JPATH_ROOT.DS.'media'.DS.'k2'.DS.'attachments';
  436. else
  437. $savepath = $path;
  438. foreach ($sourceAttachments as $attachment) {
  439. if (JFile::exists($savepath.DS.$attachment->filename)) {
  440. JFile::copy($savepath.DS.$attachment->filename, $savepath.DS.$row->id.'_'.$attachment->filename);
  441. $attachmentRow = &JTable::getInstance('K2Attachment', 'Table');
  442. $attachmentRow->itemID = $row->id;
  443. $attachmentRow->title = $attachment->title;
  444. $attachmentRow->titleAttribute = $attachment->titleAttribute;
  445. $attachmentRow->filename = $row->id.'_'.$attachment->filename;
  446. $attachmentRow->hits = 0;
  447. $attachmentRow->store();
  448. }
  449. }
  450. //Target tags
  451. foreach ($sourceTags as $tag) {
  452. $query = "INSERT INTO #__k2_tags_xref (`id`, `tagID`, `itemID`) VALUES (NULL, {intval($tag->tagID)}, {intval($row->id)})";
  453. $db->setQuery($query);
  454. $db->query();
  455. }
  456. $row->store();
  457. }
  458. $mainframe->redirect('index.php?option=com_k2&view=items', JText::_('K2_COPY_COMPLETED'));
  459. }
  460. function featured() {
  461. $mainframe = &JFactory::getApplication();
  462. $db = &JFactory::getDBO();
  463. $cid = JRequest::getVar('cid');
  464. $row = &JTable::getInstance('K2Item', 'Table');
  465. foreach ($cid as $id) {
  466. $row->load($id);
  467. if ($row->featured == 1)
  468. $row->featured = 0;
  469. else {
  470. $row->featured = 1;
  471. $row->featured_ordering = 1;
  472. }
  473. $row->store();
  474. }
  475. $cache = &JFactory::getCache('com_k2');
  476. $cache->clean();
  477. $mainframe->redirect('index.php?option=com_k2&view=items', JText::_('K2_ITEMS_CHANGED'));
  478. }
  479. function trash() {
  480. $mainframe = &JFactory::getApplication();
  481. $db = &JFactory::getDBO();
  482. $cid = JRequest::getVar('cid');
  483. JArrayHelper::toInteger($cid);
  484. $row = &JTable::getInstance('K2Item', 'Table');
  485. foreach ($cid as $id) {
  486. $row->load($id);
  487. $row->trash = 1;
  488. $row->store();
  489. }
  490. $cache = &JFactory::getCache('com_k2');
  491. $cache->clean();
  492. $mainframe->redirect('index.php?option=com_k2&view=items', JText::_('K2_ITEMS_MOVED_TO_TRASH'));
  493. }
  494. function restore() {
  495. $mainframe = &JFactory::getApplication();
  496. $db = &JFactory::getDBO();
  497. $cid = JRequest::getVar('cid');
  498. $row = &JTable::getInstance('K2Item', 'Table');
  499. $warning = false;
  500. foreach ($cid as $id) {
  501. $row->load($id);
  502. $query = "SELECT COUNT(*) FROM #__k2_categories WHERE id=".(int)$row->catid." AND trash = 0";
  503. $db->setQuery($query);
  504. $result = $db->loadResult();
  505. if ($result) {
  506. $row->trash = 0;
  507. $row->store();
  508. } else {
  509. $warning = true;
  510. }
  511. }
  512. $cache = &JFactory::getCache('com_k2');
  513. $cache->clean();
  514. if ($warning)
  515. $mainframe->enqueueMessage(JText::_('K2_SOME_OF_THE_ITEMS_HAVE_NOT_BEEN_RESTORED_BECAUSE_THEY_BELONG_TO_A_CATEGORY_WHICH_IS_IN_TRASH'), 'notice');
  516. $mainframe->redirect('index.php?option=com_k2&view=items', JText::_('K2_ITEMS_RESTORED'));
  517. }
  518. function remove() {
  519. $mainframe = &JFactory::getApplication();
  520. jimport('joomla.filesystem.file');
  521. $params = &JComponentHelper::getParams('com_k2');
  522. require_once (JPATH_COMPONENT.DS.'models'.DS.'item.php');
  523. $itemModel = new K2ModelItem;
  524. $db = &JFactory::getDBO();
  525. $cid = JRequest::getVar('cid');
  526. $row = &JTable::getInstance('K2Item', 'Table');
  527. foreach ($cid as $id) {
  528. $row->load($id);
  529. $row->id = (int) $row->id;
  530. //Delete images
  531. if (JFile::exists(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'src'.DS.md5("Image".$row->id).'.jpg')) {
  532. JFile::delete(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'src'.DS.md5("Image".$row->id).'.jpg');
  533. }
  534. if (JFile::exists(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$row->id).'_XS.jpg')) {
  535. JFile::delete(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$row->id).'_XS.jpg');
  536. }
  537. if (JFile::exists(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$row->id).'_S.jpg')) {
  538. JFile::delete(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$row->id).'_S.jpg');
  539. }
  540. if (JFile::exists(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$row->id).'_M.jpg')) {
  541. JFile::delete(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$row->id).'_M.jpg');
  542. }
  543. if (JFile::exists(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$row->id).'_L.jpg')) {
  544. JFile::delete(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$row->id).'_L.jpg');
  545. }
  546. if (JFile::exists(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$row->id).'_XL.jpg')) {
  547. JFile::delete(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$row->id).'_XL.jpg');
  548. }
  549. if (JFile::exists(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$row->id).'_Generic.jpg')) {
  550. JFile::delete(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$row->id).'_Generic.jpg');
  551. }
  552. //Delete gallery
  553. if (JFolder::exists(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'galleries'.DS.$row->id))
  554. JFolder::delete(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'galleries'.DS.$row->id);
  555. //Delete video
  556. preg_match_all("#^{(.*?)}(.*?){#", $row->video, $matches, PREG_PATTERN_ORDER);
  557. $videotype = $matches[1][0];
  558. $videofile = $matches[2][0];
  559. if ($videotype == 'flv' || $videotype == 'swf' || $videotype == 'wmv' || $videotype == 'mov' || $videotype == 'mp4' || $videotype == '3gp' || $videotype == 'divx') {
  560. if (JFile::exists(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'videos'.DS.$videofile.'.'.$videotype))
  561. JFile::delete(JPATH_ROOT.DS.'media'.DS.'k2'.DS.'videos'.DS.$videofile.'.'.$videotype);
  562. }
  563. //Delete attachments
  564. $path = $params->get('attachmentsFolder', NULL);
  565. if (is_null($path))
  566. $savepath = JPATH_ROOT.DS.'media'.DS.'k2'.DS.'attachments';
  567. else
  568. $savepath = $path;
  569. $attachments = $itemModel->getAttachments($row->id);
  570. foreach ($attachments as $attachment) {
  571. if (JFile::exists($savepath.DS.$attachment->filename))
  572. JFile::delete($savepath.DS.$attachment->filename);
  573. }
  574. $query = "DELETE FROM #__k2_attachments WHERE itemID={$row->id}";
  575. $db->setQuery($query);
  576. $db->query();
  577. //Delete tags
  578. $query = "DELETE FROM #__k2_tags_xref WHERE itemID={$row->id}";
  579. $db->setQuery($query);
  580. $db->query();
  581. //Delete comments
  582. $query = "DELETE FROM #__k2_comments WHERE itemID={$row->id}";
  583. $db->setQuery($query);
  584. $db->query();
  585. $row->delete($id);
  586. }
  587. $cache = &JFactory::getCache('com_k2');
  588. $cache->clean();
  589. $mainframe->redirect('index.php?option=com_k2&view=items', JText::_('K2_DELETE_COMPLETED'));
  590. }
  591. function import() {
  592. $mainframe = &JFactory::getApplication();
  593. jimport('joomla.filesystem.file');
  594. $db = &JFactory::getDBO();
  595. $query = "SELECT * FROM #__sections";
  596. $db->setQuery($query);
  597. $sections = $db->loadObjectList();
  598. $query = "SELECT COUNT(*) FROM #__k2_items";
  599. $db->setQuery($query);
  600. $result = $db->loadResult();
  601. if($result)
  602. $preserveItemIDs = false;
  603. else
  604. $preserveItemIDs = true;
  605. $xml = new JSimpleXML;
  606. $xml->loadFile(JPATH_COMPONENT.DS.'models'.DS.'category.xml');
  607. $categoryParams = new JParameter('');
  608. foreach ($xml->document->params as $paramGroup) {
  609. foreach ($paramGroup->param as $param) {
  610. if ($param->attributes('type') != 'spacer' && $param->attributes('name')) {
  611. $categoryParams->set($param->attributes('name'), $param->attributes('default'));
  612. }
  613. }
  614. }
  615. $categoryParams = $categoryParams->toString();
  616. $xml = new JSimpleXML;
  617. $xml->loadFile(JPATH_COMPONENT.DS.'models'.DS.'item.xml');
  618. $itemParams = new JParameter('');
  619. foreach ($xml->document->params as $paramGroup) {
  620. foreach ($paramGroup->param as $param) {
  621. if ($param->attributes('type') != 'spacer' && $param->attributes('name')) {
  622. $itemParams->set($param->attributes('name'), $param->attributes('default'));
  623. }
  624. }
  625. }
  626. $itemParams = $itemParams->toString();
  627. $query = "SELECT id, name FROM #__k2_tags";
  628. $db->setQuery($query);
  629. $tags = $db->loadObjectList();
  630. if(is_null($tags))
  631. $tags = array();
  632. foreach ($sections as $section) {
  633. $K2Category = &JTable::getInstance('K2Category', 'Table');
  634. $K2Category->name = $section->title;
  635. $K2Category->alias = $section->title;
  636. $K2Category->description = $section->description;
  637. $K2Category->parent = 0;
  638. $K2Category->published = $section->published;
  639. $K2Category->access = $section->access;
  640. $K2Category->ordering = $section->ordering;
  641. $K2Category->image = $section->image;
  642. $K2Category->trash = 0;
  643. $K2Category->params = $categoryParams;
  644. $K2Category->check();
  645. $K2Category->store();
  646. if (JFile::exists(JPATH_SITE.DS.'images'.DS.'stories'.DS.$section->image)) {
  647. JFile::copy(JPATH_SITE.DS.'images'.DS.'stories'.DS.$section->image, JPATH_SITE.DS.'media'.DS.'k2'.DS.'categories'.DS.$K2Category->image);
  648. }
  649. $query = "SELECT * FROM #__categories WHERE section = ".(int)$section->id;
  650. $db->setQuery($query);
  651. $categories = $db->loadObjectList();
  652. foreach ($categories as $category) {
  653. $K2Subcategory = &JTable::getInstance('K2Category', 'Table');
  654. $K2Subcategory->name = $category->title;
  655. $K2Subcategory->alias = $category->title;
  656. $K2Subcategory->description = $category->description;
  657. $K2Subcategory->parent = $K2Category->id;
  658. $K2Subcategory->published = $category->published;
  659. $K2Subcategory->access = $category->access;
  660. $K2Subcategory->ordering = $category->ordering;
  661. $K2Subcategory->image = $category->image;
  662. $K2Subcategory->trash = 0;
  663. $K2Subcategory->params = $categoryParams;
  664. $K2Subcategory->check();
  665. $K2Subcategory->store();
  666. if (JFile::exists(JPATH_SITE.DS.'images'.DS.'stories'.DS.$category->image)) {
  667. JFile::copy(JPATH_SITE.DS.'images'.DS.'stories'.DS.$category->image, JPATH_SITE.DS.'media'.DS.'k2'.DS.'categories'.DS.$K2Subcategory->image);
  668. }
  669. $query = "SELECT article.*, xref.content_id
  670. FROM #__content AS article
  671. LEFT JOIN #__content_frontpage AS xref ON article.id = xref.content_id
  672. WHERE catid = ".(int)$category->id;
  673. $db->setQuery($query);
  674. $items = $db->loadObjectList();
  675. foreach ($items as $item) {
  676. $K2Item = &JTable::getInstance('K2Item', 'Table');
  677. $K2Item->title = $item->title;
  678. $K2Item->alias = $item->title;
  679. $K2Item->catid = $K2Subcategory->id;
  680. if ($item->state < 0) {
  681. $K2Item->trash = 1;
  682. } else {
  683. $K2Item->trash = 0;
  684. $K2Item->published = $item->state;
  685. }
  686. $K2Item->featured = ($item->content_id)?1:0;
  687. $K2Item->introtext = $item->introtext;
  688. $K2Item->fulltext = $item->fulltext;
  689. $K2Item->created = $item->created;
  690. $K2Item->created_by = $item->created_by;
  691. $K2Item->created_by_alias = $item->created_by_alias;
  692. $K2Item->modified = $item->modified;
  693. $K2Item->modified_by = $item->modified_by;
  694. $K2Item->publish_up = $item->publish_up;
  695. $K2Item->publish_down = $item->publish_down;
  696. $K2Item->access = $item->access;
  697. $K2Item->ordering = $item->ordering;
  698. $K2Item->hits = $item->hits;
  699. $K2Item->metadesc = $item->metadesc;
  700. $K2Item->metadata = $item->metadata;
  701. $K2Item->metakey = $item->metakey;
  702. $K2Item->params = $itemParams;
  703. $K2Item->check();
  704. if($preserveItemIDs){
  705. $K2Item->id = $item->id;
  706. $db->insertObject('#__k2_items', $K2Item);
  707. }
  708. else {
  709. $K2Item->store();
  710. }
  711. if(!empty($item->metakey)){
  712. $itemTags = explode(',', $item->metakey);
  713. foreach($itemTags as $itemTag){
  714. $itemTag = JString::trim($itemTag);
  715. if(in_array($itemTag ,JArrayHelper::getColumn($tags, 'name'))){
  716. $query = "SELECT id FROM #__k2_tags WHERE name=".$db->Quote($itemTag);
  717. $db->setQuery($query);
  718. $id = $db->loadResult();
  719. $query = "INSERT INTO #__k2_tags_xref (`id`, `tagID`, `itemID`) VALUES (NULL, {$id}, {$K2Item->id})";
  720. $db->setQuery($query);
  721. $db->query();
  722. }
  723. else {
  724. $K2Tag = &JTable::getInstance('K2Tag', 'Table');
  725. $K2Tag->name = $itemTag;
  726. $K2Tag->published = 1;
  727. $K2Tag->store();
  728. $tags[]=$K2Tag;
  729. $query = "INSERT INTO #__k2_tags_xref (`id`, `tagID`, `itemID`) VALUES (NULL, {$K2Tag->id}, {$K2Item->id})";
  730. $db->setQuery($query);
  731. $db->query();
  732. }
  733. }
  734. }
  735. }
  736. }
  737. }
  738. // Handle uncategorized articles
  739. $query = "SELECT * FROM #__content WHERE sectionid = 0";
  740. $db->setQuery($query);
  741. $items = $db->loadObjectList();
  742. if($items){
  743. $K2Uncategorised = &JTable::getInstance('K2Category', 'Table');
  744. $K2Uncategorised->name = 'Uncategorized';
  745. $K2Uncategorised->alias = 'Uncategorized';
  746. $K2Uncategorised->parent = 0;
  747. $K2Uncategorised->published = 1;
  748. $K2Uncategorised->access = 0;
  749. $K2Uncategorised->ordering = 0;
  750. $K2Uncategorised->trash = 0;
  751. $K2Uncategorised->params = $categoryParams;
  752. $K2Uncategorised->check();
  753. $K2Uncategorised->store();
  754. foreach ($items as $item) {
  755. $K2Item = &JTable::getInstance('K2Item', 'Table');
  756. $K2Item->title = $item->title;
  757. $K2Item->alias = $item->title;
  758. $K2Item->catid = $K2Uncategorised->id;
  759. if ($item->state < 0) {
  760. $K2Item->trash = 1;
  761. } else {
  762. $K2Item->trash = 0;
  763. $K2Item->published = $item->state;
  764. }
  765. $K2Item->introtext = $item->introtext;
  766. $K2Item->fulltext = $item->fulltext;
  767. $K2Item->created = $item->created;
  768. $K2Item->created_by = $item->created_by;
  769. $K2Item->created_by_alias = $item->created_by_alias;
  770. $K2Item->modified = $item->modified;
  771. $K2Item->modified_by = $item->modified_by;
  772. $K2Item->publish_up = $item->publish_up;
  773. $K2Item->publish_down = $item->publish_down;
  774. $K2Item->access = $item->access;
  775. $K2Item->ordering = $item->ordering;
  776. $K2Item->hits = $item->hits;
  777. $K2Item->metadesc = $item->metadesc;
  778. $K2Item->metadata = $item->metadata;
  779. $K2Item->metakey = $item->metakey;
  780. $K2Item->params = $itemParams;
  781. $K2Item->check();
  782. if($preserveItemIDs){
  783. $K2Item->id = $item->id;
  784. $db->insertObject('#__k2_items', $K2Item);
  785. }
  786. else {
  787. $K2Item->store();
  788. }
  789. if(!empty($item->metakey)){
  790. $itemTags = explode(',', $item->metakey);
  791. foreach($itemTags as $itemTag){
  792. $itemTag = JString::trim($itemTag);
  793. if(in_array($itemTag ,JArrayHelper::getColumn($tags, 'name'))){
  794. $query = "SELECT id FROM #__k2_tags WHERE name=".$db->Quote($itemTag);
  795. $db->setQuery($query);
  796. $id = $db->loadResult();
  797. $query = "INSERT INTO #__k2_tags_xref (`id`, `tagID`, `itemID`) VALUES (NULL, {$id}, {$K2Item->id})";
  798. $db->setQuery($query);
  799. $db->query();
  800. }
  801. else {
  802. $K2Tag = &JTable::getInstance('K2Tag', 'Table');
  803. $K2Tag->name = $itemTag;
  804. $K2Tag->published = 1;
  805. $K2Tag->store();
  806. $tags[]=$K2Tag;
  807. $query = "INSERT INTO #__k2_tags_xref (`id`, `tagID`, `itemID`) VALUES (NULL, {$K2Tag->id}, {$K2Item->id})";
  808. $db->setQuery($query);
  809. $db->query();
  810. }
  811. }
  812. }
  813. }
  814. }
  815. $mainframe->redirect('index.php?option=com_k2&view=items', JText::_('K2_IMPORT_COMPLETED'));
  816. }
  817. function importJ16() {
  818. jimport('joomla.filesystem.file');
  819. jimport('joomla.html.parameter');
  820. jimport( 'joomla.utilities.xmlelement' );
  821. $mainframe = &JFactory::getApplication();
  822. $db = &JFactory::getDBO();
  823. $query = "SELECT COUNT(*) FROM #__k2_items";
  824. $db->setQuery($query);
  825. $result = $db->loadResult();
  826. if($result) {
  827. $preserveItemIDs = false;
  828. }
  829. else {
  830. $preserveItemIDs = true;
  831. }
  832. $xml = new JXMLElement(JFile::read(JPATH_COMPONENT.DS.'models'.DS.'category.xml'));
  833. $categoryParams = new JParameter('');
  834. foreach ($xml->params as $paramGroup) {
  835. foreach ($paramGroup->param as $param) {
  836. if ($param->getAttribute('type') != 'spacer' && $param->getAttribute('name')) {
  837. $categoryParams->set($param->getAttribute('name'), $param->getAttribute('default'));
  838. }
  839. }
  840. }
  841. $categoryParams = $categoryParams->toString();
  842. $xml = new JXMLElement(JFile::read(JPATH_COMPONENT.DS.'models'.DS.'item.xml'));
  843. $itemParams = new JParameter('');
  844. foreach ($xml->params as $paramGroup) {
  845. foreach ($paramGroup->param as $param) {
  846. if ($param->getAttribute('type') != 'spacer' && $param->getAttribute('name')) {
  847. $itemParams->set($param->getAttribute('name'), $param->getAttribute('default'));
  848. }
  849. }
  850. }
  851. $itemParams = $itemParams->toString();
  852. $query = "SELECT id, name FROM #__k2_tags";
  853. $db->setQuery($query);
  854. $tags = $db->loadObjectList();
  855. if(is_null($tags))
  856. $tags = array();
  857. $query = "SELECT * FROM #__categories WHERE extension = 'com_content'";
  858. $db->setQuery($query);
  859. $categories = $db->loadObjectList();
  860. $mapping = array();
  861. foreach ($categories as $category) {
  862. $category->params = json_decode($category->params);
  863. $category->image = $category->params->image;
  864. $K2Category = &JTable::getInstance('K2Category', 'Table');
  865. $K2Category->name = $category->title;
  866. $K2Category->alias = $category->title;
  867. $K2Category->description = $category->description;
  868. $K2Category->parent = $category->parent_id;
  869. if($K2Category->parent==1){
  870. $K2Category->parent = 0;
  871. }
  872. $K2Category->published = $category->published;
  873. $K2Category->access = $category->access;
  874. $K2Category->ordering = $K2Category->getNextOrder('parent='.(int)$category->parent_id);
  875. $K2Category->image = basename($category->image);
  876. $K2Category->trash = 0;
  877. $K2Category->language = $category->language;
  878. $K2Category->params = $categoryParams;
  879. $K2Category->check();
  880. if($preserveItemIDs){
  881. $K2Category->id = $category->id;
  882. $db->insertObject('#__k2_categories', $K2Category);
  883. }
  884. else {
  885. $K2Category->store();
  886. $mapping[$category->id]= $K2Category->id;
  887. }
  888. if ($K2Category->image && JFile::exists(realpath(JPATH_SITE.DS.$category->image))) {
  889. JFile::copy(realpath(JPATH_SITE.DS.$category->image), JPATH_SITE.DS.'media'.DS.'k2'.DS.'categories'.DS.$K2Category->image);
  890. }
  891. $query = "SELECT article.*, xref.content_id
  892. FROM #__content AS article
  893. LEFT JOIN #__content_frontpage AS xref ON article.id = xref.content_id
  894. WHERE catid = ".(int)$category->id;
  895. $db->setQuery($query);
  896. $items = $db->loadObjectList();
  897. foreach ($items as $item) {
  898. $K2Item = &JTable::getInstance('K2Item', 'Table');
  899. $K2Item->title = $item->title;
  900. $K2Item->alias = $item->title;
  901. $K2Item->catid = $K2Category->id;
  902. if ($item->state < 0) {
  903. $K2Item->trash = 1;
  904. } else {
  905. $K2Item->trash = 0;
  906. }
  907. $K2Item->published = 1;
  908. if ($item->state == 0) {
  909. $K2Item->published = 0;
  910. }
  911. $K2Item->published = $item->state;
  912. $K2Item->featured = ($item->content_id)?1:0;
  913. $K2Item->introtext = $item->introtext;
  914. $K2Item->fulltext = $item->fulltext;
  915. $K2Item->created = $item->created;
  916. $K2Item->created_by = $item->created_by;
  917. $K2Item->created_by_alias = $item->created_by_alias;
  918. $K2Item->modified = $item->modified;
  919. $K2Item->modified_by = $item->modified_by;
  920. $K2Item->publish_up = $item->publish_up;
  921. $K2Item->publish_down = $item->publish_down;
  922. $K2Item->access = $item->access;
  923. $K2Item->ordering = $item->ordering;
  924. $K2Item->hits = $item->hits;
  925. $K2Item->metadesc = $item->metadesc;
  926. $K2Item->metadata = $item->metadata;
  927. $K2Item->metakey = $item->metakey;
  928. $K2Item->params = $itemParams;
  929. $K2Item->language = $item->language;
  930. $K2Item->check();
  931. if($preserveItemIDs){
  932. $K2Item->id = $item->id;
  933. $db->insertObject('#__k2_items', $K2Item);
  934. }
  935. else {
  936. $K2Item->store();
  937. }
  938. if(!empty($item->metakey)){
  939. $itemTags = explode(',', $item->metakey);
  940. foreach($itemTags as $itemTag){
  941. $itemTag = JString::trim($itemTag);
  942. if(in_array($itemTag ,JArrayHelper::getColumn($tags, 'name'))){
  943. $query = "SELECT id FROM #__k2_tags WHERE name=".$db->Quote($itemTag);
  944. $db->setQuery($query);
  945. $id = $db->loadResult();
  946. $query = "INSERT INTO #__k2_tags_xref (`id`, `tagID`, `itemID`) VALUES (NULL, {$id}, {$K2Item->id})";
  947. $db->setQuery($query);
  948. $db->query();
  949. }
  950. else {
  951. $K2Tag = &JTable::getInstance('K2Tag', 'Table');
  952. $K2Tag->name = $itemTag;
  953. $K2Tag->published = 1;
  954. $K2Tag->store();
  955. $tags[]=$K2Tag;
  956. $query = "INSERT INTO #__k2_tags_xref (`id`, `tagID`, `itemID`) VALUES (NULL, {$K2Tag->id}, {$K2Item->id})";
  957. $db->setQuery($query);
  958. $db->query();
  959. }
  960. }
  961. }
  962. }
  963. }
  964. foreach($mapping as $oldID=>$newID){
  965. $query = "UPDATE #__k2_categories SET parent=".$newID." WHERE parent=".$oldID;
  966. $db->setQuery($query);
  967. $db->query();
  968. }
  969. $mainframe->redirect('index.php?option=com_k2&view=items', JText::_('K2_IMPORT_COMPLETED'));
  970. }
  971. function move() {
  972. $mainframe = &JFactory::getApplication();
  973. $cid = JRequest::getVar('cid');
  974. $catid = JRequest::getInt('category');
  975. $row = &JTable::getInstance('K2Item', 'Table');
  976. foreach ($cid as $id) {
  977. $row->load($id);
  978. $row->catid = $catid;
  979. $row->ordering = $row->getNextOrder('catid = '.$row->catid.' AND published = 1');
  980. $row->store();
  981. }
  982. $cache = &JFactory::getCache('com_k2');
  983. $cache->clean();
  984. $mainframe->redirect('index.php?option=com_k2&view=items', JText::_('K2_MOVE_COMPLETED'));
  985. }
  986. function getItemsAuthors(){
  987. $db = &$this->getDBO();
  988. $query = "SELECT DISTINCT(created_by) FROM #__k2_items";
  989. $db->setQuery($query);
  990. $userIDs = $db->loadResultArray();
  991. JArrayHelper::toInteger($userIDs);
  992. $query = "SELECT id, name, block FROM #__users";
  993. if(count($userIDs)){
  994. $query.=" WHERE id IN(".implode(',', $userIDs).") ";
  995. }
  996. $query.=" ORDER BY name";
  997. $db->setQuery($query);
  998. $rows = $db->loadObjectList();
  999. return $rows;
  1000. }
  1001. }