当前位置: 首页>>代码示例>>PHP>>正文


PHP mapi_openaddressbook函数代码示例

本文整理汇总了PHP中mapi_openaddressbook函数的典型用法代码示例。如果您正苦于以下问题:PHP mapi_openaddressbook函数的具体用法?PHP mapi_openaddressbook怎么用?PHP mapi_openaddressbook使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了mapi_openaddressbook函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: resolve

function resolve($session, $name)
{
    $ab = mapi_openaddressbook($session);
    $resolved = mapi_ab_resolvename($ab, array(array(PR_DISPLAY_NAME => $name)), EMS_AB_ADDRESS_LOOKUP);
    $id = false;
    if ($resolved) {
        $id = $resolved[0][PR_ENTRYID];
    }
    return $id;
}
开发者ID:marco-uniware,项目名称:zarafa-tools,代码行数:10,代码来源:mailstore-permissions.php

示例2: getAddressbook

 /**
  * Get MAPI addressbook object
  *
  * @access private
  * @return MAPIAddressbook object to be used with mapi_ab_* or false on failure
  */
 private function getAddressbook()
 {
     if (isset($this->addressbook) && $this->addressbook) {
         return $this->addressbook;
     }
     $this->addressbook = mapi_openaddressbook($this->session);
     $result = mapi_last_hresult();
     if ($result && $this->addressbook === false) {
         ZLog::Write(LOGLEVEL_ERROR, sprintf("MAPIProvider->getAddressbook error opening addressbook 0x%X", $result));
         return false;
     }
     return $this->addressbook;
 }
开发者ID:BackupTheBerlios,项目名称:z-push-svn,代码行数:19,代码来源:mapiprovider.php

示例3: getDelegatorStore

 function getDelegatorStore($messageprops)
 {
     // Find the organiser of appointment in addressbook
     $delegatorName = array(array(PR_DISPLAY_NAME => $messageprops[PR_RCVD_REPRESENTING_NAME]));
     $ab = mapi_openaddressbook($this->session);
     $user = mapi_ab_resolvename($ab, $delegatorName, EMS_AB_ADDRESS_LOOKUP);
     // Get StoreEntryID by username
     $delegatorEntryid = mapi_msgstore_createentryid($this->store, $user[0][PR_EMAIL_ADDRESS]);
     // Open store of the delegator
     $delegatorStore = mapi_openmsgstore($this->session, $delegatorEntryid);
     // Open root folder
     $delegatorRoot = mapi_msgstore_openentry($delegatorStore, null);
     // Get calendar entryID
     $delegatorRootProps = mapi_getprops($delegatorRoot, array(PR_IPM_APPOINTMENT_ENTRYID));
     // Open the calendar Folder
     $calFolder = mapi_msgstore_openentry($delegatorStore, $delegatorRootProps[PR_IPM_APPOINTMENT_ENTRYID]);
     return array('store' => $delegatorStore, 'calFolder' => $calFolder);
 }
开发者ID:netconstructor,项目名称:sogosync,代码行数:18,代码来源:class.meetingrequest.php

示例4: getPrivateContactFolders

/**
 * Get the private contact folder of all users
 */
function getPrivateContactFolders($session, $defaultstore)
{
    $addrbook = mapi_openaddressbook($session);
    $addr_entryid = mapi_ab_getdefaultdir($addrbook);
    $abcontainer = mapi_ab_openentry($addrbook, $addr_entryid);
    $contentstable = mapi_folder_getcontentstable($abcontainer);
    // restrict table on only MAPI_MAILUSER accounts
    mapi_table_restrict($contentstable, array(RES_PROPERTY, array(RELOP => RELOP_EQ, ULPROPTAG => PR_OBJECT_TYPE, VALUE => array(PR_OBJECT_TYPE => MAPI_MAILUSER))));
    // sort table on display name
    mapi_table_sort($contentstable, array(PR_DISPLAY_NAME => TABLE_SORT_ASCEND));
    $users = mapi_table_queryrows($contentstable, array(PR_ACCOUNT, PR_ENTRYID, PR_DISPLAY_NAME), 0, mapi_table_getrowcount($contentstable));
    $contactArray = array();
    for ($i = 0; $i < sizeof($users); $i++) {
        $store_entryid = mapi_msgstore_createentryid($defaultstore, $users[$i][PR_ACCOUNT]);
        $store = mapi_openmsgstore($session, $store_entryid);
        $rootcontainer = mapi_msgstore_openentry($store);
        if ($rootcontainer) {
            $props = mapi_getprops($rootcontainer, array(PR_IPM_CONTACT_ENTRYID));
            if (isset($props[PR_IPM_CONTACT_ENTRYID])) {
                $entryid = $props[PR_IPM_CONTACT_ENTRYID];
                $folder = mapi_msgstore_openentry($store, $entryid);
                if ($folder) {
                    $table = mapi_folder_getcontentstable($folder);
                    $totalrow = mapi_table_getrowcount($table);
                    $rows = array();
                    $contacts = array();
                    $properties = getContactProperties($defaultstore);
                    if ($totalrow > 0) {
                        $rows = mapi_table_queryrows($table, $properties, 0, $totalrow);
                        for ($j = 0; $j < sizeof($rows); $j++) {
                            $rows[$j][268370178] = md5($rows[$j][268370178]);
                        }
                        for ($k = 0; $k < sizeof($rows); $k++) {
                            // do not add private contacts
                            if (!array_key_exists(-2119827445, $rows[$k]) || array_key_exists(-2119827445, $rows[$k]) && $rows[$k][-2119827445] != 1) {
                                foreach ($rows[$k] as $key => $value) {
                                    $attribute = mapKey($key);
                                    if ($attribute != "") {
                                        $contacts[$k][$attribute] = $value;
                                    }
                                }
                            }
                        }
                        $contactArray[] = array("username" => $users[$i][PR_ACCOUNT], "contacts" => $contacts);
                    }
                }
            }
        }
    }
    //	print_r($contactArray);
    return $contactArray;
}
开发者ID:BillTheBest,项目名称:1.6.x,代码行数:55,代码来源:exec.mapiContacts.php

示例5: setRecipsFromString

 /**
  * Function adds recipients in recips array from the string.
  * 
  * @param array $recips recipient array.
  * @param string $recipString recipient string attendees.
  * @param int $type type of the recipient, MAPI_TO/MAPI_CC.
  */
 function setRecipsFromString(&$recips, $recipString, $recipType = MAPI_TO)
 {
     $ab = mapi_openaddressbook($this->session);
     $recipArray = explode(';', $recipString);
     foreach ($recipArray as $recip) {
         $recip = trim($recip);
         if (!empty($recip)) {
             try {
                 $userName = array(array(PR_DISPLAY_NAME => $recip));
                 $user = mapi_ab_resolvename($ab, $userName, EMS_AB_ADDRESS_LOOKUP);
                 $extraRecipient = array();
                 $extraRecipient[PR_RECIPIENT_TYPE] = $recipType;
                 $extraRecipient[PR_ENTRYID] = $user[0][PR_ENTRYID];
                 $extraRecipient[PR_DISPLAY_NAME] = $user[0][PR_DISPLAY_NAME];
                 $extraRecipient[PR_OBJECT_TYPE] = $user[0][PR_OBJECT_TYPE];
                 $extraRecipient[PR_EMAIL_ADDRESS] = $user[0][PR_EMAIL_ADDRESS];
                 $extraRecipient[PR_SMTP_ADDRESS] = $user[0][PR_SMTP_ADDRESS];
                 $extraRecipient[PR_ADDRTYPE] = $user[0][PR_ADDRTYPE];
                 array_push($recips, $extraRecipient);
             } catch (MAPIException $e) {
                 // We couldn't resolve the user, fallback to filling
                 // in the properties which we do know.
                 $extraRecipient = array();
                 $extraRecipient[PR_RECIPIENT_TYPE] = $recipType;
                 $extraRecipient[PR_DISPLAY_NAME] = $recip;
                 array_push($recips, $extraRecipient);
             }
         }
     }
 }
开发者ID:tuksik,项目名称:zarafa-rest-api,代码行数:37,代码来源:class.meetingrequest.php

