APIDatabaseError class for SQL error, which send debug info to slim\log
[dolibarr-api.git] / misc.php
1 <?php
2
3 $app->map('/v1/countries/', add_allow('GET'), $return405)->via('HEAD', 'POST', 'PUT', 'PATCH');
4 $app->options('/v1/countries/', add_allow('GET'), function() {});
5
6 $app->get('/v1/countries/', function() use ($app, $db) {
7     /* Yuck, raw SQL :[ */
8     $sql = "SELECT";
9     $sql.= " t.rowid,";
10     $sql.= " t.code,";
11     $sql.= " t.code_iso,";
12     $sql.= " t.libelle,";
13     $sql.= " t.active";
14     $sql.= " FROM ".MAIN_DB_PREFIX."c_pays as t";
15     $sql.= " ORDER BY t.rowid ASC";
16
17     $res=array();
18
19     $resql=$db->query($sql);
20     if ($resql) {
21         for($i = 0; $i < $db->num_rows($resql); $i++) {
22             $obj = $db->fetch_object($resql);
23             $res[] = array(
24                 'id'        => $obj->rowid,
25                 'code'      => $obj->code,
26                 'code_iso'  => $obj->code_iso,
27                 'name'      => $obj->libelle,
28                 'active'    => $obj->active
29             );
30         }
31     } else {
32         halt_error(500, new APIDatabaseError('Countries could not be fetched', $db));
33     }
34
35     $app->response()->body(
36         marsh_response(array('countries' => $res))
37     );
38 });
39
40
41 function country_byname($name) {
42     global $db;
43     /* Yuck, raw SQL :[ */
44     $sql = "SELECT";
45     $sql.= " t.rowid";
46     $sql.= " FROM ".MAIN_DB_PREFIX."c_pays as t";
47     $sql.= " WHERE t.libelle = '".$db->escape($name)."'";
48
49     $resql=$db->query($sql);
50     if ($resql) {
51         if($db->num_rows($resql)) {
52             $obj = $db->fetch_object($resql);
53             return $obj->rowid;
54         }
55         return null;
56     } else {
57         return -1;
58     }
59 }
60
61 $app->map('/v1/countries/:name/states/', add_allow('GET'), $return405)->via('HEAD', 'POST', 'PUT', 'PATCH');
62 $app->options('/v1/countries/:name/states/', add_allow('GET'), function() {});
63
64 $app->get('/v1/countries/:name/states/', function($name) use ($app, $db) {
65     $country_id = country_byname($name);
66     if(is_null($country_id) || $country_id < 1) {
67         halt_error(404, new APIObjectNotFoundError('Country not found'));
68     }
69
70     $sql = "SELECT d.rowid, d.code_departement as code, d.nom, d.active, d.tncc, d.ncc, d.cheflieu FROM";
71     $sql .= " ".MAIN_DB_PREFIX ."c_departements as d, ".MAIN_DB_PREFIX."c_regions as r,".MAIN_DB_PREFIX."c_pays as p";
72     $sql .= " WHERE d.fk_region=r.code_region and r.fk_pays=p.rowid";
73     $sql .= " AND d.active = 1 AND r.active = 1 AND p.active = 1";
74     $sql .= " AND p.libelle = '".$db->escape($name)."'";
75     $sql .= " ORDER BY p.code, d.code_departement";
76
77     $res=array();
78
79     $resql=$db->query($sql);
80     if ($resql) {
81         for($i = 0; $i < $db->num_rows($resql); $i++) {
82             $obj = $db->fetch_object($resql);
83             $res[] = array(
84                 'id'          => $obj->rowid,
85                 'code'        => $obj->code,
86                 'name'        => $obj->nom,
87                 'cheflieu'    => $obj->cheflieu,
88                 'ncc'         => $obj->ncc,
89                 'tncc'        => $obj->tncc,
90                 'active'      => $obj->active,
91             );
92         }
93     } else {
94         halt_error(500, new APIDatabaseError('States could not be fetched', $db));
95     }
96
97     $app->response()->body(
98         marsh_response(array('states' => $res))
99     );
100 });
101
102
103 function honorific_bycode($code) {
104     global $db;
105     /* Yuck, raw SQL :[ */
106     $sql = "SELECT";
107     $sql.= " t.rowid,";
108     $sql.= " t.code,";
109     $sql.= " t.civilite,";
110     $sql.= " t.active,";
111     $sql.= " t.module";
112     $sql.= " FROM ".MAIN_DB_PREFIX."c_civilite as t";
113     $sql.= " WHERE t.code = '".$db->escape($code)."'";
114
115     $resql=$db->query($sql);
116     if ($resql) {
117         if($db->num_rows($resql)) {
118             $obj = $db->fetch_object($resql);
119             return $obj;
120         }
121         return null;
122     } else {
123         return -1;
124     }
125 }
126
127 $app->map('/v1/honorifics/', add_allow('GET'), $return405)->via('HEAD', 'POST', 'PUT', 'PATCH');
128 $app->options('/v1/honorifics/', add_allow('GET'), function() {});
129
130 $app->get('/v1/honorifics/', function() use ($app, $db) {
131     /* Yuck, raw SQL :[ */
132     $sql = "SELECT";
133     $sql.= " t.rowid,";
134     $sql.= " t.code,";
135     $sql.= " t.civilite,";
136     $sql.= " t.active,";
137     $sql.= " t.module";
138     $sql.= " FROM ".MAIN_DB_PREFIX."c_civilite as t";
139     $sql.= " ORDER BY t.rowid ASC";
140
141     $res=array();
142
143     $resql=$db->query($sql);
144     if ($resql) {
145         for($i = 0; $i < $db->num_rows($resql); $i++) {
146             $obj = $db->fetch_object($resql);
147             $res[] = array(
148                 'id'        => $obj->rowid,
149                 'code'      => $obj->code,
150                 'name'      => $obj->civilite,
151                 'active'    => $obj->active,
152                 'module'    => $obj->module
153             );
154         }
155     } else {
156         halt_error(500, new APIDatabaseError('Honorifics could not be fetched', $db));
157     }
158
159     $app->response()->body(
160         marsh_response(array('honorifics' => $res))
161     );
162 });