summaryrefslogtreecommitdiff
path: root/buildscripts/PhpDocumentor/phpDocumentor/Publisher.inc
blob: 7e038021be5deb82ac4480a271a9d07c902a7c82 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
//
// +------------------------------------------------------------------------+
// | phpDocumentor                                                          |
// +------------------------------------------------------------------------+
// | Publisher Copyright 2000-2003 Kellin                                   |
// | Email passionplay@hotmail.com                                          |
// | phpDocumentor Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver   |
// | Email         jeichorn@phpdoc.org, cellog@phpdoc.org                   |
// | Web           http://www.phpdoc.org                                    |
// | Mirror        http://phpdocu.sourceforge.net/                          |
// | PEAR          http://pear.php.net/package-info.php?pacid=137           |
// +------------------------------------------------------------------------+
// | This source file is subject to version 3.00 of the PHP License,        |
// | that is available at http://www.php.net/license/3_0.txt.               |
// | If you did not receive a copy of the PHP license and are unable to     |
// | obtain it through the world-wide-web, please send a note to            |
// | license@php.net so we can mail you a copy immediately.                 |
// +------------------------------------------------------------------------+
//

/**
 * a class for handling the publishing of data
 *
 * @author Kellin <passionplay@hotmail.com>
 * @author Joshua Eichorn <jeichorn@phpdoc.org>
 * @version	$Id: Publisher.inc,v 1.1 2005/10/17 18:36:57 jeichorn Exp $
 * @package 	phpDocumentor
 */
/**
 * a class for handling the publishing of data
 *
 * @author Kellin <passionplay@hotmail.com>
 * @author Joshua Eichorn <jeichorn@phpdoc.org>
 * @version	$Id: Publisher.inc,v 1.1 2005/10/17 18:36:57 jeichorn Exp $
 * @package 	phpDocumentor
 */
class Publisher
{
    /**#@+
     * @var array
     */
	/**
     * Array of references objects that have Subscribed to this publisher
     */
	var $subscriber	=	array();

	var $tokens	=	array();

	var $pushEvent	=	array();
	var $popEvent	=	array();
    /**#@-*/


	/**
     * Adds a subscriber to the {@link $subscriber} array().
     * if $event is '*', the publisher will use $object as the default event handler
     * @param integer $event see {@link Parser.inc} PARSER_EVENT_* constants
     * @param class $object any class that has a HandleEvent() method like {@link phpDocumentor_IntermediateParser::HandleEvent()} or {@link Classes::HandleEvent()}
     */
	function subscribe($event, &$object)
	{
		$this->subscriber[$event] =& $object;
	}

	/**
     * @param integer $event see {@link Parser.inc} PARSER_EVENT_* constants
     * @param mixed $data anything the subscribed event handler is expecting
     */
	function publishEvent($event,$data)
	{
		
		// see if there is a specific event handler
		if (!empty($this->subscriber[$event]))
		{
			$this->subscriber[$event]->HandleEvent($event,$data);
		} 
		 else if (isset($this->subscriber['*']) && is_object($this->subscriber['*'])) // check to see if a generic handler exists
		{
			$this->subscriber['*']->HandleEvent($event,$data);
		}
	}	
}
?>