示例6: GetGALSearchResults

 /**
  * Searches the GAB of Zarafa
  * Can be overwitten globally by configuring a SearchBackend
  *
  * @param string        $searchquery
  * @param string        $searchrange
  *
  * @access public
  * @return array
  * @throws StatusException
  */
 public function GetGALSearchResults($searchquery, $searchrange)
 {
     // only return users from who the displayName or the username starts with $name
     //TODO: use PR_ANR for this restriction instead of PR_DISPLAY_NAME and PR_ACCOUNT
     $addrbook = mapi_openaddressbook($this->session);
     if ($addrbook) {
         $ab_entryid = mapi_ab_getdefaultdir($addrbook);
     }
     if ($ab_entryid) {
         $ab_dir = mapi_ab_openentry($addrbook, $ab_entryid);
     }
     if ($ab_dir) {
         $table = mapi_folder_getcontentstable($ab_dir);
     }
     if (!$table) {
         throw new StatusException(sprintf("ZarafaBackend->GetGALSearchResults(): could not open addressbook: 0x%X", mapi_last_hresult()), SYNC_SEARCHSTATUS_STORE_CONNECTIONFAILED);
     }
     $restriction = MAPIUtils::GetSearchRestriction(u2w($searchquery));
     mapi_table_restrict($table, $restriction);
     mapi_table_sort($table, array(PR_DISPLAY_NAME => TABLE_SORT_ASCEND));
     if (mapi_last_hresult()) {
         throw new StatusException(sprintf("ZarafaBackend->GetGALSearchResults(): could not apply restriction: 0x%X", mapi_last_hresult()), SYNC_SEARCHSTATUS_STORE_TOOCOMPLEX);
     }
     //range for the search results, default symbian range end is 50, wm 99,
     //so we'll use that of nokia
     $rangestart = 0;
     $rangeend = 50;
     if ($searchrange != '0') {
         $pos = strpos($searchrange, '-');
         $rangestart = substr($searchrange, 0, $pos);
         $rangeend = substr($searchrange, $pos + 1);
     }
     $items = array();
     $querycnt = mapi_table_getrowcount($table);
     //do not return more results as requested in range
     $querylimit = $rangeend + 1 < $querycnt ? $rangeend + 1 : $querycnt;
     $items['range'] = $querylimit > 0 ? $rangestart . '-' . ($querylimit - 1) : '0-0';
     $items['searchtotal'] = $querycnt;
     if ($querycnt > 0) {
         $abentries = mapi_table_queryrows($table, array(PR_ACCOUNT, PR_DISPLAY_NAME, PR_SMTP_ADDRESS, PR_BUSINESS_TELEPHONE_NUMBER, PR_GIVEN_NAME, PR_SURNAME, PR_MOBILE_TELEPHONE_NUMBER, PR_HOME_TELEPHONE_NUMBER, PR_TITLE, PR_COMPANY_NAME, PR_OFFICE_LOCATION), $rangestart, $querylimit);
     }
     for ($i = 0; $i < $querylimit; $i++) {
         $items[$i][SYNC_GAL_DISPLAYNAME] = w2u($abentries[$i][PR_DISPLAY_NAME]);
         if (strlen(trim($items[$i][SYNC_GAL_DISPLAYNAME])) == 0) {
             $items[$i][SYNC_GAL_DISPLAYNAME] = w2u($abentries[$i][PR_ACCOUNT]);
         }
         $items[$i][SYNC_GAL_ALIAS] = w2u($abentries[$i][PR_ACCOUNT]);
         //it's not possible not get first and last name of an user
         //from the gab and user functions, so we just set lastname
         //to displayname and leave firstname unset
         //this was changed in Zarafa 6.40, so we try to get first and
         //last name and fall back to the old behaviour if these values are not set
         if (isset($abentries[$i][PR_GIVEN_NAME])) {
             $items[$i][SYNC_GAL_FIRSTNAME] = w2u($abentries[$i][PR_GIVEN_NAME]);
         }
         if (isset($abentries[$i][PR_SURNAME])) {
             $items[$i][SYNC_GAL_LASTNAME] = w2u($abentries[$i][PR_SURNAME]);
         }
         if (!isset($items[$i][SYNC_GAL_LASTNAME])) {
             $items[$i][SYNC_GAL_LASTNAME] = $items[$i][SYNC_GAL_DISPLAYNAME];
         }
         $items[$i][SYNC_GAL_EMAILADDRESS] = w2u($abentries[$i][PR_SMTP_ADDRESS]);
         //check if an user has an office number or it might produce warnings in the log
         if (isset($abentries[$i][PR_BUSINESS_TELEPHONE_NUMBER])) {
             $items[$i][SYNC_GAL_PHONE] = w2u($abentries[$i][PR_BUSINESS_TELEPHONE_NUMBER]);
         }
         //check if an user has a mobile number or it might produce warnings in the log
         if (isset($abentries[$i][PR_MOBILE_TELEPHONE_NUMBER])) {
             $items[$i][SYNC_GAL_MOBILEPHONE] = w2u($abentries[$i][PR_MOBILE_TELEPHONE_NUMBER]);
         }
         //check if an user has a home number or it might produce warnings in the log
         if (isset($abentries[$i][PR_HOME_TELEPHONE_NUMBER])) {
             $items[$i][SYNC_GAL_HOMEPHONE] = w2u($abentries[$i][PR_HOME_TELEPHONE_NUMBER]);
         }
         if (isset($abentries[$i][PR_COMPANY_NAME])) {
             $items[$i][SYNC_GAL_COMPANY] = w2u($abentries[$i][PR_COMPANY_NAME]);
         }
         if (isset($abentries[$i][PR_TITLE])) {
             $items[$i][SYNC_GAL_TITLE] = w2u($abentries[$i][PR_TITLE]);
         }
         if (isset($abentries[$i][PR_OFFICE_LOCATION])) {
             $items[$i][SYNC_GAL_OFFICE] = w2u($abentries[$i][PR_OFFICE_LOCATION]);
         }
     }
     return $items;
 }
