Public Member Functions

ilMDUtils Class Reference

Public Member Functions

 _LOMDurationToArray ($a_string)
 LOM datatype duration is a string like P2M4DT7H18M2S (2 months 4 days 7 hours 18 minutes 2 seconds) This function tries to parse a given string in an array of months, days, hours, minutes and seconds.

Detailed Description

Definition at line 32 of file class.ilMDUtils.php.


Member Function Documentation

ilMDUtils::_LOMDurationToArray ( a_string  ) 

LOM datatype duration is a string like P2M4DT7H18M2S (2 months 4 days 7 hours 18 minutes 2 seconds) This function tries to parse a given string in an array of months, days, hours, minutes and seconds.

Parameters:
string string to parse
Returns:
array e.g array(1,2,0,1,2) => 1 month,2 days, 0 hours, 1 minute, 2 seconds or false if not parsable

Definition at line 42 of file class.ilMDUtils.php.

Referenced by ilMDEducational::_getTypicalLearningTimeSeconds(), ilMDEducational::getTypicalLearningTimeSeconds(), ilMDEditorGUI::listEducational(), and ilMDEditorGUI::listQuickEdit().

        {
                $a_string = trim($a_string);
                #$pattern = '/^(PT)?(\d{1,2}H)?(\d{1,2}M)?(\d{1,2}S)?$/i';
                $pattern = '/^P(\d{1,2}M)?(\d{1,2}D)?(T(\d{1,2}H)?(\d{1,2}M)?(\d{1,2}S)?)?$/i';

                if(!preg_match($pattern,$a_string,$matches))
                {
                        return false;
                }
                // Month
                if(preg_match('/^P(\d+)M/i',$a_string,$matches))
                {
                        $months = $matches[1];
                }
                // Days
                if(preg_match('/(\d+)+D/i',$a_string,$matches))
                {
                        #var_dump("<pre>",$matches,"<pre>");
                        $days = $matches[1];
                }
                
                if(preg_match('/(\d+)+H/i',$a_string,$matches))
                {
                        #var_dump("<pre>",$matches,"<pre>");
                        $hours = $matches[1];
                }
                if(preg_match('/T(\d{1,2}H)?(\d+)M/i',$a_string,$matches))
                {
                        #var_dump("<pre>",$matches,"<pre>");
                        $min = $matches[2];
                }
                if(preg_match('/(\d+)S/i',$a_string,$matches))
                {
                        #var_dump("<pre>",$matches,"<pre>");
                        $sec = $matches[1];
                }
                
                // Hack for zero values
                if(!$months and !$days and !$hours and !$min and !$sec)
                {
                        return false;
                }
                
                return array($months,$days,$hours,$min,$sec);
        }

Here is the caller graph for this function:


The documentation for this class was generated from the following file: