-
Notifications
You must be signed in to change notification settings - Fork 3
/
VoteSmart.php
124 lines (92 loc) · 3.19 KB
/
VoteSmart.php
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php
require_once("config.php");
/**
* VoteSmart API interfacing class
*
* This class can be initialized with params or used
* repeatedly by directly calling query()
*
* Copyright 2008 Project Vote Smart
* Distributed under the BSD License
*
* http://www.opensource.org/licenses/bsd-license.php
*
* Special thanks to Adam Friedman for the idea and code
* contribution for the slimmed down version of this lib.
*
*/
class VoteSmart {
protected $iface; // Interface(URL) used to gain the data
protected $xml; // Raw XML
protected $xmlObj; // SimpleXML object
/**
* function __construct
*
* Initialize object(optional)
*
* @param string $method optional 'CandidateBio.getBio'
* @param array $args optional Array('candidateId' => '54321')
*/
public function __construct($method = null, $args = null) {
if ($method && $args) {
$this->query($method, $args);
}
}
/**
* function getXml
*
* Return raw XML string
*
* @return string
*/
public function getXml() {
return $this->xml;
}
/**
* function getXmlObj
*
* Return SimpleXML object
*
* @return object SimpleXMLElement
*/
public function getXmlObj() {
return $this->xmlObj;
}
/**
* function getIface
*
* Return string of URL queried
*
* @return string
*/
public function getIface() {
return $this->iface;
}
/**
* function query
*
* Query API backend and return SimpleXML object. This
* function can be reused repeatedly
*
* @param string $method CandidateBio.getBio'
* @param array $args Array('candidateId' => '54321')
* @return object SimpleXMLElement
*/
public function query($method, $args = Array()) {
$terms = "";
if(!empty($args)) {
foreach($args as $n => $v) {
$terms .= '&' . $n . '=' . $v;
}
}
$this->iface = _APISERVER_ . "/" . $method . "?key=" . _KEY_ . "&o=" . _OUTPUT_ . $terms;
if (!$this->xml = file_get_contents($this->iface)) {
return false;
} else {
// Let's use the SimpleXML to drop the whole XML
// output into an object we can later interact with easilly
$this->xmlObj = new SimpleXMLElement($this->xml, LIBXML_NOCDATA);
return $this->xmlObj;
}
}
}