Trigger és Action támogatása egy modulon belül

bboldi képe

A problémám a következő: egy olyan modul csoportot szeretnék fejleszteni, melyek támogatják egymás action - trigger függvényeit. Odáig eljutottam, mi mire szolgál, és hogy a hook_hook_info segítségével definiálom a triggereket, a hook_action_info segítségével pedig az action-öket, azonban nem tudok rájönni, hogy hogyan tudom az egyes triggereket valójában "elsütni". tehát pld van egy modulom, amiben definiáltam az action és trigger párokat:

function bboldid6_hook_info()
{
	return array(
 
	'bboldid6' => array(
		'bboldid6' => array(
			'on_every_page' => array(
				'runs when' => t('minden oldalfrissitesnel meghivom a cuccot')
			),
			'random_call' => array(
				'runs when' => t('neha ( rand % 3 == 0) az oldalfrissitesnel meghivom a cuccot')
			),
		)
	)
 
	);
}
 
function bboldid6_action_info() {
 
  $actions['bboldid6_test_action'] = array(
    'type' => 'bboldid6',
    'description' => t('Dobj ki egy uzenetet...'),
	'configurable' => false,
    'hooks' => array(
      'bboldid6' => array( 'on_every_page' , 'random_call' )
  	)
 
  );
 
  return $actions;
}
 
function bboldid6_test_action()
{
	drupal_set_message('!');
}

ez csak egy egyszerü modul hogy szemléltessem mi a gondom...

namost pld a hook_init -ben szeretném ha a trigger-hez kötött action meghívódna... hogyan tudom ezt elérni? Remélem közérthetően fogalmaztam.

Előre is köszönöm a segítséget!

bboldi képe

bocs, a platform : drupal 6...

0
0

-------------------------------------
Bednárik Boldizsár ing.
http://www.bboldi.com

bboldi képe

api.drupal.org -on nincs leiras a hook_action_info hook-hoz, itt megtalaltam, ha valakinek meg esetleg kell

http://drupal.org/files/issues/hook_action_info_d6.patch

ettol fuggetlenul meg nem sikerult megoldast talalnom - tovabbra is varom az esetleges otleteket.

0
0

-------------------------------------
Bednárik Boldizsár ing.
http://www.bboldi.com

bboldi képe

drupal.org-on javasoltak egy érdekes videót, ami sok infót tartalmaz a témáról, remélem másnak is segít:

http://www.archive.org/details/DrupalconBoston2008-TriggersAndActionsAnd...

0
0

-------------------------------------
Bednárik Boldizsár ing.
http://www.bboldi.com

bboldi képe

Itt egy modul, mely szemlélteti a használatot. Küldöm a kódot, a leírás megtekinthető, a teljes modul letölthető a blogomról ( http://www.bboldi.com ):

íme a modul:

/**
 * @author Bednarik Boldizsar
 * @copyright 2008
 */
 
function atsample_init()
{
	// fire the trigger
 
	_atsample_invoke_every_page_trigger();
	_atsample_invoke_random_page_trigger();
}
 
function _atsample_invoke_every_page_trigger()
{
	$aids = _trigger_get_hook_aids('atsample', 'on_every_page');
 
	foreach ($aids as $aid => $action_info) {
 
		$message = 'EVERY PAGE Hello World!';
		actions_do($aid,$message);
	}
 
}
 
function _atsample_invoke_random_page_trigger()
{
	function make_seed()
	{
	  list($usec, $sec) = explode(' ', microtime());
	  return (float) $sec + ((float) $usec * 100000);
	}
 
	srand(make_seed());
	$randval = rand();
 
	if(($randval % 3) == 0)
	{	
 		$aids = _trigger_get_hook_aids('atsample', 'on_random_page');
 
  		foreach ($aids as $aid => $action_info) {
			$message = 'RANDOM Hello World!';
  			actions_do($aid,$message);
		}
	}
}
 
function atsample_hook_info() {
  return array(
    'atsample' => array(
      'atsample' => array(
        'on_every_page' => array(
          'runs when' => t('On every page'),
        ),
        'on_random_page' => array(
          'runs when' => t('On random pages'),
        ),
      ),
    ),
  );
}
 
/**
 * Implementation of hook_action_info().
 */
function atsample_action_info() {
  return array(
    'atsample_show_message' => array(
      'description' => t('Show a Hello World message!'),
      'type' => 'atsample',
      'configurable' => false,
      'hooks' => array(
        'atsample' => array('on_every_page', 'on_random_page'),
      )
    ),
  );
}
 
/**
 * The action callback function
 */ 
 
function atsample_show_message(&$object,$context)
{
	drupal_set_message($object);
}
0
0

-------------------------------------
Bednárik Boldizsár ing.
http://www.bboldi.com

bimbo000 képe

foreach ($aids ...

off :)

0
0