PageRenderTime 44ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/administrator/components/com_k2/views/item/view.html.php

http://getk2.googlecode.com/
PHP | 422 lines | 339 code | 69 blank | 14 comment | 74 complexity | 4fe54d7d50ab24c4365e1b76020f7a3e MD5 | raw file
  1. <?php
  2. /**
  3. * @version $Id: view.html.php 1493 2012-02-23 10:49:37Z lefteris.kavadas $
  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.view');
  12. class K2ViewItem extends JView
  13. {
  14. function display($tpl = null) {
  15. $mainframe = &JFactory::getApplication();
  16. $db = & JFactory::getDBO();
  17. jimport('joomla.filesystem.file');
  18. jimport('joomla.html.pane');
  19. JHTML::_('behavior.keepalive');
  20. JRequest::setVar('hidemainmenu', 1);
  21. $document = &JFactory::getDocument();
  22. $document->addScript(JURI::root(true).'/media/k2/assets/js/nicEdit.js');
  23. $js ="
  24. var K2SitePath = '".JURI::root(true)."/';
  25. var K2BasePath = '".JURI::base(true)."/';
  26. var K2Language = [
  27. '".JText::_('K2_REMOVE', true)."',
  28. '".JText::_('K2_LINK_TITLE_OPTIONAL',true)."',
  29. '".JText::_('K2_LINK_TITLE_ATTRIBUTE_OPTIONAL',true)."',
  30. '".JText::_('K2_ARE_YOU_SURE', true)."',
  31. '".JText::_('K2_YOU_ARE_NOT_ALLOWED_TO_POST_TO_THIS_CATEGORY', true)."',
  32. '".JText::_('K2_OR_SELECT_A_FILE_ON_THE_SERVER', true)."',
  33. ]
  34. ";
  35. $document->addScriptDeclaration($js);
  36. JModel::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR.DS.'models');
  37. $model = & JModel::getInstance('Item', 'K2Model');
  38. $item = $model->getData();
  39. JFilterOutput::objectHTMLSafe( $item, ENT_QUOTES, array('video', 'params', 'plugins') );
  40. $user = & JFactory::getUser();
  41. // Permissions check on frontend
  42. if($mainframe->isSite()){
  43. JLoader::register('K2HelperPermissions', JPATH_COMPONENT.DS.'helpers'.DS.'permissions.php');
  44. $task = JRequest::getCmd('task');
  45. if($task=='edit' && !K2HelperPermissions::canEditItem($item->created_by, $item->catid)){
  46. JError::raiseError(403, JText::_('K2_ALERTNOTAUTH'));
  47. }
  48. if($task=='add' && !K2HelperPermissions::canAddItem()){
  49. JError::raiseError(403, JText::_('K2_ALERTNOTAUTH'));
  50. }
  51. // Get permissions
  52. $K2Permissions = &K2Permissions::getInstance();
  53. $this->assignRef('permissions', $K2Permissions->permissions);
  54. }
  55. if ( JTable::isCheckedOut($user->get ('id'), $item->checked_out )) {
  56. $message = JText::_('K2_THE_ITEM').': '.$item->title.' '.JText::_('K2_IS_CURRENTLY_BEING_EDITED_BY_ANOTHER_ADMINISTRATOR');
  57. $url = ($mainframe->isSite())?'index.php?option=com_k2&view=item&id='.$item->id.'&tmpl=component':'index.php?option=com_k2';
  58. $mainframe->redirect($url, $message);
  59. }
  60. if ($item->id){
  61. $item->checkout($user->get('id'));
  62. }
  63. else {
  64. $item->published = 1;
  65. $item->publish_down = $db->getNullDate();
  66. $item->modified = $db->getNullDate();
  67. $date =& JFactory::getDate();
  68. $now = $date->toMySQL();
  69. $item->created = $now;
  70. $item->publish_up = $item->created;
  71. }
  72. $lists = array ();
  73. if(version_compare( JVERSION, '1.6.0', 'ge' )) {
  74. $dateFormat = JText::_('K2_J16_DATE_FORMAT_CALENDAR');
  75. }
  76. else {
  77. $dateFormat = JText::_('K2_DATE_FORMAT_CALENDAR');
  78. }
  79. $item->publish_up = JHTML::_('date', $item->publish_up, $dateFormat);
  80. if($item->publish_down == $db->getNullDate()) {
  81. $item->publish_down = '';
  82. }
  83. else {
  84. $item->publish_down = JHTML::_('date', $item->publish_down, $dateFormat);
  85. }
  86. // Set up calendars
  87. $created = JHTML::_('date', $item->created, $dateFormat);
  88. $lists['createdCalendar'] = JHTML::_( 'calendar', $created, 'created', 'created');
  89. $lists['publish_up'] = JHTML::_( 'calendar', $item->publish_up, 'publish_up', 'publish_up');
  90. $lists['publish_down'] = JHTML::_( 'calendar', $item->publish_down, 'publish_down', 'publish_down');
  91. if($item->id){
  92. $lists['created'] = JHTML::_('date', $item->created, JText::_('DATE_FORMAT_LC2'));
  93. }
  94. else {
  95. $lists['created'] = JText::_('K2_NEW_DOCUMENT');
  96. }
  97. if($item->modified==$db->getNullDate() || !$item->id){
  98. $lists['modified'] = JText::_('K2_NEVER');
  99. }
  100. else {
  101. $lists['modified'] = JHTML::_('date', $item->modified, JText::_('DATE_FORMAT_LC2'));
  102. }
  103. $params = & JComponentHelper::getParams('com_k2');
  104. $wysiwyg = & JFactory::getEditor();
  105. if ($params->get("mergeEditors")){
  106. if (JString::strlen($item->fulltext) > 1) {
  107. $textValue = $item->introtext."<hr id=\"system-readmore\" />".$item->fulltext;
  108. }
  109. else {
  110. $textValue = $item->introtext;
  111. }
  112. $text = $wysiwyg->display('text', $textValue, '100%', '400px', '', '');
  113. $this->assignRef('text', $text);
  114. }
  115. else {
  116. $introtext = $wysiwyg->display('introtext', $item->introtext, '100%', '400px', '', '', array('readmore'));
  117. $this->assignRef('introtext', $introtext);
  118. $fulltext = $wysiwyg->display('fulltext', $item->fulltext, '100%', '400px', '', '', array('readmore'));
  119. $this->assignRef('fulltext', $fulltext);
  120. }
  121. $lists['published'] = JHTML::_('select.booleanlist', 'published', 'class="inputbox"', $item->published);
  122. $lists['featured'] = JHTML::_('select.booleanlist', 'featured', 'class="inputbox"', $item->featured);
  123. $lists['access'] = JHTML::_('list.accesslevel', $item);
  124. $query = "SELECT ordering AS value, title AS text FROM #__k2_items WHERE catid={$item->catid}";
  125. $lists['ordering'] = JHTML::_('list.specificordering', $item, $item->id, $query);
  126. if(!$item->id)
  127. $item->catid = $mainframe->getUserStateFromRequest('com_k2itemsfilter_category', 'catid',0, 'int');
  128. $categoriesModel = &JModel::getInstance('Categories', 'K2Model');
  129. $categories = $categoriesModel->categoriesTree();
  130. $lists['catid'] = JHTML::_('select.genericlist', $categories, 'catid', 'class="inputbox"', 'value', 'text', $item->catid);
  131. if(version_compare( JVERSION, '1.6.0', 'ge' )) {
  132. $languages = JHTML::_('contentlanguage.existing', true, true);
  133. $lists['language'] = JHTML::_('select.genericlist', $languages, 'language', '', 'value', 'text', $item->language);
  134. }
  135. $lists['checkSIG']=$model->checkSIG();
  136. $lists['checkAllVideos']=$model->checkAllVideos();
  137. $remoteVideo = false;
  138. $providerVideo = false;
  139. $embedVideo = false;
  140. if (stristr($item->video,'remote}') !== false) {
  141. $remoteVideo = true;
  142. $options['startOffset']= 1;
  143. }
  144. $providers = $model->getVideoProviders();
  145. if (count($providers)){
  146. foreach ($providers as $provider){
  147. $providersOptions[] = JHTML::_('select.option', $provider, ucfirst($provider));
  148. if (stristr($item->video,"{{$provider}}") !== false) {
  149. $providerVideo = true;
  150. $options['startOffset']= 2;
  151. }
  152. }
  153. }
  154. if (JString::substr($item->video, 0, 1) !== '{') {
  155. $embedVideo = true;
  156. $options['startOffset']= 3;
  157. }
  158. $lists['uploadedVideo'] = (!$remoteVideo && !$providerVideo && !$embedVideo) ? true : false;
  159. if ($lists['uploadedVideo'] || $item->video==''){
  160. $options['startOffset']= 0;
  161. }
  162. $document->addScriptDeclaration("var K2ActiveVideoTab = ".$options['startOffset']);
  163. $lists['remoteVideo'] = ($remoteVideo)?preg_replace('%\{[a-z0-9-_]*\}(.*)\{/[a-z0-9-_]*\}%i', '\1', $item->video):'';
  164. $lists['remoteVideoType'] = ($remoteVideo)?preg_replace('%\{([a-z0-9-_]*)\}.*\{/[a-z0-9-_]*\}%i', '\1', $item->video):'';
  165. $lists['providerVideo'] = ($providerVideo)?preg_replace('%\{[a-z0-9-_]*\}(.*)\{/[a-z0-9-_]*\}%i', '\1', $item->video):'';
  166. $lists['providerVideoType'] = ($providerVideo)?preg_replace('%\{([a-z0-9-_]*)\}.*\{/[a-z0-9-_]*\}%i', '\1', $item->video):'';
  167. $lists['embedVideo'] = ($embedVideo)?$item->video:'';
  168. if (isset($providersOptions)){
  169. $lists['providers'] = JHTML::_('select.genericlist', $providersOptions, 'videoProvider', '', 'value', 'text', $lists['providerVideoType']);
  170. }
  171. JPluginHelper::importPlugin ('content', 'jw_sigpro');
  172. JPluginHelper::importPlugin ('content', 'jw_allvideos');
  173. $dispatcher = &JDispatcher::getInstance ();
  174. // Detect gallery type
  175. if(JString::strpos($item->gallery, 'http://')) {
  176. $item->galleryType = 'flickr';
  177. $item->galleryValue = JString::substr($item->gallery, 9);
  178. $item->galleryValue = JString::substr($item->galleryValue, 0, -10);
  179. }
  180. else {
  181. $item->galleryType = 'server';
  182. $item->galleryValue = '';
  183. }
  184. $params->set('galleries_rootfolder', 'media/k2/galleries');
  185. $params->set('thb_width', '150');
  186. $params->set('thb_height', '120');
  187. $params->set('enabledownload', '0');
  188. $item->text=$item->gallery;
  189. $dispatcher->trigger ( 'onPrepareContent', array (&$item, &$params, null ) );
  190. $item->gallery=$item->text;
  191. if(!$embedVideo){
  192. $params->set('vfolder', 'media/k2/videos');
  193. $params->set('afolder', 'media/k2/audio');
  194. if(JString::strpos($item->video, 'remote}')){
  195. preg_match("#}(.*?){/#s",$item->video, $matches);
  196. if(JString::substr($matches[1], 0, 7)!='http://')
  197. $item->video = str_replace($matches[1], JURI::root().$matches[1], $item->video);
  198. }
  199. $item->text=$item->video;
  200. $dispatcher->trigger ( 'onPrepareContent', array (&$item, &$params, null ) );
  201. $item->video=$item->text;
  202. } else {
  203. // no nothing
  204. }
  205. if (isset($item->created_by)) {
  206. $author= & JUser::getInstance($item->created_by);
  207. $item->author=$author->name;
  208. }
  209. else {
  210. $item->author=$user->name;
  211. }
  212. if (isset($item->modified_by)) {
  213. $moderator = & JUser::getInstance($item->modified_by);
  214. $item->moderator=$moderator->name;
  215. }
  216. if($item->id){
  217. $active = $item->created_by;
  218. }
  219. else {
  220. $active = $user->id;
  221. }
  222. $lists['authors'] = JHTML::_('list.users', 'created_by', $active, false);
  223. $categories_option[]=JHTML::_('select.option', 0, JText::_('K2_SELECT_CATEGORY'));
  224. $categories = $categoriesModel->categoriesTree(NUll, true, false);
  225. if($mainframe->isSite()){
  226. JLoader::register('K2HelperPermissions', JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'helpers'.DS.'permissions.php');
  227. if (($task == 'add' || $task =='edit') && !K2HelperPermissions::canAddToAll()) {
  228. for ($i = 0; $i < sizeof($categories); $i++) {
  229. if (!K2HelperPermissions::canAddItem($categories[$i]->value) && $task == 'add'){
  230. $categories[$i]->disable = true;
  231. }
  232. if (!K2HelperPermissions::canEditItem($item->created_by, $categories[$i]->value) && $task == 'edit'){
  233. $categories[$i]->disable = true;
  234. }
  235. }
  236. }
  237. }
  238. $categories_options=@array_merge($categories_option, $categories);
  239. $lists['categories'] = JHTML::_('select.genericlist', $categories_options, 'catid', '', 'value', 'text', $item->catid);
  240. JTable::addIncludePath(JPATH_COMPONENT.DS.'tables');
  241. $category = & JTable::getInstance('K2Category', 'Table');
  242. $category->load($item->catid);
  243. $extraFieldModel= &JModel::getInstance('ExtraField', 'K2Model');
  244. if($category->id){
  245. $extraFields = $extraFieldModel->getExtraFieldsByGroup($category->extraFieldsGroup);
  246. }
  247. else {
  248. $extraFields = NULL;
  249. }
  250. for($i=0; $i<sizeof($extraFields); $i++){
  251. $extraFields[$i]->element=$extraFieldModel->renderExtraField($extraFields[$i],$item->id);
  252. }
  253. if($item->id){
  254. $item->attachments=$model->getAttachments($item->id);
  255. $rating = $model->getRating();
  256. if(is_null($rating)){
  257. $item->ratingSum = 0;
  258. $item->ratingCount = 0;
  259. }
  260. else{
  261. $item->ratingSum = (int)$rating->rating_sum;
  262. $item->ratingCount = (int)$rating->rating_count;
  263. }
  264. }
  265. else {
  266. $item->attachments = NULL;
  267. $item->ratingSum = 0;
  268. $item->ratingCount = 0;
  269. }
  270. if($user->gid<24 && $params->get('lockTags')){
  271. $params->set('taggingSystem',0);
  272. }
  273. $tags=$model->getAvailableTags($item->id);
  274. $lists['tags'] = JHTML::_ ( 'select.genericlist', $tags, 'tags', 'multiple="multiple" size="10" ', 'id', 'name' );
  275. if (isset($item->id)){
  276. $item->tags=$model->getCurrentTags($item->id);
  277. $lists['selectedTags'] = JHTML::_ ( 'select.genericlist', $item->tags, 'selectedTags[]', 'multiple="multiple" size="10" ', 'id', 'name' );
  278. }
  279. else {
  280. $lists['selectedTags']='<select size="10" multiple="multiple" id="selectedTags" name="selectedTags[]"></select>';
  281. }
  282. $lists['metadata']=new JParameter($item->metadata);
  283. $date =& JFactory::getDate($item->modified);
  284. $timestamp = '?t='.$date->toUnix();
  285. if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_L.jpg')){
  286. $item->image = JURI::root().'media/k2/items/cache/'.md5("Image".$item->id).'_L.jpg'.$timestamp;
  287. }
  288. if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_S.jpg')){
  289. $item->thumb = JURI::root().'media/k2/items/cache/'.md5("Image".$item->id).'_S.jpg'.$timestamp;
  290. }
  291. JPluginHelper::importPlugin ( 'k2' );
  292. $dispatcher = &JDispatcher::getInstance ();
  293. $K2PluginsItemContent=$dispatcher->trigger('onRenderAdminForm', array (&$item, 'item', 'content' ) );
  294. $this->assignRef('K2PluginsItemContent', $K2PluginsItemContent);
  295. $K2PluginsItemImage=$dispatcher->trigger('onRenderAdminForm', array (&$item, 'item', 'image' ) );
  296. $this->assignRef('K2PluginsItemImage', $K2PluginsItemImage);
  297. $K2PluginsItemGallery=$dispatcher->trigger('onRenderAdminForm', array (&$item, 'item', 'gallery' ) );
  298. $this->assignRef('K2PluginsItemGallery', $K2PluginsItemGallery);
  299. $K2PluginsItemVideo=$dispatcher->trigger('onRenderAdminForm', array (&$item, 'item', 'video' ) );
  300. $this->assignRef('K2PluginsItemVideo', $K2PluginsItemVideo);
  301. $K2PluginsItemExtraFields=$dispatcher->trigger('onRenderAdminForm', array (&$item, 'item', 'extra-fields' ) );
  302. $this->assignRef('K2PluginsItemExtraFields', $K2PluginsItemExtraFields);
  303. $K2PluginsItemAttachments=$dispatcher->trigger('onRenderAdminForm', array (&$item, 'item', 'attachments' ) );
  304. $this->assignRef('K2PluginsItemAttachments', $K2PluginsItemAttachments);
  305. $K2PluginsItemOther=$dispatcher->trigger('onRenderAdminForm', array (&$item, 'item', 'other' ) );
  306. $this->assignRef('K2PluginsItemOther', $K2PluginsItemOther);
  307. if(version_compare( JVERSION, '1.6.0', 'ge' )){
  308. jimport('joomla.form.form');
  309. $form = JForm::getInstance('itemForm', JPATH_COMPONENT_ADMINISTRATOR.DS.'models'.DS.'item.xml');
  310. $values = array('params'=>json_decode($item->params));
  311. $form->bind($values);
  312. }
  313. else {
  314. $form = new JParameter('', JPATH_COMPONENT_ADMINISTRATOR.DS.'models'.DS.'item.xml');
  315. $form->loadINI($item->params);
  316. }
  317. $this->assignRef('form', $form);
  318. $nullDate = $db->getNullDate();
  319. $this->assignRef('nullDate', $nullDate);
  320. $this->assignRef('extraFields', $extraFields);
  321. $this->assignRef('options', $options);
  322. $this->assignRef('row', $item);
  323. $this->assignRef('lists', $lists);
  324. $this->assignRef('params', $params);
  325. $this->assignRef('user', $user);
  326. (JRequest::getInt('cid'))? $title = JText::_('K2_EDIT_ITEM') : $title = JText::_('K2_ADD_ITEM');
  327. $this->assignRef('title', $title);
  328. $this->assignRef('mainframe', $mainframe);
  329. if($mainframe->isAdmin()){
  330. $this->params->set('showImageTab', true);
  331. $this->params->set('showImageGalleryTab', true);
  332. $this->params->set('showVideoTab', true);
  333. $this->params->set('showExtraFieldsTab', true);
  334. $this->params->set('showAttachmentsTab', true);
  335. $this->params->set('showK2Plugins', true);
  336. JToolBarHelper::title($title, 'k2.png');
  337. JToolBarHelper::save();
  338. JToolBarHelper::custom('saveAndNew','save.png','save_f2.png','K2_SAVE_AND_NEW', false);
  339. JToolBarHelper::apply();
  340. JToolBarHelper::cancel();
  341. }
  342. // ACE ACL integration
  343. $definedConstants = get_defined_constants();
  344. if (!empty($definedConstants['ACEACL']) && AceaclApi::authorize('permissions', 'com_aceacl')) {
  345. $aceAclFlag = true;
  346. }
  347. else {
  348. $aceAclFlag = false;
  349. }
  350. $this->assignRef('aceAclFlag', $aceAclFlag);
  351. parent::display($tpl);
  352. }
  353. }