开发者ID:BackupTheBerlios,项目名称:z-push-svn,代码行数:97,代码来源:zarafa.php

示例7: openaddressbook

 function openaddressbook()
 {
     $this->addressbook = mapi_openaddressbook($this->session);
     if (!$this->addressbook) {
         print "Unable to open addressbook\n";
         exit(RESULT_ERROR_ADDRESSBOOK);
     }
 }
开发者ID:marco-uniware,项目名称:zarafa-tools,代码行数:8,代码来源:delete-freebusy.php

示例8: retrieveUserData

 /** Returns user information who has task request
  */
 function retrieveUserData()
 {
     // get user entryid
     $storeProps = mapi_getprops($this->store, array(PR_USER_ENTRYID));
     if (!$storeProps[PR_USER_ENTRYID]) {
         return false;
     }
     $ab = mapi_openaddressbook($this->session);
     // open the user entry
     $user = mapi_ab_openentry($ab, $storeProps[PR_USER_ENTRYID]);
     if (!$user) {
         return false;
     }
     // receive userdata
     $userProps = mapi_getprops($user, array(PR_DISPLAY_NAME));
     if (!$userProps[PR_DISPLAY_NAME]) {
         return false;
     }
     return $userProps;
 }
开发者ID:alanturing1,项目名称:Z-Push-contrib,代码行数:22,代码来源:class.taskrequest.php

示例9: _getSMTPAddressFromEntryID

 function _getSMTPAddressFromEntryID($entryid)
 {
     $ab = mapi_openaddressbook($this->_session);
     $mailuser = mapi_ab_openentry($ab, $entryid);
     if (!$mailuser) {
         return "";
     }
     $props = mapi_getprops($mailuser, array(PR_ADDRTYPE, PR_SMTP_ADDRESS, PR_EMAIL_ADDRESS));
     $addrtype = isset($props[PR_ADDRTYPE]) ? $props[PR_ADDRTYPE] : "";
     if (isset($props[PR_SMTP_ADDRESS])) {
         return $props[PR_SMTP_ADDRESS];
     }
     if ($addrtype == "SMTP" && isset($props[PR_EMAIL_ADDRESS])) {
         return $props[PR_EMAIL_ADDRESS];
     }
     return "";
 }
开发者ID:jkreska,项目名称:test1,代码行数:17,代码来源:ics.php

示例10: getSearchResults

 function getSearchResults($searchquery, $searchrange)
 {
     // only return users from who the displayName or the username starts with $name
     //TODO: use PR_ANR for this restriction instead of PR_DISPLAY_NAME and PR_ACCOUNT
     $addrbook = mapi_openaddressbook($this->_session);
     $ab_entryid = mapi_ab_getdefaultdir($addrbook);
     $ab_dir = mapi_ab_openentry($addrbook, $ab_entryid);
     $table = mapi_folder_getcontentstable($ab_dir);
     $restriction = $this->_getSearchRestriction(u2w($searchquery));
     mapi_table_restrict($table, $restriction);
     mapi_table_sort($table, array(PR_DISPLAY_NAME => TABLE_SORT_ASCEND));
     //range for the search results, default symbian range end is 50, wm 99,
     //so we'll use that of nokia
     $rangestart = 0;
     $rangeend = 50;
     if ($searchrange != '0') {
         $pos = strpos($searchrange, '-');
         $rangestart = substr($searchrange, 0, $pos);
         $rangeend = substr($searchrange, $pos + 1);
     }
     $items = array();
     $querycnt = mapi_table_getrowcount($table);
     //do not return more results as requested in range
     $querylimit = $rangeend + 1 < $querycnt ? $rangeend + 1 : $querycnt;
     $items['range'] = $rangestart . '-' . ($querylimit - 1);
     $abentries = mapi_table_queryrows($table, array(PR_ACCOUNT, PR_DISPLAY_NAME, PR_SMTP_ADDRESS, PR_BUSINESS_TELEPHONE_NUMBER), $rangestart, $querylimit);
     for ($i = 0; $i < $querylimit; $i++) {
         $items[$i]["username"] = w2u($abentries[$i][PR_ACCOUNT]);
         $items[$i]["fullname"] = w2u($abentries[$i][PR_DISPLAY_NAME]);
         if (strlen(trim($items[$i]["fullname"])) == 0) {
             $items[$i]["fullname"] = $items[$i]["username"];
         }
         $items[$i]["emailaddress"] = w2u($abentries[$i][PR_SMTP_ADDRESS]);
         $items[$i]["nameid"] = $searchquery;
         //check if an user has a business phone or it might produce warnings in the log
         $items[$i]["businessphone"] = isset($abentries[$i][PR_BUSINESS_TELEPHONE_NUMBER]) ? w2u($abentries[$i][PR_BUSINESS_TELEPHONE_NUMBER]) : "";
     }
     return $items;
 }
