This 'howto' is basically the same to the wiki by minahito. I just expressed it in a different way, in my poor English. Hope this will be useful for some of you.
Before you read further, please take a look at my mini FAQ :-)
Q1. Why do I need to move to XCL?
A1. Please read and view carefully the following resources:
- The 10 reasons why you should touch XOOPS Cube
- Above content described in other way: graphical instead of text. Click me.
Q2. When should I move to XCL?
A2. When all of your modules that are currently working on Xoops.org/ImpressCMS:
- are compatible with XCL;
- can be replaced with other modules that are compatible with XCL.
Q3. Where should I do the migration?
A3. On your local machine, not on your production server.
Only when the migration went smoothly and the migrated site at your local works perfect, you could synchronize it to your production site.
Scope
This howto is worth reading if you are trying to migrate to XCL 2.1.4 from one of the following cores with Protector installed:
- Xoops 2.0.16a-JP (from xoopscube.jp)
- Xoops 2.0.X (from xoops.org)
The DB structure of the 2.0.X series from xoops.org looks almost exactly to XCL except for some minor changes in data length. See the diff below:
- ImpressCMS 1.0 Final (Janus) (from impresscms.org)
It's based on xoops 2.0.17. It has the DB structure nearly the same to xoops.org 2.0.X except for one additional table called block_positions. We don't need this table in XCL.
This 'howto' is done based on my real experience of migrating from ImpressCMS to XCL. I did not test on other cores but it must work on Xoops 2.0.16a-JP, and Xoops 2.0.X without problems.
Environments
I am running xoops stuffs on my own Linux server which I have full control over it. I did almost of things via command lines. Please see the commands and translate them to English to achieve the same results if you use GUI and/or Microsoft Windows.
- Linux x64
- Apache 2.2.x
- MySQL 5.0.x
- PHP 5.2.x
- ImpressCMS 1.0
- XCL 2.1.4
In this article I use some following 'definitions' for simplicity. Please applied theme to yours properly.
- XOOPS_ROOT_PATH is /home/avtx30/html
- XOOPS_TRUST_PATH is /home/avtx30/xoops_trust_path
- XOOP_URL is http://www.mydomain.com
- MYDBUSER is MySQL database username
- MYDBPASS is MySQL database password
- MYDBNAME is MySQL database name
- MYPREFIX is MySQL database tables' prefix
-------------------------HERE WE GO------------------
STEP 1 Preparation
1. I checked my server PHP version. It's 5.2.5
2. I checked my current xoops version. It's ImpressCMS 1.0 (Final)
3. I checked the compatibility of my modules. Almost of them are said to work on XCL except for 2 modules: article 1.0 (by phppp), and Liaise 1.2x (from brandycoke.com). I was confident to move. I was planning to replace 'article' by onokazu's Xigg, and 'Liaise' by Marijuana's inquiry.
4. I checked whether my modules require the system module for compatibility. I found 1 modules need 'system', it was multiMenu 1.1X (from malaika-system). I decided to keep the 'system' module of ImpressCMS for multiMenu compatibility.
I also found that xoopstube 1.0.x (by McDonald), SmartFAQ 1.0X (from smartfactory.ca), and rw_banner 1.X (from brinfo.com.br) needs 'system' for their own blocks/permission setting function. Because I use GIJOE's Altsys I don't need such functions so I planned to ignore some PHP warnings if they happen to appear.
STEP 2 Close site
The following step numbers are not sync. with minahito's wiki.
1. Backup database (first time)
I've been training myself to backup everything before changing stuffs. This habit has saved me alot of works. I backup my database so that I can go back to the working state if anything went wrong during the migration.
2. Backup files/directories
I backup files/directories using rsync
3. Change site preferences
I log in to my current site (powered by ImpressCMS) as admin. At the 'General Settings' under 'Preferences Main' I selected the following settings then click 'Go!'.
- Default language: english
- Module for your start page: None
- Default theme: default
- Selectable themes: default
- Debug mode: Enable debug (inline mode)
- Turn your site off?: Yes
- Module-wide Cache: No Cache (for all modules)
4. Hide all blocks
Within 'Blocks Administration', I set the 'Visible' property of all blocks (to show in every pages) to 'No'.
5. Remove incompatible modules
I uninstall the 2 modules that are not compatible with Xoops: article 1.0 and Liaise 1.2X. After that I removed them (directory names: 'article' and 'liaise') from XOOPS_ROOT_PATH/modules directory.
6. Backup database (second time)
I backup my database so that I can go back to the working state (site-closed) if anything went wrong during the migration.
STEP 3 File replace
The following step numbers are not sync. with minahito's wiki.
1. I deleted all of files/directories (include the .htaccess file under XOOPS_ROOT_PATH), except for the following files/directories:
- XOOPS_ROOT_PATH/favicon.ico
- XOOPS_ROOT_PATH/images
- XOOPS_ROOT_PATH/modules
- XOOPS_ROOT_PATH/themes
- XOOPS_ROOT_PATH/uploads
- XOOPS_TRUST_PATH
2. Download and unzip Xoops Cube Legacy
I download XCL version 2.1.4 from xoopscube.org, unzip it, remove un-wanted contents, move the upgrade module to it proper place, then copy the whole content under its 'html' directory to my XOOPS_ROOT_PATH.
Files/directories of XCL to be removed:
- favicon.ico
- mainfile.php
- install/
- uploads/
I moved the 'XUpgrade' directory under 'extras' to 'html/modules'
Here are the actual commands:
STEP 4 Upgrade
1. Manually create the 'mainfile.php'
I renamed the file 'mainfile.dist.php' under XOOPS_ROOT_PATH to 'mainfile.php'. I wanted a clean 'mainfile.php' for XCL. I intentionally did not use the old 'mainfile.php' because there are a lot of 'hacks' inside it. With XCL, I don't need any 'hacks'.
I edited 'mainfile.php' so that it looks like following:
- Line 34, 39, 44 accordingly:
- Line 48, 52, 56, 60, 64, 68, 72 accordingly:
- Line 99-106:
2. Change directory permissions for templates_c and cache
I chmod related directories for write permission.
3. I opened my site from a web browser to see what happen
The first thing I saw is a familiar site-closing window with XCL looks.

I logged in with my admin account to be asked to install XCL modules.

I checked the 'XUpgrade'. This is very important because the upgrade will be done by installing this module.
4. I went to the module management, and update all of my modules. Since XUpgrade had finished its job, I uninstalled it and delete it from my server.
STEP 5 Open site
1. I went to the front page and check if my modules were working. I found no problems.
2. I need the 'system' module for compatibility but there's not need to have it installed so I uninstalled it and did not delete it from my server.
3. I used 'Altsys' to arrange blocks. I found no difficulty placing them. Altsys is just great!!
4. Custom blocks are also successfully placed using Altsys.
5. I manually recovered all my preferences so that the site looks exactly to its origin (before migration)
At the 'General Settings' under 'Preferences Main' I selected the following settings then click 'Go!'.
- Default language: english
- Module for your start page: None
- Default theme: MYTHEME
- Selectable themes: MYTHEME
- Debug mode: Off
- Turn your site off?: No
- Module-wide Cache: case-by-case
Appendix 1: Module list
I had successfully migrated my ImpressCMS to XCL with the following modules:
- Altsys 0.58 (GIJOE - block/permission/template/language constants utility)
- Protector 3.17 (GIJOE - security)
- multiMenu 1.15 (malaika-system - custom menus)
- sitemap 1.03 (GIJOE - sitemap)
- tellafriend (GIJOE - tell-a-friend)
- waiting 0.95 (GIJOE - waiting content manager)
- mylists (custom module)
- marquee 2.41 (instant-zero - marquee)
- rw_banner 1.5 (brinfo.com.br - banner system)
- mycal (custom module)
- attach 0.4 (unknown-artifacts.info - files attacher)
- happy_linux 1.40 (ohwada's framework)
- happy_search 0.53 (search with google)
- d3pipes 0.60 (GIJOE - RSS feeds)
- logcounterx 2.71 (Taq - site access statistics)
- news 1.54 (instant-zero - news)
- smartfaq 1.08 (smartfactory.ca - FAQ)
- pico 1.6 (GIJOE - static contents)
- d3forum 0.82 (GIJOE - forums)
- xoopstube 1.03 (McDonald - video)
- xpress 2.05 (phppp - wordpress for xoops)
- d3downloads 0.82c (photositelinks - downloads)
- d3xcgal 0.23 (oceanblue - D3 version of xcGal)
- xwords 0.46 (kanpyo.net - based on wordbook)
- mylinks 1.10
Afterword
I've just tried to write this 'howto' from my hands-on experience but I don't know if you can understand it well. Questions, comments are welcomed. I am happy if this could help some of you who are trying to reach XCL.
Before you read further, please take a look at my mini FAQ :-)
Q1. Why do I need to move to XCL?
A1. Please read and view carefully the following resources:
- The 10 reasons why you should touch XOOPS Cube
- Above content described in other way: graphical instead of text. Click me.
Q2. When should I move to XCL?
A2. When all of your modules that are currently working on Xoops.org/ImpressCMS:
- are compatible with XCL;
- can be replaced with other modules that are compatible with XCL.
Q3. Where should I do the migration?
A3. On your local machine, not on your production server.
Only when the migration went smoothly and the migrated site at your local works perfect, you could synchronize it to your production site.
Scope
This howto is worth reading if you are trying to migrate to XCL 2.1.4 from one of the following cores with Protector installed:
- Xoops 2.0.16a-JP (from xoopscube.jp)
- Xoops 2.0.X (from xoops.org)
The DB structure of the 2.0.X series from xoops.org looks almost exactly to XCL except for some minor changes in data length. See the diff below:
$ diff Package_Legacy/html/install/sql/mysql.structure.sql \
xoops-2.0.18.1/htdocs/install/sql/mysql.structure.sql
170c170
< conf_title varchar(30) NOT NULL default '',
---
> conf_title varchar(255) NOT NULL default '',
172c172
< conf_desc varchar(30) NOT NULL default '',
---
> conf_desc varchar(255) NOT NULL default '',
187c187
< confcat_name varchar(25) NOT NULL default '',
---
> confcat_name varchar(255) NOT NULL default '',
365,366c365
< ) TYPE=MyISAM AUTO_INCREMENT=2 ;
< # mid=1 is reserved for old XOOPS system module
---
> ) TYPE=MyISAM;
- ImpressCMS 1.0 Final (Janus) (from impresscms.org)
It's based on xoops 2.0.17. It has the DB structure nearly the same to xoops.org 2.0.X except for one additional table called block_positions. We don't need this table in XCL.
This 'howto' is done based on my real experience of migrating from ImpressCMS to XCL. I did not test on other cores but it must work on Xoops 2.0.16a-JP, and Xoops 2.0.X without problems.
Environments
I am running xoops stuffs on my own Linux server which I have full control over it. I did almost of things via command lines. Please see the commands and translate them to English to achieve the same results if you use GUI and/or Microsoft Windows.
- Linux x64
- Apache 2.2.x
- MySQL 5.0.x
- PHP 5.2.x
- ImpressCMS 1.0
- XCL 2.1.4
In this article I use some following 'definitions' for simplicity. Please applied theme to yours properly.
- XOOPS_ROOT_PATH is /home/avtx30/html
- XOOPS_TRUST_PATH is /home/avtx30/xoops_trust_path
- XOOP_URL is http://www.mydomain.com
- MYDBUSER is MySQL database username
- MYDBPASS is MySQL database password
- MYDBNAME is MySQL database name
- MYPREFIX is MySQL database tables' prefix
-------------------------HERE WE GO------------------
STEP 1 Preparation
1. I checked my server PHP version. It's 5.2.5
2. I checked my current xoops version. It's ImpressCMS 1.0 (Final)
3. I checked the compatibility of my modules. Almost of them are said to work on XCL except for 2 modules: article 1.0 (by phppp), and Liaise 1.2x (from brandycoke.com). I was confident to move. I was planning to replace 'article' by onokazu's Xigg, and 'Liaise' by Marijuana's inquiry.
4. I checked whether my modules require the system module for compatibility. I found 1 modules need 'system', it was multiMenu 1.1X (from malaika-system). I decided to keep the 'system' module of ImpressCMS for multiMenu compatibility.
I also found that xoopstube 1.0.x (by McDonald), SmartFAQ 1.0X (from smartfactory.ca), and rw_banner 1.X (from brinfo.com.br) needs 'system' for their own blocks/permission setting function. Because I use GIJOE's Altsys I don't need such functions so I planned to ignore some PHP warnings if they happen to appear.
STEP 2 Close site
The following step numbers are not sync. with minahito's wiki.
1. Backup database (first time)
I've been training myself to backup everything before changing stuffs. This habit has saved me alot of works. I backup my database so that I can go back to the working state if anything went wrong during the migration.
$ cd
$ mysqldump -uMYDBUSER -pMYDBPASS MYDBNAME > original.sql
2. Backup files/directories
I backup files/directories using rsync
$ mkdir ~/html_backup
$ cd ~/html_backup/
$ rsync -avh ~/html/ .
3. Change site preferences
I log in to my current site (powered by ImpressCMS) as admin. At the 'General Settings' under 'Preferences Main' I selected the following settings then click 'Go!'.
- Default language: english
- Module for your start page: None
- Default theme: default
- Selectable themes: default
- Debug mode: Enable debug (inline mode)
- Turn your site off?: Yes
- Module-wide Cache: No Cache (for all modules)
4. Hide all blocks
Within 'Blocks Administration', I set the 'Visible' property of all blocks (to show in every pages) to 'No'.
5. Remove incompatible modules
I uninstall the 2 modules that are not compatible with Xoops: article 1.0 and Liaise 1.2X. After that I removed them (directory names: 'article' and 'liaise') from XOOPS_ROOT_PATH/modules directory.
6. Backup database (second time)
I backup my database so that I can go back to the working state (site-closed) if anything went wrong during the migration.
$ cd
$ mysqldump -uMYDBUSER -pMYDBPASS MYDBNAME > closing.sql
STEP 3 File replace
The following step numbers are not sync. with minahito's wiki.
1. I deleted all of files/directories (include the .htaccess file under XOOPS_ROOT_PATH), except for the following files/directories:
- XOOPS_ROOT_PATH/favicon.ico
- XOOPS_ROOT_PATH/images
- XOOPS_ROOT_PATH/modules
- XOOPS_ROOT_PATH/themes
- XOOPS_ROOT_PATH/uploads
- XOOPS_TRUST_PATH
2. Download and unzip Xoops Cube Legacy
I download XCL version 2.1.4 from xoopscube.org, unzip it, remove un-wanted contents, move the upgrade module to it proper place, then copy the whole content under its 'html' directory to my XOOPS_ROOT_PATH.
Files/directories of XCL to be removed:
- favicon.ico
- mainfile.php
- install/
- uploads/
I moved the 'XUpgrade' directory under 'extras' to 'html/modules'
Here are the actual commands:
$ cd
$ wget http://nchc.dl.sourceforge.net/sourceforge/xoopscube/Package_Legacy_2_1_4.zip
$ unzip Package_Legacy_2_1_4.zip
$ cd Package_Legacy/html/
$ rm -rf install/ uploads/ favicon.ico mainfile.php
$ mv ../extras/XUpgrade/ modules/
$ tar cf ~/xcl214.tar *
$ cd ~/html/
$ tar xf ~/xcl214.tar
STEP 4 Upgrade
1. Manually create the 'mainfile.php'
I renamed the file 'mainfile.dist.php' under XOOPS_ROOT_PATH to 'mainfile.php'. I wanted a clean 'mainfile.php' for XCL. I intentionally did not use the old 'mainfile.php' because there are a lot of 'hacks' inside it. With XCL, I don't need any 'hacks'.
I edited 'mainfile.php' so that it looks like following:
- Line 34, 39, 44 accordingly:
define('XOOPS_ROOT_PATH', '/home/avtx30/html');
define('XOOPS_TRUST_PATH', '/home/nhatban/xoops_trust_path');
define('XOOPS_URL', 'http://www.mydomain.com');
- Line 48, 52, 56, 60, 64, 68, 72 accordingly:
define('XOOPS_DB_PREFIX', 'MYPREFIX');
define('XOOPS_SALT', '');
define('XOOPS_DB_HOST', 'localhost');
define('XOOPS_DB_USER', 'MYDBUSER');
define('XOOPS_DB_PASS', 'MYDBPASS');
define('XOOPS_DB_NAME', 'MYDBNAME');
- Line 99-106:
if (!defined('_LEGACY_PREVENT_LOAD_CORE_') && XOOPS_ROOT_PATH != '') {
require XOOPS_TRUST_PATH.'/modules/protector/include/precheck.inc.php' ;
@include_once XOOPS_ROOT_PATH.'/include/cubecore_init.php';
if (!isset($xoopsOption['nocommon']) && !defined('_LEGACY_PREVENT_EXEC_COMMON_')) {
include XOOPS_ROOT_PATH.'/include/common.php';
}
require XOOPS_TRUST_PATH.'/modules/protector/include/postcheck.inc.php' ;
}
2. Change directory permissions for templates_c and cache
I chmod related directories for write permission.
$ cd ~/html/
$ chmod 0777 templates_c/
$ chmod 0777 cache/
3. I opened my site from a web browser to see what happen
The first thing I saw is a familiar site-closing window with XCL looks.

