Skip to content
Snippets Groups Projects
Commit 38026c5f authored by Peter Rotich's avatar Peter Rotich
Browse files

Merge pull request #2980 from greezybacon/issue/orm-iteration-nocache


ORM queries avoiding caching

Reviewed-By: default avatarPeter Rotich <peter@osticket.com>
parents 44de7d26 8ed643c9
No related branches found
No related tags found
No related merge requests found
......@@ -60,6 +60,7 @@ class Export {
$tickets = $sql->models()
->select_related('user', 'user__default_email', 'dept', 'staff',
'team', 'staff', 'cdata', 'topic', 'status', 'cdata__:priority')
->options(QuerySet::OPT_NOCACHE)
->annotate(array(
'collab_count' => TicketThread::objects()
->filter(array('ticket__ticket_id' => new SqlField('ticket_id', 1)))
......@@ -74,6 +75,11 @@ class Export {
->aggregate(array('count' => SqlAggregate::COUNT('entries__id'))),
));
// Fetch staff information
// FIXME: Adjust Staff model so it doesn't do extra queries
foreach (Staff::objects() as $S)
$S->get('junk');
return self::dumpQuery($tickets,
array(
'number' => __('Ticket Number'),
......
This diff is collapsed.
......@@ -2,7 +2,7 @@
$events = $events
->filter(array('state__in' => array('created', 'closed', 'reopened', 'edited', 'collab')))
->order_by('id');
$events = $events->getIterator();
$events = new IteratorIterator($events->all());
$events->rewind();
$event = $events->current();
......
......@@ -69,13 +69,14 @@ function db_connect($host, $user, $passwd, $options = array()) {
if(isset($options['db'])) $__db->select_db($options['db']);
//set desired encoding just in case mysql charset is not UTF-8 - Thanks to FreshMedia
@$__db->query('SET NAMES "utf8"');
@$__db->query('SET CHARACTER SET "utf8"');
@$__db->query('SET COLLATION_CONNECTION=utf8_general_ci');
@db_set_all(array(
'NAMES' => 'utf8',
'CHARACTER SET' => 'utf8',
'COLLATION_CONNECTION' => 'utf8_general_ci',
'SQL_MODE' => '',
), 'session');
$__db->set_charset('utf8');
@db_set_variable('sql_mode', '');
$__db->autocommit(true);
// Use connection timing to seed the random number generator
......@@ -123,10 +124,30 @@ function db_get_variable($variable, $type='session') {
}
function db_set_variable($variable, $value, $type='session') {
$sql =sprintf('SET %s %s=%s',strtoupper($type), $variable, db_input($value));
return db_query($sql);
return db_set_all(array($variable => $value), $type);
}
function db_set_all($variables, $type='session') {
global $__db;
$set = array();
$type = strtoupper($type);
foreach ($variables as $k=>$v) {
$k = strtoupper($k);
$T = $type;
if (in_array($k, ['NAMES', 'CHARACTER SET'])) {
// MySQL doesn't support the session/global flag, and doesn't
// use an equal sign for these
$T = '';
}
else {
$k .= ' =';
}
$set[] = "$T $k ".($__db->real_escape_string($v) ?: "''");
}
$sql = 'SET ' . implode(', ', $set);
return db_query($sql);
}
function db_select_database($database) {
global $__db;
......@@ -194,17 +215,6 @@ function db_query_unbuffered($sql, $logError=false) {
return db_query($sql, $logError, true);
}
function db_squery($query) { //smart db query...utilizing args and sprintf
$args = func_get_args();
$query = array_shift($args);
$query = str_replace("?", "%s", $query);
$args = array_map('db_real_escape', $args);
array_unshift($args, $query);
$query = call_user_func_array('sprintf', $args);
return db_query($query);
}
function db_count($query) {
return db_result(db_query($query));
}
......
......@@ -144,9 +144,7 @@ if($_REQUEST['q'] || $_REQUEST['cid'] || $_REQUEST['topicId']) { //Search.
->all();
if (count($categories)) {
usort($categories, function($a, $b) {
return strcmp($a->getLocalName(), $b->getLocalName());
});
$categories->sort(function($a) { return $a->getLocalName(); });
echo '<div>'.__('Click on the category to browse FAQs or manage its existing FAQs.').'</div>
<ul id="kb">';
foreach ($categories as $C) {
......
......@@ -10,7 +10,7 @@ $cmp = function ($a, $b) use ($sort) {
};
$events = $events->order_by($sort);
$events = $events->getIterator();
$events = new IteratorIterator($events->all());
$events->rewind();
$event = $events->current();
$htmlId = $options['html-id'] ?: ('thread-'.$this->getId());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment