本文整理汇总了PHP中getPropIdsFromStrings函数的典型用法代码示例。如果您正苦于以下问题:PHP getPropIdsFromStrings函数的具体用法?PHP getPropIdsFromStrings怎么用?PHP getPropIdsFromStrings使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了getPropIdsFromStrings函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: GetCalendarRestriction
public static function GetCalendarRestriction($store, $timestamp)
{
// This is our viewing window
$start = $timestamp;
$end = 0x7fffffff;
// infinite end
$props = MAPIMapping::GetAppointmentProperties();
$props = getPropIdsFromStrings($store, $props);
$restriction = array(RES_OR, array(array(RES_AND, array(array(RES_PROPERTY, array(RELOP => RELOP_LE, ULPROPTAG => $props["starttime"], VALUE => $end)), array(RES_PROPERTY, array(RELOP => RELOP_GE, ULPROPTAG => $props["endtime"], VALUE => $start)))), array(RES_OR, array(array(RES_AND, array(array(RES_EXIST, array(ULPROPTAG => $props["recurrenceend"])), array(RES_PROPERTY, array(RELOP => RELOP_EQ, ULPROPTAG => $props["isrecurring"], VALUE => true)), array(RES_PROPERTY, array(RELOP => RELOP_GE, ULPROPTAG => $props["recurrenceend"], VALUE => $start)))), array(RES_AND, array(array(RES_NOT, array(array(RES_EXIST, array(ULPROPTAG => $props["recurrenceend"])))), array(RES_PROPERTY, array(RELOP => RELOP_LE, ULPROPTAG => $props["starttime"], VALUE => $end)), array(RES_PROPERTY, array(RELOP => RELOP_EQ, ULPROPTAG => $props["isrecurring"], VALUE => true))))))));
// global OR
return $restriction;
}
示例2: TaskRecurrence
function TaskRecurrence($store, $message)
{
$this->store = $store;
$this->message = $message;
$properties = array();
$properties["entryid"] = PR_ENTRYID;
$properties["parent_entryid"] = PR_PARENT_ENTRYID;
$properties["icon_index"] = PR_ICON_INDEX;
$properties["message_class"] = PR_MESSAGE_CLASS;
$properties["message_flags"] = PR_MESSAGE_FLAGS;
$properties["subject"] = PR_SUBJECT;
$properties["importance"] = PR_IMPORTANCE;
$properties["sensitivity"] = PR_SENSITIVITY;
$properties["last_modification_time"] = PR_LAST_MODIFICATION_TIME;
$properties["status"] = "PT_LONG:PSETID_Task:0x8101";
$properties["percent_complete"] = "PT_DOUBLE:PSETID_Task:0x8102";
$properties["startdate"] = "PT_SYSTIME:PSETID_Task:0x8104";
$properties["duedate"] = "PT_SYSTIME:PSETID_Task:0x8105";
$properties["reset_reminder"] = "PT_BOOLEAN:PSETID_Task:0x8107";
$properties["dead_occurrence"] = "PT_BOOLEAN:PSETID_Task:0x8109";
$properties["datecompleted"] = "PT_SYSTIME:PSETID_Task:0x810f";
$properties["recurring_data"] = "PT_BINARY:PSETID_Task:0x8116";
$properties["actualwork"] = "PT_LONG:PSETID_Task:0x8110";
$properties["totalwork"] = "PT_LONG:PSETID_Task:0x8111";
$properties["complete"] = "PT_BOOLEAN:PSETID_Task:0x811c";
$properties["task_f_creator"] = "PT_BOOLEAN:PSETID_Task:0x811e";
$properties["owner"] = "PT_STRING8:PSETID_Task:0x811f";
$properties["recurring"] = "PT_BOOLEAN:PSETID_Task:0x8126";
$properties["reminder_minutes"] = "PT_LONG:PSETID_Common:0x8501";
$properties["reminder_time"] = "PT_SYSTIME:PSETID_Common:0x8502";
$properties["reminder"] = "PT_BOOLEAN:PSETID_Common:0x8503";
$properties["private"] = "PT_BOOLEAN:PSETID_Common:0x8506";
$properties["contacts"] = "PT_MV_STRING8:PSETID_Common:0x853a";
$properties["contacts_string"] = "PT_STRING8:PSETID_Common:0x8586";
$properties["categories"] = "PT_MV_STRING8:PS_PUBLIC_STRINGS:Keywords";
$properties["commonstart"] = "PT_SYSTIME:PSETID_Common:0x8516";
$properties["commonend"] = "PT_SYSTIME:PSETID_Common:0x8517";
$properties["commonassign"] = "PT_LONG:PSETID_Common:0x8518";
$properties["flagdueby"] = "PT_SYSTIME:PSETID_Common:0x8560";
$properties["side_effects"] = "PT_LONG:PSETID_Common:0x8510";
$properties["reminder"] = "PT_BOOLEAN:PSETID_Common:0x8503";
$properties["reminder_minutes"] = "PT_LONG:PSETID_Common:0x8501";
$this->proptags = getPropIdsFromStrings($store, $properties);
parent::BaseRecurrence($store, $message, $properties);
}
示例3: Recurrence
/**
* Constructor
* @param resource $store MAPI Message Store Object
* @param resource $message the MAPI (appointment) message
*/
function Recurrence($store, $message)
{
$properties = array();
$properties["entryid"] = PR_ENTRYID;
$properties["parent_entryid"] = PR_PARENT_ENTRYID;
$properties["message_class"] = PR_MESSAGE_CLASS;
$properties["icon_index"] = PR_ICON_INDEX;
$properties["subject"] = PR_SUBJECT;
$properties["display_to"] = PR_DISPLAY_TO;
$properties["importance"] = PR_IMPORTANCE;
$properties["sensitivity"] = PR_SENSITIVITY;
$properties["startdate"] = "PT_SYSTIME:PSETID_Appointment:0x820d";
$properties["duedate"] = "PT_SYSTIME:PSETID_Appointment:0x820e";
$properties["recurring"] = "PT_BOOLEAN:PSETID_Appointment:0x8223";
$properties["recurring_data"] = "PT_BINARY:PSETID_Appointment:0x8216";
$properties["busystatus"] = "PT_LONG:PSETID_Appointment:0x8205";
$properties["label"] = "PT_LONG:PSETID_Appointment:0x8214";
$properties["alldayevent"] = "PT_BOOLEAN:PSETID_Appointment:0x8215";
$properties["private"] = "PT_BOOLEAN:PSETID_Common:0x8506";
$properties["meeting"] = "PT_LONG:PSETID_Appointment:0x8217";
$properties["startdate_recurring"] = "PT_SYSTIME:PSETID_Appointment:0x8235";
$properties["enddate_recurring"] = "PT_SYSTIME:PSETID_Appointment:0x8236";
$properties["recurring_pattern"] = "PT_STRING8:PSETID_Appointment:0x8232";
$properties["location"] = "PT_STRING8:PSETID_Appointment:0x8208";
$properties["duration"] = "PT_LONG:PSETID_Appointment:0x8213";
$properties["responsestatus"] = "PT_LONG:PSETID_Appointment:0x8218";
$properties["reminder"] = "PT_BOOLEAN:PSETID_Common:0x8503";
$properties["reminder_minutes"] = "PT_LONG:PSETID_Common:0x8501";
$properties["recurrencetype"] = "PT_LONG:PSETID_Appointment:0x8231";
$properties["contacts"] = "PT_MV_STRING8:PSETID_Common:0x853a";
$properties["contacts_string"] = "PT_STRING8:PSETID_Common:0x8586";
$properties["categories"] = "PT_MV_STRING8:PS_PUBLIC_STRINGS:Keywords";
$properties["reminder_time"] = "PT_SYSTIME:PSETID_Common:0x8502";
$properties["commonstart"] = "PT_SYSTIME:PSETID_Common:0x8516";
$properties["commonend"] = "PT_SYSTIME:PSETID_Common:0x8517";
$properties["basedate"] = "PT_SYSTIME:PSETID_Appointment:0x8228";
$properties["timezone_data"] = "PT_BINARY:PSETID_Appointment:0x8233";
$properties["timezone"] = "PT_STRING8:PSETID_Appointment:0x8234";
$properties["flagdueby"] = "PT_SYSTIME:PSETID_Common:0x8560";
$properties["side_effects"] = "PT_LONG:PSETID_Common:0x8510";
$properties["hideattachments"] = "PT_BOOLEAN:PSETID_Common:0x8514";
$this->proptags = getPropIdsFromStrings($store, $properties);
parent::BaseRecurrence($store, $message);
}
示例4: __construct
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
// send Z-Push version and user agent to ZCP >7.2.0
if ($this->checkMapiExtVersion('7.2.0')) {
$this->session = mapi_logon_zarafa(USERNAME, PASSWORD, SERVER, CERTIFICATE, CERTIFICATE_PASSWORD, 0, self::VERSION, self::NAME . " " . self::VERSION);
} else {
$this->session = mapi_logon_zarafa(USERNAME, PASSWORD, SERVER, CERTIFICATE, CERTIFICATE_PASSWORD, 0);
}
if (mapi_last_hresult()) {
$this->Terminate(sprintf("Kopano: login failed with error code: 0x%08X", mapi_last_hresult()));
}
$this->mainUser = USERNAME;
$this->targetStore = HIDDEN_FOLDERSTORE;
$this->defaultstore = $this->openMessageStore($this->mainUser);
$this->store = $this->openMessageStore(HIDDEN_FOLDERSTORE);
$this->folderCache = array();
$this->storeCache = array();
$this->mapiprops = array("chunktype" => "PT_STRING8:PSETID_Appointment:0x6822", "chunkCRC" => "PT_STRING8:PSETID_Appointment:0x8208", "createtime" => "PT_SYSTIME:PSETID_Appointment:0x820d", "updatetime" => "PT_SYSTIME:PSETID_Appointment:0x820e", "reminderset" => "PT_BOOLEAN:PSETID_Common:0x8503", "isrecurring" => "PT_BOOLEAN:PSETID_Appointment:0x8223", "busystatus" => "PT_LONG:PSETID_Appointment:0x8205");
$this->mapiprops = getPropIdsFromStrings($this->store, $this->mapiprops);
}
示例5: FreeBusyPublish
/**
* Constuctor
*
* @param mapi_session $session MAPI Session
* @param mapi_folder $calendar Calendar to publish
* @param string $entryid AddressBook Entry ID for the user we're publishing for
*/
function FreeBusyPublish($session, $store, $calendar, $entryid)
{
$properties["entryid"] = PR_ENTRYID;
$properties["parent_entryid"] = PR_PARENT_ENTRYID;
$properties["message_class"] = PR_MESSAGE_CLASS;
$properties["icon_index"] = PR_ICON_INDEX;
$properties["subject"] = PR_SUBJECT;
$properties["display_to"] = PR_DISPLAY_TO;
$properties["importance"] = PR_IMPORTANCE;
$properties["sensitivity"] = PR_SENSITIVITY;
$properties["startdate"] = "PT_SYSTIME:PSETID_Appointment:0x820d";
$properties["duedate"] = "PT_SYSTIME:PSETID_Appointment:0x820e";
$properties["recurring"] = "PT_BOOLEAN:PSETID_Appointment:0x8223";
$properties["recurring_data"] = "PT_BINARY:PSETID_Appointment:0x8216";
$properties["busystatus"] = "PT_LONG:PSETID_Appointment:0x8205";
$properties["label"] = "PT_LONG:PSETID_Appointment:0x8214";
$properties["alldayevent"] = "PT_BOOLEAN:PSETID_Appointment:0x8215";
$properties["private"] = "PT_BOOLEAN:PSETID_Common:0x8506";
$properties["meeting"] = "PT_LONG:PSETID_Appointment:0x8217";
$properties["startdate_recurring"] = "PT_SYSTIME:PSETID_Appointment:0x8235";
$properties["enddate_recurring"] = "PT_SYSTIME:PSETID_Appointment:0x8236";
$properties["location"] = "PT_STRING8:PSETID_Appointment:0x8208";
$properties["duration"] = "PT_LONG:PSETID_Appointment:0x8213";
$properties["responsestatus"] = "PT_LONG:PSETID_Appointment:0x8218";
$properties["reminder"] = "PT_BOOLEAN:PSETID_Common:0x8503";
$properties["reminder_minutes"] = "PT_LONG:PSETID_Common:0x8501";
$properties["contacts"] = "PT_MV_STRING8:PSETID_Common:0x853a";
$properties["contacts_string"] = "PT_STRING8:PSETID_Common:0x8586";
$properties["categories"] = "PT_MV_STRING8:PS_PUBLIC_STRINGS:Keywords";
$properties["reminder_time"] = "PT_SYSTIME:PSETID_Common:0x8502";
$properties["commonstart"] = "PT_SYSTIME:PSETID_Common:0x8516";
$properties["commonend"] = "PT_SYSTIME:PSETID_Common:0x8517";
$properties["basedate"] = "PT_SYSTIME:PSETID_Appointment:0x8228";
$properties["timezone_data"] = "PT_BINARY:PSETID_Appointment:0x8233";
$this->proptags = getPropIdsFromStrings($store, $properties);
$this->session = $session;
$this->calendar = $calendar;
$this->entryid = $entryid;
$this->store = $store;
}
示例6: IsInCalendarSyncInterval
/**
* Checks if mapimessage is inside the synchronization interval
* also defined by MAPIUtils::GetCalendarRestriction()
*
* @param MAPIStore $store mapi store
* @param MAPIMessage $mapimessage the mapi message to be checked
* @param long $timestamp the lower time limit
*
* @access public
* @return boolean
*/
public static function IsInCalendarSyncInterval($store, $mapimessage, $timestamp)
{
// This is our viewing window
$start = $timestamp;
$end = 0x7fffffff;
// infinite end
$props = MAPIMapping::GetAppointmentProperties();
$props = getPropIdsFromStrings($store, $props);
$p = mapi_getprops($mapimessage, array($props["starttime"], $props["endtime"], $props["recurrenceend"], $props["isrecurring"], $props["recurrenceend"]));
if (isset($p[$props["endtime"]]) && isset($p[$props["starttime"]]) && $p[$props["endtime"]] > $start && $p[$props["starttime"]] < $end || isset($p[$props["isrecurring"]]) && isset($p[$props["recurrenceend"]]) && $p[$props["isrecurring"]] == true && $p[$props["recurrenceend"]] >= $start || isset($p[$props["isrecurring"]]) && isset($p[$props["starttime"]]) && !isset($p[$props["recurrenceend"]]) && $p[$props["isrecurring"]] == true && $p[$props["starttime"]] <= $end) {
ZLog::Write(LOGLEVEL_DEBUG, "MAPIUtils->IsInCalendarSyncInterval: Message is in the synchronization interval");
return true;
}
ZLog::Write(LOGLEVEL_WARN, "MAPIUtils->IsInCalendarSyncInterval: Message is OUTSIDE the synchronization interval");
return false;
}
示例7: getContactProperties
function getContactProperties($mystore)
{
$properties = array("entryid" => PR_ENTRYID, "body" => PR_BODY, "anniversary" => PR_WEDDING_ANNIVERSARY, "assistantname" => PR_ASSISTANT, "assistnamephonenumber" => PR_ASSISTANT_TELEPHONE_NUMBER, "birthday" => PR_BIRTHDAY, "businessphonenumber" => PR_OFFICE_TELEPHONE_NUMBER, "business2phonenumber" => PR_BUSINESS2_TELEPHONE_NUMBER, "businessfaxnumber" => PR_BUSINESS_FAX_NUMBER, "carphonenumber" => PR_CAR_TELEPHONE_NUMBER, "categories" => "PT_MV_STRING8:{00020329-0000-0000-C000-000000000046}:Keywords", "companyname" => PR_COMPANY_NAME, "department" => PR_DEPARTMENT_NAME, "displayname" => PR_DISPLAY_NAME, "email1address" => "PT_STRING8:{00062004-0000-0000-C000-000000000046}:0x8083", "email2address" => "PT_STRING8:{00062004-0000-0000-C000-000000000046}:0x8093", "email3address" => "PT_STRING8:{00062004-0000-0000-C000-000000000046}:0x80A3", "fileas" => "PT_STRING8:{00062004-0000-0000-C000-000000000046}:0x8005", "firstname" => PR_GIVEN_NAME, "home2phonenumber" => PR_HOME2_TELEPHONE_NUMBER, "homecity" => PR_HOME_ADDRESS_CITY, "homecountry" => PR_HOME_ADDRESS_COUNTRY, "homepostalcode" => PR_HOME_ADDRESS_POSTAL_CODE, "homestate" => PR_HOME_ADDRESS_STATE_OR_PROVINCE, "homestreet" => PR_HOME_ADDRESS_STREET, "homefaxnumber" => PR_HOME_FAX_NUMBER, "homephonenumber" => PR_HOME_TELEPHONE_NUMBER, "jobtitle" => PR_PROFESSION, "lastname" => PR_SURNAME, "mailingaddresstype" => "PT_LONG:{00062004-0000-0000-C000-000000000046}:0x8022", "middlename" => PR_MIDDLE_NAME, "mobilephonenumber" => PR_CELLULAR_TELEPHONE_NUMBER, "othercity" => PR_OTHER_ADDRESS_CITY, "othercountry" => PR_OTHER_ADDRESS_COUNTRY, "otherpostalcode" => PR_OTHER_ADDRESS_POSTAL_CODE, "otherstate" => PR_OTHER_ADDRESS_STATE_OR_PROVINCE, "otherstreet" => PR_OTHER_ADDRESS_STREET, "pagernumber" => PR_PAGER_TELEPHONE_NUMBER, "private" => "PT_BOOLEAN:{00062008-0000-0000-C000-000000000046}:0x8506", "radiophonenumber" => PR_RADIO_TELEPHONE_NUMBER, "salutation" => PR_DISPLAY_NAME_PREFIX, "spouse" => PR_SPOUSE_NAME, "suffix" => PR_GENERATION, "title" => PR_TITLE, "webpage" => PR_BUSINESS_HOME_PAGE, "webpage" => "PT_STRING8:{00062004-0000-0000-C000-000000000046}:0x802B", "homeaddress" => "PT_STRING8:{00062004-0000-0000-C000-000000000046}:0x801A", "businessaddress" => "PT_STRING8:{00062004-0000-0000-C000-000000000046}:0x801B", "otheraddress" => "PT_STRING8:{00062004-0000-0000-C000-000000000046}:0x801C", "businessstreet" => "PT_STRING8:{00062004-0000-0000-C000-000000000046}:0x8045", "businesscity" => "PT_STRING8:{00062004-0000-0000-C000-000000000046}:0x8046", "businessstate" => "PT_STRING8:{00062004-0000-0000-C000-000000000046}:0x8047", "businesspostalcode" => "PT_STRING8:{00062004-0000-0000-C000-000000000046}:0x8048", "businesscountry" => "PT_STRING8:{00062004-0000-0000-C000-000000000046}:0x8049", "imaddress" => "PT_STRING8:{00062004-0000-0000-C000-000000000046}:0x8062", "lastmodificationtime" => PR_LAST_MODIFICATION_TIME, "sourcekey" => PR_SOURCE_KEY, "deleted" => MAPI_ACCESS_DELETE);
return getPropIdsFromStrings($mystore, $properties);
}
示例8: Meetingrequest
/**
* Constructor
*
* Takes a store and a message. The message is an appointment item
* that should be converted into a meeting request or an incoming
* e-mail message that is a meeting request.
*
* The $session variable is optional, but required if the following features
* are to be used:
*
* - Sending meeting requests for meetings that are not in your own store
* - Sending meeting requests to resources, resource availability checking and resource freebusy updates
*/
function Meetingrequest($store, $message, $session = false, $enableDirectBooking = true)
{
$this->store = $store;
$this->message = $message;
$this->session = $session;
// This variable string saves time information for the MR.
$this->meetingTimeInfo = false;
$this->enableDirectBooking = $enableDirectBooking;
$properties['goid'] = 'PT_BINARY:PSETID_Meeting:0x3';
$properties['goid2'] = 'PT_BINARY:PSETID_Meeting:0x23';
$properties['type'] = 'PT_STRING8:PSETID_Meeting:0x24';
$properties['meetingrecurring'] = 'PT_BOOLEAN:PSETID_Meeting:0x5';
$properties['unknown2'] = 'PT_BOOLEAN:PSETID_Meeting:0xa';
$properties['attendee_critical_change'] = 'PT_SYSTIME:PSETID_Meeting:0x1';
$properties['owner_critical_change'] = 'PT_SYSTIME:PSETID_Meeting:0x1a';
$properties['meetingstatus'] = 'PT_LONG:PSETID_Appointment:0x8217';
$properties['responsestatus'] = 'PT_LONG:PSETID_Appointment:0x8218';
$properties['unknown6'] = 'PT_LONG:PSETID_Meeting:0x4';
$properties['replytime'] = 'PT_SYSTIME:PSETID_Appointment:0x8220';
$properties['usetnef'] = 'PT_BOOLEAN:PSETID_Common:0x8582';
$properties['recurrence_data'] = 'PT_BINARY:PSETID_Appointment:0x8216';
$properties['reminderminutes'] = 'PT_LONG:PSETID_Common:0x8501';
$properties['reminderset'] = 'PT_BOOLEAN:PSETID_Common:0x8503';
$properties['sendasical'] = 'PT_BOOLEAN:PSETID_Appointment:0x8200';
$properties['updatecounter'] = 'PT_LONG:PSETID_Appointment:0x8201';
// AppointmentSequenceNumber
$properties['last_updatecounter'] = 'PT_LONG:PSETID_Appointment:0x8203';
// AppointmentLastSequence
$properties['unknown7'] = 'PT_LONG:PSETID_Appointment:0x8202';
$properties['busystatus'] = 'PT_LONG:PSETID_Appointment:0x8205';
$properties['intendedbusystatus'] = 'PT_LONG:PSETID_Appointment:0x8224';
$properties['start'] = 'PT_SYSTIME:PSETID_Appointment:0x820d';
$properties['responselocation'] = 'PT_STRING8:PSETID_Meeting:0x2';
$properties['location'] = 'PT_STRING8:PSETID_Appointment:0x8208';
$properties['requestsent'] = 'PT_BOOLEAN:PSETID_Appointment:0x8229';
// PidLidFInvited, MeetingRequestWasSent
$properties['startdate'] = 'PT_SYSTIME:PSETID_Appointment:0x820d';
$properties['duedate'] = 'PT_SYSTIME:PSETID_Appointment:0x820e';
$properties["flagdueby"] = "PT_SYSTIME:PSETID_Common:0x8560";
$properties['commonstart'] = 'PT_SYSTIME:PSETID_Common:0x8516';
$properties['commonend'] = 'PT_SYSTIME:PSETID_Common:0x8517';
$properties['recurring'] = 'PT_BOOLEAN:PSETID_Appointment:0x8223';
$properties['clipstart'] = 'PT_SYSTIME:PSETID_Appointment:0x8235';
$properties['clipend'] = 'PT_SYSTIME:PSETID_Appointment:0x8236';
$properties['start_recur_date'] = 'PT_LONG:PSETID_Meeting:0xD';
// StartRecurTime
$properties['start_recur_time'] = 'PT_LONG:PSETID_Meeting:0xE';
// StartRecurTime
$properties['end_recur_date'] = 'PT_LONG:PSETID_Meeting:0xF';
// EndRecurDate
$properties['end_recur_time'] = 'PT_LONG:PSETID_Meeting:0x10';
// EndRecurTime
$properties['is_exception'] = 'PT_BOOLEAN:PSETID_Meeting:0xA';
// LID_IS_EXCEPTION
$properties['apptreplyname'] = 'PT_STRING8:PSETID_Appointment:0x8230';
// Propose new time properties
$properties['proposed_start_whole'] = 'PT_SYSTIME:PSETID_Appointment:0x8250';
$properties['proposed_end_whole'] = 'PT_SYSTIME:PSETID_Appointment:0x8251';
$properties['proposed_duration'] = 'PT_LONG:PSETID_Appointment:0x8256';
$properties['counter_proposal'] = 'PT_BOOLEAN:PSETID_Appointment:0x8257';
$properties['recurring_pattern'] = 'PT_STRING8:PSETID_Appointment:0x8232';
$properties['basedate'] = 'PT_SYSTIME:PSETID_Appointment:0x8228';
$properties['meetingtype'] = 'PT_LONG:PSETID_Meeting:0x26';
$properties['timezone_data'] = 'PT_BINARY:PSETID_Appointment:0x8233';
$properties['timezone'] = 'PT_STRING8:PSETID_Appointment:0x8234';
$properties['toattendeesstring'] = 'PT_STRING8:PSETID_Appointment:0x823B';
$properties['ccattendeesstring'] = 'PT_STRING8:PSETID_Appointment:0x823C';
$this->proptags = getPropIdsFromStrings($store, $properties);
}
示例9: MeetingResponse
/**
* Processes a response to a meeting request.
* CalendarID is a reference and has to be set if a new calendar item is created
*
* @param string $requestid id of the object containing the request
* @param string $folderid id of the parent folder of $requestid
* @param string $response
*
* @access public
* @return string id of the created/updated calendar obj
* @throws StatusException
*/
public function MeetingResponse($requestid, $folderid, $response)
{
// Use standard meeting response code to process meeting request
$reqentryid = mapi_msgstore_entryidfromsourcekey($this->store, hex2bin($folderid), hex2bin($requestid));
if (!$reqentryid) {
throw new StatusException(sprintf("BackendZarafa->MeetingResponse('%s', '%s', '%s'): Error, unable to entryid of the message 0x%X", $requestid, $folderid, $response, mapi_last_hresult()), SYNC_MEETRESPSTATUS_INVALIDMEETREQ);
}
$mapimessage = mapi_msgstore_openentry($this->store, $reqentryid);
if (!$mapimessage) {
throw new StatusException(sprintf("BackendZarafa->MeetingResponse('%s','%s', '%s'): Error, unable to open request message for response 0x%X", $requestid, $folderid, $response, mapi_last_hresult()), SYNC_MEETRESPSTATUS_INVALIDMEETREQ);
}
$meetingrequest = new Meetingrequest($this->store, $mapimessage);
if (!$meetingrequest->isMeetingRequest()) {
throw new StatusException(sprintf("BackendZarafa->MeetingResponse('%s','%s', '%s'): Error, attempt to respond to non-meeting request", $requestid, $folderid, $response), SYNC_MEETRESPSTATUS_INVALIDMEETREQ);
}
if ($meetingrequest->isLocalOrganiser()) {
throw new StatusException(sprintf("BackendZarafa->MeetingResponse('%s','%s', '%s'): Error, attempt to response to meeting request that we organized", $requestid, $folderid, $response), SYNC_MEETRESPSTATUS_INVALIDMEETREQ);
}
// Process the meeting response. We don't have to send the actual meeting response
// e-mail, because the device will send it itself.
switch ($response) {
case 1:
// accept
// accept
default:
$entryid = $meetingrequest->doAccept(false, false, false, false, false, false, true);
// last true is the $userAction
break;
case 2:
// tentative
$entryid = $meetingrequest->doAccept(true, false, false, false, false, false, true);
// last true is the $userAction
break;
case 3:
// decline
$meetingrequest->doDecline(false);
break;
}
// F/B will be updated on logoff
// We have to return the ID of the new calendar item, so do that here
$calendarid = "";
if (isset($entryid)) {
$newitem = mapi_msgstore_openentry($this->store, $entryid);
$newprops = mapi_getprops($newitem, array(PR_SOURCE_KEY));
$calendarid = bin2hex($newprops[PR_SOURCE_KEY]);
}
// on recurring items, the MeetingRequest class responds with a wrong entryid
if ($requestid == $calendarid) {
ZLog::Write(LOGLEVEL_DEBUG, sprintf("BackendZarafa->MeetingResponse('%s','%s', '%s'): returned calender id is the same as the requestid - re-searching", $requestid, $folderid, $response));
$props = MAPIMapping::GetMeetingRequestProperties();
$props = getPropIdsFromStrings($this->store, $props);
$messageprops = mapi_getprops($mapimessage, array($props["goidtag"]));
$goid = $messageprops[$props["goidtag"]];
$items = $meetingrequest->findCalendarItems($goid);
if (is_array($items)) {
$newitem = mapi_msgstore_openentry($this->store, $items[0]);
$newprops = mapi_getprops($newitem, array(PR_SOURCE_KEY));
$calendarid = bin2hex($newprops[PR_SOURCE_KEY]);
ZLog::Write(LOGLEVEL_DEBUG, sprintf("BackendZarafa->MeetingResponse('%s','%s', '%s'): found other calendar entryid", $requestid, $folderid, $response));
}
if ($requestid == $calendarid) {
throw new StatusException(sprintf("BackendZarafa->MeetingResponse('%s','%s', '%s'): Error finding the accepted meeting response in the calendar", $requestid, $folderid, $response), SYNC_MEETRESPSTATUS_INVALIDMEETREQ);
}
}
// delete meeting request from Inbox
$folderentryid = mapi_msgstore_entryidfromsourcekey($this->store, hex2bin($folderid));
$folder = mapi_msgstore_openentry($this->store, $folderentryid);
mapi_folder_deletemessages($folder, array($reqentryid), 0);
return $calendarid;
}
示例10: _handleRecurringItem
function _handleRecurringItem(&$mapimessage, &$mapiprops)
{
$props = array();
//set isRecurring flag to true
$props[0] = "PT_BOOLEAN:{00062002-0000-0000-C000-000000000046}:0x8223";
// Set named prop 8510, unknown property, but enables deleting a single occurrence of a recurring type in OLK2003.
$props[1] = "PT_LONG:{00062008-0000-0000-C000-000000000046}:0x8510";
//goid and goid2 from tnef
$props[2] = "PT_BINARY:{6ED8DA90-450B-101B-98DA-00AA003F1305}:0x3";
$props[3] = "PT_BINARY:{6ED8DA90-450B-101B-98DA-00AA003F1305}:0x23";
$props[4] = "PT_STRING8:{6ED8DA90-450B-101B-98DA-00AA003F1305}:0x24";
//type
$props[5] = "PT_LONG:{00062002-0000-0000-C000-000000000046}:0x8205";
//busystatus
$props[6] = "PT_LONG:{00062002-0000-0000-C000-000000000046}:0x8217";
//meeting status
$props[7] = "PT_LONG:{00062002-0000-0000-C000-000000000046}:0x8218";
//response status
$props[8] = "PT_BOOLEAN:{00062008-0000-0000-C000-000000000046}:0x8582";
$props[9] = "PT_BOOLEAN:{6ED8DA90-450B-101B-98DA-00AA003F1305}:0xa";
//is exception
$props[10] = "PT_I2:{6ED8DA90-450B-101B-98DA-00AA003F1305}:0x11";
//day interval
$props[11] = "PT_I2:{6ED8DA90-450B-101B-98DA-00AA003F1305}:0x12";
//week interval
$props[12] = "PT_I2:{6ED8DA90-450B-101B-98DA-00AA003F1305}:0x13";
//month interval
$props[13] = "PT_I2:{6ED8DA90-450B-101B-98DA-00AA003F1305}:0x14";
//year interval
$props = getPropIdsFromStrings($this->_defaultstore, $props);
$mapiprops[$props[0]] = true;
$mapiprops[$props[1]] = 369;
//both goids have the same value
$mapiprops[$props[3]] = $mapiprops[$props[2]];
$mapiprops[$props[4]] = "IPM.Appointment";
$mapiprops[$props[5]] = 1;
//tentative
$mapiprops[PR_RESPONSE_REQUESTED] = true;
$mapiprops[PR_ICON_INDEX] = 1027;
$mapiprops[$props[6]] = olMeetingReceived;
// The recipient is receiving the request
$mapiprops[$props[7]] = olResponseNotResponded;
$mapiprops[$props[8]] = true;
}
示例11: getCalendarItems
/**
* Note: Static function, more like a utility function.
*
* Gets all the items (including recurring items) in the specified calendar in the given timeframe. Items are
* included as a whole if they overlap the interval <$start, $end> (non-inclusive). This means that if the interval
* is <08:00 - 14:00>, the item [6:00 - 8:00> is NOT included, nor is the item [14:00 - 16:00>. However, the item
* [7:00 - 9:00> is included as a whole, and is NOT capped to [8:00 - 9:00>.
*
* @param $store resource The store in which the calendar resides
* @param $calendar resource The calendar to get the items from
* @param $viewstart int Timestamp of beginning of view window
* @param $viewend int Timestamp of end of view window
* @param $propsrequested array Array of properties to return
* @param $rows array Array of rowdata as if they were returned directly from mapi_table_queryrows. Each recurring item is
* expanded so that it seems that there are only many single appointments in the table.
*/
function getCalendarItems($store, $calendar, $viewstart, $viewend, $propsrequested)
{
$result = array();
$properties = getPropIdsFromStrings($store, array("duedate" => "PT_SYSTIME:PSETID_Appointment:0x820e", "startdate" => "PT_SYSTIME:PSETID_Appointment:0x820d", "enddate_recurring" => "PT_SYSTIME:PSETID_Appointment:0x8236", "recurring" => "PT_BOOLEAN:PSETID_Appointment:0x8223", "recurring_data" => "PT_BINARY:PSETID_Appointment:0x8216", "timezone_data" => "PT_BINARY:PSETID_Appointment:0x8233", "label" => "PT_LONG:PSETID_Appointment:0x8214"));
// Create a restriction that will discard rows of appointments that are definitely not in our
// requested time frame
$table = mapi_folder_getcontentstable($calendar);
$restriction = array(RES_OR, array(array(RES_AND, array(array(RES_PROPERTY, array(RELOP => RELOP_GT, ULPROPTAG => $properties["duedate"], VALUE => $viewstart)), array(RES_PROPERTY, array(RELOP => RELOP_LT, ULPROPTAG => $properties["startdate"], VALUE => $viewend)))), array(RES_PROPERTY, array(RELOP => RELOP_EQ, ULPROPTAG => $properties["recurring"], VALUE => true))));
// global OR
// Get requested properties, plus whatever we need
$proplist = array(PR_ENTRYID, $properties["recurring"], $properties["recurring_data"], $properties["timezone_data"]);
$proplist = array_merge($proplist, $propsrequested);
$propslist = array_unique($proplist);
$rows = mapi_table_queryallrows($table, $proplist, $restriction);
// $rows now contains all the items that MAY be in the window; a recurring item needs expansion before including in the output.
foreach ($rows as $row) {
$items = array();
if (isset($row[$properties["recurring"]]) && $row[$properties["recurring"]]) {
// Recurring item
$rec = new Recurrence($store, $row);
// GetItems guarantees that the item overlaps the interval <$viewstart, $viewend>
$occurrences = $rec->getItems($viewstart, $viewend);
foreach ($occurrences as $occurrence) {
// The occurrence takes all properties from the main row, but overrides some properties (like start and end obviously)
$item = $occurrence + $row;
array_push($items, $item);
}
} else {
// Normal item, it matched the search criteria and therefore overlaps the interval <$viewstart, $viewend>
array_push($items, $row);
}
$result = array_merge($result, $items);
}
// All items are guaranteed to overlap the interval <$viewstart, $viewend>. Note that we may be returning a few extra
// properties that the caller did not request (recurring, etc). This shouldn't be a problem though.
return $result;
}
示例12: mapi_msgstore_openentry
$root = mapi_msgstore_openentry($store, null);
$rootProps = mapi_getprops($root, array(PR_IPM_CONTACT_ENTRYID));
$folder = mapi_msgstore_openentry($store, $rootProps[PR_IPM_CONTACT_ENTRYID]);
isUnicodeStore($store);
// open the csv file and start reading
$fh = fopen($csv_file, "r");
if (!$fh) {
trigger_error("Can't open CSV file \"" . $csv_file . "\"", E_USER_ERROR);
}
// empty folder if needed
if (EMPTY_FOLDER) {
mapi_folder_emptyfolder($folder, DEL_ASSOCIATED);
}
$properties = array();
loadProperties($properties);
$properties = getPropIdsFromStrings($store, $properties);
//composed properties which require more work
$special_properties = array("email_address_1", "email_address_2", "email_address_3");
$i = 1;
while (!feof($fh)) {
$line = fgetcsv($fh, CSV_MAX_LENGTH, CSV_DELIMITER, CSV_ENCLOSURE);
if (!$line) {
continue;
}
if ($i == 1 && defined('FIELD_NAMES') && FIELD_NAMES) {
$i++;
continue;
}
$props = array();
//set "simple" properties
foreach ($csv_mapping as $property => $cnt) {
示例13: initProperties
//.........这里部分代码省略.........
$properties["email_address_display_name_2"] = "PT_STRING8:PSETID_Address:0x8090";
$properties["email_address_display_name_email_2"] = "PT_STRING8:PSETID_Address:0x8094";
$properties["email_address_type_2"] = "PT_STRING8:PSETID_Address:0x8092";
$properties["email_address_3"] = "PT_STRING8:PSETID_Address:0x80a3";
$properties["email_address_display_name_3"] = "PT_STRING8:PSETID_Address:0x80a0";
$properties["email_address_display_name_email_3"] = "PT_STRING8:PSETID_Address:0x80a4";
$properties["email_address_type_3"] = "PT_STRING8:PSETID_Address:0x80a2";
$properties["home_address"] = "PT_STRING8:PSETID_Address:0x801a";
$properties["business_address"] = "PT_STRING8:PSETID_Address:0x801b";
$properties["other_address"] = "PT_STRING8:PSETID_Address:0x801c";
$properties["mailing_address"] = "PT_LONG:PSETID_Address:0x8022";
$properties["im"] = "PT_STRING8:PSETID_Address:0x8062";
$properties["webpage"] = "PT_STRING8:PSETID_Address:0x802b";
$properties["business_home_page"] = PR_BUSINESS_HOME_PAGE;
$properties["email_address_entryid_1"] = "PT_BINARY:PSETID_Address:0x8085";
$properties["email_address_entryid_2"] = "PT_BINARY:PSETID_Address:0x8095";
$properties["email_address_entryid_3"] = "PT_BINARY:PSETID_Address:0x80a5";
$properties["address_book_mv"] = "PT_MV_LONG:PSETID_Address:0x8028";
$properties["address_book_long"] = "PT_LONG:PSETID_Address:0x8029";
$properties["oneoff_members"] = "PT_MV_BINARY:PSETID_Address:0x8054";
$properties["members"] = "PT_MV_BINARY:PSETID_Address:0x8055";
$properties["private"] = "PT_BOOLEAN:PSETID_Common:0x8506";
$properties["contacts"] = "PT_MV_STRING8:PSETID_Common:0x853a";
$properties["contacts_string"] = "PT_STRING8:PSETID_Common:0x8586";
$properties["categories"] = "PT_MV_STRING8:PS_PUBLIC_STRINGS:Keywords";
$properties["last_modification_time"] = PR_LAST_MODIFICATION_TIME;
// Detailed contacts properties
// Properties for phone numbers
$properties["assistant_telephone_number"] = PR_ASSISTANT_TELEPHONE_NUMBER;
$properties["business2_telephone_number"] = PR_BUSINESS2_TELEPHONE_NUMBER;
$properties["callback_telephone_number"] = PR_CALLBACK_TELEPHONE_NUMBER;
$properties["car_telephone_number"] = PR_CAR_TELEPHONE_NUMBER;
$properties["company_telephone_number"] = PR_COMPANY_MAIN_PHONE_NUMBER;
$properties["home2_telephone_number"] = PR_HOME2_TELEPHONE_NUMBER;
$properties["home_fax_number"] = PR_HOME_FAX_NUMBER;
$properties["isdn_number"] = PR_ISDN_NUMBER;
$properties["other_telephone_number"] = PR_OTHER_TELEPHONE_NUMBER;
$properties["pager_telephone_number"] = PR_PAGER_TELEPHONE_NUMBER;
$properties["primary_fax_number"] = PR_PRIMARY_FAX_NUMBER;
$properties["primary_telephone_number"] = PR_PRIMARY_TELEPHONE_NUMBER;
$properties["radio_telephone_number"] = PR_RADIO_TELEPHONE_NUMBER;
$properties["telex_telephone_number"] = PR_TELEX_NUMBER;
$properties["ttytdd_telephone_number"] = PR_TTYTDD_PHONE_NUMBER;
// Additional fax properties
$properties["fax_1_address_type"] = "PT_STRING8:PSETID_Address:0x80B2";
$properties["fax_1_email_address"] = "PT_STRING8:PSETID_Address:0x80B3";
$properties["fax_1_original_display_name"] = "PT_STRING8:PSETID_Address:0x80B4";
$properties["fax_1_original_entryid"] = "PT_BINARY:PSETID_Address:0x80B5";
$properties["fax_2_address_type"] = "PT_STRING8:PSETID_Address:0x80C2";
$properties["fax_2_email_address"] = "PT_STRING8:PSETID_Address:0x80C3";
$properties["fax_2_original_display_name"] = "PT_STRING8:PSETID_Address:0x80C4";
$properties["fax_2_original_entryid"] = "PT_BINARY:PSETID_Address:0x80C5";
$properties["fax_3_address_type"] = "PT_STRING8:PSETID_Address:0x80D2";
$properties["fax_3_email_address"] = "PT_STRING8:PSETID_Address:0x80D3";
$properties["fax_3_original_display_name"] = "PT_STRING8:PSETID_Address:0x80D4";
$properties["fax_3_original_entryid"] = "PT_BINARY:PSETID_Address:0x80D5";
// Properties for addresses
// Home address
$properties["home_address_street"] = PR_HOME_ADDRESS_STREET;
$properties["home_address_city"] = PR_HOME_ADDRESS_CITY;
$properties["home_address_state"] = PR_HOME_ADDRESS_STATE_OR_PROVINCE;
$properties["home_address_postal_code"] = PR_HOME_ADDRESS_POSTAL_CODE;
$properties["home_address_country"] = PR_HOME_ADDRESS_COUNTRY;
// Other address
$properties["other_address_street"] = PR_OTHER_ADDRESS_STREET;
$properties["other_address_city"] = PR_OTHER_ADDRESS_CITY;
$properties["other_address_state"] = PR_OTHER_ADDRESS_STATE_OR_PROVINCE;
$properties["other_address_postal_code"] = PR_OTHER_ADDRESS_POSTAL_CODE;
$properties["other_address_country"] = PR_OTHER_ADDRESS_COUNTRY;
// Business address
$properties["business_address_street"] = "PT_STRING8:PSETID_Address:0x8045";
$properties["business_address_city"] = "PT_STRING8:PSETID_Address:0x8046";
$properties["business_address_state"] = "PT_STRING8:PSETID_Address:0x8047";
$properties["business_address_postal_code"] = "PT_STRING8:PSETID_Address:0x8048";
$properties["business_address_country"] = "PT_STRING8:PSETID_Address:0x8049";
// Mailing address
$properties["country"] = PR_COUNTRY;
$properties["city"] = PR_LOCALITY;
$properties["postal_address"] = PR_POSTAL_ADDRESS;
$properties["postal_code"] = PR_POSTAL_CODE;
$properties["state"] = PR_STATE_OR_PROVINCE;
$properties["street"] = PR_STREET_ADDRESS;
// Special Date such as birthday n anniversary appoitment's entryid is store
$properties["birthday_eventid"] = "PT_BINARY:PSETID_Address:0x804D";
$properties["anniversary_eventid"] = "PT_BINARY:PSETID_Address:0x804E";
$properties["notes"] = PR_BODY;
// Has contact picture
$properties["has_picture"] = "PT_BOOLEAN:{00062004-0000-0000-C000-000000000046}:0x8015";
// Custom properties needed for carddav functionnality
$properties["carddav_uri"] = PR_CARDDAV_URI;
$properties["carddav_rawdata"] = PR_CARDDAV_RAW_DATA;
$properties["carddav_generation_time"] = PR_CARDDAV_RAW_DATA_GENERATION_TIME;
$properties["contact_count"] = PR_CARDDAV_AB_CONTACT_COUNT;
$properties["carddav_version"] = PR_CARDDAV_RAW_DATA_VERSION;
// Ask Mapi to load those properties and store mapping.
$this->extendedProperties = getPropIdsFromStrings($this->store, $properties);
// Dump properties to debug
$dump = print_r($this->extendedProperties, true);
$this->logger->trace("Properties init done:\n{$dump}");
}
示例14: check_auth
/**
* Check authentication
* @param string HTTP Authentication type (Basic, Digest, ...)
* @param string Username
* @param string Password
* @return bool true on successful authentication
*/
function check_auth($type, $user, $pass)
{
$user = str_replace('%', '@', $user);
// This fixes a logon problem with Evolution, login with user%domain instead of user@domain which seems to confuse evolution...
$user = str_replace('$', '@', $user);
// Mac OS X Address Book App fix
$session = mapi_logon_zarafa($user, $pass, $this->server);
if (false != $session) {
$this->zarafa = $this->open_zarafa($session);
$this->zarafa['user'] = $user;
$this->specialprops = getPropIdsFromStrings($this->zarafa["store"], $this->specialprops);
return true;
}
return false;
}
示例15: Meetingrequest
/**
* Constructor
*
* Takes a store and a message. The message is an appointment item
* that should be converted into a meeting request or an incoming
* e-mail message that is a meeting request.
*
* The $session variable is optional, but required if the following features
* are to be used:
*
* - Sending meeting requests for meetings that are not in your own store
* - Sending meeting requests to resources, resource availability checking and resource freebusy updates
*/
function Meetingrequest($store, $message, $session = false, $enableDirectBooking = true)
{
$this->store = $store;
$this->message = $message;
$this->session = $session;
// This variable string saves time information for the MR.
$this->meetingTimeInfo = false;
$this->enableDirectBooking = $enableDirectBooking;
$properties["goid"] = "PT_BINARY:PSETID_Meeting:0x3";
$properties["goid2"] = "PT_BINARY:PSETID_Meeting:0x23";
$properties["type"] = "PT_STRING8:PSETID_Meeting:0x24";
$properties["meetingrecurring"] = "PT_BOOLEAN:PSETID_Meeting:0x5";
$properties["unknown2"] = "PT_BOOLEAN:PSETID_Meeting:0xa";
$properties["attendee_critical_change"] = "PT_SYSTIME:PSETID_Meeting:0x1";
$properties["owner_critical_change"] = "PT_SYSTIME:PSETID_Meeting:0x1a";
$properties["meetingstatus"] = "PT_LONG:PSETID_Appointment:0x8217";
$properties["responsestatus"] = "PT_LONG:PSETID_Appointment:0x8218";
$properties["unknown6"] = "PT_LONG:PSETID_Meeting:0x4";
$properties["replytime"] = "PT_SYSTIME:PSETID_Appointment:0x8220";
$properties["usetnef"] = "PT_BOOLEAN:PSETID_Common:0x8582";
$properties["recurrence_data"] = "PT_BINARY:PSETID_Appointment:0x8216";
$properties["reminderminutes"] = "PT_LONG:PSETID_Common:0x8501";
$properties["reminderset"] = "PT_BOOLEAN:PSETID_Common:0x8503";
$properties["sendasical"] = "PT_BOOLEAN:PSETID_Appointment:0x8200";
$properties["updatecounter"] = "PT_LONG:PSETID_Appointment:0x8201";
// AppointmentSequenceNumber
$properties["last_updatecounter"] = "PT_LONG:PSETID_Appointment:0x8203";
// AppointmentLastSequence
$properties["unknown7"] = "PT_LONG:PSETID_Appointment:0x8202";
$properties["busystatus"] = "PT_LONG:PSETID_Appointment:0x8205";
$properties["intendedbusystatus"] = "PT_LONG:PSETID_Appointment:0x8224";
$properties["start"] = "PT_SYSTIME:PSETID_Appointment:0x820d";
$properties["responselocation"] = "PT_STRING8:PSETID_Meeting:0x2";
$properties["location"] = "PT_STRING8:PSETID_Appointment:0x8208";
$properties["requestsent"] = "PT_BOOLEAN:PSETID_Appointment:0x8229";
// PidLidFInvited, MeetingRequestWasSent
$properties["startdate"] = "PT_SYSTIME:PSETID_Appointment:0x820d";
$properties["duedate"] = "PT_SYSTIME:PSETID_Appointment:0x820e";
$properties["commonstart"] = "PT_SYSTIME:PSETID_Common:0x8516";
$properties["commonend"] = "PT_SYSTIME:PSETID_Common:0x8517";
$properties["recurring"] = "PT_BOOLEAN:PSETID_Appointment:0x8223";
$properties["clipstart"] = "PT_SYSTIME:PSETID_Appointment:0x8235";
$properties["clipend"] = "PT_SYSTIME:PSETID_Appointment:0x8236";
$properties["start_recur_date"] = "PT_LONG:PSETID_Meeting:0xD";
// StartRecurTime
$properties["start_recur_time"] = "PT_LONG:PSETID_Meeting:0xE";
// StartRecurTime
$properties["end_recur_date"] = "PT_LONG:PSETID_Meeting:0xF";
// EndRecurDate
$properties["end_recur_time"] = "PT_LONG:PSETID_Meeting:0x10";
// EndRecurTime
$properties["is_exception"] = "PT_BOOLEAN:PSETID_Meeting:0xA";
// LID_IS_EXCEPTION
$properties["apptreplyname"] = "PT_STRING8:PSETID_Appointment:0x8230";
// Propose new time properties
$properties["proposed_start_whole"] = "PT_SYSTIME:PSETID_Appointment:0x8250";
$properties["proposed_end_whole"] = "PT_SYSTIME:PSETID_Appointment:0x8251";
$properties["proposed_duration"] = "PT_LONG:PSETID_Appointment:0x8256";
$properties["counter_proposal"] = "PT_BOOLEAN:PSETID_Appointment:0x8257";
$properties["recurring_pattern"] = "PT_STRING8:PSETID_Appointment:0x8232";
$properties["basedate"] = "PT_SYSTIME:PSETID_Appointment:0x8228";
$properties["meetingtype"] = "PT_LONG:PSETID_Meeting:0x26";
$properties["timezone_data"] = "PT_BINARY:PSETID_Appointment:0x8233";
$properties["timezone"] = "PT_STRING8:PSETID_Appointment:0x8234";
$properties["toattendeesstring"] = "PT_STRING8:PSETID_Appointment:0x823B";
$properties["ccattendeesstring"] = "PT_STRING8:PSETID_Appointment:0x823C";
$this->proptags = getPropIdsFromStrings($store, $properties);
}