Пример #1
0
 /**
  * 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);
 }
Пример #2
0
 protected static function clearCache()
 {
     if (count(self::$cache)) {
         self::$cache = array();
     }
     return true;
 }
Пример #3
0
 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;
 }
Пример #4
0
 /**
  * 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;
 }