Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<?php
2
/**
3
 * @package PayPal
4
 */
5
 
6
/**
7
 * Include parent and package classes.
8
 */
9
require_once 'PayPal.php';
10
require_once 'PayPal/Profile/Handler.php';
11
 
12
/**
13
 * File handler class for storing PayPal profiles
14
 *
15
 * @package PayPal
16
 */
17
class ProfileHandler_File extends ProfileHandler
18
{
19
    function ProfileHandler_File($parameters)
20
    {
21
        parent::ProfileHandler($parameters);
22
    }
23
 
24
    /**
25
     * @access private
26
     */
27
    function _getFilename($id)
28
    {
29
        return "{$this->_params['path']}/$id.ppd";
30
 
31
    }
32
 
33
    function listProfiles()
34
    {
35
        $validate = $this->validateParams();
36
 
37
        if (PayPal::isError($validate)) {
38
            return $retval;
39
        }
40
 
41
        $filemask = $this->_getFilename("*");
42
 
43
        $profile_files = glob($filemask);
44
 
45
        $retval = array();
46
 
47
        foreach ($profile_files as $pf) {
48
            $filename = basename($pf);
49
            $retval[] = substr($filename, 0, strpos($filename, '.'));
50
        }
51
 
52
        return $retval;
53
    }
54
 
55
    function loadProfile($id)
56
    {
57
        $retval = $this->validateParams();
58
 
59
        if (PayPal::isError($retval)) {
60
            return $retval;
61
        }
62
 
63
        $open_file = $this->_getFileName($id);
64
 
65
        if (!file_exists($open_file)) {
66
            return PayPal::raiseError("Profile '$id' cannot be loaded, does not exist.");
67
        }
68
 
69
        $data = file_get_contents($open_file, false);
70
 
71
        $retval = @unserialize($data);
72
 
73
        if (!is_array($retval)) {
74
            return PayPal::raiseError("Unserialization of data failed.");
75
        }
76
 
77
        return $retval;
78
    }
79
 
80
    function saveProfile($data, $id = null)
81
    {
82
        $retval = $this->validateParams();
83
        if (PayPal::isError($retval)) {
84
            return $retval;
85
        }
86
 
87
        $id = (is_null($id)) ? $this->generateID() : $id;
88
 
89
        $write_file = $this->_getFileName($id);
90
 
91
        $fr = @fopen($write_file, 'w', false);
92
 
93
        if (!$fr) {
94
            return PayPal::raiseError("Could not open file '$write_file' for writing.");
95
        }
96
 
97
        $serialized = serialize($data);
98
        fputs($fr, $serialized);
99
        fclose($fr);
100
 
101
        return $id;
102
    }
103
 
104
    function deleteProfile($id)
105
    {
106
        $retval = $this->validateParams();
107
 
108
        if (PayPal::isError($retval)) {
109
            return $retval;
110
        }
111
 
112
        $delete_file = $this->_getFileName($id);
113
 
114
        if (!@unlink($delete_file)) {
115
            return PayPal::raiseError("Could not delete the Profile file '$delete_file'");
116
        }
117
 
118
        return true;
119
    }
120
 
121
    function getParamInfo()
122
    {
123
        return array('path' => array('desc' => 'Profile Save Path',
124
                                     'type' => 'string'));
125
    }
126
 
127
    function validateParams()
128
    {
129
        if (!isset($this->_params['path'])) {
130
            return PayPal::raiseError("You must provide the 'path' parameter for this handler");
131
        }
132
 
133
        if (file_exists($this->_params['path']) &&
134
            is_dir($this->_params['path'])) {
135
            return true;
136
        }
137
 
138
        return false;
139
    }
140
 
141
    function &getInstance($params)
142
    {
143
        $classname = __CLASS__;
144
        $inst =& new $classname($params);
145
        return $inst;
146
    }
147
 
148
}