mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
SetupWebPage is an alias for ModuleDiscovery and the module files should be updated progressively to invoke ModuleDiscovery::AddModule() instead. The implementation of the module still assumes they are in the directory 'modules'... this has to be changed later to ensure the distinction between the source modules and the executed modules SVN:trunk[1758]
125 lines
4.3 KiB
PHP
125 lines
4.3 KiB
PHP
<?php
|
|
// Copyright (C) 2010 Combodo SARL
|
|
//
|
|
// This program is free software; you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation; version 3 of the License.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program; if not, write to the Free Software
|
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
|
SetupWebPage::AddModule(
|
|
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
|
|
'itop-attachments/1.0.0',
|
|
array(
|
|
// Identification
|
|
//
|
|
'label' => 'Tickets attachments',
|
|
'category' => 'business',
|
|
|
|
// Setup
|
|
//
|
|
'dependencies' => array(
|
|
|
|
),
|
|
'mandatory' => false,
|
|
'visible' => true,
|
|
'installer' => 'AttachmentInstaller',
|
|
|
|
// Components
|
|
//
|
|
'datamodel' => array(
|
|
'model.attachments.php'
|
|
),
|
|
'webservice' => array(
|
|
|
|
),
|
|
'dictionary' => array(
|
|
'en.dict.attachments.php',
|
|
'fr.dict.attachments.php',
|
|
),
|
|
'data.struct' => array(
|
|
// add your 'structure' definition XML files here,
|
|
),
|
|
'data.sample' => array(
|
|
// add your sample data XML files here,
|
|
),
|
|
|
|
// Documentation
|
|
//
|
|
'doc.manual_setup' => '', // hyperlink to manual setup documentation, if any
|
|
'doc.more_information' => '', // hyperlink to more information, if any
|
|
|
|
// Default settings
|
|
//
|
|
'settings' => array(
|
|
'allowed_classes' => array('Ticket'), // List of classes for which to manage "Attachments"
|
|
'position' => 'relations', // Where to display the attachments: relations | properties
|
|
),
|
|
)
|
|
);
|
|
|
|
// Module installation handler
|
|
//
|
|
class AttachmentInstaller extends ModuleInstallerAPI
|
|
{
|
|
public static function BeforeWritingConfig(Config $oConfiguration)
|
|
{
|
|
// If you want to override/force some configuration values, do it here
|
|
return $oConfiguration;
|
|
}
|
|
|
|
/**
|
|
* Handler called before creating or upgrading the database schema
|
|
* @param $oConfiguration Config The new configuration of the application
|
|
* @param $sPreviousVersion string PRevious version number of the module (empty string in case of first install)
|
|
* @param $sCurrentVersion string Current version number of the module
|
|
*/
|
|
public static function BeforeDatabaseCreation(Config $oConfiguration, $sPreviousVersion, $sCurrentVersion)
|
|
{
|
|
// If you want to migrate data from one format to another, do it here
|
|
}
|
|
|
|
/**
|
|
* Handler called after the creation/update of the database schema
|
|
* @param $oConfiguration Config The new configuration of the application
|
|
* @param $sPreviousVersion string PRevious version number of the module (empty string in case of first install)
|
|
* @param $sCurrentVersion string Current version number of the module
|
|
*/
|
|
public static function AfterDatabaseCreation(Config $oConfiguration, $sPreviousVersion, $sCurrentVersion)
|
|
{
|
|
// For each record having item_org_id unset,
|
|
// get the org_id from the container object
|
|
//
|
|
// Prerequisite: change null into 0 (workaround to the fact that we cannot use IS NULL in OQL)
|
|
SetupPage::log_info("Initializing attachment/item_org_id - null to zero");
|
|
$sTableName = MetaModel::DBGetTable('Attachment');
|
|
$sRepair = "UPDATE `$sTableName` SET `item_org_id` = 0 WHERE `item_org_id` IS NULL";
|
|
CMDBSource::Query($sRepair);
|
|
|
|
SetupPage::log_info("Initializing attachment/item_org_id - zero to the container");
|
|
$oSearch = DBObjectSearch::FromOQL("SELECT Attachment WHERE item_org_id = 0");
|
|
$oSet = new DBObjectSet($oSearch);
|
|
$iUpdated = 0;
|
|
while ($oAttachment = $oSet->Fetch())
|
|
{
|
|
$oContainer = MetaModel::GetObject($oAttachment->Get('item_class'), $oAttachment->Get('item_id'), false /* must be found */, true /* allow all data */);
|
|
if ($oContainer)
|
|
{
|
|
$oAttachment->SetItem($oContainer, true /*updateonchange*/);
|
|
$iUpdated++;
|
|
}
|
|
}
|
|
|
|
SetupPage::log_info("Initializing attachment/item_org_id - $iUpdated records have been adjusted");
|
|
}
|
|
}
|
|
|
|
|
|
?>
|