开发者ID:BackupTheBerlios,项目名称:z-push-svn,代码行数:39,代码来源:ics.php

示例11: readResolveRecipientfromGAL

 function readResolveRecipientfromGAL($emailaddress)
 {
     $ab = mapi_openaddressbook($this->_session);
     $ab_entryid = mapi_ab_getdefaultdir($ab);
     $ab_dir = mapi_ab_openentry($ab, $ab_entryid);
     $table = mapi_folder_getcontentstable($ab_dir);
     $restriction = array(RES_PROPERTY, array(RELOP => RELOP_EQ, ULPROPTAG => PR_SMTP_ADDRESS, VALUE => $emailaddress));
     mapi_table_restrict($table, $restriction);
     $rows = mapi_table_queryrows($table, array(PR_ENTRYID, PR_DISPLAY_NAME, PR_SMTP_ADDRESS, PR_USER_CERTIFICATE), 0, 999);
     return $rows;
 }
开发者ID:netconstructor,项目名称:activesync,代码行数:11,代码来源:ics.php

示例12: imtoinet

 /**
  * A wrapper for mapi_inetmapi_imtoinet function
  *
  * @param MAPIMessage       $mapimessage
  * @param SyncObject        $message
  *
  * @access private
  * @return boolean
  */
 private function imtoinet($mapimessage, &$message)
 {
     if (function_exists("mapi_inetmapi_imtoinet")) {
         $addrBook = mapi_openaddressbook($this->session);
         $mstream = mapi_inetmapi_imtoinet($this->session, $addrBook, $mapimessage, array());
         $mstreamstat = mapi_stream_stat($mstream);
         if ($mstreamstat['cb'] < MAX_EMBEDDED_SIZE) {
             if (Request::GetProtocolVersion() >= 12.0) {
                 if (!isset($message->asbody)) {
                     $message->asbody = new SyncBaseBody();
                 }
                 //TODO data should be wrapped in a MapiStreamWrapper
                 $message->asbody->data = mapi_stream_read($mstream, MAX_EMBEDDED_SIZE);
                 $message->asbody->estimatedDataSize = $mstreamstat["cb"];
                 $message->asbody->truncated = 0;
             } else {
                 $message->mimetruncated = 0;
                 //TODO mimedata should be a wrapped in a MapiStreamWrapper
                 $message->mimedata = mapi_stream_read($mstream, MAX_EMBEDDED_SIZE);
                 $message->mimesize = $mstreamstat["cb"];
             }
             unset($message->body, $message->bodytruncated);
             return true;
         }
     }
     return false;
 }
开发者ID:netconstructor,项目名称:sogosync,代码行数:36,代码来源:mapiprovider.php

