Zikula_Value_Addons
[ class tree: Zikula_Value_Addons ] [ index: Zikula_Value_Addons ] [ all elements ]

Source for file pninit.php

Documentation is available at pninit.php

  1. <?php
  2. /**
  3.  * Zikula Application Framework
  4.  *
  5.  * @copyright (c) 2002, Zikula Development Team
  6.  * @link http://www.zikula.org
  7.  * @version $Id: pninit.php 24342 2008-06-06 12:03:14Z markwest $
  8.  * @license GNU/GPL - http://www.gnu.org/copyleft/gpl.html
  9.  * @package Zikula_Value_Addons
  10.  * @subpackage FAQ
  11.  */
  12.  
  13. /**
  14.  * init faq module
  15.  */
  16. function FAQ_init()
  17. {
  18.     // create table
  19.     if (!DBUtil::createTable('faqanswer')) {
  20.         return false;
  21.     }
  22.  
  23.     // create our default category
  24.     if (!_faq_createdefaultcategory()) {
  25.         return LogUtil::registerError (_CREATEFAILED);
  26.     }
  27.  
  28.     // Set up module variables
  29.     pnModSetVar('FAQ''itemsperpage'25);
  30.     pnModSetVar('FAQ''enablecategorization'true);
  31.     pnModSetVar('FAQ''addcategorytitletopermalink'true);
  32.  
  33.     // Initialisation successful
  34.     return true;
  35. }
  36.  
  37. /**
  38.  * upgrade
  39.  */
  40. function FAQ_upgrade($oldversion)
  41. {
  42.     switch($oldversion{
  43.         // version 1.11 shipped with PN .7x
  44.         case 1.11:
  45.             // .7x upgrade needs to rename a row before update the table
  46.             DBUtil::renameColumn('faqanswer''pn_submittedby''submittedbyid');
  47.             // update table
  48.             if (!DBUtil::changeTable('faqanswer')) {
  49.                 return false;
  50.             }
  51.             // Set up module variables
  52.             pnModSetVar('FAQ''itemsperpage'25);
  53.             // populate permalinks for existing content
  54.             $tables pnDBGetTables();
  55.             $shorturlsep pnConfigGetVar('shorturlsseparator');            
  56.             $sql  "UPDATE $tables[faqanswer] SET pn_urltitle = REPLACE(pn_question, ' ', '{$shorturlsep}')";
  57.             if (!DBUtil::executeSQL($sql)) {
  58.                 return LogUtil::registerError (_UPDATETABLEFAILED);
  59.             }
  60.             return FAQ_upgrade(2.0);
  61.             break;
  62.         case 2.0:
  63.             return FAQ_upgrade(2.1);
  64.         case 2.1:
  65.             pnModSetVar('FAQ''enablecategorization'true);
  66.             pnModSetVar('FAQ''addcategorytitletopermalink'true);
  67.             pnModDBInfoLoad('FAQ''FAQ'true);
  68.             if (!_faq_migratecategories()) {
  69.                 return LogUtil::registerError (_UPDATEFAILED);
  70.             }
  71.             break;
  72.     }
  73.  
  74.     // upgrade successful
  75.     return true;
  76. }
  77.  
  78. /**
  79.  * delete the faq module
  80.  */
  81. function FAQ_delete()
  82. {
  83.     // drop ytable
  84.     if (!DBUtil::dropTable('faqanswer')) {
  85.         return false;
  86.     }
  87.  
  88.     // Delete module variables
  89.     pnModDelVar('FAQ');
  90.  
  91.     // Delete entries from category registry 
  92.     pnModDBInfoLoad ('Categories');
  93.     Loader::loadArrayClassFromModule('Categories''CategoryRegistry');
  94.     $registry new PNCategoryRegistryArray();
  95.     $registry->deleteWhere ('crg_modname=\'FAQ\'');
  96.  
  97.     // Deletion successful
  98.     return true;
  99. }
  100.  
  101.  
  102. /**
  103.  * migrate old local categories to the categories module
  104.  */
  105. {
  106.     // load the admin language file
  107.     // pull all data from the old table
  108.     $prefix pnConfigGetVar('prefix');
  109.     $sql "SELECT pn_categories, pn_id_cat, pn_parent_id FROM {$prefix}_faqcategories";
  110.     $result DBUtil::executeSQL($sql);
  111.     $categories array();
  112.     for (!$result->EOF$result->MoveNext()) {
  113.         $categories[$result->fields;
  114.     }
  115.  
  116.     // load necessary classes
  117.     Loader::loadClass('CategoryUtil');
  118.     Loader::loadClassFromModule('Categories''Category');
  119.     Loader::loadClassFromModule('Categories''CategoryRegistry');
  120.  
  121.     // get the language file
  122.     $lang pnUserGetLang();
  123.  
  124.     // create root category and entry in the categories registry
  125.     _faq_createdefaultcategory('/__SYSTEM__/Modules/FAQ');
  126.  
  127.     // get the category path for which we're going to insert our upgraded categories
  128.     $rootcat CategoryUtil::getCategoryByPath('/__SYSTEM__/Modules/FAQ');
  129.  
  130.     // migrate our root categories
  131.     $categorymap array();
  132.     foreach ($categories as $category{
  133.         // we'll deal with sub categories on a second pass
  134.         if ($category[2!= 0continue;
  135.         $cat new PNCategory ();
  136.         $cat->setDataField('parent_id'$rootcat['id']);
  137.         $cat->setDataField('name'$category[0]);
  138.         $cat->setDataField('display_name'array($lang => $category[0]));
  139.         $cat->setDataField('display_desc'array($lang => $category[0]));
  140.         if (!$cat->validate('admin')) {
  141.             return false;
  142.         }
  143.         $cat->insert();
  144.         $cat->update();
  145.         $categorymap[$category[1]] $cat->getDataField('id');
  146.     }
  147.  
  148.     // migrate our sub categories
  149.     foreach ($categories as $category{
  150.         // root categories are already done
  151.         if ($category[2== 0continue;
  152.         $cat new PNCategory ();
  153.         $cat->setDataField('parent_id'$categorymap[$category[2]]);
  154.         $cat->setDataField('name'$category[0]);
  155.         $cat->setDataField('display_name'array($lang => $category[0]));
  156.         $cat->setDataField('display_desc'array($lang => $category[0]));
  157.         if (!$cat->validate('admin')) {
  158.             return false;
  159.         }
  160.         $cat->insert();
  161.         $cat->update();
  162.         $categorymap[$category[1]] $cat->getDataField('id');
  163.     }
  164.  
  165.     // migrate page category assignments
  166.     $sql "SELECT pn_id, pn_id_cat FROM {$prefix}_faqanswer";
  167.     $result DBUtil::executeSQL($sql);
  168.     $pages array();
  169.     for (!$result->EOF$result->MoveNext()) {
  170.         $pages[array('faqid' => $result->fields[0],
  171.                          '__CATEGORIES__' => array('Main' => $categorymap[$result->fields[1]]),
  172.                          '__META__' => array('module' => 'FAQ'));
  173.     }
  174.     foreach ($pages as $page{
  175.         if (!DBUtil::updateObject($page'faqanswer''''faqid')) {
  176.             return LogUtil::registerError (_UPDATEFAILED);
  177.         }
  178.     }
  179.  
  180.     // drop old table
  181.     DBUtil::dropTable('faqcategories');
  182.  
  183.     // finally drop the secid column
  184.     DBUtil::dropColumn('faqanswer''pn_id_cat');
  185.  
  186.     return true;
  187. }
  188.  
  189. /**
  190.  * create placeholder for categories
  191.  */
  192. function _faq_createdefaultcategory($regpath '/__SYSTEM__/Modules/Global')
  193. {
  194.     // load necessary classes
  195.     Loader::loadClass('CategoryUtil');
  196.     Loader::loadClassFromModule('Categories''Category');
  197.     Loader::loadClassFromModule('Categories''CategoryRegistry');
  198.  
  199.     // get the language file
  200.     $lang pnUserGetLang();
  201.  
  202.     // get the category path for which we're going to insert our place holder category
  203.     $rootcat CategoryUtil::getCategoryByPath('/__SYSTEM__/Modules');
  204.     $fCat    CategoryUtil::getCategoryByPath('/__SYSTEM__/Modules/FAQ');
  205.  
  206.     if (!$fCat{
  207.         // create placeholder for all our migrated categories
  208.         $cat new PNCategory ();
  209.         $cat->setDataField('parent_id'$rootcat['id']);
  210.         $cat->setDataField('name''FAQ');
  211.         $cat->setDataField('display_name'array($lang => _FAQ_DISPLAYNAME));
  212.         $cat->setDataField('display_desc'array($lang => _FAQ_DESCRIPTION));
  213.         if (!$cat->validate('admin')) {
  214.             return false;
  215.         }
  216.         $cat->insert();
  217.         $cat->update();
  218.     }
  219.  
  220.     // get the category path for which we're going to insert our upgraded categories
  221.     $rootcat CategoryUtil::getCategoryByPath($regpath);
  222.     if ($rootcat{
  223.         // create an entry in the categories registry
  224.         $registry new PNCategoryRegistry();
  225.         $registry->setDataField('modname''FAQ');
  226.         $registry->setDataField('table''faqanswer');
  227.         $registry->setDataField('property''Main');
  228.         $registry->setDataField('category_id'$rootcat['id']);
  229.         $registry->insert();
  230.     else {
  231.         return false;
  232.     }
  233.  
  234.     return true;
  235. }

Documentation generated on Fri, 18 Jul 2008 21:53:28 +0200 by phpDocumentor 1.4.1