diff --git a/WHATSNEW.md b/WHATSNEW.md index 33eeb6cd2180877f5e080dc19c8cb3c05cfec8fe..4812a8892ca4cfa988bb47fe87d3a42362463f16 100644 --- a/WHATSNEW.md +++ b/WHATSNEW.md @@ -185,6 +185,22 @@ database engines other than MySQL. The ORM was originally introduced in osTicket v1.8.0, but has seen the greatest boost in capability in this release. About 47% of the SQL queries are removed between v1.9.7 and v1.10 +osTicket v1.9.12 +================ +### Improvements + * Fix missing search box adding user to organization (#2431) + * Fix incorrect update time on FAQ view in staff portal (194f890) + * Fix incorrect parsing of some multi-part MIME messages (fe62226) + * Fix auto-claim for new ticket by staff if a filter added a canned response + (eca531f) + * Fix malformed results on remote user search when adding users (#2335) + * Fix search by ticket number on client portal (#2294) + * Fix association of user email without a domain to an organization without + an email domain setting (#2293) + +### Performance and Security + * Revert poor performing ticket stats query (#2318) + osTicket v1.9.11 ================ *We skipped v1.9.10 to avoid confusion with v1.10 (the major release coming out at the same time)* diff --git a/account.php b/account.php index 81f542eb2b46ebf8d953d196ddbb083aa3a54aac..b6f1d04ff144dc256b554d19e3d9eb4b25200960 100644 --- a/account.php +++ b/account.php @@ -29,10 +29,12 @@ if (!$cfg || !$cfg->isClientRegistrationEnabled()) { elseif ($thisclient) { // Guest registering for an account if ($thisclient->isGuest()) { - foreach ($thisclient->getForms() as $f) - if ($f->get('type') == 'U') + foreach ($thisclient->getForms() as $f) { + if ($f->get('type') == 'U') { $user_form = $f; - $user_form->getField('email')->configure('disabled', true); + $user_form->getField('email')->configure('disabled', true); + } + } } // Existing client (with an account) updating profile else { diff --git a/include/ajax.orgs.php b/include/ajax.orgs.php index 0cc098a50ea44a9bb3863b243c2617690cdbdee4..041678c0b1166374afc8715030029cf838695a1c 100644 --- a/include/ajax.orgs.php +++ b/include/ajax.orgs.php @@ -138,9 +138,8 @@ class OrgsAjaxAPI extends AjaxController { $info['action'] = '#orgs/'.$org->getId().'/add-user'; $info['onselect'] = 'ajax.php/orgs/'.$org->getId().'/add-user/'; - $info['lookup'] = false; - if (AuthenticationBackend::getSearchDirectories()) - $info['lookup'] = 'remote'; + if (!AuthenticationBackend::getSearchDirectories()) + $info['lookup'] = 'local'; if ($_POST) { if ($_POST['id']) { //Existing useer diff --git a/include/class.file.php b/include/class.file.php index d921d22dd96f61a87833b81d2b2fd60ff42e1fa7..e502ff80507e89c91040de4f099c8e46caddc327 100644 --- a/include/class.file.php +++ b/include/class.file.php @@ -835,15 +835,14 @@ class AttachmentChunkedData extends FileStorageBackend { function write($what, $chunk_size=CHUNK_SIZE) { $offset=0; - $what = bin2hex($what); for (;;) { - $block = substr($what, $offset, $chunk_size*2); + $block = bin2hex(substr($what, $offset, $chunk_size)); if (!$block) break; if (!db_query('REPLACE INTO '.FILE_CHUNK_TABLE .' SET filedata=0x'.$block.', file_id=' .db_input($this->file->getId()).', chunk_id='.db_input($this->_chunk++))) return false; - $offset += strlen($block); + $offset += strlen($block)/2; } return $this->_chunk; diff --git a/include/staff/helptopics.inc.php b/include/staff/helptopics.inc.php index 632716ca1c9703ad252f94750ba85d7d20d53b1d..3116e5016be5744958619a0e3240fcc80c0c3a8c 100644 --- a/include/staff/helptopics.inc.php +++ b/include/staff/helptopics.inc.php @@ -94,10 +94,19 @@ $order_by = 'sort'; ->limit($pageNav->getLimit()) ->offset($pageNav->getStart()); + $T = $topics; + $names = $topics = array(); + foreach ($T as $topic) { + $names[$topic->getId()] = $topic->getFullName(); + $topics[$topic->getId()] = $topic; + } + $names = Internationalization::sortKeyedList($names); + $defaultDept = $cfg->getDefaultDept(); $defaultPriority = $cfg->getDefaultPriority(); $sort = 0; - foreach($topics as $topic) { + foreach($names as $topic_id=>$name) { + $topic = $topics[$topic_id]; $id = $topic->getId(); $sort++; // Track initial order for transition $sel=false;