87 public function create($user, $notrigger = 0)
89 if (empty($this->
id)) {
93 $sql =
"INSERT INTO ".$this->db->prefix().$this->table_element.
"(";
100 $sql .=
") VALUES (";
101 $sql .= (int) $this->
id .
",";
102 $sql .=
" ".(!isset($this->code) ?
'NULL' :
"'".$this->db->escape(trim($this->code)).
"'").
",";
103 $sql .=
" ".(!isset($this->label) ?
'NULL' :
"'".$this->db->escape(trim($this->label)).
"'").
",";
105 $sql .=
" ".(!isset($this->percent) ?
'NULL' : (float) $this->percent).
",";
106 $sql .=
" ".(!isset($this->
active) ?
'NULL' : ((int) $this->
active)).
",";
111 dol_syslog(get_class($this).
"::create", LOG_DEBUG);
112 $resql = $this->db->query($sql);
115 dol_syslog(get_class($this).
"::create ".$this->db->lasterror(), LOG_ERR);
116 $this->error =
"Error ".$this->db->lasterror();
117 $this->db->rollback();
120 $this->
id = $this->db->last_insert_id($this->db->prefix().$this->table_element);
134 public function fetch($id, $code =
'')
140 $sql .=
" t.position,";
141 $sql .=
" t.percent,";
143 $sql .=
" FROM ".$this->db->prefix().$this->table_element.
" as t";
144 $sql_where = array();
146 $sql_where[] =
" t.rowid = ".((int) $id);
149 $sql_where[] =
" t.code = '".$this->db->escape($code).
"'";
151 if (count($sql_where) > 0) {
152 $sql .=
' WHERE '.implode(
' AND ', $sql_where);
155 $resql = $this->db->query($sql);
157 if ($this->db->num_rows($resql)) {
158 $obj = $this->db->fetch_object($resql);
160 $this->
id = (int) $obj->rowid;
161 $this->code = $obj->code;
162 $this->label = $obj->label;
164 $this->percent = $obj->percent;
165 $this->
active = (int) $obj->active;
167 $this->db->free($resql);
171 $this->error =
"Error ".$this->db->lasterror();
188 public function fetchAll($sortorder =
'', $sortfield =
'', $limit = 0, $offset = 0, $filter =
'', $filtermode =
'AND')
196 $sql .=
" t.position,";
197 $sql .=
" t.percent,";
199 $sql .=
" FROM ".$this->db->prefix().$this->table_element.
" as t";
200 $sql .=
" WHERE 1 = 1";
203 if (is_array($filter)) {
205 if (count($filter) > 0) {
206 foreach ($filter as $key => $value) {
207 if ($key ==
't.rowid' || $key ==
't.active' || $key ==
't.code') {
208 $sqlwhere[] = $this->db->sanitize($key).
" = ".((int) $value);
209 } elseif (strpos($key,
'date') !==
false) {
210 $sqlwhere[] = $this->db->sanitize($key).
" = '".$this->db->idate($value).
"'";
211 } elseif ($key ==
't.label') {
212 $sqlwhere[] = $this->db->sanitize($key).
" = '".$this->db->escape($value).
"'";
214 $sqlwhere[] = $this->db->sanitize($key).
" LIKE '%".$this->db->escape($value).
"%'";
218 if (count($sqlwhere) > 0) {
219 $sql .=
" AND ".implode(
' '.$this->db->escape($filtermode).
' ', $sqlwhere);
227 $sql .= forgeSQLFromUniversalSearchCriteria($filter, $errormessage);
229 $this->errors[] = $errormessage;
230 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
234 if (!empty($sortfield)) {
235 $sql .= $this->db->order($sortfield, $sortorder);
237 if (!empty($limit)) {
238 $sql .= $this->db->plimit($limit, $offset);
241 $resql = $this->db->query($sql);
243 $this->records = array();
244 $num = $this->db->num_rows($resql);
246 while ($obj = $this->db->fetch_object($resql)) {
247 $record =
new self($this->db);
249 $record->id = $obj->rowid;
250 $record->code = $obj->code;
251 $record->label = $obj->label;
252 $record->position = $obj->position;
253 $record->percent = $obj->percent;
254 $record->active = $obj->active;
255 $this->records[$record->id] = $record;
258 $this->db->free($resql);
260 return $this->records;
262 $this->errors[] =
'Error '.$this->db->lasterror();
263 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
277 public function update($user =
null, $notrigger = 0)
280 $sql =
"UPDATE ".$this->db->prefix().$this->table_element.
" SET";
281 $sql .=
" code=".(isset($this->code) ? ((int) $this->code) :
"null").
",";
282 $sql .=
" label=".(isset($this->label) ?
"'".$this->db->escape(trim($this->label)).
"'" :
"null").
",";
283 $sql .=
" position=".(isset($this->
position) ? (int) $this->
position :
"null").
",";
284 $sql .=
" percent=".(isset($this->label) ? (float) $this->percent :
"null").
",";
285 $sql .=
" active=".(isset($this->
active) ? ((int) $this->
active) :
"null");
286 $sql .=
" WHERE rowid=".(int) $this->
id;
290 dol_syslog(get_class($this).
"::update", LOG_DEBUG);
291 $resql = $this->db->query($sql);
294 dol_syslog(get_class($this).
"::update Error ".$this->db->lasterror(), LOG_ERR);
295 $this->error =
"Error ".$this->db->lasterror();
296 $this->db->rollback();