2018-08-11 11:33:32 +00:00
< ? php
use CRM_AnnualGrantBudgets_ExtensionUtil as E ;
/**
* Collection of upgrade steps .
*/
class CRM_AnnualGrantBudgets_Upgrader extends CRM_AnnualGrantBudgets_Upgrader_Base {
// By convention, functions that look like "function upgrade_NNNN()" are
// upgrade tasks. They are executed in order (like Drupal's hook_update_N).
/**
* Example : Run an external SQL script when the module is installed .
*
public function install () {
$this -> executeSqlFile ( 'sql/myinstall.sql' );
}
/**
* Example : Work with entities usually not available during the install step .
*
* This method can be used for any post - install tasks . For example , if a step
* of your installation depends on accessing an entity that is itself
* created during the installation ( e . g . , a setting or a managed entity ), do
* so here to avoid order of operation problems .
*
public function postInstall () {
$customFieldId = civicrm_api3 ( 'CustomField' , 'getvalue' , array (
'return' => array ( " id " ),
'name' => " customFieldCreatedViaManagedHook " ,
));
civicrm_api3 ( 'Setting' , 'create' , array (
'myWeirdFieldSetting' => array ( 'id' => $customFieldId , 'weirdness' => 1 ),
));
}
/**
* Example : Run an external SQL script when the module is uninstalled .
*
public function uninstall () {
$this -> executeSqlFile ( 'sql/myuninstall.sql' );
}
/**
* Example : Run a simple query when a module is enabled .
*
public function enable () {
CRM_Core_DAO :: executeQuery ( 'UPDATE foo SET is_active = 1 WHERE bar = "whiz"' );
}
/**
* Example : Run a simple query when a module is disabled .
*
public function disable () {
CRM_Core_DAO :: executeQuery ( 'UPDATE foo SET is_active = 0 WHERE bar = "whiz"' );
}
/**
* Example : Run a couple simple queries .
*
* @ return TRUE on success
* @ throws Exception
2019-08-19 21:16:11 +00:00
*/
public function upgrade_1000 () {
$this -> ctx -> log -> info ( 'Add notes and lock field to annual grant budget' );
\CRM_Upgrade_Incremental_Base :: addColumn ( $this -> ctx , 'civicrm_grant_budget' , 'note' , " varchar(255) COMMENT 'Note' " );
\CRM_Upgrade_Incremental_Base :: addColumn ( $this -> ctx , 'civicrm_grant_budget' , 'is_reserved' , " tinyint(4) DEFAULT 0 COMMENT 'Is this grant budget locked?' " );
2018-08-11 11:33:32 +00:00
return TRUE ;
2019-08-19 21:16:11 +00:00
}
2018-08-11 11:33:32 +00:00
/**
* Example : Run an external SQL script .
*
* @ return TRUE on success
* @ throws Exception
public function upgrade_4201 () {
$this -> ctx -> log -> info ( 'Applying update 4201' );
// this path is relative to the extension base dir
$this -> executeSqlFile ( 'sql/upgrade_4201.sql' );
return TRUE ;
} // */
/**
* Example : Run a slow upgrade process by breaking it up into smaller chunk .
*
* @ return TRUE on success
* @ throws Exception
public function upgrade_4202 () {
$this -> ctx -> log -> info ( 'Planning update 4202' ); // PEAR Log interface
$this -> addTask ( E :: ts ( 'Process first step' ), 'processPart1' , $arg1 , $arg2 );
$this -> addTask ( E :: ts ( 'Process second step' ), 'processPart2' , $arg3 , $arg4 );
$this -> addTask ( E :: ts ( 'Process second step' ), 'processPart3' , $arg5 );
return TRUE ;
}
public function processPart1 ( $arg1 , $arg2 ) { sleep ( 10 ); return TRUE ; }
public function processPart2 ( $arg3 , $arg4 ) { sleep ( 10 ); return TRUE ; }
public function processPart3 ( $arg5 ) { sleep ( 10 ); return TRUE ; }
// */
/**
* Example : Run an upgrade with a query that touches many ( potentially
* millions ) of records by breaking it up into smaller chunks .
*
* @ return TRUE on success
* @ throws Exception
public function upgrade_4203 () {
$this -> ctx -> log -> info ( 'Planning update 4203' ); // PEAR Log interface
$minId = CRM_Core_DAO :: singleValueQuery ( 'SELECT coalesce(min(id),0) FROM civicrm_contribution' );
$maxId = CRM_Core_DAO :: singleValueQuery ( 'SELECT coalesce(max(id),0) FROM civicrm_contribution' );
for ( $startId = $minId ; $startId <= $maxId ; $startId += self :: BATCH_SIZE ) {
$endId = $startId + self :: BATCH_SIZE - 1 ;
$title = E :: ts ( 'Upgrade Batch (%1 => %2)' , array (
1 => $startId ,
2 => $endId ,
));
$sql = '
UPDATE civicrm_contribution SET foobar = whiz ( wonky () + wanker )
WHERE id BETWEEN % 1 and % 2
' ;
$params = array (
1 => array ( $startId , 'Integer' ),
2 => array ( $endId , 'Integer' ),
);
$this -> addTask ( $title , 'executeSql' , $sql , $params );
}
return TRUE ;
} // */
}