Skip to content

Instantly share code, notes, and snippets.

@csthomas
Created January 4, 2018 07:54
Show Gist options
  • Save csthomas/df973e13245e6a23ed5f8cb9ecd67ce1 to your computer and use it in GitHub Desktop.
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
<?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