Adding an appointment to specific user's calendars using with php-ews - php

I am trying to add an appointment using php-ews to an Exchange 2007 user's calendar. I have the code set up to add to the currently connected user's calendar and that works fine. This user also has permissions to write to other user's calendars. Does anyone know how I would go about directly adding calendar events to some one else's calendar? (I don't want to invite them)

After really digging into ews I finally figured this out and it's pretty easy. You just assign the user to the folder. So if you have:
$request->SavedItemFolderId->DistinguishedFolderId->Id = 'calendar';
Just add:
$request->SavedItemFolderId->DistinguishedFolderId->Mailbox->EmailAddress = 'email#domain.com'
And that's it.

For reference: above mentioned method works for all things you might want to do "on behalf" of a user, be it a task, event or a message. The idea is to have one account that has privileges to other accounts and do the required tasks "on behalf" of other users. This approach simplifies communication with EWS.
For the people who come here seeking more answers regarding communication with EWS via PHP take a look # EWSWrapper that wraps itself around and expands php-ews to make things easier :)

Related

Google calendar reminders

I have a Laravel 5 project and I create event on google calendar with larvael-google-calendar.
I need to create reminder but not reminder of an event (so not the notifications to remind an event). The reminder you can create on Google calendar.
This :
Which look like this after created :
And not this
But I don't find anything on it, when I research I always find results concerning the reminder like a notification.
Anybody know how to create it with the API or another method (PHP of course)? (I don't care if I need to remove my package, just want a solution).
I have actually looked around for this for a long time. This is the conclusion i have come to.
The reminders you are speaking of arnt actually part of Google Calendar they are more part of your full Google account as far as i have been able to tell.
You can for example create a reminder though the Google assistant, Google Calendar android app and the Gmail android app as far as i have seen so far.
It appears that this works across multiple applications there for IMO this is not directly part of Google calendar and thats why we cant seem to find an option for adding remainders from within the Google Calendar api.
I think we will have to wait for Google to release a new API for this.

How to add an event to other person's Google Calendar with PHP API client?

I am working on a web application with a build-in agenda. I want to add the items that have been added in this build-in agenda, to the user's Google Agenda. But there is one thing I am wondering. How to get access to that user's Google Agenda?
I was able to get access to my own agenda by adding the XXXXXX#developer.gserviceaccount.com email to the list of addresses that have access to my agenda. But asking everyone to do this isn't really user friendly.
So does someone know the best way to request access to another person's agenda so I can add events through the Google PHP API client?
Thanks in advance!
Consider using Oauth tokens. See https://developers.google.com/accounts/docs/OAuth2
and https://developers.google.com/google-apps/calendar/auth

Inviting app users to an app created event - is it possible?

I have a question regarding the creation of event invites by a facebook application, and the ability to invite the users who have approved that applications permissions to this event.
For example, we are a local nightclub who have an app allowing users to connect with the app to see who else is attending events etc, and keep up to date with information about the events we host. It would be ideal to be able to send an event invite to these users when we have special events or theme nights.
Currently the app has around 10,000 approved users.
Just really looking to find out if this is at all possible with the new open graph api? In particular the info provided at:
Event API Reference
How To Use the Graph API to Manage Events
There does seem to be some confusion over what these posts say can be achieved, and what actually can be achieved.. unless those that I have previously spoken to are still basing their opinions on the old rest api.
Clarification and pointers appreciated!
The HTTP POST if you use the ?users= can only handle so many IDs before the length of the url overruns. Since it's a post, you can specify the users parameter and then a comma separated list of ids for the value. Try it out here: http://developers.facebook.com/tools/explorer?method=GET&path=me

Integrating Outlook Calendar to Website / Other

When the users add events to the online calendar they also can be added to the outlook calendar (synchronize). Obviously a site built using PHP can not integrate with desktop application directly, so I am looking alternative options.
Options I found:
Using PHP ICAL library creates an .ics file and the user can download it and install. Not the most user friendly way of doing it, might work.
Use SharePoint or exchange server- but have no previous experience working Microsoft technologies, so it not ideal.
Use Google Calendar and Zend Library (gdata), create online calendar and add events to that. Then using Google Calendar Sync tool the user can sync the online calendar to outlook. But the problem here is the all users need a gmail account to use the Sync tool, it not ideal when you have thousands of users on the site. Unless I create one global gmail account and create many calendars on that account, if that even possible.
Questions:
Are there any outlook plug-ins paid or free (ideally) that can achieve this?
Are there any web service/ APIs that can achieve this?
Any other ideas or solutions?
Office 365 comes with an REST API that can be used to read/write to calendars.
Here's some documentation on this. http://msdn.microsoft.com/office/office365/api/calendar-rest-operations
Alternatively, the EWS Managed API might be able to help you: http://msdn.microsoft.com/en-us/library/office/dd633696(v=exchg.80).aspx and
http://msdn.microsoft.com/en-us/library/office/dd633702(v=exchg.80).aspx
you could do this by having the outlook subscribe to the online calendar.
with phpicalendar you can have other clients subscribe to your calendars (here)
you may want to tweak the generated .ics file to include X-PUBLISHED-TTL - Recommended update interval for subscription to the calendar
To get the calender event follow these step:
Sign in to Calendar
On the toolbar, click Share
Select the calendar that you want to export/embed.
Click Get a link.
Under Show event details (click Create)
Note: If step number 5 is already performed, just skip it and click Link to event details
Copy the link that you needed and paste it on the desired program/website.
Use EWS exchange webservice to achieve this.
If it is a website with a no. of users u will need to create OU in exchange server and add a admin user who has read permissions to all accounts in the DL.
EWS exposes endpoints where in u can fetch the calendar mail add read and do all kind of operations.
Building off Rahul's idea but using a different approach - Microsoft provides something similar to a "RSS feed" that auto updates each time you GET the URL, except it's an feed of "ICS" event data:
Open up Outlook Web Access (OWA), e.g. if you are using a microsoft.com account the URL might be https://outlook.live.com/calendar/ (if you are using some other Microsoft 365 account the URL may be different)
On the top right, click the Settings icon
Click View all Outlook Settings
Click Calendar > Shared Calendars > and under Publish a calendar, select the calendar, then under Select permissions, choose as appropriate, then click Publish
It will give you HTML and ICS links. Copy the ICS link URL.
Use your favourite programming language/tool/software to periodically do a HTTPS request (using CURL or AJAX or some other HTTP fetch) using GET method to the URL you got in step 5. You will get back a bunch of calendar data in ICS format. Use this however you need. You may be able to find some pre-written code from elsewhere that parses ICS data for you, or you can manually create your own parser code if you have to.

Best way to implement a Calendar interface using Google Cal feeds for events?

I'm building a site for my school as a pet project, which would include accounts for all students. I want to display a calendar for each student that should have the following features:
It should be able to import events from multiple Google Calendar feeds. Compatibility with either the XML, ICAL or HTML feed will do.
It should be able to give different colors to different events based on the feeds which they originated from.
It would be nice if the calendar could also give different colors based on certains tags in the event titles, like all events starting with "Test: " will be red, and all events starting with "Deadline: " can be blue.
The interface should be nice, but simple. It should be easy to implement, and no dependency on Javascript would be good. Preferably, it will work simply on PHP.
It must provide 3 views of the calendar: Month, Week & Agenda
Features I don't require are:
Write ability (the calendars can/should be read-only)
Multiple-day events or recurring events
Links or html content inside events
What would be the simplest pre-made solution to implementing this? Currently, I am trying out various solutions like FullCalendar, and the various solutions listed at the Plans Website. However, none of them are perfect, because either they are not supported any more, or require javascript, or don't have all the features I need. I'm also gonna check out the GWT-cal plugin, and the Zend Calendar GData framework, but any feedback on your experiences with any of these would be good.
Can someone suggest the easiest way of getting this working?
Ok the word limit on comments is ridiculously low and irritating, so after having posted two comments and still having more to say, I decided to just post an answer. Sorry...
Yes, GCal is perfect, but I can't trust the technologically challenged students of my school to manually subscribe to ical feeds. So i wanna provide a site where people can select from a list of courses, and automatically get a customized event feed.
Right now, I have a rough implementation going by making a common Google Account that has separate calendars for each course. Then with some url trickery, I embed a custom iframe that gives a special read-only version of the calendar with only the calendars applicable to that specific user. This will probably raise problems when I want email notifications of events and stuff, and might force me to go into the Google Calendar API in detail. :(
Can you check out my other question at Is there anything wrong with the way I'm implementing a Calendar on my site? and give some feedback?
you should check out gwt-cal. versin 0.8.x only provides day/week view but the 0.9.0 branch implements an Agenda view with a Month view in progress.
First of all, GWT-cal is not PHP, it is Java. Secondly, why do you not want to work with JavaScript? Finally, if you are importing it all from Google Calendar, why not use Google Calendar as it has almost all you are requesting and can handle all of the user accounts and such?
The way I understand the project is you are attempting to either make one page that displays many different calendars from all the students or have each student sign in and view their calendar. Is that correct?
I would build (or find) an app that mixes the selected iCal feeds together to create a new feed, so that it can be subscribed to in GCal/iCal/Outloook/30boxes/...
If you still want a display you might try WebCalendar.
IIRC there are also some Drupal modules for this kind of thing.

Categories