Browse Source

Fix session_list dates see #7719

Julio Montoya 9 years ago
parent
commit
91d9783dd5

+ 15 - 6
main/inc/lib/sessionmanager.lib.php

@@ -79,7 +79,8 @@ class SessionManager
         $duration = null,
         $description = null,
         $showDescription = 0,
-        $extraFields = array()
+        $extraFields = array(),
+        $sessionAdminId = 0
     ) {
         global $_configuration;
 
@@ -147,10 +148,11 @@ class SessionManager
             }
 
             if ($ready_to_create) {
+                $sessionAdminId = !empty($sessionAdminId) ? $sessionAdminId : api_get_user_id();
                 $values = array(
                     'name' => $name,
                     'id_coach' => $coachId,
-                    'session_admin_id' => api_get_user_id(),
+                    'session_admin_id' => $sessionAdminId,
                     'visibility' => $id_visibility,
                     'description' => $description,
                     'show_description' => intval($showDescription)
@@ -1319,7 +1321,8 @@ class SessionManager
         $description = null,
         $showDescription = 0,
         $duration = null,
-        $extraFields = array()
+        $extraFields = array(),
+        $sessionAdminId = 0
     ) {
         $name = trim(stripslashes($name));
         $id_coach = intval($id_coach);
@@ -1365,6 +1368,10 @@ class SessionManager
                     'visibility' => $id_visibility
                 ];
 
+                if (!empty($sessionAdminId)) {
+                    $values['session_admin_id'] = $sessionAdminId;
+                }
+
                 if (!empty($startDate)) {
                     $values['access_start_date'] = $startDate;
                 }
@@ -1395,10 +1402,12 @@ class SessionManager
                 Database::update($tbl_session, $values, array(
                     'id = ?' => $id
                 ), true);
-                $extraFields['item_id'] = $id;
 
-                $sessionFieldValue = new ExtraFieldValue('session');
-                $sessionFieldValue->saveFieldValues($extraFields);
+                if (!empty($extraFields)) {
+                    $extraFields['item_id'] = $id;
+                    $sessionFieldValue = new ExtraFieldValue('session');
+                    $sessionFieldValue->saveFieldValues($extraFields);
+                }
 
                 return $id;
             }

+ 43 - 34
main/webservices/registration.soap.php

@@ -3679,8 +3679,8 @@ function WSCreateSession($params)
             $date_start = "$year_start-".(($month_start < 10)?"0$month_start":$month_start)."-".(($day_start < 10)?"0$day_start":$day_start) . ' 00:00:00';
             $date_end = "$year_end-".(($month_end < 10)?"0$month_end":$month_end)."-".(($day_end < 10)?"0$day_end":$day_end) . ' 23:59:59';
         } else {
-            $date_start = "000-00-00 00:00:00";
-            $date_end = "000-00-00 00:00:00";
+            $date_start = "";
+            $date_end = "";
         }
 
         if (empty($name)) {
@@ -3707,27 +3707,25 @@ function WSCreateSession($params)
                 $diffEnd = new DateInterval($nb_days_access_after);
                 $coachStartDate = $startDate->sub($diffStart);
                 $coachEndDate = $endDate->add($diffEnd);
-                Database::query(
-                    "INSERT INTO $tbl_session(
-                        name,
-                        access_start_date,
-                        access_end_date,
-                        id_coach,
-                        session_admin_id,
-                        coach_access_start_date,
-                        coach_access_end_date
-                    )
-                    VALUES(
-                        '".addslashes($name)."',
-                        '$date_start',
-                        '$date_end',
-                        '$id_coach',
-                        ".intval($_user['user_id']).",
-                        '".$coachStartDate->format('Y-m-d H:i:s')."',
-                        '".$coachEndDate->format('Y-m-d H:i:s')."'
-                    )"
+
+                $id_session = SessionManager::create_session(
+                    $name,
+                    $date_start,
+                    $date_end,
+                    $date_start,
+                    $date_end,
+                    $coachStartDate->format('Y-m-d H:i:s'),
+                    $coachEndDate->format('Y-m-d H:i:s'),
+                    $id_coach,
+                    0,
+                    0,
+                    false,
+                    null,
+                    null,
+                    0,
+                    array(),
+                    $_user['user_id']
                 );
-                $id_session = Database::insert_id();
 
                 // Save new fieldlabel into course_field table.
                 $field_id = SessionManager::create_session_extra_field(
@@ -3913,8 +3911,8 @@ function WSEditSession($params)
             $date_start="$year_start-".(($month_start < 10)?"0$month_start":$month_start)."-".(($day_start < 10)?"0$day_start":$day_start);
             $date_end="$year_end-".(($month_end < 10)?"0$month_end":$month_end)."-".(($day_end < 10)?"0$day_end":$day_end);
         } else {
-            $date_start="000-00-00";
-            $date_end="000-00-00";
+            $date_start="";
+            $date_end="";
         }
         if (empty($name)) {
             $results[] = 0; //SessionNameIsRequired
@@ -3935,16 +3933,27 @@ function WSEditSession($params)
             $diffEnd = new DateInterval($nb_days_access_after);
             $coachStartDate = $startDate->sub($diffStart);
             $coachEndDate = $endDate->add($diffEnd);
-            $sql = "UPDATE $tbl_session SET " .
-                "name = '".addslashes($name)."', " .
-                "date_start = '".$date_start."', " .
-                "date_end = '".$date_end."', " .
-                "id_coach = '".        $id_coach."', " .
-                "session_admin_id = '".        intval($_user['user_id'])."', " .
-                "coach_access_start_date = '". $coachStartDate->format('Y-m-d H:i:s') . "', " .
-                "coach_access_end_date = '". $coachEndDate->format('Y-m-d H:i:s') . "'" .
-                " WHERE id = '".$id."'";
-            Database::query($sql);
+
+            $sessionInfo = api_get_session_info($id);
+
+            SessionManager::edit_session(
+                $id,
+                $name,
+                $date_start,
+                $date_end,
+                $date_start,
+                $date_end,
+                $coachStartDate->format('Y-m-d H:i:s'),
+                $coachEndDate->format('Y-m-d H:i:s'),
+                $id_coach,
+                $sessionInfo['session_category_id'],
+                $sessionInfo['visibility'],
+                $sessionInfo['description'],
+                $sessionInfo['show_description'],
+                $sessionInfo['duration'],
+                null,
+                $_user['user_id']
+            );
 
             if (is_array($extra_list) && count($extra_list) > 0) {
                 foreach ($extra_list as $extra) {

+ 2 - 2
plugin/buycourses/database.php

@@ -28,11 +28,11 @@ $sql = "CREATE TABLE IF NOT EXISTS $table (
 Database::query($sql);
 
 $tableSession = Database::get_main_table(TABLE_MAIN_SESSION);
-$sql = "SELECT id, name, date_start, date_end FROM $tableSession";
+$sql = "SELECT id, name, access_start_date, access_end_date FROM $tableSession";
 $res = Database::query($sql);
 while ($row = Database::fetch_assoc($res)) {
     $presql = "INSERT INTO $table (id, name, date_start, date_end, visible)
-    VALUES ('" . $row['id'] . "','" . $row['name'] . "','" . $row['date_start'] . "','" . $row['date_end'] . "','NO')";
+    VALUES ('" . $row['id'] . "','" . $row['name'] . "','" . $row['access_start_date'] . "','" . $row['access_end_date'] . "','NO')";
     Database::query($presql);
 }