Fixing parse_conditions order option see BT#3566

skala
Julio Montoya 14 years ago
parent f89a25ff44
commit 35f7ed9736
  1. 2
      main/inc/lib/course.lib.php
  2. 55
      main/inc/lib/database.lib.php
  3. 59
      main/inc/lib/database.mysqli.lib.php
  4. 2
      main/newscorm/learnpathList.class.php

@ -3687,7 +3687,7 @@ class CourseManager {
$table_course_ranking = Database::get_main_table(TABLE_STATISTIC_TRACK_COURSE_RANKING);
$params['url_id'] = api_get_current_access_url_id();
$result = Database::select('c_id, accesses, total_score, users', $table_course_ranking, array('where' => array('url_id = ?' => $params), 'order' => array('accesses DESC'), 'limit' => $limit), 'all', true);
$result = Database::select('c_id, accesses, total_score, users', $table_course_ranking, array('where' => array('url_id = ?' => $params), 'order' => 'accesses DESC', 'limit' => $limit), 'all', true);
return $result;
}
} //end class CourseManager

@ -1238,39 +1238,36 @@ class Database {
}
break;
case 'order':
$order_array = $condition_data;
$order_array = $condition_data;
if (!empty($order_array)) {
if (is_array($order_array) && count($order_array) >= 1 && !empty($order_array[0])) {
$order_array = self::escape_string($order_array[0]);
$new_order_array = explode(',', $order_array);
$temp_value = array();
foreach($new_order_array as $element) {
$element = explode(' ', $element);
$element = array_filter($element);
$element = array_values($element);
if (!empty($element[1])) {
$element[1] = strtolower($element[1]);
$order = 'DESC';
if (in_array($element[1], array('desc', 'asc'))) {
$order = $element[1];
}
$temp_value[]= $element[0].' '.$order.' ';
} else {
//by default DESC
$temp_value[]= $element[0].' DESC ';
}
}
if (!empty($temp_value)) {
$return_value .= ' ORDER BY '.implode(', ', $temp_value);
if (!empty($order_array)) {
// 'order' => 'id desc, name desc'
$order_array = self::escape_string($order_array);
$new_order_array = explode(',', $order_array);
$temp_value = array();
foreach($new_order_array as $element) {
$element = explode(' ', $element);
$element = array_filter($element);
$element = array_values($element);
if (!empty($element[1])) {
$element[1] = strtolower($element[1]);
$order = 'DESC';
if (in_array($element[1], array('desc', 'asc'))) {
$order = $element[1];
}
$temp_value[]= $element[0].' '.$order.' ';
} else {
//$return_value .= '';
//by default DESC
$temp_value[]= $element[0].' DESC ';
}
}
if (!empty($temp_value)) {
$return_value .= ' ORDER BY '.implode(', ', $temp_value);
} else {
//$return_value .= '';
}
}
break;
case 'limit':

@ -1156,41 +1156,38 @@ class Database {
}
break;
case 'order':
$order_array = $condition_data;
$order_array = $condition_data;
if (!empty($order_array)) {
if (is_array($order_array) && count($order_array) >= 1 && !empty($order_array[0])) {
$order_array = self::escape_string($order_array[0]);
$new_order_array = explode(',', $order_array);
$temp_value = array();
foreach($new_order_array as $element) {
$element = explode(' ', $element);
$element = array_filter($element);
$element = array_values($element);
if (!empty($element[1])) {
$element[1] = strtolower($element[1]);
$order = 'DESC';
if (in_array($element[1], array('desc', 'asc'))) {
$order = $element[1];
}
$temp_value[]= $element[0].' '.$order.' ';
} else {
//by default DESC
$temp_value[]= $element[0].' DESC ';
}
}
if (!empty($temp_value)) {
$return_value .= ' ORDER BY '.implode(', ', $temp_value);
if (!empty($order_array)) {
// 'order' => 'id desc, name desc'
$order_array = self::escape_string($order_array);
$new_order_array = explode(',', $order_array);
$temp_value = array();
foreach($new_order_array as $element) {
$element = explode(' ', $element);
$element = array_filter($element);
$element = array_values($element);
if (!empty($element[1])) {
$element[1] = strtolower($element[1]);
$order = 'DESC';
if (in_array($element[1], array('desc', 'asc'))) {
$order = $element[1];
}
$temp_value[]= $element[0].' '.$order.' ';
} else {
//$return_value .= '';
//by default DESC
$temp_value[]= $element[0].' DESC ';
}
}
}
break;
if (!empty($temp_value)) {
$return_value .= ' ORDER BY '.implode(', ', $temp_value);
} else {
//$return_value .= '';
}
}
break;
case 'limit':
$limit_array = explode(',', $condition_data);

@ -49,7 +49,7 @@ class learnpathList {
$condition_session = api_get_session_condition($session_id, true, true);
$order = "ORDER BY display_order ASC, name ASC";
if (isset($order_by)) {
$order = Database::parse_conditions(array('order'=>$order_by));
$order = Database::parse_conditions(array('order'=>$order_by));
}
$sql = "SELECT * FROM $lp_table WHERE c_id = $course_id $condition_session $order";
$res = Database::query($sql);

Loading…
Cancel
Save