PHP에서 Google Calendar API를 사용하여 반복 이벤트에 예외 추가
-
13-09-2019 - |
문제
Zend Gdata Calendar 클래스를 사용하여 반복적 인 이벤트에 예외를 추가 할 수있는 방법은 무엇입니까?
$orig = $evtFeed[0]; //the original recurrence
$ex = $gc->newEventEntry(); //gc is a Zend_Gdata_Calendar object
$ex->originalEvent = $gc->newOriginalEvent($orig->getId(), $orig->getLink('self')->href, $gc->newWhen('2009-09-23T15:00:00.000Z'));
$ex->eventStatus = $gc->newEventStatus("http://schemas.google.com/g/2005#event.canceled");
$gc->insertEvent($ex);
위의 코드의 약 20 가지 변형을 시도했지만 매번 다음 오류가 발생합니다.
치명적인 오류 : '예상 응답 코드 200, 403 g : originalevent [2009-09-23 15:00:00]가있는 메시지가 포함 된'Zend_gdata_app_aph_httpexception '은 끊임없는 예외'Zend_gdata_app_httpexception '이 되풀이 사건의 인스턴스에 해당하지 않습니다.'
해결책
글쎄, 인터넷에서 몇 시간과 몇 시간 후에, 나는 이것이 Zend API에서 가능할 수 있다는 결론에 도달했지만 결코 그것을 파악하지 못할 것입니다. 나는 마침내 재발을 편집하고 icalendar 데이터에 exdate 규칙을 추가하기 위해 포기하고 의지했습니다. Google 캘린더 인터페이스의 버그 덕분 에이 방법으로 생성 된 예외는 페이지를 새로 고치지 않으면 표시되지 않으므로 (캘린더 위의 새로 고침 링크가 작동하지 않음) 더 많은 시간을 낭비했습니다.
누군가가 Exdate에 의지하지 않고이 작업을 수행 할 수있는 방법을 찾으면 게시하십시오. 주기적으로 다시 확인하고 정답을 표시하겠습니다.
업데이트: 좋아, 나는 그것을 알아 냈다. 나는 이것을 부분적으로 바보이고 부분적으로 Google의 끔찍한 이름 지정 시스템에 대해 비난 할 것입니다. 부름 getId()
에 EventEntry
실제로 이벤트의 편집 URL을 반환합니다. 그만큼 OriginalEvent
생성자는 URL의 실제 ID 부분만을 기대하므로 서브 스트링을 사용하여 추출해야합니다. 이름을 지정하는 것이 얼마나 좋은가 getId()
액세서가 올바르게.
다른 팁
getid를 구문 분석 할 필요가 없으며 CalendareVententry.geticaluid () 만 사용하십시오.