I logged in with my admin account to be asked to install XCL modules.

I checked the 'XUpgrade'. This is very important because the upgrade will be done by installing this module.
4. I went to the module management, and update all of my modules. Since XUpgrade had finished its job, I uninstalled it and delete it from my server.
STEP 5 Open site
1. I went to the front page and check if my modules were working. I found no problems.
2. I need the 'system' module for compatibility but there's not need to have it installed so I uninstalled it and did not delete it from my server.
3. I used 'Altsys' to arrange blocks. I found no difficulty placing them. Altsys is just great!!
4. Custom blocks are also successfully placed using Altsys.
5. I manually recovered all my preferences so that the site looks exactly to its origin (before migration)
At the 'General Settings' under 'Preferences Main' I selected the following settings then click 'Go!'.
- Default language: english
- Module for your start page: None
- Default theme: MYTHEME
- Selectable themes: MYTHEME
- Debug mode: Off
- Turn your site off?: No
- Module-wide Cache: case-by-case
Appendix 1: Module list
I had successfully migrated my ImpressCMS to XCL with the following modules:
- Altsys 0.58 (GIJOE - block/permission/template/language constants utility)
- Protector 3.17 (GIJOE - security)
- multiMenu 1.15 (malaika-system - custom menus)
- sitemap 1.03 (GIJOE - sitemap)
- tellafriend (GIJOE - tell-a-friend)
- waiting 0.95 (GIJOE - waiting content manager)
- mylists (custom module)
- marquee 2.41 (instant-zero - marquee)
- rw_banner 1.5 (brinfo.com.br - banner system)
- mycal (custom module)
- attach 0.4 (unknown-artifacts.info - files attacher)
- happy_linux 1.40 (ohwada's framework)
- happy_search 0.53 (search with google)
- d3pipes 0.60 (GIJOE - RSS feeds)
- logcounterx 2.71 (Taq - site access statistics)
- news 1.54 (instant-zero - news)
- smartfaq 1.08 (smartfactory.ca - FAQ)
- pico 1.6 (GIJOE - static contents)
- d3forum 0.82 (GIJOE - forums)
- xoopstube 1.03 (McDonald - video)
- xpress 2.05 (phppp - wordpress for xoops)
- d3downloads 0.82c (photositelinks - downloads)
- d3xcgal 0.23 (oceanblue - D3 version of xcGal)
- xwords 0.46 (kanpyo.net - based on wordbook)
- mylinks 1.10
Afterword
I've just tried to write this 'howto' from my hands-on experience but I don't know if you can understand it well. Questions, comments are welcomed. I am happy if this could help some of you who are trying to reach XCL.
Votes:191
Average:3.98
|
How to migrate to Xoops Cube Legacy |
Tài liệu kỹ thuật |


