Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php abstract class PhabricatorCalendarImportEngine extends Phobject { const QUEUE_BYTE_..

Decoded Output download

<?php
 abstract class PhabricatorCalendarImportEngine extends Phobject { const QUEUE_BYTE_LIMIT = 524288; public final function getImportEngineType() { return $this->getPhobjectClassConstant("ENGINETYPE", 64); } public abstract function getImportEngineName(); public abstract function getImportEngineTypeName(); public abstract function getImportEngineHint(); public function appendImportProperties(PhabricatorUser $viewer, PhabricatorCalendarImport $import, PHUIPropertyListView $properties) { return; } public abstract function newEditEngineFields(PhabricatorEditEngine $engine, PhabricatorCalendarImport $import); public abstract function getDisplayName(PhabricatorCalendarImport $import); public abstract function importEventsFromSource(PhabricatorUser $viewer, PhabricatorCalendarImport $import, $should_queue); public abstract function canDisable(PhabricatorUser $viewer, PhabricatorCalendarImport $import); public function explainCanDisable(PhabricatorUser $viewer, PhabricatorCalendarImport $import) { throw new PhutilMethodNotImplementedException(); } public abstract function supportsTriggers(PhabricatorCalendarImport $import); public static final function getAllImportEngines() { return id(new PhutilClassMapQuery())->setAncestorClass(__CLASS__)->setUniqueMethod("getImportEngineType")->setSortMethod("getImportEngineName")->execute(); } protected final function importEventDocument(PhabricatorUser $viewer, PhabricatorCalendarImport $import, PhutilCalendarRootNode $root = null) { $event_type = PhutilCalendarEventNode::NODETYPE; $nodes = array(); if ($root) { foreach ($root->getChildren() as $document) { foreach ($document->getChildren() as $node) { $node_type = $node->getNodeType(); if ($node_type != $event_type) { $import->newLogMessage(PhabricatorCalendarImportIgnoredNodeLogType::LOGTYPE, array("node.type" => $node_type)); continue; } $nodes[] = $node; } } } foreach ($nodes as $key => $node) { $dates = array(); $dates[] = $node->getStartDateTime(); $dates[] = $node->getEndDateTime(); $dates[] = $node->getCreatedDateTime(); $dates[] = $node->getModifiedDateTime(); $rrule = $node->getRecurrenceRule(); if ($rrule) { $dates[] = $rrule->getUntil(); } $bad_date = false; foreach ($dates as $date) { if ($date === null) { continue; } $year = $date->getYear(); if ($year < 1970 || $year > 2037) { $bad_date = true; break; } } if ($bad_date) { $import->newLogMessage(PhabricatorCalendarImportEpochLogType::LOGTYPE, array()); unset($nodes[$key]); } } foreach ($nodes as $key => $node) { $rrule = $node->getRecurrenceRule(); if (!$rrule) { continue; } $scale = $rrule->getFrequencyScale(); if ($scale >= PhutilCalendarRecurrenceRule::SCALE_DAILY) { } else { $import->newLogMessage(PhabricatorCalendarImportFrequencyLogType::LOGTYPE, array("frequency" => $rrule->getFrequency())); unset($nodes[$key]); } } $node_map = array(); foreach ($nodes as $node) { $full_uid = $this->getFullNodeUID($node); if (isset($node_map[$full_uid])) { $import->newLogMessage(PhabricatorCalendarImportDuplicateLogType::LOGTYPE, array("uid.full" => $full_uid)); continue; } $node_map[$full_uid] = $node; } $likely_phids = array(); foreach ($node_map as $full_uid => $node) { $uid = $node->getUID(); $matches = null; if (preg_match("/^(PHID-.*)@(.*)\z/", $uid, $matches)) { $likely_phids[$full_uid] = $matches[1]; } } if ($likely_phids) { $events = id(new PhabricatorCalendarEventQuery())->setViewer(PhabricatorUser::getOmnipotentUser())->withPHIDs($likely_phids)->execute(); $events = mpull($events, null, "getPHID"); foreach ($node_map as $full_uid => $node) { $phid = idx($likely_phids, $full_uid); if (!$phid) { continue; } $event = idx($events, $phid); if (!$event) { continue; } $import->newLogMessage(PhabricatorCalendarImportOriginalLogType::LOGTYPE, array("phid" => $event->getPHID())); unset($node_map[$full_uid]); } } if ($node_map) { $events = id(new PhabricatorCalendarEventQuery())->setViewer($viewer)->withImportAuthorPHIDs(array($import->getAuthorPHID()))->withImportUIDs(array_keys($node_map))->execute(); $events = mpull($events, null, "getImportUID"); } else { $events = null; } $xactions = array(); $update_map = array(); $invitee_map = array(); $attendee_map = array(); foreach ($node_map as $full_uid => $node) { $event = idx($events, $full_uid); if (!$event) { $event = PhabricatorCalendarEvent::initializeNewCalendarEvent($viewer); } $event->setImportAuthorPHID($import->getAuthorPHID())->setImportSourcePHID($import->getPHID())->setImportUID($full_uid)->attachImportSource($import); $this->updateEventFromNode($viewer, $event, $node); $xactions[$full_uid] = $this->newUpdateTransactions($event, $node); $update_map[$full_uid] = $event; $attendee_map[$full_uid] = array(); $attendees = $node->getAttendees(); $private_index = 1; foreach ($attendees as $attendee) { $name = $attendee->getName(); if (preg_match("/@/", $name)) { $name = new PhutilEmailAddress($name); $name = $name->getDisplayName(); } if (!strlen($name) || preg_match("/@/", $name)) { $name = pht("Private User %d", $private_index); $private_index++; } $attendee_map[$full_uid][$name] = $attendee; } } $attendee_names = array(); foreach ($attendee_map as $full_uid => $event_attendees) { foreach ($event_attendees as $name => $attendee) { $attendee_names[$name] = $attendee; } } if ($attendee_names) { $external_invitees = id(new PhabricatorCalendarExternalInviteeQuery())->setViewer($viewer)->withNames(array_keys($attendee_names))->execute(); $external_invitees = mpull($external_invitees, null, "getName"); foreach ($attendee_names as $name => $attendee) { if (isset($external_invitees[$name])) { continue; } $external_invitee = id(new PhabricatorCalendarExternalInvitee())->setName($name)->setURI($attendee->getURI())->setSourcePHID($import->getPHID()); try { $external_invitee->save(); } catch (AphrontDuplicateKeyQueryException $ex) { $external_invitee = id(new PhabricatorCalendarExternalInviteeQuery())->setViewer($viewer)->withNames(array($name))->executeOne(); } $external_invitees[$name] = $external_invitee; } } $insert_order = array(); foreach ($update_map as $full_uid => $event) { $parent_uid = $this->getParentNodeUID($node_map[$full_uid]); if ($parent_uid === null) { $insert_order[$full_uid] = $full_uid; continue; } if (empty($update_map[$parent_uid])) { $import->newLogMessage(PhabricatorCalendarImportOrphanLogType::LOGTYPE, array("uid.full" => $full_uid, "uid.parent" => $parent_uid)); continue; } $insert_order[$parent_uid] = $parent_uid; $insert_order[$full_uid] = $full_uid; } $content_source = PhabricatorContentSource::newForSource(PhabricatorWebContentSource::SOURCECONST); $edit_actor = PhabricatorUser::getOmnipotentUser(); $update_map = array_select_keys($update_map, $insert_order); foreach ($update_map as $full_uid => $event) { $parent_uid = $this->getParentNodeUID($node_map[$full_uid]); if ($parent_uid) { $parent_phid = $update_map[$parent_uid]->getPHID(); } else { $parent_phid = null; } $event->setInstanceOfEventPHID($parent_phid); $event_xactions = $xactions[$full_uid]; $editor = id(new PhabricatorCalendarEventEditor())->setActor($edit_actor)->setActingAsPHID($import->getPHID())->setContentSource($content_source)->setContinueOnNoEffect(true)->setContinueOnMissingFields(true); $is_new = !$event->getID(); $editor->applyTransactions($event, $event_xactions); $attendees = $attendee_map[$full_uid]; $old_map = $event->getInvitees(); $old_map = mpull($old_map, null, "getInviteePHID"); $new_map = array(); foreach ($attendees as $name => $attendee) { $phid = $external_invitees[$name]->getPHID(); $invitee = idx($old_map, $phid); if (!$invitee) { $invitee = id(new PhabricatorCalendarEventInvitee())->setEventPHID($event->getPHID())->setInviteePHID($phid)->setInviterPHID($import->getPHID()); } switch ($attendee->getStatus()) { case PhutilCalendarUserNode::STATUS_ACCEPTED: $status = PhabricatorCalendarEventInvitee::STATUS_ATTENDING; break; case PhutilCalendarUserNode::STATUS_DECLINED: $status = PhabricatorCalendarEventInvitee::STATUS_DECLINED; break; case PhutilCalendarUserNode::STATUS_INVITED: default: $status = PhabricatorCalendarEventInvitee::STATUS_INVITED; break; } $invitee->setStatus($status); $invitee->save(); $new_map[$phid] = $invitee; } foreach ($old_map as $phid => $invitee) { if (empty($new_map[$phid])) { $invitee->delete(); } } $event->attachInvitees($new_map); $import->newLogMessage(PhabricatorCalendarImportUpdateLogType::LOGTYPE, array("new" => $is_new, "phid" => $event->getPHID())); } if (!$update_map) { $import->newLogMessage(PhabricatorCalendarImportEmptyLogType::LOGTYPE, array()); } $updated_events = mpull($update_map, null, "getPHID"); $source_events = id(new PhabricatorCalendarEventQuery())->setViewer($viewer)->withImportSourcePHIDs(array($import->getPHID()))->execute(); $engine = new PhabricatorDestructionEngine(); foreach ($source_events as $source_event) { if (isset($updated_events[$source_event->getPHID()])) { continue; } $import->newLogMessage(PhabricatorCalendarImportDeleteLogType::LOGTYPE, array("name" => $source_event->getName())); $engine->destroyObject($source_event); } } private function getFullNodeUID(PhutilCalendarEventNode $node) { $uid = $node->getUID(); $instance_epoch = $this->getNodeInstanceEpoch($node); $full_uid = $uid . "/" . $instance_epoch; return $full_uid; } private function getParentNodeUID(PhutilCalendarEventNode $node) { $recurrence_id = $node->getRecurrenceID(); if (!strlen($recurrence_id)) { return null; } return $node->getUID() . "/"; } private function getNodeInstanceEpoch(PhutilCalendarEventNode $node) { $instance_iso = $node->getRecurrenceID(); if (strlen($instance_iso)) { $instance_datetime = PhutilCalendarAbsoluteDateTime::newFromISO8601($instance_iso); $instance_epoch = $instance_datetime->getEpoch(); } else { $instance_epoch = null; } return $instance_epoch; } private function newUpdateTransactions(PhabricatorCalendarEvent $event, PhutilCalendarEventNode $node) { $xactions = array(); $uid = $node->getUID(); if (!$event->getID()) { $xactions[] = id(new PhabricatorCalendarEventTransaction())->setTransactionType(PhabricatorTransactions::TYPE_CREATE)->setNewValue(true); } $name = $node->getName(); if (!strlen($name)) { if (strlen($uid)) { $name = pht("Unnamed Event "%s"", $uid); } else { $name = pht("Unnamed Imported Event"); } } $xactions[] = id(new PhabricatorCalendarEventTransaction())->setTransactionType(PhabricatorCalendarEventNameTransaction::TRANSACTIONTYPE)->setNewValue($name); $description = $node->getDescription(); $xactions[] = id(new PhabricatorCalendarEventTransaction())->setTransactionType(PhabricatorCalendarEventDescriptionTransaction::TRANSACTIONTYPE)->setNewValue((string) $description); $is_recurring = (bool) $node->getRecurrenceRule(); $xactions[] = id(new PhabricatorCalendarEventTransaction())->setTransactionType(PhabricatorCalendarEventRecurringTransaction::TRANSACTIONTYPE)->setNewValue($is_recurring); return $xactions; } private function updateEventFromNode(PhabricatorUser $actor, PhabricatorCalendarEvent $event, PhutilCalendarEventNode $node) { $instance_epoch = $this->getNodeInstanceEpoch($node); $event->setUTCInstanceEpoch($instance_epoch); $timezone = $actor->getTimezoneIdentifier(); $start_datetime = $node->getStartDateTime()->setViewerTimezone($timezone); $end_datetime = $node->getEndDateTime()->setViewerTimezone($timezone); $event->setStartDateTime($start_datetime)->setEndDateTime($end_datetime); $event->setIsAllDay((int) $start_datetime->getIsAllDay()); $rrule = $node->getRecurrenceRule(); if ($rrule) { $event->setRecurrenceRule($rrule); $until_datetime = $rrule->getUntil(); if ($until_datetime) { $until_datetime->setViewerTimezone($timezone); $event->setUntilDateTime($until_datetime); } $count = $rrule->getCount(); $event->setParameter("recurrenceCount", $count); } return $event; } public function canDeleteAnyEvents(PhabricatorUser $viewer, PhabricatorCalendarImport $import) { $table = new PhabricatorCalendarEvent(); $conn = $table->establishConnection("r"); $any_event = queryfx_all($conn, "SELECT phid FROM %T WHERE importSourcePHID = %s LIMIT 1", $table->getTableName(), $import->getPHID()); return (bool) $any_event; } protected final function shouldQueueDataImport($data) { return strlen($data) > self::QUEUE_BYTE_LIMIT; } protected final function queueDataImport(PhabricatorCalendarImport $import, $data) { $import->newLogMessage(PhabricatorCalendarImportQueueLogType::LOGTYPE, array("data.size" => strlen($data), "data.limit" => self::QUEUE_BYTE_LIMIT)); PhabricatorWorker::scheduleTask("PhabricatorCalendarImportReloadWorker", array("importPHID" => $import->getPHID(), "via" => PhabricatorCalendarImportReloadWorker::VIA_BACKGROUND), array("objectPHID" => $import->getPHID())); } } ?>

Did this file decode correctly?

Original Code

<?php
 abstract class PhabricatorCalendarImportEngine extends Phobject { const QUEUE_BYTE_LIMIT = 524288; public final function getImportEngineType() { return $this->getPhobjectClassConstant("\x45\x4e\107\x49\x4e\105\124\x59\x50\x45", 64); } public abstract function getImportEngineName(); public abstract function getImportEngineTypeName(); public abstract function getImportEngineHint(); public function appendImportProperties(PhabricatorUser $viewer, PhabricatorCalendarImport $import, PHUIPropertyListView $properties) { return; } public abstract function newEditEngineFields(PhabricatorEditEngine $engine, PhabricatorCalendarImport $import); public abstract function getDisplayName(PhabricatorCalendarImport $import); public abstract function importEventsFromSource(PhabricatorUser $viewer, PhabricatorCalendarImport $import, $should_queue); public abstract function canDisable(PhabricatorUser $viewer, PhabricatorCalendarImport $import); public function explainCanDisable(PhabricatorUser $viewer, PhabricatorCalendarImport $import) { throw new PhutilMethodNotImplementedException(); } public abstract function supportsTriggers(PhabricatorCalendarImport $import); public static final function getAllImportEngines() { return id(new PhutilClassMapQuery())->setAncestorClass(__CLASS__)->setUniqueMethod("\x67\145\164\111\x6d\x70\x6f\x72\164\x45\156\x67\x69\x6e\x65\x54\171\160\145")->setSortMethod("\x67\x65\164\x49\x6d\160\x6f\x72\164\105\156\147\x69\156\145\x4e\x61\x6d\x65")->execute(); } protected final function importEventDocument(PhabricatorUser $viewer, PhabricatorCalendarImport $import, PhutilCalendarRootNode $root = null) { $event_type = PhutilCalendarEventNode::NODETYPE; $nodes = array(); if ($root) { foreach ($root->getChildren() as $document) { foreach ($document->getChildren() as $node) { $node_type = $node->getNodeType(); if ($node_type != $event_type) { $import->newLogMessage(PhabricatorCalendarImportIgnoredNodeLogType::LOGTYPE, array("\x6e\157\x64\x65\x2e\x74\171\x70\x65" => $node_type)); continue; } $nodes[] = $node; } } } foreach ($nodes as $key => $node) { $dates = array(); $dates[] = $node->getStartDateTime(); $dates[] = $node->getEndDateTime(); $dates[] = $node->getCreatedDateTime(); $dates[] = $node->getModifiedDateTime(); $rrule = $node->getRecurrenceRule(); if ($rrule) { $dates[] = $rrule->getUntil(); } $bad_date = false; foreach ($dates as $date) { if ($date === null) { continue; } $year = $date->getYear(); if ($year < 1970 || $year > 2037) { $bad_date = true; break; } } if ($bad_date) { $import->newLogMessage(PhabricatorCalendarImportEpochLogType::LOGTYPE, array()); unset($nodes[$key]); } } foreach ($nodes as $key => $node) { $rrule = $node->getRecurrenceRule(); if (!$rrule) { continue; } $scale = $rrule->getFrequencyScale(); if ($scale >= PhutilCalendarRecurrenceRule::SCALE_DAILY) { } else { $import->newLogMessage(PhabricatorCalendarImportFrequencyLogType::LOGTYPE, array("\x66\x72\145\x71\165\x65\156\143\171" => $rrule->getFrequency())); unset($nodes[$key]); } } $node_map = array(); foreach ($nodes as $node) { $full_uid = $this->getFullNodeUID($node); if (isset($node_map[$full_uid])) { $import->newLogMessage(PhabricatorCalendarImportDuplicateLogType::LOGTYPE, array("\165\151\x64\x2e\x66\165\x6c\x6c" => $full_uid)); continue; } $node_map[$full_uid] = $node; } $likely_phids = array(); foreach ($node_map as $full_uid => $node) { $uid = $node->getUID(); $matches = null; if (preg_match("\57\x5e\50\x50\x48\111\104\55\x2e\52\x29\100\50\56\x2a\x29\134\x7a\x2f", $uid, $matches)) { $likely_phids[$full_uid] = $matches[1]; } } if ($likely_phids) { $events = id(new PhabricatorCalendarEventQuery())->setViewer(PhabricatorUser::getOmnipotentUser())->withPHIDs($likely_phids)->execute(); $events = mpull($events, null, "\x67\145\164\120\110\x49\x44"); foreach ($node_map as $full_uid => $node) { $phid = idx($likely_phids, $full_uid); if (!$phid) { continue; } $event = idx($events, $phid); if (!$event) { continue; } $import->newLogMessage(PhabricatorCalendarImportOriginalLogType::LOGTYPE, array("\160\150\151\144" => $event->getPHID())); unset($node_map[$full_uid]); } } if ($node_map) { $events = id(new PhabricatorCalendarEventQuery())->setViewer($viewer)->withImportAuthorPHIDs(array($import->getAuthorPHID()))->withImportUIDs(array_keys($node_map))->execute(); $events = mpull($events, null, "\x67\x65\164\111\x6d\x70\x6f\x72\164\125\111\104"); } else { $events = null; } $xactions = array(); $update_map = array(); $invitee_map = array(); $attendee_map = array(); foreach ($node_map as $full_uid => $node) { $event = idx($events, $full_uid); if (!$event) { $event = PhabricatorCalendarEvent::initializeNewCalendarEvent($viewer); } $event->setImportAuthorPHID($import->getAuthorPHID())->setImportSourcePHID($import->getPHID())->setImportUID($full_uid)->attachImportSource($import); $this->updateEventFromNode($viewer, $event, $node); $xactions[$full_uid] = $this->newUpdateTransactions($event, $node); $update_map[$full_uid] = $event; $attendee_map[$full_uid] = array(); $attendees = $node->getAttendees(); $private_index = 1; foreach ($attendees as $attendee) { $name = $attendee->getName(); if (preg_match("\x2f\x40\57", $name)) { $name = new PhutilEmailAddress($name); $name = $name->getDisplayName(); } if (!strlen($name) || preg_match("\57\100\57", $name)) { $name = pht("\120\x72\151\x76\x61\164\145\40\125\163\145\162\x20\45\144", $private_index); $private_index++; } $attendee_map[$full_uid][$name] = $attendee; } } $attendee_names = array(); foreach ($attendee_map as $full_uid => $event_attendees) { foreach ($event_attendees as $name => $attendee) { $attendee_names[$name] = $attendee; } } if ($attendee_names) { $external_invitees = id(new PhabricatorCalendarExternalInviteeQuery())->setViewer($viewer)->withNames(array_keys($attendee_names))->execute(); $external_invitees = mpull($external_invitees, null, "\147\145\164\x4e\141\155\145"); foreach ($attendee_names as $name => $attendee) { if (isset($external_invitees[$name])) { continue; } $external_invitee = id(new PhabricatorCalendarExternalInvitee())->setName($name)->setURI($attendee->getURI())->setSourcePHID($import->getPHID()); try { $external_invitee->save(); } catch (AphrontDuplicateKeyQueryException $ex) { $external_invitee = id(new PhabricatorCalendarExternalInviteeQuery())->setViewer($viewer)->withNames(array($name))->executeOne(); } $external_invitees[$name] = $external_invitee; } } $insert_order = array(); foreach ($update_map as $full_uid => $event) { $parent_uid = $this->getParentNodeUID($node_map[$full_uid]); if ($parent_uid === null) { $insert_order[$full_uid] = $full_uid; continue; } if (empty($update_map[$parent_uid])) { $import->newLogMessage(PhabricatorCalendarImportOrphanLogType::LOGTYPE, array("\165\x69\144\56\146\165\x6c\x6c" => $full_uid, "\x75\151\144\56\160\x61\x72\145\x6e\164" => $parent_uid)); continue; } $insert_order[$parent_uid] = $parent_uid; $insert_order[$full_uid] = $full_uid; } $content_source = PhabricatorContentSource::newForSource(PhabricatorWebContentSource::SOURCECONST); $edit_actor = PhabricatorUser::getOmnipotentUser(); $update_map = array_select_keys($update_map, $insert_order); foreach ($update_map as $full_uid => $event) { $parent_uid = $this->getParentNodeUID($node_map[$full_uid]); if ($parent_uid) { $parent_phid = $update_map[$parent_uid]->getPHID(); } else { $parent_phid = null; } $event->setInstanceOfEventPHID($parent_phid); $event_xactions = $xactions[$full_uid]; $editor = id(new PhabricatorCalendarEventEditor())->setActor($edit_actor)->setActingAsPHID($import->getPHID())->setContentSource($content_source)->setContinueOnNoEffect(true)->setContinueOnMissingFields(true); $is_new = !$event->getID(); $editor->applyTransactions($event, $event_xactions); $attendees = $attendee_map[$full_uid]; $old_map = $event->getInvitees(); $old_map = mpull($old_map, null, "\x67\x65\164\x49\156\166\151\x74\x65\x65\120\x48\x49\x44"); $new_map = array(); foreach ($attendees as $name => $attendee) { $phid = $external_invitees[$name]->getPHID(); $invitee = idx($old_map, $phid); if (!$invitee) { $invitee = id(new PhabricatorCalendarEventInvitee())->setEventPHID($event->getPHID())->setInviteePHID($phid)->setInviterPHID($import->getPHID()); } switch ($attendee->getStatus()) { case PhutilCalendarUserNode::STATUS_ACCEPTED: $status = PhabricatorCalendarEventInvitee::STATUS_ATTENDING; break; case PhutilCalendarUserNode::STATUS_DECLINED: $status = PhabricatorCalendarEventInvitee::STATUS_DECLINED; break; case PhutilCalendarUserNode::STATUS_INVITED: default: $status = PhabricatorCalendarEventInvitee::STATUS_INVITED; break; } $invitee->setStatus($status); $invitee->save(); $new_map[$phid] = $invitee; } foreach ($old_map as $phid => $invitee) { if (empty($new_map[$phid])) { $invitee->delete(); } } $event->attachInvitees($new_map); $import->newLogMessage(PhabricatorCalendarImportUpdateLogType::LOGTYPE, array("\156\145\x77" => $is_new, "\160\x68\x69\x64" => $event->getPHID())); } if (!$update_map) { $import->newLogMessage(PhabricatorCalendarImportEmptyLogType::LOGTYPE, array()); } $updated_events = mpull($update_map, null, "\x67\x65\164\120\110\111\x44"); $source_events = id(new PhabricatorCalendarEventQuery())->setViewer($viewer)->withImportSourcePHIDs(array($import->getPHID()))->execute(); $engine = new PhabricatorDestructionEngine(); foreach ($source_events as $source_event) { if (isset($updated_events[$source_event->getPHID()])) { continue; } $import->newLogMessage(PhabricatorCalendarImportDeleteLogType::LOGTYPE, array("\x6e\x61\155\x65" => $source_event->getName())); $engine->destroyObject($source_event); } } private function getFullNodeUID(PhutilCalendarEventNode $node) { $uid = $node->getUID(); $instance_epoch = $this->getNodeInstanceEpoch($node); $full_uid = $uid . "\57" . $instance_epoch; return $full_uid; } private function getParentNodeUID(PhutilCalendarEventNode $node) { $recurrence_id = $node->getRecurrenceID(); if (!strlen($recurrence_id)) { return null; } return $node->getUID() . "\x2f"; } private function getNodeInstanceEpoch(PhutilCalendarEventNode $node) { $instance_iso = $node->getRecurrenceID(); if (strlen($instance_iso)) { $instance_datetime = PhutilCalendarAbsoluteDateTime::newFromISO8601($instance_iso); $instance_epoch = $instance_datetime->getEpoch(); } else { $instance_epoch = null; } return $instance_epoch; } private function newUpdateTransactions(PhabricatorCalendarEvent $event, PhutilCalendarEventNode $node) { $xactions = array(); $uid = $node->getUID(); if (!$event->getID()) { $xactions[] = id(new PhabricatorCalendarEventTransaction())->setTransactionType(PhabricatorTransactions::TYPE_CREATE)->setNewValue(true); } $name = $node->getName(); if (!strlen($name)) { if (strlen($uid)) { $name = pht("\125\x6e\x6e\x61\155\x65\144\40\x45\166\x65\x6e\x74\40\x22\x25\x73\42", $uid); } else { $name = pht("\125\x6e\x6e\141\155\145\x64\40\x49\x6d\x70\157\162\x74\145\x64\40\105\x76\x65\x6e\x74"); } } $xactions[] = id(new PhabricatorCalendarEventTransaction())->setTransactionType(PhabricatorCalendarEventNameTransaction::TRANSACTIONTYPE)->setNewValue($name); $description = $node->getDescription(); $xactions[] = id(new PhabricatorCalendarEventTransaction())->setTransactionType(PhabricatorCalendarEventDescriptionTransaction::TRANSACTIONTYPE)->setNewValue((string) $description); $is_recurring = (bool) $node->getRecurrenceRule(); $xactions[] = id(new PhabricatorCalendarEventTransaction())->setTransactionType(PhabricatorCalendarEventRecurringTransaction::TRANSACTIONTYPE)->setNewValue($is_recurring); return $xactions; } private function updateEventFromNode(PhabricatorUser $actor, PhabricatorCalendarEvent $event, PhutilCalendarEventNode $node) { $instance_epoch = $this->getNodeInstanceEpoch($node); $event->setUTCInstanceEpoch($instance_epoch); $timezone = $actor->getTimezoneIdentifier(); $start_datetime = $node->getStartDateTime()->setViewerTimezone($timezone); $end_datetime = $node->getEndDateTime()->setViewerTimezone($timezone); $event->setStartDateTime($start_datetime)->setEndDateTime($end_datetime); $event->setIsAllDay((int) $start_datetime->getIsAllDay()); $rrule = $node->getRecurrenceRule(); if ($rrule) { $event->setRecurrenceRule($rrule); $until_datetime = $rrule->getUntil(); if ($until_datetime) { $until_datetime->setViewerTimezone($timezone); $event->setUntilDateTime($until_datetime); } $count = $rrule->getCount(); $event->setParameter("\162\x65\143\165\162\x72\x65\x6e\x63\145\x43\x6f\x75\156\164", $count); } return $event; } public function canDeleteAnyEvents(PhabricatorUser $viewer, PhabricatorCalendarImport $import) { $table = new PhabricatorCalendarEvent(); $conn = $table->establishConnection("\x72"); $any_event = queryfx_all($conn, "\123\105\x4c\105\103\x54\x20\160\150\151\144\x20\106\x52\117\115\x20\45\x54\x20\x57\x48\105\122\105\40\151\155\160\157\x72\x74\123\x6f\x75\x72\143\x65\120\x48\111\x44\40\75\x20\45\163\x20\x4c\x49\115\111\124\x20\x31", $table->getTableName(), $import->getPHID()); return (bool) $any_event; } protected final function shouldQueueDataImport($data) { return strlen($data) > self::QUEUE_BYTE_LIMIT; } protected final function queueDataImport(PhabricatorCalendarImport $import, $data) { $import->newLogMessage(PhabricatorCalendarImportQueueLogType::LOGTYPE, array("\x64\x61\x74\x61\x2e\163\x69\172\x65" => strlen($data), "\144\x61\x74\x61\x2e\154\x69\x6d\151\x74" => self::QUEUE_BYTE_LIMIT)); PhabricatorWorker::scheduleTask("\x50\150\x61\142\x72\x69\x63\141\164\157\162\103\141\x6c\x65\156\x64\x61\x72\111\x6d\x70\x6f\162\x74\122\145\x6c\x6f\x61\x64\x57\157\x72\153\x65\x72", array("\151\x6d\160\x6f\162\x74\120\x48\111\104" => $import->getPHID(), "\166\151\141" => PhabricatorCalendarImportReloadWorker::VIA_BACKGROUND), array("\x6f\x62\x6a\x65\143\x74\120\x48\111\x44" => $import->getPHID())); } }

Function Calls

None

Variables

None

Stats

MD5 0cf47b348c82d881ca69b642eb69f4fd
Eval Count 0
Decode Time 134 ms