示例13: SendMail

 function SendMail($rfc822, $forward = false, $reply = false, $parent = false)
 {
     if (WBXML_DEBUG == true) {
         debugLog("SendMail: forward: {$forward}   reply: {$reply}   parent: {$parent}\n" . $rfc822);
     }
     // Open the outbox and create the message there
     $storeprops = mapi_getprops($this->_defaultstore, array(PR_IPM_OUTBOX_ENTRYID, PR_IPM_SENTMAIL_ENTRYID));
     if (!isset($storeprops[PR_IPM_OUTBOX_ENTRYID])) {
         debugLog("Outbox not found to create message");
         return false;
     }
     $outbox = mapi_msgstore_openentry($this->_defaultstore, $storeprops[PR_IPM_OUTBOX_ENTRYID]);
     if (!$outbox) {
         debugLog("Unable to open outbox");
         return false;
     }
     $mapimessage = mapi_folder_createmessage($outbox);
     //message properties to be set
     $mapiprops = array();
     // only save the outgoing in sent items folder if the mobile requests it
     if (isset($storeprops[PR_IPM_SENTMAIL_ENTRYID])) {
         $mapiprops[PR_SENTMAIL_ENTRYID] = $storeprops[PR_IPM_SENTMAIL_ENTRYID];
     } else {
         debugLog("PR_SENTMAIL_ENTRYID is not set. The sent message will not be moved to Sent Items.");
     }
     if ($forward) {
         $orig = $forward;
     }
     if ($reply) {
         $orig = $reply;
     }
     // Check if imtomapi function is available and use it to send the mime message.
     // It is available since ZCP 7.0.6
     // @see http://jira.zarafa.com/browse/ZCP-9508
     if (function_exists('mapi_feature') && mapi_feature('INETMAPI_IMTOMAPI')) {
         debugLog("Use the mapi_inetmapi_imtomapi function");
         $ab = mapi_openaddressbook($this->_session);
         mapi_inetmapi_imtomapi($this->_session, $this->_defaultstore, $ab, $mapimessage, $rfc822, array());
         // Delete the PR_SENT_REPRESENTING_* properties because some android devices
         // do not send neither From nor Sender header causing empty PR_SENT_REPRESENTING_NAME and
         // PR_SENT_REPRESENTING_EMAIL_ADDRESS properties and "broken" PR_SENT_REPRESENTING_ENTRYID
         // which results in spooler not being able to send the message.
         // @see http://jira.zarafa.com/browse/ZP-85
         mapi_deleteprops($mapimessage, array(PR_SENT_REPRESENTING_NAME, PR_SENT_REPRESENTING_EMAIL_ADDRESS, PR_SENT_REPRESENTING_ENTRYID, PR_SENT_REPRESENTING_ADDRTYPE, PR_SENT_REPRESENTING_SEARCH_KEY));
         if (isset($orig) && $orig) {
             $entryid = mapi_msgstore_entryidfromsourcekey($this->_defaultstore, hex2bin($parent), hex2bin($orig));
             $fwmessage = mapi_msgstore_openentry($this->_defaultstore, $entryid);
             if ($fwmessage) {
                 //update icon when forwarding or replying message
                 if ($forward) {
                     mapi_setprops($fwmessage, array(PR_ICON_INDEX => 262));
                 } elseif ($reply) {
                     mapi_setprops($fwmessage, array(PR_ICON_INDEX => 261));
                 }
                 mapi_savechanges($fwmessage);
                 if ($forward) {
                     $this->_copyAttachments($mapimessage, $fwmessage);
                 }
                 $body = $this->_readPropStream($mapimessage, PR_BODY);
                 $body_html = $this->_readPropStream($mapimessage, PR_HTML);
                 if (strlen($body) > 0) {
                     $fwbody = $this->_readPropStream($fwmessage, PR_BODY);
                     $body .= $fwbody;
                 }
                 if (strlen($body_html) > 0) {
                     $fwbody_html = $this->_readPropStream($fwmessage, PR_HTML);
                     $body_html .= $fwbody_html;
                 }
                 mapi_setprops($mapimessage, array(PR_BODY => $body));
                 if (strlen($body_html) > 0) {
                     mapi_setprops($mapimessage, array(PR_HTML => $body_html));
                 }
             }
         }
         if (!empty($mapiprops)) {
             mapi_setprops($mapimessage, $mapiprops);
         }
         mapi_message_savechanges($mapimessage);
         mapi_message_submitmessage($mapimessage);
         $hr = mapi_last_hresult();
         if ($hr) {
             debugLog(sprintf("SendMail(): Error saving/submitting the message to the Outbox: 0x%X", mapi_last_hresult()));
             return false;
         }
         return true;
     }
     $mimeParams = array('decode_headers' => true, 'decode_bodies' => true, 'include_bodies' => true, 'charset' => 'utf-8');
     $mimeObject = new Mail_mimeDecode($rfc822);
     $message = $mimeObject->decode($mimeParams);
     mapi_setprops($mapimessage, array(PR_SUBJECT => u2wi(isset($message->headers["subject"]) ? $message->headers["subject"] : ""), PR_SENTMAIL_ENTRYID => $storeprops[PR_IPM_SENTMAIL_ENTRYID], PR_MESSAGE_CLASS => "IPM.Note", PR_MESSAGE_DELIVERY_TIME => time()));
     if (isset($message->headers["x-priority"])) {
         switch ($message->headers["x-priority"]) {
             case 1:
             case 2:
                 $priority = PRIO_URGENT;
                 $importance = IMPORTANCE_HIGH;
                 break;
             case 4:
             case 5:
                 $priority = PRIO_NONURGENT;
//.........这里部分代码省略.........
开发者ID:BackupTheBerlios,项目名称:z-push-svn,代码行数:101,代码来源:ics.php

示例14: getGAB

 /**
  * Returns a list with all GAB entries or a single entry specified by $uniqueId.
  * The search for that single entry is done using the configured UNIQUEID parameter.
  * If no entry is found for a $uniqueId an empty array() must be returned.
  *
  * @param string $uniqueId      A value to be found in the configured UNIQUEID.
  *                              If set, only one item is returned. If false or not set, the entire GAB is returned.
  *                              Default: false
  * @param string $gabId         Id that uniquely identifies the GAB. If not set or null the default GAB is assumed.
  * @param string $gabName       String that uniquely identifies the GAB. If not set the default GAB is assumed.
  *
  * @access protected
  * @return array of GABEntry
  */
 protected function getGAB($uniqueId = false, $gabId = null, $gabName = 'default')
 {
     $data = array();
     $addrbook = mapi_openaddressbook($this->session);
     if (mapi_last_hresult()) {
         $this->Terminate(sprintf("Kopano->getGAB: Error opening addressbook 0x%08X", mapi_last_hresult()));
     }
     if ($gabId == null) {
         $ab_entryid = mapi_ab_getdefaultdir($addrbook);
         if (mapi_last_hresult()) {
             $this->Terminate(sprintf("Kopano->getGAB: Error, could not get '%s' address directory: 0x%08X", $gabName, mapi_last_hresult()));
         }
     } else {
         $ab_entryid = hex2bin($gabId);
     }
     $ab_dir = mapi_ab_openentry($addrbook, $ab_entryid);
     if (mapi_last_hresult()) {
         $this->Terminate(sprintf("Kopano->getGAB: Error, could not open '%s' address directory: 0x%08X", $gabName, mapi_last_hresult()));
     }
     $table = mapi_folder_getcontentstable($ab_dir);
     if (mapi_last_hresult()) {
         $this->Terminate(sprintf("Kopano->getGAB: error, could not open '%s' addressbook content table: 0x%08X", $gabName, mapi_last_hresult()));
     }
     // get all the groups
     $groups = mapi_zarafa_getgrouplist($this->store, $ab_entryid);
     // restrict the table if we should only return one
     if ($uniqueId) {
         $prop = $this->getPropertyForGABvalue(UNIQUEID);
         $restriction = array(RES_PROPERTY, array(RELOP => RELOP_EQ, ULPROPTAG => $prop, VALUE => $uniqueId));
         mapi_table_restrict($table, $restriction);
         $querycnt = mapi_table_getrowcount($table);
         if ($querycnt == 0) {
             $this->Log(sprintf("Kopano->getGAB(): Single GAB entry '%s' requested but could not be found.", $uniqueId));
         } elseif ($querycnt > 1) {
             $this->Terminate(sprintf("Kopano->getGAB(): Single GAB entry '%s' requested but %d entries found. Aborting.", $uniqueId, $querycnt));
         }
     }
     $gabentries = mapi_table_queryallrows($table, array(PR_ENTRYID, PR_ACCOUNT, PR_DISPLAY_NAME, PR_SMTP_ADDRESS, PR_BUSINESS_TELEPHONE_NUMBER, PR_GIVEN_NAME, PR_SURNAME, PR_MOBILE_TELEPHONE_NUMBER, PR_HOME_TELEPHONE_NUMBER, PR_TITLE, PR_COMPANY_NAME, PR_OFFICE_LOCATION, PR_BEEPER_TELEPHONE_NUMBER, PR_PRIMARY_FAX_NUMBER, PR_ORGANIZATIONAL_ID_NUMBER, PR_POSTAL_ADDRESS, PR_BUSINESS_ADDRESS_CITY, PR_BUSINESS_ADDRESS_POSTAL_CODE, PR_BUSINESS_ADDRESS_POST_OFFICE_BOX, PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE, PR_INITIALS, PR_LANGUAGE, PR_EMS_AB_THUMBNAIL_PHOTO, PR_DISPLAY_TYPE_EX));
     foreach ($gabentries as $entry) {
         // do not add SYSTEM user to the GAB
         if (strtoupper($entry[PR_DISPLAY_NAME]) == "SYSTEM") {
             continue;
         }
         $a = new GABEntry();
         $a->type = GABEntry::CONTACT;
         $a->memberOf = array();
         $memberOf = mapi_zarafa_getgrouplistofuser($this->store, $entry[PR_ENTRYID]);
         if (is_array($memberOf)) {
             $a->memberOf = array_keys($memberOf);
         }
         // the company name is 'Everyone'
         if ($gabId != null && $entry[PR_DISPLAY_NAME] == $gabName) {
             $entry[PR_ACCOUNT] = "Everyone";
             $entry[PR_DISPLAY_NAME] = "Everyone";
         }
         // is this a group?
         if (array_key_exists($entry[PR_ACCOUNT], $groups)) {
             $a->type = GABEntry::GROUP;
             $groupentry = mapi_ab_openentry($addrbook, $entry[PR_ENTRYID]);
             $grouptable = mapi_folder_getcontentstable($groupentry, MAPI_DEFERRED_ERRORS);
             $users = mapi_table_queryallrows($grouptable, array(PR_ENTRYID, PR_ACCOUNT, PR_SMTP_ADDRESS));
             $a->members = array();
             if (is_array($users)) {
                 foreach ($users as $user) {
                     if ($user[PR_ENTRYID] == $entry[PR_ENTRYID]) {
                         if (isset($user[PR_SMTP_ADDRESS])) {
                             $a->smtpAddress = $user[PR_SMTP_ADDRESS];
                         }
                         // don't add the group recursively
                         continue;
                     }
                     $a->members[] = $user[PR_ACCOUNT];
                 }
             }
         } else {
             if (isset($entry[PR_DISPLAY_TYPE_EX]) && $entry[PR_DISPLAY_TYPE_EX] == DT_ROOM) {
                 $a->type = GABEntry::ROOM;
             } else {
                 if (isset($entry[PR_DISPLAY_TYPE_EX]) && $entry[PR_DISPLAY_TYPE_EX] == DT_EQUIPMENT) {
                     $a->type = GABEntry::EQUIPMENT;
                 }
             }
         }
         if (isset($entry[PR_ACCOUNT])) {
             $a->account = $entry[PR_ACCOUNT];
         }
//.........这里部分代码省略.........
开发者ID:EGroupware,项目名称:z-push,代码行数:101,代码来源:kopano.php

示例15: getSearchResultsGAL

 function getSearchResultsGAL($searchquery)
 {
     // only return users from who the displayName or the username starts with $name
     //TODO: use PR_ANR for this restriction instead of PR_DISPLAY_NAME and PR_ACCOUNT
     $addrbook = mapi_openaddressbook($this->_session);
     $ab_entryid = mapi_ab_getdefaultdir($addrbook);
     $ab_dir = mapi_ab_openentry($addrbook, $ab_entryid);
     $table = mapi_folder_getcontentstable($ab_dir);
     $restriction = $this->_getSearchRestriction(u2w($searchquery));
     mapi_table_restrict($table, $restriction);
     mapi_table_sort($table, array(PR_DISPLAY_NAME => TABLE_SORT_ASCEND));
     // CHANGED dw2412 AS V12.0 Support (to menetain single return way...
     $items['rows'] = array();
     for ($i = 0; $i < mapi_table_getrowcount($table); $i++) {
         $user_data = mapi_table_queryrows($table, array(PR_ACCOUNT, PR_DISPLAY_NAME, PR_SMTP_ADDRESS, PR_BUSINESS_TELEPHONE_NUMBER), $i, 1);
         $item = array();
         $item["username"] = w2u($user_data[0][PR_ACCOUNT]);
         $item["fullname"] = w2u($user_data[0][PR_DISPLAY_NAME]);
         if (strlen(trim($item["fullname"])) == 0) {
             $item["fullname"] = $item["username"];
         }
         $item["emailaddress"] = w2u($user_data[0][PR_SMTP_ADDRESS]);
         $item["nameid"] = $searchquery;
         $item["businessphone"] = isset($user_data[0][PR_BUSINESS_TELEPHONE_NUMBER]) ? w2u($user_data[0][PR_BUSINESS_TELEPHONE_NUMBER]) : "";
         //do not return users without email
         if (strlen(trim($item["emailaddress"])) == 0) {
             continue;
         }
         // CHANGED dw2412 AS V12.0 Support (to menetain single return way...
         array_push($items['rows'], $item);
     }
     $items['status'] = 1;
     return $items;
 }
开发者ID:BackupTheBerlios,项目名称:z-push-svn,代码行数:34,代码来源:ics.php


注:本文中的mapi_openaddressbook函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。