public function install()
{
// load install.sql
$this->importSQL(__DIR__ . '/Data/install.sql');
// add 'blog' as a module
$this->addModule('Blog');
// import locale
$this->importLocale(__DIR__ . '/Data/locale.xml');
// general settings
$this->setSetting('Blog', 'allow_comments', true);
$this->setSetting('Blog', 'requires_akismet', true);
$this->setSetting('Blog', 'spamfilter', false);
$this->setSetting('Blog', 'moderation', true);
// @TODO remove this when the api is kicked out
$this->setSetting('Blog', 'ping_services', false);
$this->setSetting('Blog', 'overview_num_items', 10);
$this->setSetting('Blog', 'recent_articles_full_num_items', 3);
$this->setSetting('Blog', 'recent_articles_list_num_items', 5);
$this->setSetting('Blog', 'max_num_revisions', 20);
$this->makeSearchable('Blog');
// module rights
$this->setModuleRights(1, 'Blog');
// action rights
$this->setActionRights(1, 'Blog', 'AddCategory');
$this->setActionRights(1, 'Blog', 'Add');
$this->setActionRights(1, 'Blog', 'Categories');
$this->setActionRights(1, 'Blog', 'Comments');
$this->setActionRights(1, 'Blog', 'DeleteCategory');
$this->setActionRights(1, 'Blog', 'DeleteSpam');
$this->setActionRights(1, 'Blog', 'Delete');
$this->setActionRights(1, 'Blog', 'EditCategory');
$this->setActionRights(1, 'Blog', 'EditComment');
$this->setActionRights(1, 'Blog', 'Edit');
$this->setActionRights(1, 'Blog', 'ImportWordpress');
$this->setActionRights(1, 'Blog', 'Index');
$this->setActionRights(1, 'Blog', 'MassCommentAction');
$this->setActionRights(1, 'Blog', 'Settings');
// insert dashboard widget
$this->insertWidget();
// set navigation
$navigationModulesId = $this->setNavigation(null, 'Modules');
$navigationBlogId = $this->setNavigation($navigationModulesId, 'Blog');
$this->setNavigation($navigationBlogId, 'Articles', 'blog/index', array('blog/add', 'blog/edit', 'blog/import_wordpress'));
$this->setNavigation($navigationBlogId, 'Comments', 'blog/comments', array('blog/edit_comment'));
$this->setNavigation($navigationBlogId, 'Categories', 'blog/categories', array('blog/add_category', 'blog/edit_category'));
// settings navigation
$navigationSettingsId = $this->setNavigation(null, 'Settings');
$navigationModulesId = $this->setNavigation($navigationSettingsId, 'Modules');
$this->setNavigation($navigationModulesId, 'Blog', 'blog/settings');
// add extra's
$blogId = $this->insertExtra('Blog', ModuleExtraType::block(), 'Blog', null, null, 'N', 1000);
$this->insertExtra('Blog', ModuleExtraType::widget(), 'RecentComments', 'RecentComments', null, 'N', 1001);
$this->insertExtra('Blog', ModuleExtraType::widget(), 'Categories', 'Categories', null, 'N', 1002);
$this->insertExtra('Blog', ModuleExtraType::widget(), 'Archive', 'Archive', null, 'N', 1003);
$this->insertExtra('Blog', ModuleExtraType::widget(), 'RecentArticlesFull', 'RecentArticlesFull', null, 'N', 1004);
$this->insertExtra('Blog', ModuleExtraType::widget(), 'RecentArticlesList', 'RecentArticlesList', null, 'N', 1005);
// get search extra id
$searchId = (int) $this->getDB()->getVar('SELECT id FROM modules_extras
WHERE module = ? AND type = ? AND action = ?', array('Search', ModuleExtraType::WIDGET, 'Form'));
// loop languages
foreach ($this->getLanguages() as $language) {
// fetch current categoryId
$this->defaultCategoryId = $this->getCategory($language);
// no category exists
if ($this->defaultCategoryId == 0) {
// add category
$this->defaultCategoryId = $this->addCategory($language, 'Default', 'default');
}
// RSS settings
$this->setSetting('Blog', 'rss_meta_' . $language, true);
$this->setSetting('Blog', 'rss_title_' . $language, 'RSS');
$this->setSetting('Blog', 'rss_description_' . $language, '');
// check if a page for blog already exists in this language
if (!(bool) $this->getDB()->getVar('SELECT 1
FROM pages AS p
INNER JOIN pages_blocks AS b ON b.revision_id = p.revision_id
WHERE b.extra_id = ? AND p.language = ?
LIMIT 1', array($blogId, $language))) {
$this->insertPage(array('title' => 'Blog', 'language' => $language), null, array('extra_id' => $blogId, 'position' => 'main'), array('extra_id' => $searchId, 'position' => 'top'));
}
if ($this->installExample()) {
$this->installExampleData($language);
}
}
}