Created
January 4, 2018 07:54
-
-
Save csthomas/df973e13245e6a23ed5f8cb9ecd67ce1 to your computer and use it in GitHub Desktop.
The sampledata blog file has been modified to create multiple categories and articles
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* @package Joomla.Plugin | |
* @subpackage Sampledata.Blog | |
* | |
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved. | |
* @license GNU General Public License version 2 or later; see LICENSE.txt | |
*/ | |
defined('_JEXEC') or die; | |
use Joomla\CMS\Language\Multilanguage; | |
/** | |
* Sampledata - Blog Plugin | |
* | |
* @since 3.8.0 | |
*/ | |
class PlgSampledataBlog extends JPlugin | |
{ | |
/** | |
* Database object | |
* | |
* @var JDatabaseDriver | |
* | |
* @since 3.8.0 | |
*/ | |
protected $db; | |
/** | |
* Application object | |
* | |
* @var JApplicationCms | |
* | |
* @since 3.8.0 | |
*/ | |
protected $app; | |
/** | |
* Affects constructor behavior. If true, language files will be loaded automatically. | |
* | |
* @var boolean | |
* | |
* @since 3.8.0 | |
*/ | |
protected $autoloadLanguage = true; | |
/** | |
* Holds the menuitem model | |
* | |
* @var MenusModelItem | |
* | |
* @since 3.8.0 | |
*/ | |
private $menuItemModel; | |
/** | |
* Get an overview of the proposed sampledata. | |
* | |
* @return boolean True on success. | |
* | |
* @since 3.8.0 | |
*/ | |
public function onSampledataGetOverview() | |
{ | |
$data = new stdClass; | |
$data->name = $this->_name; | |
$data->title = JText::_('PLG_SAMPLEDATA_BLOG_OVERVIEW_TITLE'); | |
$data->description = JText::_('PLG_SAMPLEDATA_BLOG_OVERVIEW_DESC'); | |
$data->icon = 'broadcast'; | |
$data->steps = 3; | |
return $data; | |
} | |
/** | |
* First step to enter the sampledata. Content. | |
* | |
* @return array or void Will be converted into the JSON response to the module. | |
* | |
* @since 3.8.0 | |
*/ | |
public function onAjaxSampledataApplyStep1() | |
{ | |
if ($this->app->input->get('type') != $this->_name) | |
{ | |
return; | |
}; | |
if (!JComponentHelper::isEnabled('com_content')) | |
{ | |
$response = array(); | |
$response['success'] = true; | |
$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_SKIPPED', 1, 'com_content'); | |
return $response; | |
} | |
// Get some metadata. | |
$access = (int) $this->app->get('access', 1); | |
$user = JFactory::getUser(); | |
// Detect language to be used. | |
$language = Multilanguage::isEnabled() ? JFactory::getLanguage()->getTag() : '*'; | |
$langSuffix = ($language !== '*') ? ' (' . $language . ')' : ''; | |
// Add Include Paths. | |
JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_content/models/', 'ContentModel'); | |
JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_content/tables/'); | |
JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_categories/models/', 'CategoriesModel'); | |
JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_categories/tables/'); | |
// Create "blog" category. | |
$categoryModel = JModelLegacy::getInstance('Category', 'CategoriesModel'); | |
$catIds = array(); | |
$categoryTitle = JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_CONTENT_CATEGORY_0_TITLE'); | |
$alias = JApplicationHelper::stringURLSafe($categoryTitle); | |
// Set unicodeslugs if alias is empty | |
if (trim(str_replace('-', '', $alias) == '')) | |
{ | |
$unicode = JFactory::getConfig()->set('unicodeslugs', 1); | |
$alias = JApplicationHelper::stringURLSafe($categoryTitle); | |
JFactory::getConfig()->set('unicodeslugs', $unicode); | |
} | |
$category = array( | |
'title' => $categoryTitle . $langSuffix, | |
'parent_id' => 1, | |
'id' => 0, | |
'published' => 1, | |
'access' => $access, | |
'created_user_id' => $user->id, | |
'extension' => 'com_content', | |
'level' => 1, | |
'alias' => $alias . $langSuffix, | |
'associations' => array(), | |
'description' => '', | |
'language' => $language, | |
'params' => '', | |
); | |
$catLevel1 = []; | |
try | |
{ | |
for ($i=0;$i<20;$i++) | |
{ | |
$category1 = $category; | |
$category1['title'] .= " - $i"; | |
$category1['alias'] .= "-$i"; | |
if (!$categoryModel->save($category1)) | |
{ | |
throw new Exception($categoryModel->getError()); | |
} | |
$catLevel1[] = $categoryModel->getItem()->id; | |
} | |
} | |
catch (Exception $e) | |
{ | |
$response = array(); | |
$response['success'] = false; | |
$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_FAILED', 1, $e->getMessage()); | |
return $response; | |
} | |
// Get ID from category we just added | |
//$catIds[] = $categoryModel->getItem()->id; | |
// Create "help" category. | |
$categoryTitle = JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_CONTENT_CATEGORY_1_TITLE'); | |
$alias = JApplicationHelper::stringURLSafe($categoryTitle); | |
// Set unicodeslugs if alias is empty | |
if (trim(str_replace('-', '', $alias) == '')) | |
{ | |
$unicode = JFactory::getConfig()->set('unicodeslugs', 1); | |
$alias = JApplicationHelper::stringURLSafe($categoryTitle); | |
JFactory::getConfig()->set('unicodeslugs', $unicode); | |
} | |
$category = array( | |
'title' => $categoryTitle . $langSuffix, | |
'parent_id' => 1, | |
'id' => 0, | |
'published' => 1, | |
'access' => $access, | |
'created_user_id' => $user->id, | |
'extension' => 'com_content', | |
'level' => 1, | |
'alias' => $alias . $langSuffix, | |
'associations' => array(), | |
'description' => '', | |
'language' => $language, | |
'params' => '', | |
); | |
try | |
{ | |
foreach ($catLevel1 as $parent_id) | |
{ | |
for ($i=0;$i<20;$i++) | |
{ | |
$category1 = $category; | |
$category1['title'] .= " - $i"; | |
$category1['alias'] .= "-$i"; | |
$category1['parent_id'] = $parent_id; | |
if (!$categoryModel->save($category1)) | |
{ | |
throw new Exception($categoryModel->getError()); | |
} | |
$catIds[] = $categoryModel->getItem()->id; | |
} | |
} | |
} | |
catch (Exception $e) | |
{ | |
$response = array(); | |
$response['success'] = false; | |
$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_FAILED', 1, $e->getMessage()); | |
return $response; | |
} | |
// Get ID from category we just added | |
//$catIds[] = $categoryModel->getItem()->id; | |
// Create Articles. | |
$articleModel = JModelLegacy::getInstance('Article', 'ContentModel'); | |
// $articles = array( | |
// array( | |
// 'catid' => $catIds[1], | |
// 'ordering' => 2, | |
// ), | |
// array( | |
// 'catid' => $catIds[1], | |
// 'ordering' => 1, | |
// 'access' => 3, | |
// ), | |
// array( | |
// 'catid' => $catIds[0], | |
// 'ordering' => 2, | |
// ), | |
// array( | |
// 'catid' => $catIds[0], | |
// 'ordering' => 1, | |
// ), | |
// array( | |
// 'catid' => $catIds[0], | |
// 'ordering' => 0, | |
// ), | |
// array( | |
// 'catid' => $catIds[0], | |
// 'ordering' => 0, | |
// ), | |
// ); | |
foreach ($catIds as $j => $catid) | |
{ | |
for ($k=0;$k<10;$k++) | |
{ | |
$i = $j % 6; | |
// Set values from language strings. | |
$title = JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_CONTENT_ARTICLE_' . $i . '_TITLE'); | |
$title .= ' - ' . $j . ' - ' . $k; | |
$alias = JApplicationHelper::stringURLSafe($title); | |
$article['catid'] = $catid; | |
$article['ordering'] = 0; | |
$article['title'] = $title . $langSuffix; | |
$article['introtext'] = JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_CONTENT_ARTICLE_' . $i . '_INTROTEXT'); | |
$article['fulltext'] = JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_CONTENT_ARTICLE_' . $i . '_FULLTEXT'); | |
// Set values which are always the same. | |
$article['id'] = 0; | |
$article['created_user_id'] = $user->id; | |
$article['alias'] = JApplicationHelper::stringURLSafe($article['title']); | |
// Set unicodeslugs if alias is empty | |
if (trim(str_replace('-', '', $alias) == '')) | |
{ | |
$unicode = JFactory::getConfig()->set('unicodeslugs', 1); | |
$article['alias'] = JApplicationHelper::stringURLSafe($article['title']); | |
JFactory::getConfig()->set('unicodeslugs', $unicode); | |
} | |
$article['language'] = $language; | |
$article['associations'] = array(); | |
$article['state'] = 1; | |
$article['featured'] = 0; | |
$article['images'] = ''; | |
$article['metakey'] = ''; | |
$article['metadesc'] = ''; | |
$article['xreference'] = ''; | |
if (!isset($article['access'])) | |
{ | |
$article['access'] = $access; | |
} | |
if (!$articleModel->save($article)) | |
{ | |
JFactory::getLanguage()->load('com_content'); | |
$response = array(); | |
$response['success'] = false; | |
$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_FAILED', 1, JText::_($articleModel->getError())); | |
return $response; | |
} | |
} | |
// Get ID from category we just added | |
$ids[] = $articleModel->getItem()->id; | |
} | |
$this->app->setUserState('sampledata.blog.articles', $ids); | |
$this->app->setUserState('sampledata.blog.articles.catids', $catIds); | |
$response = new stdClass; | |
$response->success = true; | |
$response->message = JText::_('PLG_SAMPLEDATA_BLOG_STEP1_SUCCESS'); | |
return $response; | |
} | |
/** | |
* Second step to enter the sampledata. Menus. | |
* | |
* @return array or void Will be converted into the JSON response to the module. | |
* | |
* @since 3.8.0 | |
*/ | |
public function onAjaxSampledataApplyStep2() | |
{ | |
if ($this->app->input->get('type') != $this->_name) | |
{ | |
return; | |
} | |
if (!JComponentHelper::isEnabled('com_menus')) | |
{ | |
$response = array(); | |
$response['success'] = true; | |
$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_SKIPPED', 2, 'com_menus'); | |
return $response; | |
} | |
// Detect language to be used. | |
$language = Multilanguage::isEnabled() ? JFactory::getLanguage()->getTag() : '*'; | |
$langSuffix = ($language !== '*') ? ' (' . $language . ')' : ''; | |
// Create the menu types. | |
$menuTable = JTable::getInstance('Type', 'JTableMenu'); | |
$menuTypes = array(); | |
for ($i = 0; $i <= 2; $i++) | |
{ | |
$menu = array( | |
'id' => 0, | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_MENU_' . $i . '_TITLE') . $langSuffix, | |
'description' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_MENU_' . $i . '_DESCRIPTION'), | |
); | |
// Calculate menutype. The number of characters allowed is 24. | |
$type = JHtml::_('string.truncate', $menu['title'], 23, true, false); | |
$menu['menutype'] = $i . $type; | |
$menuTable->load(); | |
$menuTable->bind($menu); | |
try | |
{ | |
$menuTable->store(); | |
} | |
catch (Exception $e) | |
{ | |
JFactory::getLanguage()->load('com_menus'); | |
$response = array(); | |
$response['success'] = false; | |
$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_FAILED', 2, $e->getMessage()); | |
return $response; | |
} | |
$menuTypes[] = $menuTable->menutype; | |
} | |
// Storing IDs in UserState for later useage. | |
$this->app->setUserState('sampledata.blog.menutypes', $menuTypes); | |
// Get previously entered Data from UserStates. | |
$articleIds = $this->app->getUserState('sampledata.blog.articles'); | |
// Get MenuItemModel. | |
JLoader::register('MenusHelper', JPATH_ADMINISTRATOR . '/components/com_menus/helpers/menus.php'); | |
JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_menus/models/', 'MenusModel'); | |
JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_menus/tables/'); | |
$this->menuItemModel = JModelLegacy::getInstance('Item', 'MenusModel'); | |
// Get previously entered categories ids | |
$catids = $this->app->getUserState('sampledata.blog.articles.catids'); | |
// Insert menuitems level 1. | |
$menuItems = array( | |
array( | |
'menutype' => $menuTypes[0], | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_0_TITLE'), | |
'link' => 'index.php?option=com_content&view=category&layout=blog&id=' . $catids[0], | |
'component_id' => 22, | |
'params' => array( | |
'layout_type' => 'blog', | |
'show_category_title' => 0, | |
'num_leading_articles' => 4, | |
'num_intro_articles' => 0, | |
'num_columns' => 1, | |
'num_links' => 2, | |
'multi_column_order' => 1, | |
'orderby_sec' => 'rdate', | |
'order_date' => 'published', | |
'show_pagination' => 2, | |
'show_pagination_results' => 1, | |
'show_category' => 0, | |
'info_bloc_position' => 0, | |
'show_publish_date' => 0, | |
'show_hits' => 0, | |
'show_feed_link' => 1, | |
'menu_text' => 1, | |
'show_page_heading' => 0, | |
'secure' => 0, | |
), | |
), | |
array( | |
'menutype' => $menuTypes[0], | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_1_TITLE'), | |
'link' => 'index.php?option=com_content&view=article&id=' . $articleIds[0], | |
'component_id' => 22, | |
'params' => array( | |
'info_block_position' => 0, | |
'show_category' => 0, | |
'link_category' => 0, | |
'show_author' => 0, | |
'show_create_date' => 0, | |
'show_publish_date' => 0, | |
'show_hits' => 0, | |
'menu_text' => 1, | |
'show_page_heading' => 0, | |
'secure' => 0, | |
), | |
), | |
array( | |
'menutype' => $menuTypes[0], | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_2_TITLE'), | |
'link' => 'index.php?option=com_users&view=login', | |
'component_id' => 25, | |
'params' => array( | |
'logindescription_show' => 1, | |
'logoutdescription_show' => 1, | |
'menu_text' => 1, | |
'show_page_heading' => 0, | |
'secure' => 0, | |
), | |
), | |
array( | |
'menutype' => $menuTypes[1], | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_3_TITLE'), | |
'link' => 'index.php?option=com_content&view=form&layout=edit', | |
'component_id' => 22, | |
'access' => 3, | |
'params' => array( | |
'enable_category' => 1, | |
'catid' => $catids[0], | |
'menu_text' => 1, | |
'show_page_heading' => 0, | |
'secure' => 0, | |
), | |
), | |
array( | |
'menutype' => $menuTypes[1], | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_4_TITLE'), | |
'link' => 'index.php?option=com_content&view=article&id=' . $articleIds[1], | |
'component_id' => 22, | |
'params' => array( | |
'menu_text' => 1, | |
'show_page_heading' => 0, | |
'secure' => 0, | |
), | |
), | |
array( | |
'menutype' => $menuTypes[1], | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_5_TITLE'), | |
'link' => 'administrator', | |
'type' => 'url', | |
'component_id' => 0, | |
'browserNav' => 1, | |
'access' => 3, | |
'params' => array( | |
'menu_text' => 1, | |
), | |
), | |
array( | |
'menutype' => $menuTypes[1], | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_6_TITLE'), | |
'link' => 'index.php?option=com_users&view=profile&layout=edit', | |
'component_id' => 25, | |
'access' => 2, | |
'params' => array( | |
'menu_text' => 1, | |
'show_page_heading' => 0, | |
'secure' => 0, | |
), | |
), | |
array( | |
'menutype' => $menuTypes[1], | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_7_TITLE'), | |
'link' => 'index.php?option=com_users&view=login', | |
'component_id' => 25, | |
'params' => array( | |
'logindescription_show' => 1, | |
'logoutdescription_show' => 1, | |
'menu_text' => 1, | |
'show_page_heading' => 0, | |
'secure' => 0, | |
), | |
), | |
); | |
try | |
{ | |
$menuIdsLevel1 = $this->addMenuItems($menuItems, 1); | |
} | |
catch (Exception $e) | |
{ | |
$response = array(); | |
$response['success'] = false; | |
$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_FAILED', 2, $e->getMessage()); | |
return $response; | |
} | |
// Insert another level 1. | |
$menuItems = array( | |
array( | |
'menutype' => $menuTypes[2], | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_8_TITLE'), | |
'link' => 'index.php?option=com_users&view=login', | |
'component_id' => 25, | |
'params' => array( | |
'login_redirect_url' => 'index.php?Itemid=' . $menuIdsLevel1[0], | |
'logindescription_show' => 1, | |
'logoutdescription_show' => 1, | |
'menu_text' => 1, | |
'show_page_heading' => 0, | |
'secure' => 0, | |
), | |
), | |
); | |
try | |
{ | |
$menuIdsLevel1 = array_merge($menuIdsLevel1, $this->addMenuItems($menuItems, 1)); | |
} | |
catch (Exception $e) | |
{ | |
$response = array(); | |
$response['success'] = false; | |
$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_FAILED', 2, $e->getMessage()); | |
return $response; | |
} | |
// Insert menuitems level 2. | |
$menuItems = array( | |
array( | |
'menutype' => $menuTypes[1], | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_9_TITLE'), | |
'link' => 'index.php?option=com_config&view=config&controller=config.display.config', | |
'parent_id' => $menuIdsLevel1[4], | |
'component_id' => 23, | |
'access' => 6, | |
'params' => array( | |
'menu_text' => 1, | |
'show_page_heading' => 0, | |
'secure' => 0, | |
), | |
), | |
array( | |
'menutype' => $menuTypes[1], | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_10_TITLE'), | |
'link' => 'index.php?option=com_config&view=templates&controller=config.display.templates', | |
'parent_id' => $menuIdsLevel1[4], | |
'component_id' => 23, | |
'params' => array( | |
'menu_text' => 1, | |
'show_page_heading' => 0, | |
'secure' => 0, | |
), | |
), | |
); | |
try | |
{ | |
$this->addMenuItems($menuItems, 2); | |
} | |
catch (Exception $e) | |
{ | |
$response = array(); | |
$response['success'] = false; | |
$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_FAILED', 2, $e->getMessage()); | |
return $response; | |
} | |
$response = array(); | |
$response['success'] = true; | |
$response['message'] = JText::_('PLG_SAMPLEDATA_BLOG_STEP2_SUCCESS'); | |
return $response; | |
} | |
/** | |
* Third step to enter the sampledata. Modules. | |
* | |
* @return array or void Will be converted into the JSON response to the module. | |
* | |
* @since 3.8.0 | |
*/ | |
public function onAjaxSampledataApplyStep3() | |
{ | |
if ($this->app->input->get('type') != $this->_name) | |
{ | |
return; | |
} | |
if (!JComponentHelper::isEnabled('com_modules')) | |
{ | |
$response = array(); | |
$response['success'] = true; | |
$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_SKIPPED', 3, 'com_modules'); | |
return $response; | |
} | |
// Detect language to be used. | |
$language = Multilanguage::isEnabled() ? JFactory::getLanguage()->getTag() : '*'; | |
$langSuffix = ($language !== '*') ? ' (' . $language . ')' : ''; | |
// Add Include Paths. | |
JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_modules/models/', 'ModulesModelModule'); | |
JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_modules/tables/'); | |
$model = JModelLegacy::getInstance('Module', 'ModulesModel'); | |
$access = (int) $this->app->get('access', 1); | |
// Get previously entered Data from UserStates | |
$menuTypes = $this->app->getUserState('sampledata.blog.menutypes'); | |
$catids = $this->app->getUserState('sampledata.blog.articles.catids'); | |
$modules = array( | |
array( | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_0_TITLE'), | |
'ordering' => 1, | |
'position' => 'position-1', | |
'module' => 'mod_menu', | |
'showtitle' => 0, | |
'params' => array( | |
'menutype' => $menuTypes[0], | |
'startLevel' => 1, | |
'endLevel' => 0, | |
'showAllChildren' => 0, | |
'class_sfx' => ' nav-pills', | |
'layout' => '_:default', | |
'cache' => 1, | |
'cache_time' => 900, | |
'cachemode' => 'itemid', | |
'module_tag' => 'div', | |
'bootstrap_size' => 0, | |
'header_tag' => 'h3', | |
'style' => 0, | |
), | |
), | |
array( | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_1_TITLE'), | |
'ordering' => 1, | |
'position' => 'position-1', | |
'module' => 'mod_menu', | |
'access' => 3, | |
'showtitle' => 0, | |
'params' => array( | |
'menutype' => $menuTypes[1], | |
'startLevel' => 1, | |
'endLevel' => 0, | |
'showAllChildren' => 1, | |
'class_sfx' => ' nav-pills', | |
'layout' => '_:default', | |
'cache' => 1, | |
'cache_time' => 900, | |
'cachemode' => 'itemid', | |
'module_tag' => 'div', | |
'bootstrap_size' => 0, | |
'header_tag' => 'h3', | |
'style' => 0, | |
), | |
), | |
array( | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_2_TITLE'), | |
'ordering' => 6, | |
'position' => 'position-7', | |
'module' => 'mod_syndicate', | |
'showtitle' => 0, | |
'params' => array( | |
'display_text' => 1, | |
'text' => 'My Blog', | |
'format' => 'rss', | |
'layout' => '_:default', | |
'cache' => 0, | |
), | |
), | |
array( | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_3_TITLE'), | |
'ordering' => 4, | |
'position' => 'position-7', | |
'module' => 'mod_articles_archive', | |
'params' => array( | |
'count' => 10, | |
'layout' => '_:default', | |
'cache' => 1, | |
'cache_time' => 900, | |
'cachemode' => 'static', | |
), | |
), | |
array( | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_4_TITLE'), | |
'ordering' => 5, | |
'position' => 'position-7', | |
'module' => 'mod_articles_popular', | |
'params' => array( | |
'catid' => $catids[0], | |
'count' => 5, | |
'show_front' => 1, | |
'layout' => '_:default', | |
'cache' => 1, | |
'cache_time' => 900, | |
'cachemode' => 'static', | |
), | |
), | |
array( | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_5_TITLE'), | |
'ordering' => 2, | |
'position' => 'position-7', | |
'module' => 'mod_articles_category', | |
'params' => array( | |
'mode' => 'normal', | |
'show_on_article_page' => 0, | |
'show_front' => 'show', | |
'count' => 6, | |
'category_filtering_type' => 1, | |
'catid' => $catids[0], | |
'show_child_category_articles' => 0, | |
'levels' => 1, | |
'author_filtering_type' => 1, | |
'author_alias_filtering_type' => 1, | |
'date_filtering' => 'off', | |
'date_field' => 'a.created', | |
'relative_date' => 30, | |
'article_ordering' => 'a.created', | |
'article_ordering_direction' => 'DESC', | |
'article_grouping' => 'none', | |
'article_grouping_direction' => 'krsort', | |
'month_year_format' => 'F Y', | |
'item_heading' => 5, | |
'link_titles' => 1, | |
'show_date' => 0, | |
'show_date_field' => 'created', | |
'show_date_format' => JText::_('DATE_FORMAT_LC5'), | |
'show_category' => 0, | |
'show_hits' => 0, | |
'show_author' => 0, | |
'show_introtext' => 0, | |
'introtext_limit' => 100, | |
'show_readmore' => 0, | |
'show_readmore_title' => 1, | |
'readmore_limit' => 15, | |
'layout' => '_:default', | |
'owncache' => 1, | |
'cache_time' => 900, | |
'module_tag' => 'div', | |
'bootstrap_size' => 0, | |
'header_tag' => 'h3', | |
'style' => 0, | |
), | |
), | |
array( | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_6_TITLE'), | |
'ordering' => 1, | |
'position' => 'footer', | |
'module' => 'mod_menu', | |
'showtitle' => 0, | |
'params' => array( | |
'menutype' => $menuTypes[2], | |
'startLevel' => 1, | |
'endLevel' => 0, | |
'showAllChildren' => 0, | |
'layout' => '_:default', | |
'cache' => 1, | |
'cache_time' => 900, | |
'cachemode' => 'itemid', | |
'module_tag' => 'div', | |
'bootstrap_size' => 0, | |
'header_tag' => 'h3', | |
'style' => 0, | |
), | |
), | |
array( | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_7_TITLE'), | |
'ordering' => 1, | |
'position' => 'position-0', | |
'module' => 'mod_search', | |
'params' => array( | |
'width' => 20, | |
'button_pos' => 'right', | |
'opensearch' => 1, | |
'layout' => '_:default', | |
'cache' => 1, | |
'cache_time' => 900, | |
'cachemode' => 'itemid', | |
), | |
), | |
array( | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_8_TITLE'), | |
'content' => '<p><img src="images/headers/raindrops.jpg" alt="" /></p>', | |
'ordering' => 1, | |
'position' => 'position-3', | |
'module' => 'mod_custom', | |
'showtitle' => 0, | |
'params' => array( | |
'prepare_content' => 1, | |
'layout' => '_:default', | |
'cache' => 1, | |
'cache_time' => 900, | |
'cachemode' => 'static', | |
'module_tag' => 'div', | |
'bootstrap_size' => 0, | |
'header_tag' => 'h3', | |
'style' => 0, | |
), | |
), | |
array( | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_9_TITLE'), | |
'ordering' => 1, | |
'position' => 'position-7', | |
'module' => 'mod_tags_popular', | |
'params' => array( | |
'maximum' => 8, | |
'timeframe' => 'alltime', | |
'order_value' => 'count', | |
'order_direction' => 1, | |
'display_count' => 0, | |
'no_results_text' => 0, | |
'minsize' => 1, | |
'maxsize' => 2, | |
'layout' => '_:default', | |
'owncache' => 1, | |
'module_tag' => 'div', | |
'bootstrap_size' => 0, | |
'header_tag' => 'h3', | |
'style' => 0, | |
), | |
), | |
array( | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_10_TITLE'), | |
'ordering' => 0, | |
'position' => '', | |
'module' => 'mod_tags_similar', | |
'params' => array( | |
'maximum' => 5, | |
'matchtype' => 'any', | |
'layout' => '_:default', | |
'owncache' => 1, | |
'module_tag' => 'div', | |
'bootstrap_size' => 0, | |
'header_tag' => 'h3', | |
'style' => 0, | |
), | |
), | |
array( | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_11_TITLE'), | |
'ordering' => 4, | |
'position' => 'cpanel', | |
'module' => 'mod_stats_admin', | |
'access' => 6, | |
'client_id' => 1, | |
'params' => array( | |
'serverinfo' => 1, | |
'siteinfo' => 1, | |
'counter' => 0, | |
'increase' => 0, | |
'layout' => '_:default', | |
'cache' => 1, | |
'cache_time' => 900, | |
'cachemode' => 'static', | |
'module_tag' => 'div', | |
'bootstrap_size' => 6, | |
'header_tag' => 'h3', | |
'style' => 0, | |
), | |
), | |
array( | |
'title' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_12_TITLE'), | |
'ordering' => 1, | |
'position' => 'postinstall', | |
'module' => 'mod_feed', | |
'client_id' => 1, | |
'params' => array( | |
'rssurl' => 'https://www.joomla.org/announcements/release-news.feed', | |
'rssrtl' => 0, | |
'rsstitle' => 1, | |
'rssdesc' => 1, | |
'rssimage' => 1, | |
'rssitems' => 3, | |
'rssitemdesc' => 1, | |
'word_count' => 0, | |
'layout' => '_:default', | |
'cache' => 1, | |
'cache_time' => 900, | |
'module_tag' => 'div', | |
'bootstrap_size' => 0, | |
'header_tag' => 'h3', | |
'style' => 0, | |
), | |
), | |
); | |
foreach ($modules as $module) | |
{ | |
// Append language suffix to title. | |
$module['title'] .= $langSuffix; | |
// Set values which are always the same. | |
$module['id'] = 0; | |
$module['asset_id'] = 0; | |
$module['language'] = $language; | |
$module['note'] = ''; | |
$module['published'] = 1; | |
$module['assignment'] = 0; | |
if (!isset($module['content'])) | |
{ | |
$module['content'] = ''; | |
} | |
if (!isset($module['access'])) | |
{ | |
$module['access'] = $access; | |
} | |
if (!isset($module['showtitle'])) | |
{ | |
$module['showtitle'] = 1; | |
} | |
if (!isset($module['client_id'])) | |
{ | |
$module['client_id'] = 0; | |
} | |
if (!$model->save($module)) | |
{ | |
JFactory::getLanguage()->load('com_modules'); | |
$response = array(); | |
$response['success'] = false; | |
$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_FAILED', 3, JText::_($model->getError())); | |
return $response; | |
} | |
} | |
$response = array(); | |
$response['success'] = true; | |
$response['message'] = JText::_('PLG_SAMPLEDATA_BLOG_STEP3_SUCCESS'); | |
return $response; | |
} | |
/** | |
* Adds menuitems. | |
* | |
* @param array $menuItems Array holding the menuitems arrays. | |
* @param integer $level Level in the category tree. | |
* | |
* @return array IDs of the inserted menuitems. | |
* | |
* @since 3.8.0 | |
* | |
* @throws Exception | |
*/ | |
private function addMenuItems(array $menuItems, $level) | |
{ | |
$itemIds = array(); | |
$access = (int) $this->app->get('access', 1); | |
$user = JFactory::getUser(); | |
// Detect language to be used. | |
$language = Multilanguage::isEnabled() ? JFactory::getLanguage()->getTag() : '*'; | |
$langSuffix = ($language !== '*') ? ' (' . $language . ')' : ''; | |
foreach ($menuItems as $menuItem) | |
{ | |
// Reset item.id in model state. | |
$this->menuItemModel->setState('item.id', 0); | |
// Set values which are always the same. | |
$menuItem['id'] = 0; | |
$menuItem['created_user_id'] = $user->id; | |
$menuItem['alias'] = JApplicationHelper::stringURLSafe($menuItem['title']); | |
// Set unicodeslugs if alias is empty | |
if (trim(str_replace('-', '', $menuItem['alias']) == '')) | |
{ | |
$unicode = JFactory::getConfig()->set('unicodeslugs', 1); | |
$menuItem['alias'] = JApplicationHelper::stringURLSafe($menuItem['title']); | |
JFactory::getConfig()->set('unicodeslugs', $unicode); | |
} | |
// Append language suffix to title. | |
$menuItem['title'] .= $langSuffix; | |
$menuItem['published'] = 1; | |
$menuItem['language'] = $language; | |
$menuItem['note'] = ''; | |
$menuItem['img'] = ''; | |
$menuItem['associations'] = array(); | |
$menuItem['client_id'] = 0; | |
$menuItem['level'] = $level; | |
$menuItem['home'] = 0; | |
// Set browserNav to default if not set | |
if (!isset($menuItem['browserNav'])) | |
{ | |
$menuItem['browserNav'] = 0; | |
} | |
// Set access to default if not set | |
if (!isset($menuItem['access'])) | |
{ | |
$menuItem['access'] = $access; | |
} | |
// Set type to 'component' if not set | |
if (!isset($menuItem['type'])) | |
{ | |
$menuItem['type'] = 'component'; | |
} | |
// Set template_style_id to global if not set | |
if (!isset($menuItem['template_style_id'])) | |
{ | |
$menuItem['template_style_id'] = 0; | |
} | |
// Set parent_id to root (1) if not set | |
if (!isset($menuItem['parent_id'])) | |
{ | |
$menuItem['parent_id'] = 1; | |
} | |
if (!$this->menuItemModel->save($menuItem)) | |
{ | |
// Try two times with another alias (-1 and -2). | |
$menuItem['alias'] .= '-1'; | |
if (!$this->menuItemModel->save($menuItem)) | |
{ | |
$menuItem['alias'] = substr_replace($menuItem['alias'], '2', -1); | |
if (!$this->menuItemModel->save($menuItem)) | |
{ | |
throw new Exception($menuItem['title'] . ' => ' . $menuItem['alias'] . ' : ' . $this->menuItemModel->getError()); | |
} | |
} | |
} | |
// Get ID from menuitem we just added | |
$itemIds[] = $this->menuItemModel->getstate('item.id'); | |
} | |
return $itemIds; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment