Ejemplo n.º 1
0
 /**
  * Writes SyncMail to MAPI (actually flags only)
  *
  * @param mixed             $mapimessage
  * @param SyncMail          $message
  */
 private function setEmail($mapimessage, $message)
 {
     $flagmapping = MAPIMapping::GetMailFlagsMapping();
     $flagprops = MAPIMapping::GetMailFlagsProperties();
     $flagprops = array_merge($this->getPropIdsFromStrings($flagmapping), $this->getPropIdsFromStrings($flagprops));
     // flag specific properties to be set
     $props = $delprops = array();
     // unset message flags if:
     // flag is not set
     if (empty($message->flag) || !isset($message->flag->flagstatus) || isset($message->flag->flagstatus) && ($message->flag->flagstatus == 0 || $message->flag->flagstatus == "")) {
         // if message flag is empty, some properties need to be deleted
         // and some set to 0 or false
         $props[$flagprops["todoitemsflags"]] = 0;
         $props[$flagprops["status"]] = 0;
         $props[$flagprops["completion"]] = 0.0;
         $props[$flagprops["flagtype"]] = "";
         $props[$flagprops["ordinaldate"]] = 0x7fffffff;
         // ordinal date is 12am 1.1.4501, set it to max possible value
         $props[$flagprops["subordinaldate"]] = "";
         $props[$flagprops["replyrequested"]] = false;
         $props[$flagprops["responserequested"]] = false;
         $props[$flagprops["reminderset"]] = false;
         $props[$flagprops["complete"]] = false;
         $delprops[] = $flagprops["todotitle"];
         $delprops[] = $flagprops["duedate"];
         $delprops[] = $flagprops["startdate"];
         $delprops[] = $flagprops["datecompleted"];
         $delprops[] = $flagprops["utcstartdate"];
         $delprops[] = $flagprops["utcduedate"];
         $delprops[] = $flagprops["completetime"];
         $delprops[] = $flagprops["flagstatus"];
         $delprops[] = $flagprops["flagicon"];
     } else {
         $this->setPropsInMAPI($mapimessage, $message->flag, $flagmapping);
         $props[$flagprops["todoitemsflags"]] = 1;
         $props[$flagprops["todotitle"]] = $message->subject;
         // ordinal date is utc current time
         if (!isset($message->flag->ordinaldate) || empty($message->flag->ordinaldate)) {
             $props[$flagprops["ordinaldate"]] = time();
         }
         // the default value
         if (!isset($message->flag->subordinaldate) || empty($message->flag->subordinaldate)) {
             $props[$flagprops["subordinaldate"]] = "5555555";
         }
         $props[$flagprops["flagicon"]] = 6;
         //red flag icon
         $props[$flagprops["replyrequested"]] = true;
         $props[$flagprops["responserequested"]] = true;
         if ($message->flag->flagstatus == SYNC_FLAGSTATUS_COMPLETE) {
             $props[$flagprops["status"]] = olTaskComplete;
             $props[$flagprops["completion"]] = 1.0;
             $props[$flagprops["complete"]] = true;
             $props[$flagprops["replyrequested"]] = false;
             $props[$flagprops["responserequested"]] = false;
             unset($props[$flagprops["flagicon"]]);
             $delprops[] = $flagprops["flagicon"];
         }
     }
     if (!empty($props)) {
         mapi_setprops($mapimessage, $props);
     }
     if (!empty($delprops)) {
         mapi_deleteprops($mapimessage, $delprops);
     }
 }