started implementing import - not working atm
This commit is contained in:
parent
c0debc99fc
commit
746278f891
@ -620,7 +620,7 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
|
||||
buttons : Zarafa.common.dialogs.MessageBox.OK
|
||||
});
|
||||
} else {
|
||||
var calendarFolder = this.getContactFolderByEntryid(folderValue);
|
||||
var calendarFolder = this.getCalendarFolderByEntryid(calValue);
|
||||
|
||||
this.loadMask.show();
|
||||
var uids = [];
|
||||
@ -630,7 +630,7 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
|
||||
uids.push(newRecord.data.record.internal_fields.event_uid);
|
||||
}, this);
|
||||
|
||||
var responseHandler = new Zarafa.plugins.contactimporter.data.ResponseHandler({
|
||||
var responseHandler = new Zarafa.plugins.calendarimporter.data.ResponseHandler({
|
||||
successCallback: this.importEventsDone,
|
||||
scope: this
|
||||
});
|
||||
@ -639,10 +639,10 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
|
||||
'calendarmodule',
|
||||
'import',
|
||||
{
|
||||
storeid : contactFolder.store_entryid,
|
||||
folderid : contactFolder.entryid,
|
||||
storeid : calendarFolder.store_entryid,
|
||||
folderid : calendarFolder.entryid,
|
||||
uids : uids,
|
||||
vcf_filepath: this.vcffile
|
||||
ics_filepath: this.icsfile
|
||||
},
|
||||
responseHandler
|
||||
);
|
||||
@ -655,8 +655,10 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
|
||||
* @param {Object} response
|
||||
*/
|
||||
importEventsDone: function (response) {
|
||||
this.loadMask.hide();
|
||||
this.dialog.close();
|
||||
var self = this.scope;
|
||||
|
||||
self.loadMask.hide();
|
||||
self.dialog.close();
|
||||
if (response.status == true) {
|
||||
container.getNotifier().notify('info', 'Imported', 'Imported ' + response.count + ' events. Please reload your calendar!');
|
||||
} else {
|
||||
|
@ -354,7 +354,99 @@ class CalendarModule extends Module
|
||||
*/
|
||||
private function importCalendar($actionType, $actionData)
|
||||
{
|
||||
// TODO: implement
|
||||
// Get uploaded vcf path
|
||||
$icsfile = false;
|
||||
if (isset($actionData["ics_filepath"])) {
|
||||
$icsfile = $actionData["ics_filepath"];
|
||||
}
|
||||
|
||||
// Get store id
|
||||
$storeid = false;
|
||||
if (isset($actionData["storeid"])) {
|
||||
$storeid = $actionData["storeid"];
|
||||
}
|
||||
|
||||
// Get folder entryid
|
||||
$folderid = false;
|
||||
if (isset($actionData["folderid"])) {
|
||||
$folderid = $actionData["folderid"];
|
||||
}
|
||||
|
||||
// Get uids
|
||||
$uids = array();
|
||||
if (isset($actionData["uids"])) {
|
||||
$uids = $actionData["uids"];
|
||||
}
|
||||
|
||||
$response = array();
|
||||
$error = false;
|
||||
$error_msg = "";
|
||||
|
||||
// parse the ics file a last time...
|
||||
$parser = null;
|
||||
try {
|
||||
$parser = VObject\Reader::read(
|
||||
fopen($icsfile,'r')
|
||||
);
|
||||
} catch (Exception $e) {
|
||||
$error = true;
|
||||
$error_msg = $e->getMessage();
|
||||
}
|
||||
|
||||
$events = array();
|
||||
if (count($parser->VEVENT) > 0) {
|
||||
$events = $this->parseCalendarToArray($parser);
|
||||
$store = $GLOBALS["mapisession"]->openMessageStore(hex2bin($storeid));
|
||||
$folder = mapi_msgstore_openentry($store, hex2bin($folderid));
|
||||
|
||||
$importall = false;
|
||||
if (count($uids) == count($events)) {
|
||||
$importall = true;
|
||||
}
|
||||
|
||||
$propValuesMAPI = array();
|
||||
$properties = $GLOBALS['properties']->getAppointmentProperties();
|
||||
$count = 0;
|
||||
|
||||
// iterate through all events and import them :)
|
||||
foreach ($events as $event) {
|
||||
if (isset($event["startdate"]) && ($importall || in_array($event["internal_fields"]["event_uid"], $uids))) {
|
||||
// parse the arraykeys
|
||||
// TODO: this is very slow...
|
||||
foreach ($events as $key => $value) {
|
||||
if ($key !== "internal_fields") {
|
||||
if(isset($properties[$key])) {
|
||||
$propValuesMAPI[$properties[$key]] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$propValuesMAPI[$properties["message_class"]] = "IPM.Appointment";
|
||||
$propValuesMAPI[$properties["icon_index"]] = "1024";
|
||||
$message = mapi_folder_createmessage($folder);
|
||||
|
||||
|
||||
mapi_setprops($message, $propValuesMAPI);
|
||||
mapi_savechanges($message);
|
||||
if ($this->DEBUG) {
|
||||
error_log("New event added: \"" . $propValuesMAPI[$properties["startdate"]] . "\".\n");
|
||||
}
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
|
||||
$response['status'] = true;
|
||||
$response['count'] = $count;
|
||||
$response['message'] = "";
|
||||
|
||||
} else {
|
||||
$response['status'] = false;
|
||||
$response['count'] = 0;
|
||||
$response['message'] = $error ? $error_msg : "ICS file empty!";
|
||||
}
|
||||
|
||||
$this->addActionData($actionType, $response);
|
||||
$GLOBALS["bus"]->addData($this->getResponseData());
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user