File: Command.php

package info (click to toggle)
horde3 3.1.3-4etch7
  • links: PTS
  • area: main
  • in suites: etch
  • size: 22,876 kB
  • ctags: 18,071
  • sloc: php: 75,151; xml: 2,979; sql: 1,069; makefile: 79; sh: 64
file content (83 lines) | stat: -rw-r--r-- 1,909 bytes parent folder | download | duplicates (2)
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
<?php

include_once 'SyncML/State.php';

/**
 * The SyncML_Command class provides a super class fo SyncBody
 * commands.
 *
 * $Horde: framework/SyncML/SyncML/Command.php,v 1.4.10.7 2006/01/01 21:28:36 jan Exp $
 *
 * Copyright 2003-2006 Anthony Mills <amills@pyramid6.com>
 *
 * See the enclosed file COPYING for license information (LGPL). If you
 * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
 *
 * @author  Anthony Mills <amills@pyramid6.com>
 * @since   Horde 3.0
 * @package SyncML
 */
class SyncML_Command {

    /**
     * @var integer
     */
    var $_cmdID;

    /**
     * Internal structure used during XML parsing.
     *
     * @var array
     */
    var $_Stack = array();

    /**
     * @var string
     */
    var $_chars;

    function &factory($command, $params = null)
    {
        include_once 'SyncML/Command/' . $command . '.php';
        $class = 'SyncML_Command_' . $command;
        if (class_exists($class)) {
            $cmd = &new $class($params);
        } else {
            $GLOBALS['backend']->logMessage('Class definition of ' . $class . ' not found.',
                                            __FILE__, __LINE__, PEAR_LOG_ERR);
            include_once 'PEAR.php';
            $cmd = PEAR::raiseError('Class definition of ' . $class . ' not found.');
        }

        return $cmd;
    }

    function output($currentCmdID, $output)
    {
    }

    function startElement($uri, $localName, $attrs)
    {
        $this->_Stack[] = $localName;
    }

    function endElement($uri, $element)
    {
        switch (count($this->_Stack)) {
        case 2:
            if ($element == 'CmdID') {
                $this->_cmdID = intval(trim($this->_chars));
            }
            break;
        }

        $this->_chars = '';
        array_pop($this->_Stack);
    }

    function characters($str)
    {
        $this->_chars .= $str;
    }

}