/** * Display the view */ public function display($tpl = null) { if (JFactory::getApplication()->input->getCmd('task') != 'lists') { if ($this->getLayout() == 'pagebreak') { $eName = JFactory::getApplication()->input->get('e_name'); $eName = preg_replace('#[^A-Z0-9\\-\\_\\[\\]]#i', '', $eName); $document = JFactory::getDocument(); $document->setTitle(JText::_('COM_CONTENT_PAGEBREAK_DOC_TITLE')); $this->assignRef('eName', $eName); parent::display($tpl); return; } // Initialiase variables. $this->form = $this->get('Form'); $this->item = $this->get('Item'); $this->state = $this->get('State'); $canDo = TZ_Portfolio_PlusHelper::getActions($this->state->get('filter.category_id')); $this->canDo = $canDo; if ($canDo->get('core.edit')) { $this->extraFields = $this->get('ExtraFields'); } // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } // $this -> assign('listsGroup',$this -> get('Groups')); // v3.3.2 $this->assign('listsTags', json_encode($this->get('Tags'))); $this->assign('listAttach', $this->get('Attachment')); $this->assign('listEdit', $this->get('FieldsContent')); $this->assign('tagsSuggest', TZ_Portfolio_PlusHelperTags::getTagsSuggestToArticle()); // Load Tabs's title from plugin group tz_portfolio_plus_mediatype $dispatcher = JDispatcher::getInstance(); TZ_Portfolio_PlusPluginHelper::importPlugin('mediatype'); if ($mediaType = $dispatcher->trigger('onAddMediaType')) { $mediaForm = $dispatcher->trigger('onMediaTypeDisplayArticleForm', array($this->item)); if (count($mediaType)) { $plugin = array(); foreach ($mediaType as $i => $type) { $plugin[$i] = new stdClass(); $plugin[$i]->type = $type; $plugin[$i]->html = ''; if ($mediaForm && count($mediaForm) && isset($mediaForm[$i])) { $plugin[$i]->html = $mediaForm[$i]; } $this->pluginsMediaTypeTab[$i] = $plugin[$i]; } } } $this->addToolbar(); } parent::display($tpl); }
protected static function clearCache() { if (count(self::$cache)) { self::$cache = array(); } return true; }
public function save($data) { $input = JFactory::getApplication()->input; if (isset($data['articles_assignment']) && count($data['articles_assignment'])) { $articlesAssignment = $data['articles_assignment']; unset($data['articles_assignment']); } // Automatic handling of alias for empty fields if (in_array($input->get('task'), array('apply', 'save', 'save2new'))) { if (!isset($data['id']) || (int) $data['id'] == 0) { if ($data['alias'] == null) { if (JFactory::getConfig()->get('unicodeslugs') == 1) { $data['alias'] = JFilterOutput::stringURLUnicodeSlug($data['title']); } else { $data['alias'] = JFilterOutput::stringURLSafe($data['title']); } $table = JTable::getInstance('Tags', 'TZ_Portfolio_PlusTable'); if ($table->load(array('alias' => $data['alias']))) { $msg = JText::sprintf('COM_TZ_PORTFOLIO_PLUS_ALIAS_SAVE_WARNING', $input->get('view')); } list($title, $alias) = $this->generateNewTitle(0, $data['alias'], $data['title']); $data['alias'] = $alias; if (isset($msg)) { JFactory::getApplication()->enqueueMessage($msg, 'warning'); } } } // Check tag's alias $alias_check = TZ_Portfolio_PlusHelperTags::getTagByKey(array('alias' => $data['alias'], 'id' => (int) $data['id']), array('id' => true)); if ($alias_check && count($alias_check)) { $msg = JText::sprintf('COM_TZ_PORTFOLIO_PLUS_ALIAS_SAVE_WARNING', $input->get('view')); $this->setError($msg); return false; } // Check tag's title $title_check = TZ_Portfolio_PlusHelperTags::getTagByKey(array('title' => $data['title'], 'id' => (int) $data['id']), array('id' => true)); if ($title_check && count($title_check)) { $msg = JText::sprintf('COM_TZ_PORTFOLIO_PLUS_TITLE_SAVE_WARNING', $input->get('view')); $this->setError($msg); return false; } } if (parent::save($data)) { $db = $this->getDbo(); $query = $db->getQuery(true); $id = $this->getState($this->getName() . '.id'); // Assign articles with this tag; if (!empty($articlesAssignment) && count($articlesAssignment)) { $query->select('DISTINCT contentid'); $query->from($db->quoteName('#__tz_portfolio_plus_tag_content_map')); // $query -> where($db -> quoteName('contentid').' IN(' // .implode(',',$articlesAssignment).')'); $query->where('tagsid = ' . (int) $id); $db->setQuery($query); if (!($updateIds = $db->loadColumn())) { $updateIds = array(); } // Insert article items with this tag if they were created in if ($insertIds = array_diff($articlesAssignment, $updateIds)) { $query->clear(); $query->insert($db->quoteName('#__tz_portfolio_plus_tag_content_map')); $query->columns('contentid,tagsid'); foreach ($insertIds as $cid) { $query->values($cid . ',' . $id); } $db->setQuery($query); $db->execute(); } } // Remove tags mappings for article items this tag is NOT assigned to. // If unassigned then all existing maps will be removed. $query->clear(); $query->delete('#__tz_portfolio_plus_tag_content_map'); if (!empty($articlesAssignment) && count($articlesAssignment)) { $query->where('contentid NOT IN (' . implode(',', $articlesAssignment) . ')'); } $query->where('tagsid = ' . (int) $id); $db->setQuery($query); $db->execute(); return true; } return true; }
/** * Method to save the form data. * * @param array $data The form data. * * @return boolean True on success. * * @since 1.6 */ public function save($data) { $input = JFactory::getApplication()->input; $filter = JFilterInput::getInstance(); if (isset($data['metadata']) && isset($data['metadata']['author'])) { $data['metadata']['author'] = $filter->clean($data['metadata']['author'], 'TRIM'); } if (isset($data['created_by_alias'])) { $data['created_by_alias'] = $filter->clean($data['created_by_alias'], 'TRIM'); } if (isset($data['urls']) && is_array($data['urls'])) { foreach ($data['urls'] as $i => $url) { if ($url != false && ($i == 'urla' || $i == 'urlb' || $i == 'urlc')) { $data['urls'][$i] = JStringPunycode::urlToPunycode($url); } } $registry = new Registry(); $registry->loadArray($data['urls']); $data['urls'] = (string) $registry; } // Alter the title for save as copy if ($input->get('task') == 'save2copy') { $origTable = clone $this->getTable(); $origTable->load($input->getInt('id')); if ($data['title'] == $origTable->title) { list($title, $alias) = $this->generateNewTitle($data['catid'], $data['alias'], $data['title']); $data['title'] = $title; $data['alias'] = $alias; } else { if ($data['alias'] == $origTable->alias) { $data['alias'] = ''; } } $data['state'] = 0; } // Automatic handling of alias for empty fields if (in_array($input->get('task'), array('apply', 'save', 'save2new')) && (!isset($data['id']) || (int) $data['id'] == 0)) { if ($data['alias'] == null) { if (JFactory::getConfig()->get('unicodeslugs') == 1) { $data['alias'] = JFilterOutput::stringURLUnicodeSlug($data['title']); } else { $data['alias'] = JFilterOutput::stringURLSafe($data['title']); } // Verify that the alias is unique if (!$this->verifyAlias($data['id'], $data['alias'], $data['catid'])) { $msg = JText::_('JLIB_DATABASE_ERROR_ARTICLE_UNIQUE_ALIAS'); return false; } list($title, $alias) = $this->generateNewTitle($data['catid'], $data['alias'], $data['title']); $data['alias'] = $alias; if (isset($msg)) { JFactory::getApplication()->enqueueMessage($msg, 'warning'); } } } // Verify that the alias is unique if (!$this->verifyAlias($data['id'], $data['alias'], $data['catid'])) { $this->setError(JText::_('JLIB_DATABASE_ERROR_ARTICLE_UNIQUE_ALIAS')); return false; } // unset($data['catid']); $tags = null; if (isset($data['tags'])) { $tags = $data['tags']; unset($data['tags']); } if (parent::save($data)) { // Save categories $this->saveArticleCategories($data); $table = $this->getTable(); $table->load($this->getState($this->getName() . '.id')); // Save extrafields if (isset($data['extrafields'])) { $this->saveArticleFields($data['extrafields'], $table); } if (isset($data['featured'])) { $this->featured($this->getState($this->getName() . '.id'), $data['featured']); } $assoc = JLanguageAssociations::isEnabled(); if ($assoc) { $id = (int) $this->getState($this->getName() . '.id'); $item = $this->getItem($id); // Adding self to the association $associations = $data['associations']; foreach ($associations as $tag => $id) { if (empty($id)) { unset($associations[$tag]); } } // Detecting all item menus $all_language = $item->language == '*'; if ($all_language && !empty($associations)) { JError::raiseNotice(403, JText::_('COM_CONTENT_ERROR_ALL_LANGUAGE_ASSOCIATED')); } $associations[$item->language] = $item->id; // Deleting old association for these items $db = JFactory::getDbo(); $query = $db->getQuery(true)->delete('#__associations')->where('context=' . $db->quote('com_tz_portfolio_plus.item'))->where('id IN (' . implode(',', $associations) . ')'); $db->setQuery($query); $db->execute(); if ($error = $db->getErrorMsg()) { $this->setError($error); return false; } if (!$all_language && count($associations)) { // Adding new association for these items $key = md5(json_encode($associations)); $query->clear()->insert('#__associations'); foreach ($associations as $id) { $query->values($id . ',' . $db->quote('com_tz_portfolio_plus.item') . ',' . $db->quote($key)); } $db->setQuery($query); $db->execute(); if ($error = $db->getErrorMsg()) { $this->setError($error); return false; } } } // Tags $articleId = $this->getState($this->getName() . '.id'); if (isset($articleId) && $articleId) { if (!TZ_Portfolio_PlusHelperTags::insertTagsByArticleId($articleId, $tags)) { $this->setError(TZ_Portfolio_PlusHelperTags::getError()); return false; } } return true; } return false; }