Horde_Mapi_Timezone::getOffsetsFromSyncTZ PHP Method

getOffsetsFromSyncTZ() public static method

Convert a timezone from the MAPI base64 structure to a TZ offset hash.
public static getOffsetsFromSyncTZ ( $data ) : array
return array Hash of offset information
    public static function getOffsetsFromSyncTZ($data)
    {
        if (version_compare(PHP_VERSION, '5.5', '>=')) {
            $format = 'lbias/Z64stdname/vstdyear/vstdmonth/vstdday/vstdweek/vstdhour/vstdminute/vstdsecond/vstdmillis/' . 'lstdbias/Z64dstname/vdstyear/vdstmonth/vdstday/vdstweek/vdsthour/vdstminute/vdstsecond/vdstmillis/' . 'ldstbias';
        } else {
            $format = 'lbias/a64stdname/vstdyear/vstdmonth/vstdday/vstdweek/vstdhour/vstdminute/vstdsecond/vstdmillis/' . 'lstdbias/a64dstname/vdstyear/vdstmonth/vdstday/vdstweek/vdsthour/vdstminute/vdstsecond/vdstmillis/' . 'ldstbias';
        }
        $tz = unpack($format, base64_decode($data));
        $tz['timezone'] = $tz['bias'];
        $tz['timezonedst'] = $tz['dstbias'];
        if (!Horde_Mapi::isLittleEndian()) {
            $tz['bias'] = Horde_Mapi::chbo($tz['bias']);
            $tz['stdbias'] = Horde_Mapi::chbo($tz['stdbias']);
            $tz['dstbias'] = Horde_Mapi::chbo($tz['dstbias']);
        }
        return $tz;
    }

Usage Example

Example #1
0
 /**
  * Test building an Offset hash from a given ActiveSync style base64 encoded
  * timezone structure.
  */
 public function testOffsetsFromSyncTZ()
 {
     foreach ($this->_packed as $tz => $blob) {
         $offsets = Horde_Mapi_Timezone::getOffsetsFromSyncTZ($blob);
         foreach ($this->_offsets[$tz] as $key => $value) {
             $this->assertEquals($value, $offsets[$key]);
         }
     }
 }