function _duration_array( $duration ) {
    $output = array();
    if(    is_array( $duration )        &&
       ( 1 == count( $duration ))       &&
              isset( $duration['sec'] ) &&
              ( 60 < $duration['sec'] )) {
      $durseconds  = $duration['sec'];
      $output['week'] = floor( $durseconds / ( 60 * 60 * 24 * 7 ));
      $durseconds  =           $durseconds % ( 60 * 60 * 24 * 7 );
      $output['day']  = floor( $durseconds / ( 60 * 60 * 24 ));
      $durseconds  =           $durseconds % ( 60 * 60 * 24 );
      $output['hour'] = floor( $durseconds / ( 60 * 60 ));
      $durseconds  =           $durseconds % ( 60 * 60 );
      $output['min']  = floor( $durseconds / ( 60 ));
      $output['sec']  =      ( $durseconds % ( 60 ));
    }
    else {
      foreach( $duration as $durKey => $durValue ) {
        switch ( $durKey ) {
          case '0': case 'week': $output['week']  = $durValue; break;
          case '1': case 'day':  $output['day']   = $durValue; break;
          case '2': case 'hour': $output['hour']  = $durValue; break;
          case '3': case 'min':  $output['min']   = $durValue; break;
          case '4': case 'sec':  $output['sec']   = $durValue; break;
        }
      }
    }
    if( isset( $output['week'] ) && ( 0 < $output['week'] ))
      return $output;
    elseif (( isset( $output['hour'] ) && ( 0 < $output['hour'] )) ||
            ( isset( $output['min'] )  && ( 0 < $output['min']  )) ||
             (isset( $output['sec'] )  && ( 0 < $output['sec']  ))) {
      if( !isset( $output['hour'] ))
        $output['hour'] = 0;
      if( !isset( $output['min']  ))
        $output['min']  = 0;
      if( !isset( $output['sec']  ))
        $output['sec']  = 0;
    }
    return $output;
  }
function _duration_array( $duration ) {
    $output = array();
    if(    is_array( $duration )        &&
       ( 1 == count( $duration ))       &&
              isset( $duration['sec'] ) &&
              ( 60 < $duration['sec'] )) {
      $durseconds  = $duration['sec'];
      $output['week'] = floor( $durseconds / ( 60 * 60 * 24 * 7 ));
      $durseconds  =           $durseconds % ( 60 * 60 * 24 * 7 );
      $output['day']  = floor( $durseconds / ( 60 * 60 * 24 ));
      $durseconds  =           $durseconds % ( 60 * 60 * 24 );
      $output['hour'] = floor( $durseconds / ( 60 * 60 ));
      $durseconds  =           $durseconds % ( 60 * 60 );
      $output['min']  = floor( $durseconds / ( 60 ));
      $output['sec']  =      ( $durseconds % ( 60 ));
    }
    else {
      foreach( $duration as $durKey => $durValue ) {
        switch ( $durKey ) {
          case '0': case 'week': $output['week']  = $durValue; break;
          case '1': case 'day':  $output['day']   = $durValue; break;
          case '2': case 'hour': $output['hour']  = $durValue; break;
          case '3': case 'min':  $output['min']   = $durValue; break;
          case '4': case 'sec':  $output['sec']   = $durValue; break;
        }
      }
    }
    if( isset( $output['week'] ) && ( 0 < $output['week'] ))
      return $output;
    elseif (( isset( $output['hour'] ) && ( 0 < $output['hour'] )) ||
            ( isset( $output['min'] )  && ( 0 < $output['min']  )) ||
             (isset( $output['sec'] )  && ( 0 < $output['sec']  ))) {
      if( !isset( $output['hour'] ))
        $output['hour'] = 0;
      if( !isset( $output['min']  ))
        $output['min']  = 0;
      if( !isset( $output['sec']  ))
        $output['sec']  = 0;
    }
    return $output;
  }
function _duration_array ( $ duration ) { $ output = array ( ) ; if ( is_array ( $ duration ) && ( 1 == count ( $ duration ) ) && isset ( $ duration [ 'sec' ] ) && ( 60 < $ duration [ 'sec' ] ) ) { $ durseconds = $ duration [ 'sec' ] ; $ output [ 'week' ] = floor ( $ durseconds / ( 60 * 60 * 24 * 7 ) ) ; $ durseconds = $ durseconds % ( 60 * 60 * 24 * 7 ) ; $ output [ 'day' ] = floor ( $ durseconds / ( 60 * 60 * 24 ) ) ; $ durseconds = $ durseconds % ( 60 * 60 * 24 ) ; $ output [ 'hour' ] = floor ( $ durseconds / ( 60 * 60 ) ) ; $ durseconds = $ durseconds % ( 60 * 60 ) ; $ output [ 'min' ] = floor ( $ durseconds / ( 60 ) ) ; $ output [ 'sec' ] = ( $ durseconds % ( 60 ) ) ; } else { foreach ( $ duration as $ durKey => $ durValue ) { switch ( $ durKey ) { case '0' : case 'week' : $ output [ 'week' ] = $ durValue ; break ; case '1' : case 'day' : $ output [ 'day' ] = $ durValue ; break ; case '2' : case 'hour' : $ output [ 'hour' ] = $ durValue ; break ; case '3' : case 'min' : $ output [ 'min' ] = $ durValue ; break ; case '4' : case 'sec' : $ output [ 'sec' ] = $ durValue ; break ; } } } if ( isset ( $ output [ 'week' ] ) && ( 0 < $ output [ 'week' ] ) ) return $ output ; elseif ( ( isset ( $ output [ 'hour' ] ) && ( 0 < $ output [ 'hour' ] ) ) || ( isset ( $ output [ 'min' ] ) && ( 0 < $ output [ 'min' ] ) ) || ( isset ( $ output [ 'sec' ] ) && ( 0 < $ output [ 'sec' ] ) ) ) { if ( ! isset ( $ output [ 'hour' ] ) ) $ output [ 'hour' ] = 0 ; if ( ! isset ( $ output [ 'min' ] ) ) $ output [ 'min' ] = 0 ; if ( ! isset ( $ output [ 'sec' ] ) ) $ output [ 'sec' ] = 0 ; } return $ output ; }
ensures internal duration format for input in array format

@author Kjell-Inge Gustafsson <ical@kigkonsult.se>
@since 2.1.1 - 2007-06-24
@param array $duration
@return array
ensures internal duration format for input in array format