<?php
/**
* Zikula Application Framework
*
* @copyright (c) 2001, Zikula Development Team
* @link http://www.zikula.org
* @version $Id: pninit.php 24342 2008-06-06 12:03:14Z markwest $
* @license GNU/GPL - http://www.gnu.org/copyleft/gpl.html
* @package Zikula_Value_Addons
* @subpackage Pages
*/
/**
* init pages module
*/
function pages_init()
{
// create table
if (!DBUtil::createTable('pages')) {
return false;
}
// create our default category
if (!_pages_createdefaultcategory()) {
return LogUtil::registerError (_CREATEFAILED);
}
// Set default pages per page
pnModSetVar('Pages', 'itemsperpage', 25);
pnModSetVar('Pages', 'enablecategorization', true);
pnModSetVar('Pages', 'addcategorytitletopermalink', true);
// Initialisation successful
return true;
}
/**
* upgrade the pages module
*/
function pages_upgrade($oldversion)
{
// rename table if upgrading from an earlier version
if (in_array(DBUtil::
getLimitedTablename('seccont'), DBUtil::
MetaTables())) { DBUtil::renameTable('seccont', 'pages');
DBUtil::renameColumn('pages', 'pn_artid', 'pageid');
}
// update table
if (!DBUtil::changeTable('pages')) {
return false;
}
switch ($oldversion) {
// 1.0 shipped with .7x
case 1.0:
// populate permalinks for existing content
$tables = pnDBGetTables();
$shorturlsep = pnConfigGetVar('shorturlsseparator');
$sql = "UPDATE $tables[pages] SET pn_urltitle = REPLACE(pn_title, ' ', '{$shorturlsep}')";
if (!DBUtil::executeSQL($sql)) {
return LogUtil::registerError (_UPDATETABLEFAILED);
}
pnModSetVar('Pages', 'itemsperpage', 25);
return pages_upgrade(2.0);
case 2.0:
return pages_upgrade(2.1);
case 2.1:
pnModSetVar('Pages', 'enablecategorization', true);
pnModSetVar('Pages', 'addcategorytitletopermalink', true);
pnModDBInfoLoad('Pages', 'Pages', true);
if (!_pages_migratecategories()) {
return LogUtil::registerError (_UPDATEFAILED);
}
break;
}
// Update successful
return true;
}
/**
* delete the pages module
*/
function pages_delete()
{
// drop table
if (!DBUtil::dropTable('pages')) {
return false;
}
// Delete any module variables
pnModDelVar('Pages');
// Delete entries from category registry
pnModDBInfoLoad ('Categories');
Loader::loadArrayClassFromModule('Categories', 'CategoryRegistry');
$registry = new PNCategoryRegistryArray();
$registry->deleteWhere ('crg_modname=\'Pages\'');
// Deletion successful
return true;
}
/**
* migrate old local categories to the categories module
*/
function _pages_migratecategories()
{
// load the admin language file
// pull all data from the old table
$prefix = pnConfigGetVar('prefix');
$sql = "SELECT pn_secname, pn_image, pn_secid FROM {$prefix}_sections";
$result = DBUtil::executeSQL($sql);
for (; !$result->EOF; $result->MoveNext()) {
$categories[] = $result->fields;
}
// load necessary classes
Loader::loadClass('CategoryUtil');
Loader::loadClassFromModule('Categories', 'Category');
Loader::loadClassFromModule('Categories', 'CategoryRegistry');
// get the language file
$lang = pnUserGetLang();
// create root category and entry in the categories registry
_pages_createdefaultcategory('/__SYSTEM__/Modules/Pages');
// get the category path for which we're going to insert our upgraded categories
$rootcat = CategoryUtil::getCategoryByPath('/__SYSTEM__/Modules/Pages');
// migrate our categories
foreach ($categories as $category) {
$cat = new PNCategory ();
$cat->setDataField('parent_id', $rootcat['id']);
$cat->setDataField('name', $category[0]);
$cat->
setDataField('display_name',
array($lang =>
$category[0]));
$cat->
setDataField('display_desc',
array($lang =>
$category[0]));
$cat->setDataField('data1', $category[1]);
if (!$cat->validate('admin')) {
&