diff --git a/include/class.api.php b/include/class.api.php index 8ad7ceb2d113fe9d86f9256406389a6b6ff19f17..f3d3094a5b695a1601cb0d91e5dafdfe6014918b 100644 --- a/include/class.api.php +++ b/include/class.api.php @@ -184,7 +184,7 @@ class ApiController { function validate($data, $structure, $prefix="") { foreach ($data as $key=>$info) { if (is_array($structure) and is_array($info)) { - $search = isset($structure[$key]) ? $key : "*"; + $search = (isset($structure[$key]) && !is_numeric($key)) ? $key : "*"; if (isset($structure[$search])) { $this->validate($info, $structure[$search], "$prefix$key/"); continue; @@ -219,16 +219,21 @@ class ApiXmlDataParser extends XmlDataParser { } else if ($key == "autorespond") { $value = (bool)$value; } else if ($key == "attachments") { - foreach ($value as &$info) { - $info["data"] = $info[":text"]; - unset($info[":text"]); + if(!isset($value['file'][':text'])) + $value = $value['file']; + + if($value && is_array($value)) { + foreach ($value as &$info) { + $info["data"] = $info[":text"]; + unset($info[":text"]); + } + unset($info); } - unset($info); - } - if (is_array($value)) { + } else if(is_array($value)) { $value = $this->fixup($value); } } + return $current; } } diff --git a/include/class.ticket.php b/include/class.ticket.php index c8d0e8c640f1b918a70166934320ddd431fec1ac..0f39b8fdcabdd2711108c82270f44c18756d19ff 100644 --- a/include/class.ticket.php +++ b/include/class.ticket.php @@ -976,7 +976,7 @@ class Ticket { $autorespond=$dept->autoRespONNewMessage(); - if(!$autorespond && !$cfg->autoRespONNewMessage()) return; //no autoresp or alerts. + if(!$autorespond || !$cfg->autoRespONNewMessage()) return; //no autoresp or alerts. $this->reload(); diff --git a/include/class.xml.php b/include/class.xml.php index 854f182372c94f57338b8b45a94d155f69f5bd33..56baf4fbccaf65985921e081afd8e5f475c95c07 100644 --- a/include/class.xml.php +++ b/include/class.xml.php @@ -77,10 +77,14 @@ class XmlDataParser { $this->content = array_pop($this->stack); $i = 1; if (array_key_exists($name, $this->content)) { - while (array_key_exists("$name$i", $this->content)) $i++; - $name = "$name$i"; - } - $this->content[$name] = $prev; + if(!isset($this->content[$name][0])) { + $current = $this->content[$name]; + unset($this->content[$name]); + $this->content[$name][0] = $current; + } + $this->content[$name][] = $prev; + } else + $this->content[$name] = $prev; } function content($parser, $data) { diff --git a/scp/css/scp.css b/scp/css/scp.css index 59964d4e61561ba78bc704e3e6ddb2d1a73af964..67e6212512c0bf617d934fbf1feabd369784fd80 100644 --- a/scp/css/scp.css +++ b/scp/css/scp.css @@ -311,6 +311,7 @@ a.Icon:hover { .Icon.webTicket { background:url(../images/icons/ticket_source_web.gif) 0 0 no-repeat; } .Icon.emailTicket { background:url(../images/icons/ticket_source_email.gif) 0 0 no-repeat; } .Icon.phoneTicket { background:url(../images/icons/ticket_source_phone.gif) 0 0 no-repeat; } +.Icon.apiTicket { background:url(../images/icons/ticket_source_other.gif) 0 0 no-repeat; } .Icon.otherTicket { background:url(../images/icons/ticket_source_other.gif) 0 0 no-repeat; } .Icon.overdueTicket { background:url(../images/icons/overdue_ticket.gif) 0 0 no-repeat; } .Icon.assignedTicket { background:url(../images/icons/assigned_ticket.gif) 0 0 no-repeat; }