Browse Source

Fixing session_list queries

Julio Montoya 12 years ago
parent
commit
145705716f

+ 1 - 1
main/admin/session_list.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() {

+ 2 - 2
main/inc/lib/extra_field.lib.php

@@ -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;

+ 2 - 2
main/inc/lib/extra_field_option.lib.php

@@ -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) {

+ 1 - 1
main/inc/lib/extra_field_value.lib.php

@@ -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');            

+ 29 - 20
main/inc/lib/sessionmanager.lib.php

@@ -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(