Postnuke a un interface pour initialiser, activer/désactiver ou enlever un module et il y a deux fichiers qui contribuent: "pntables.php" et "pninit.php".
Il s'agit juste d'une fonction qui remplit l'array "pntable" avec le nom de toutes les tables utilisées et de leurs colonnes (ex ci-dessous: table "pn_joinproject_members" avec 4 colonnes)
function joinproject_pntables() {
// Initialise table array
$pntable = array();
// Get the name for the template item table.
$members = pnConfigGetVar('prefix') . '_joinproject_members';
// Set the table name
$pntable['joinproject_members'] = $members;
// Set the column names.
$pntable['joinproject_members_column'] =
array('memberid' => $members . '.memberid',
'projid' => $members . '.projid',
'membername' => $members . '.membername',
'accepted' => $members . '.accepted');
// Return the table information
return $pntable; }
Dans init() on crée les tables dans la base de données avec des requêtes SQL
function joinproject_init() {
list($dbconn) = pnDBGetConn();
$pntable = pnDBGetTables();
$memberstable = $pntable['joinproject_members'];
$memberscolumn = &$pntable['joinproject_members_column'];
$sql1 = "CREATE TABLE $memberstable (
$memberscolumn[memberid] tinyint unsigned NOT NULL auto_increment,
$memberscolumn[projid] tinyint unsigned NOT NULL default '',
$memberscolumn[membername] varchar(255) NOT NULL default '',
$memberscolumn[accepted] tinyint(1) NOT NULL default '0',
PRIMARY KEY(memberid))";
$dbconn->Execute($sql1);
// Check for an error with the database code, and if so set an
// appropriate error message and return
if ($dbconn->ErrorNo() != 0) {
pnSessionSetVar('errormsg', _CREATETABLE1FAILED);
return false;
}
}
Dans delete() on efface les tables de la base de données avec la requête SQL "DROP TABLE"
function joinproject_delete()
{
list($dbconn) = pnDBGetConn();
$pntable = pnDBGetTables();
$sql1 = "DROP TABLE $pntable[joinproject_members]";
$dbconn->Execute($sql1);
// Check for an error with the database code, and if so set an
// appropriate error message and return
if ($dbconn->ErrorNo() != 0) {
pnSessionSetVar('errormsg', _DROPTABLE2FAILED);
return false;
}
// Deletion successful
return true;
}