-This is documentation of the process used while porting Trackers V2 from TikiWiki 1.9 to bitweaver.
|
{maketoc}
|
!Create the Directories
|
Well, first thing I'll do is create sub-dirs under my bitweaver install as per Fire's Tutorial_Custom_package.
|
- mkdir trackers2
|
- mkdir trackers2/admin
|
- mkdir trackers2/icons
|
- mkdir trackers2/modules
|
- mkdir trackers2/plugins
|
- mkdir trackers2/templates
|
+{code}$ mkdir trackers2 |
+$ mkdir trackers2/admin |
+$ mkdir trackers2/icons |
+$ mkdir trackers2/modules |
+$ mkdir trackers2/plugins |
+$ mkdir trackers2/templates{/code} |
|
!Copying the Files
|
First thing I'll do is copy the trackers library, root php files, modules and templates. I've used the '...' to indicate the previous command but with a different filename for brevity.
|
!!Libraries
|
- cp ../tw-1.9/lib/trackers/trackerlib.php trackers2
|
+{code}$ cp ../tw-1.9/lib/trackers/trackerlib.php trackers2{/code} |
!!Root files (non-admin)
|
- cp ../tw-1.9/tiki-list_trackers.php trackers2
|
+{code}$ cp ../tw-1.9/tiki-list_trackers.php trackers2 |
...tiki-view_tracker_item.php
|
...tiki-view_tracker_more_info.php
|
- ...tiki-view_tracker.php
|
+ ...tiki-view_tracker.php{/code} |
!!Root files (admin)
|
- cp ../tw-1.9/tiki-admin_include_trackers.php trackers2/admin
|
+{code}$ cp ../tw-1.9/tiki-admin_include_trackers.php trackers2/admin |
...tiki-admin_tracker_fields.php
|
- ...tiki-admin_trackers.php
|
+ ...tiki-admin_trackers.php{/code} |
!!Icons
|
- cp ../tw-1.9/img/icons/admin_trackers.png trackers2/icons
|
+{code}$ cp ../tw-1.9/img/icons/admin_trackers.png trackers2/icons{/code} |
!!Modules
|
- cp ../tw-1.9/modules/mod-last_modif_tracker_items.php trackers2/modules
|
- ...mod-last_tracker_items.php
|
+{code}$ cp ../tw-1.9/modules/mod-last_modif_tracker_items.php trackers2/modules |
+ ...mod-last_tracker_items.php{/code} |
!!Templates (modules)
|
- cp ../tw-1.9/templates/modules/mod-last_modif_tracker_items.tpl trackers2/modules
|
+{code}$ cp ../tw-1.9/templates/modules/mod-last_modif_tracker_items.tpl trackers2/modules |
...mod-last_tracker_items.tpl
|
- ...mod-usergroup_tracker.tpl
|
+ ...mod-usergroup_tracker.tpl{/code} |
!!Wiki Plugins
|
- cp ../tw-1.9/lib/wiki-plugins/wikiplugin_tracker.php trackers2/plugins
|
- ...wikiplugin_trackerlist.php
|
+{code}$ cp ../tw-1.9/lib/wiki-plugins/wikiplugin_tracker.php trackers2/plugins |
+ ...wikiplugin_trackerlist.php{/code} |
!!Templates (non-modules)
|
- cp ../tw-1.9/templates/tiki-admin-include-trackers.tpl trackers2/templates
|
+{code} cp ../tw-1.9/templates/tiki-admin-include-trackers.tpl trackers2/templates |
...tiki-admin_tracker_fields.tpl
|
...tiki-admin_trackers.tpl
|
...tiki-list_trackers.tpl
|
...tiki-plugin_trackerlist.tpl
|
...tiki-view_tracker_item.tpl
|
...tiki-view_tracker_more_info.tpl
|
- ...tiki-view_tracker.tpl
|
+ ...tiki-view_tracker.tpl{/code} |
!!Templates (notifications)
|
- cp ../tw-1.9/templates/mail/tracker_changed_notification.tpl trackers2/templates
|
+{code}$ cp ../tw-1.9/templates/mail/tracker_changed_notification.tpl trackers2/templates{/code} |
+ |
+!Renaming files |
+Its BW practise to remove the ''tiki-'' prefix from all PHP and Smarty templates. |
+{code}cd trakers2 |
+find . | grep tiki- | sed -re "s/^(\S*)tiki\-(\S*)$/mv \1tiki-\2 \1\2/g" > tmp && sh tmp && rm tmp{/code} |
+Dirty but it works ;-) |
|
!index.php
|
-Lets start with an index page. By default, we want list trackers to be the index page - so rename
|
- mv trackers2/tiki-list_trackers.php trackers2/index.php
|
+Lets start with an index page. By default, we want list trackers to be the index page. Rather than rename the page, I'd suggest creating a new index.php file, and using a Location header to redirect to your preferred start page. |
+{code}<?php |
+header ("location: sheets.php"); |
+die; |
+?>{/code} |
|
!bit_setup_inc.php
|
-Okay - all references to ''tiki-setup.php'' must be changed to ''../tiki_setup_inc.php''. I've used a PERL command that will find and replace all instances of ''tiki-setup.php'' to ''../tiki_setup_inc.php'' in all *.php files under ''trackers2'' directory.
|
- perl -i -pe 's/tiki-setup.php/..\/tiki_setup_inc.php/g' `find trackers2 -type f -name '*.php'`
|
+Okay - all references to ''tiki-setup.php'' must be changed to ''../bit_setup_inc.php''. I've used a PERL command that will find and replace all instances of ''tiki-setup.php'' to ''../bit_setup_inc.php'' in all *.php files under ''trackers2'' directory. |
+{code}$ perl -i -pe 's/tiki-setup.php/..\/bit_setup_inc.php/g' `find trackers2 -type f -name '*.php'`{/code} |
|
-Now create a ''tiki_setup_inc.php'' file in the ''trackers2'' directory. I've used the ''trackers/tiki_setup_inc.php'' file as a template.
|
-{CODE(colors=>php)}<?php
|
+Now create a ''bit_setup_inc.php'' file in the ''trackers2'' directory. I've used the ''trackers/bit_setup_inc.php'' file as a template. |
+{code}<?php |
// Initialise global variables
|
-global $gTikiSystem, $userlib;
|
+global $gBitSystem, $gBitUser; |
|
// Register package with kernel
|
-$gTikiSystem->registerPackage( 'Trackers v2', dirname( __FILE__ ).'/' );
|
+$gBitSystem->registerPackage( 'Trackers v2', dirname( __FILE__ ).'/' ); |
|
// If package is installed
|
-if( $gTikiSystem->isPackageActive( 'TRACKERS2_PKG_PATH' ) )
|
+if( $gBitSystem->isPackageActive( 'trackers2' ) ) |
{
|
// Register user menu
|
- $gTikiSystem->registerAppMenu( TRACKERS2_PKG_DIR, TRACKERS2_PKG_NAME, TRACKERS2_PKG_URL.'index.php',
|
- 'tikipackage:trackers2/menu_trackers.tpl', true );
|
-
|
- if( $userlib->user_has_permission($user, 'tiki_p_admin_trackers') )
|
- {
|
- $perms = $userlib->get_permissions(0, -1, 'perm_name_desc', '', 'trackers');
|
- foreach ($perms["data"] as $perm)
|
- {
|
- $perm = $perm["perm_name"];
|
- $smarty->assign("$perm", 'y');
|
- $$perm = 'y';
|
- }
|
- }
|
- $smarty->assign('t_use_db', 'y');
|
- $smarty->assign('t_use_dir', '');
|
+ $gBitSystem->registerAppMenu( TRACKERS2_PKG_DIR, TRACKERS2_PKG_NAME, TRACKERS2_PKG_URL.'index.php', |
+ 'bitpackage:trackers2/menu_trackers.tpl', true ); |
}
|
-?>{CODE}
|
+?>{/code} |
|
!Libraries
|
Okay - all references to ''lib/trackers/trackerlib.php'' must be changed to ''TRACKERS2_PKG_PATH.'tracker_lib.php'''. Once again, we will use a PERL find and replace.
|
- perl -i -pe "s/\'lib\/trackers\//TRACKERS2_PKG_PATH.\'/g" `find trackers2 -type f -name '*.php'`
|
+{code}$ perl -i -pe "s/\'lib\/trackers\//TRACKERS2_PKG_PATH.\'/g" `find trackers2 -type f -name '*.php'`{/code} |
+ |
+!Field and Variable Names |
+One standard we have changed from TikiWiki, is the variable naming convention. All fields and variables now use underscores and standard suffixes identifying the data type. |
+ trackerId => tracker_id |
+ lastModif => last_modified |
+ showCreated => show_created |
+ showStatus => show_status |
+ showLastModif => show_last_modified |
+etc |
+ |
+You can use a PERL find and replace to do mass changes: |
+{code}$ perl -i -pe "s/trackerId/tracker_id/g" `find trackers2 -type f`{/code} |
...page...
|
+{maketoc} |
!Database Schema
|
Now for table creation - the TW1.9 database schema for Trackers 2 is quite lengthy, but we will use the main one as an example and explain the rest of the conversion in less detail. The main trackers table is as follows:
|
+ |
+{code} |
CREATE TABLE tiki_trackers (
|
trackerId int(12) NOT NULL auto_increment,
|
name varchar(80) default NULL,
|