Subversion Repositories ezqrcode

[/] [tags/] [1.0-alpha2/] [autoloads/] [operators.php] - Blame information for rev 5

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 bd
<?php
2
class eZQRCodeOperators
3
{
4
    function eZQRCodeOperators()
5
    {
6
        $this->Operators = array( 'qrcode' );
7
    }
8
 
9
    function &operatorList()
10
    {
11
        return $this->Operators;
12
    }
13
 
14
    function namedParameterPerOperator()
15
    {
16
        return true;
17
    }
18
 
19
    function namedParameterList()
20
    {
21
        return array( 'qrcode' => array( 'size' => array( 'type' => 'mixed',
22
                                                          'required' => true ) ) );
23
    }
24
 
25
    function modify( $tpl, $operatorName, $operatorParameters, $rootNamespace,
26
                     $currentNamespace, &$operatorValue, $namedParameters, $placement )
27
    {
28
        switch ( $operatorName )
29
        {
30
            case 'qrcode':
31
            {
32
                $operatorValue = $this->getQRCode( $operatorValue, $namedParameters );
33
            } break;
34
        }
35
    }
36
 
37
    /**
38
     * Returns the URL for the given parameters
39
     */
40
    function getQRCode( $data, $parameters )
41
    {
42
        $qr = new eZQRCode();
43
 
44
        try
45
        {
46
            $qr->size = $parameters['size'];
47 3 bd
        } catch ( Exception $e ) {
48
            eZDebug::writeError( (string)$e );
49
            return null;
50
        }
51
 
52
        // basic string
53
        if ( is_string( $data ) )
54
        {
55 2 bd
            $qr->data = $data;
56 3 bd
        }
57
 
58
        // object
59
        elseif( is_object( $data ) )
60
        {
61
            // content object attribute
62
            if ( $data instanceof eZContentObjectAttribute )
63
            {
64 4 bd
                $datatypeString = $data->attribute( 'data_type_string' );
65
                switch ( $datatypeString )
66 3 bd
                {
67
                    case 'ezstring':
68
                        $qr->data = $data->attribute( 'content' );
69
                        break;
70
 
71
                    case 'ezemail':
72
                        $qr->data = "mailto:" . $data->attribute( 'content' );
73
                        break;
74
 
75
                    case 'ezurl':
76
                        $qr->data = $data->attribute( 'content' );
77
                        break;
78
 
79
                    default:
80 4 bd
                        $handlerOptions = new ezpExtensionOptions();
81
                        $handlerOptions->iniFile = 'qrcode.ini';
82
                        $handlerOptions->iniSection = 'Datatypes';
83
                        $handlerOptions->iniVariable = 'Mapping';
84
                        $handlerOptions->handlerIndex = $datatypeString;
85
                        $handlerOptions->handlerParams = array( $data );
86
 
87
                        $handler = eZExtension::getHandlerClass( $handlerOptions );
88
 
89
                        if ( is_object( $handler ) )
90
                        {
91
                            $qr->data = $handler->data();
92
                        }
93
                        else
94
                        {
95
                            eZDebug::writeError( "No handler was found for datatype '$datatypeString'", __METHOD__ );
96
                            return '';
97
                        }
98 3 bd
                }
99
            }
100
            else
101
            {
102
                eZDebug::writeError( "The qrcode operator only supports eZContentObjectAttribute objects", __METHOD__ );
103
                return '';
104
            }
105
        }
106
 
107
        try
108
        {
109 2 bd
            return $qr->getChartURI();
110
        } catch ( Exception $e ) {
111
            eZDebug::writeError( (string)$e );
112
            return null;
113
        }
114
    }
115
}
116
 
117
?>