Fixing session_list queries

skala
Julio Montoya 13 years ago
parent 36b6aac690
commit 145705716f
  1. 2
      main/admin/session_list.php
  2. 4
      main/inc/lib/extra_field.lib.php
  3. 4
      main/inc/lib/extra_field_option.lib.php
  4. 2
      main/inc/lib/extra_field_value.lib.php
  5. 49
      main/inc/lib/sessionmanager.lib.php

@ -180,7 +180,7 @@ $(function() {
prmSearch = {
multipleSearch : true,
overlay : false,
width: 600,
width: 'auto',
caption: '<?php echo addslashes(get_lang('Search')); ?>',
formclass:'data_table',
onSearch : function() {

@ -55,13 +55,13 @@ class ExtraField extends Model {
}
public function get_all($where_conditions = array()) {
public function get_all($where_conditions = array(), $order_field_options_by = null) {
$options = Database::select('*', $this->table, array('where'=>$where_conditions, 'order' =>'field_order ASC'));
$field_option = new ExtraFieldOption($this->type);
if (!empty($options)) {
foreach ($options as &$option) {
$option['options'] = $field_option->get_field_options_by_field($option['id']);
$option['options'] = $field_option->get_field_options_by_field($option['id'], false, $order_field_options_by);
}
}
return $options;

@ -29,8 +29,8 @@ class ExtraFieldOption extends Model {
return $row['count'];
}
public function get_field_options_to_string($field_id) {
$options = self::get_field_options_by_field($field_id);
public function get_field_options_to_string($field_id, $add_id_in_array = false, $ordered_by = null) {
$options = self::get_field_options_by_field($field_id, $add_id_in_array, $ordered_by);
$new_options = array();
if (!empty($options)) {
foreach ($options as $option) {

@ -216,7 +216,7 @@ class ExtraFieldValue extends Model {
INNER JOIN {$this->table_handler_field} sf ON (s.field_id = sf.id)
WHERE field_value = '$field_value' AND
field_variable = '".$field_variable."'
";
";
$result = Database::query($sql);
if (Database::num_rows($result)) {
$result = Database::fetch_array($result, 'ASSOC');

@ -166,7 +166,7 @@ class SessionManager {
$tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$tbl_session_field_values = Database::get_main_table(TABLE_MAIN_SESSION_FIELD_VALUES);
$where = 'WHERE 1 = 1 ';
$user_id = api_get_user_id();
@ -243,14 +243,28 @@ class SessionManager {
c.title as course_title,
s.id ";
if (!empty($options['where'])) {
//var_dump($inject_extra_fields);
//var_dump($options);
if (!empty($options['extra'])) {
foreach ($options['extra'] as $extra) {
$options['where'] = str_replace($extra['field'], 'fv.field_value', $options['where']);
}
}
$options['where'] = str_replace('course_title', 'c.title', $options['where']);
$where .= ' AND '.$options['where'];
}
if (!empty($options['limit'])) {
$where .= " LIMIT ".$options['limit'];
}
//LEFT JOIN $tbl_course c ON (src.course_id = c.id)
$query = "$select FROM $tbl_session s
LEFT JOIN $tbl_session_field_values fv ON (fv.session_id = s.id)
LEFT JOIN $tbl_session_rel_course src ON (src.id_session = s.id)
LEFT JOIN $tbl_course c ON (src.course_id = c.id)
LEFT JOIN $tbl_course c ON (src.course_code = c.code)
LEFT JOIN $tbl_session_category sc ON (s.session_category_id = sc.id)
INNER JOIN $tbl_user u ON (s.id_coach = u.user_id) ".
$where;
@ -262,31 +276,26 @@ class SessionManager {
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1) {
$where.= " AND ar.access_url_id = $access_url_id ";
$query = "$select ".
"FROM $tbl_session s ".
"LEFT JOIN $tbl_session_field_values fv ON (fv.session_id = s.id) ".
" LEFT JOIN $tbl_session_rel_course src ON (src.id_session = s.id) ".
"LEFT JOIN $tbl_course c ON (src.course_id = c.id) ".
"LEFT JOIN $tbl_session_category sc ON (s.session_category_id = sc.id) ".
"INNER JOIN $tbl_user u ON (s.id_coach = u.user_id) ".
"INNER JOIN $table_access_url_rel_session ar ON (ar.session_id = s.id) ".
" $where";
$query = "$select
FROM $tbl_session s
LEFT JOIN $tbl_session_field_values fv ON (fv.session_id = s.id)
LEFT JOIN $tbl_session_rel_course src ON (src.id_session = s.id)
LEFT JOIN $tbl_course c ON (src.course_code = c.code)
LEFT JOIN $tbl_session_category sc ON (s.session_category_id = sc.id)
INNER JOIN $tbl_user u ON (s.id_coach = u.user_id)
INNER JOIN $table_access_url_rel_session ar ON (ar.session_id = s.id)
$where";
}
}
$query .= ") AS session_table";
if (!empty($options['where'])) {
$query .= ' WHERE '.$options['where'];
}
if (!empty($options['order'])) {
$query .= " ORDER BY ".$options['order'];
}
error_log($query);
//echo $query;
//echo $query;
$result = Database::query($query);
$formatted_sessions = array();
@ -2357,8 +2366,8 @@ class SessionManager {
//Inject extra session fields
$session_field = new SessionField();
$session_field_option = new SessionFieldOption();
$fields = $session_field->get_all(array('field_visible = ? AND field_filter = ?' => array(1, 1)));
$fields = $session_field->get_all(array('field_visible = ? AND field_filter = ?' => array(1, 1)), 'option_display_text');
$rules = array();
/*
$now = new DateTime();
@ -2438,7 +2447,7 @@ class SessionManager {
$rules[] = array('field' => 'extra_'.$field['field_variable'].'_second', 'op' => 'cn');
continue;
} else {
$search_options['value'] = $session_field_option->get_field_options_to_string($field['id']);
$search_options['value'] = $session_field_option->get_field_options_to_string($field['id'], false, 'option_display_text');
}
$column_model[] = array(

Loading…
Cancel
Save