瀏覽代碼

Add dates and image when use a session template see BT#14084

jmontoyaa 7 年之前
父節點
當前提交
a6257a3763
共有 2 個文件被更改,包括 128 次插入35 次删除
  1. 40 21
      main/inc/lib/sessionmanager.lib.php
  2. 88 14
      main/session/session_add.php

+ 40 - 21
main/inc/lib/sessionmanager.lib.php

@@ -90,6 +90,23 @@ class SessionManager
             'send_subscription_notification' => $session->getSendSubscriptionNotification(),
         ];
 
+        // Converted to local values
+        $variables = [
+            'display_start_date',
+            'display_end_date',
+            'access_start_date',
+            'access_end_date',
+            'coach_access_start_date',
+            'coach_access_end_date'
+        ];
+
+        foreach ($variables as $value) {
+            $result[$value."_to_local_time"] = null;
+            if (!empty($result[$value])) {
+                $result[$value."_to_local_time"] = api_get_local_time($result[$value]);
+            }
+        }
+
         return $result;
     }
 
@@ -104,7 +121,8 @@ class SessionManager
      * @param   string  $coachStartDate (YYYY-MM-DD hh:mm:ss)
      * @param   string  $coachEndDate (YYYY-MM-DD hh:mm:ss)
      * @param   integer $sessionCategoryId ID of the session category in which this session is registered
-     * @param   mixed   $coachId If integer, this is the session coach id, if string, the coach ID will be looked for from the user table
+     * @param   mixed   $coachId If int, this is the session coach id,
+     * if string, the coach ID will be looked for from the user table
      * @param   integer $visibility Visibility after end date (0 = read-only, 1 = invisible, 2 = accessible)
      * @param   bool    $fixSessionNameIfExists
      * @param   string  $duration
@@ -138,7 +156,7 @@ class SessionManager
     ) {
         global $_configuration;
 
-        //Check portal limits
+        // Check portal limits
         $access_url_id = 1;
 
         if (api_get_multiple_access_url()) {
@@ -167,10 +185,14 @@ class SessionManager
         if (empty($name)) {
             $msg = get_lang('SessionNameIsRequired');
             return $msg;
-        } elseif (!empty($startDate) && !api_is_valid_date($startDate, 'Y-m-d H:i') && !api_is_valid_date($startDate, 'Y-m-d H:i:s')) {
+        } elseif (!empty($startDate) && !api_is_valid_date($startDate, 'Y-m-d H:i') &&
+            !api_is_valid_date($startDate, 'Y-m-d H:i:s')
+        ) {
             $msg = get_lang('InvalidStartDate');
             return $msg;
-        } elseif (!empty($endDate) && !api_is_valid_date($endDate, 'Y-m-d H:i') && !api_is_valid_date($endDate, 'Y-m-d H:i:s')) {
+        } elseif (!empty($endDate) && !api_is_valid_date($endDate, 'Y-m-d H:i') &&
+            !api_is_valid_date($endDate, 'Y-m-d H:i:s')
+        ) {
             $msg = get_lang('InvalidEndDate');
             return $msg;
         } elseif (!empty($startDate) && !empty($endDate) && $startDate >= $endDate) {
@@ -258,7 +280,6 @@ class SessionManager
 
                 if (!empty($session_id)) {
                     $extraFields['item_id'] = $session_id;
-
                     $sessionFieldValue = new ExtraFieldValue('session');
                     $sessionFieldValue->saveFieldValues($extraFields);
 
@@ -3134,10 +3155,10 @@ class SessionManager
      */
     public static function get_session_category($id)
     {
-        $tbl_session_category = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY);
+        $table = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY);
         $id = intval($id);
         $sql = "SELECT id, name, date_start, date_end
-                FROM $tbl_session_category
+                FROM $table
                 WHERE id= $id";
         $result = Database::query($sql);
         $num = Database::num_rows($result);
@@ -3154,9 +3175,9 @@ class SessionManager
      */
     public static function get_all_session_category()
     {
-        $tbl_session_category = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY);
+        $table = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY);
         $id = api_get_current_access_url_id();
-        $sql = 'SELECT * FROM '.$tbl_session_category.'
+        $sql = 'SELECT * FROM '.$table.'
                 WHERE access_url_id = ' . $id.'
                 ORDER BY name ASC';
         $result = Database::query($sql);
@@ -3644,15 +3665,13 @@ class SessionManager
                     $row['access_end_date'] = null;
                 }
 
-                if (
-                    $row['coach_access_start_date'] == '0000-00-00 00:00:00' ||
+                if ($row['coach_access_start_date'] == '0000-00-00 00:00:00' ||
                     $row['coach_access_start_date'] == '0000-00-00'
                 ) {
                     $row['coach_access_start_date'] = null;
                 }
 
-                if (
-                    $row['coach_access_end_date'] == '0000-00-00 00:00:00' ||
+                if ($row['coach_access_end_date'] == '0000-00-00 00:00:00' ||
                     $row['coach_access_end_date'] == '0000-00-00'
                 ) {
                     $row['coach_access_end_date'] = null;
@@ -4131,8 +4150,8 @@ class SessionManager
 
     /**
      * Updates a session status
-     * @param	int 	session id
-     * @param	int 	status
+     * @param int session id
+     * @param int status
      */
     public static function set_session_status($session_id, $status)
     {
@@ -4311,9 +4330,9 @@ class SessionManager
     {
         $session_id = intval($session_id);
         $user_id = intval($user_id);
-        $session_table = Database::get_main_table(TABLE_MAIN_SESSION);
+        $table = Database::get_main_table(TABLE_MAIN_SESSION);
         $sql = "SELECT DISTINCT id
-	         	FROM $session_table
+	         	FROM $table
 	         	WHERE session.id_coach =  '".$user_id."' AND id = '$session_id'";
         $result = Database::query($sql);
         if ($result && Database::num_rows($result)) {
@@ -4532,8 +4551,8 @@ class SessionManager
      *  false: if session exists a new session will be created adding a counter session1, session2, etc
      * @param int $defaultUserId
      * @param mixed $logger
-     * @param array $extraFields convert a file row to an extra field. Example in CSV file there's a SessionID then it will
-     * converted to extra_external_session_id if you set this: array('SessionId' => 'extra_external_session_id')
+     * @param array $extraFields convert a file row to an extra field. Example in CSV file there's a SessionID
+     * then it will converted to extra_external_session_id if you set: array('SessionId' => 'extra_external_session_id')
      * @param string $extraFieldId
      * @param int $daysCoachAccessBeforeBeginning
      * @param int $daysCoachAccessAfterBeginning
@@ -7567,7 +7586,7 @@ class SessionManager
             $sessionList = [];
             $sessionList[] = '';
             foreach ($sessions as $session) {
-                $sessionList[$session['id']] = $session['name'];
+                $sessionList[$session['id']] = strip_tags($session['name']);
             }
 
             $form->addSelect(
@@ -7623,7 +7642,7 @@ class SessionManager
             'id' => 'access',
         ));
 
-        $form->addHtml('<div id="duration" style="display:none">');
+        $form->addHtml('<div id="duration_div" style="display:none">');
 
         $form->addElement(
             'number',

+ 88 - 14
main/session/session_add.php

@@ -84,7 +84,6 @@ $xajax->processRequests();
 $htmlHeadXtra[] = $xajax->getJavascript('../inc/lib/xajax/');
 $htmlHeadXtra[] = "
 <script>
-
 $(document).ready( function() {
     accessSwitcher(0);
 });
@@ -102,11 +101,10 @@ function accessSwitcher(accessFromReady) {
     }
 
     if (access == 1) {
-        $('#duration').hide();
+        $('#duration_div').hide();
         $('#date_fields').show();
     } else {
-
-        $('#duration').show();
+        $('#duration_div').show();
         $('#date_fields').hide();
     }
     emptyDuration();
@@ -139,13 +137,14 @@ $form->addElement('header', $tool_name);
 $result = SessionManager::setForm($form);
 
 $url = api_get_path(WEB_AJAX_PATH).'session.ajax.php';
+$urlUpload = api_get_path(WEB_UPLOAD_PATH);
+$sysUploadPath = api_get_path(SYS_UPLOAD_PATH);
 $urlAjaxExtraField = api_get_path(WEB_AJAX_PATH).'extra_field.ajax.php?1=1';
 
 $htmlHeadXtra[] ="
 <script>
 $(function() {
     ".$result['js']."
-
     $('#system_template').on('change', function() {
         var sessionId = $(this).find('option:selected').val();
 
@@ -168,13 +167,48 @@ $(function() {
                 if (data.duration > 0) {
                     $('#access').val(0);
                     $('#access').selectpicker('render');
-                    $('#duration').val(data.duration);
+                    accessSwitcher(0);
+                    $('#duration').val(parseInt(data.duration));                    
+                } else {                    
+                    $('#access').val(1);
+                    $('#access').selectpicker('render');
+                    accessSwitcher(1);
+                    
+                    var variables = [
+                        'display_start_date',
+                        'access_start_date',
+                        'coach_access_start_date',
+                        'display_end_date',
+                        'access_end_date',
+                        'coach_access_end_date'                        
+                    ];                    
+                    variables.forEach(function(variable) {
+                        var variableName = variable + '_to_local_time';                        
+                        if (data[variableName]) {                        
+                            var parsedDate = $.datepicker.parseDateTime(
+                                'yy-mm-dd', 
+                                'hh:mm:ss', 
+                                data[variableName]
+                            );         
+                            if (parsedDate) {
+                                $('#'+variable).datetimepicker('setDate', parsedDate);
+                            }           
+                        }
+                    });
+                }
+                
+                $('[name=\'show_description\']').prop('checked', false);
+                if (data.show_description) {
+                    $('[name=\'show_description\']').prop('checked', true);
                 }
+                
+                $('[name=\'send_subscription_notification\']').prop('checked', false);
+                if (data.send_subscription_notification) {
+                    $('[name=\'send_subscription_notification\']').prop('checked', true);
+                } 
 
                 $.each(data.extra_fields, function(i, item) {
-                    var fieldName = 'extra_'+item.variable; 
-                                
-
+                    var fieldName = 'extra_'+item.variable;
                     /*
                     const FIELD_TYPE_TEXT = 1;
                     const FIELD_TYPE_TEXTAREA = 2;
@@ -227,10 +261,8 @@ $(function() {
                             // item.value has format : 85::86
                             if (item.value) {
                                 var values = item.value.split('::');
-
                                 var firstFieldId = values[0];
                                 var secondFieldId = values[1];
-
                                 $('#'+first+'').val(firstFieldId);
                                 $('#'+first+'').selectpicker('render');
 
@@ -262,7 +294,6 @@ $(function() {
                             }
                             break;
                         case '10': // tags
-
                              // Remove all options
                             $('#'+fieldName+' option').each(function(i, optionItem) {
                                 $(this).remove();
@@ -294,6 +325,27 @@ $(function() {
                                $('[name=\''+check+'\']').prop('checked', true);
                             }
                             break;
+                        case '16':
+                            if (item.value) {
+                                //    $('input[name='+fieldName+']').val(item.value);
+                                var url = '".$urlUpload."';
+                                
+                                url = url + item.value;
+                                
+                                var divFormGroup = fieldName + '-form-group';
+                                var divWrapper = fieldName + '_crop_image';
+                                var divPreview = fieldName + '_preview_image';
+                                var divCropButton = fieldName + '_crop_button';
+                                var cropResult = fieldName + '_crop_result';
+                                                                
+                                $('[name=\''+cropResult+'\']').val('import_file_from_session::' + sessionId);
+                                $('#' + divFormGroup).show();
+                                $('#' + divWrapper).show();
+                                $('#' + divCropButton).hide();
+                                $('#' + divPreview).attr('src', url);                                
+                                //$('[name=\''+fieldName+'\']')
+                            }
+                            break;
                     }
                 });
             }
@@ -315,7 +367,6 @@ $form->setDefaults($formDefaults);
 
 if ($form->validate()) {
     $params = $form->getSubmitValues();
-
     $name = $params['name'];
     $startDate = $params['access_start_date'];
     $endDate = $params['access_end_date'];
@@ -342,10 +393,33 @@ if ($form->validate()) {
         }
     }
 
-    if (isset($extraFields['extra_image']) && $isThisImageCropped) {
+    if (isset($extraFields['extra_image']) && !empty($extraFields['extra_image']['name']) && $isThisImageCropped) {
         $extraFields['extra_image']['crop_parameters'] = $params['picture_crop_result'];
     }
 
+    // Check if the session image will be copied from the template
+    $importImageFromSession = false;
+    $sessionIdToImport = explode('::', $params['extra_image_crop_result']);
+    $sessionIdToImport = isset($sessionIdToImport[1]) ? (int) $sessionIdToImport[1] : 0;
+    if (!empty($sessionIdToImport)) {
+        $extraField = new ExtraField('session');
+        $extraFieldInfo = $extraField->get_handler_field_info_by_field_variable('image');
+
+        $extraFieldValue = new ExtraFieldValue('session');
+        $extraFieldValueData = $extraFieldValue->get_values_by_handler_and_field_id(
+            $sessionIdToImport,
+            $extraFieldInfo['id']
+        );
+
+        if ($extraFieldValueData && file_exists($sysUploadPath.$extraFieldValueData['value'])) {
+            $extraFields['extra_image']['name'] = basename($extraFieldValueData['value']);
+            $extraFields['extra_image']['tmp_name'] = $sysUploadPath.$extraFieldValueData['value'];
+            $extraFields['extra_image']['type'] = 'image/png';
+            $extraFields['extra_image']['error'] = 0;
+            $extraFields['extra_image']['size'] = filesize($sysUploadPath.$extraFieldValueData['value']);
+        }
+    }
+
     $return = SessionManager::create_session(
         $name,
         $startDate,