Пример #1
1
 public function oauth2callback()
 {
     $this->tpl_name = "";
     require_once '../tf_app/ext/google/autoload.php';
     session_start();
     // ********************************************************  //
     // Get these values from https://console.developers.google.com
     // Be sure to enable the Analytics API
     // ********************************************************    //
     $client_id = '334086275725-f15a3bl6bm7kbhfkm66u9va1si5bb9ia.apps.googleusercontent.com';
     $client_secret = 'FbKWozz_ZNmlk5PUEXPC2BUO';
     $redirect_uri = 'http://localhost.me:8006/ajax_v3/oauth2callback';
     $client = new Google_Client();
     $client->setApplicationName("test-calendar");
     $client->setClientId($client_id);
     $client->setClientSecret($client_secret);
     $client->setRedirectUri($redirect_uri);
     $client->setAccessType('offline');
     // Gets us our refreshtoken
     $client->setScopes(array('https://www.googleapis.com/auth/calendar'));
     //For loging out.
     if (isset($_GET['logout'])) {
         unset($_SESSION['token']);
     }
     // Step 2: The user accepted your access now you need to exchange it.
     if (isset($_GET['code'])) {
         $client->authenticate($_GET['code']);
         $_SESSION['token'] = $client->getAccessToken();
         $redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
         header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
     }
     // $_SESSION["token"]["access_token"] = "ya29.xAFLnfAz9X-h7LWyUF6258cMbOzcUljurQPw0UMPdnpP15fiz5SWY0yJXvKvfaupQuYCPA";
     // Step 1:  The user has not authenticated we give them a link to login
     if (!isset($_SESSION['token'])) {
         $authUrl = $client->createAuthUrl();
         print "<a class='login' href='{$authUrl}'>Connect Me!</a>";
     }
     // Step 3: We have access we can now create our service
     if (isset($_SESSION['token'])) {
         // $client->refreshToken($refreshToken);
         $client->setAccessToken($_SESSION['token']);
         $refresh_token = $client->getRefreshToken();
         $_SESSION['refresh_token'] = $refresh_token;
         $token = json_decode($_SESSION['token']);
         // echo "Access Token = " . $token->access_token . '<br/>';
         // echo "Refresh Token = " . $token->refresh_token . '<br/>';
         // echo "Token type = " . $token->token_type . '<br/>';
         // echo "Expires in = " . $token->expires_in . '<br/>';
         // echo "ID Token = " . $token->id_token . '<br/>';
         // echo "Created = " . $token->created . '<br/>';
         print "<a class='logout' href='http://localhost.me:8006/ajax_v3/oauth2callback?logout=1'>LogOut</a><br>";
         // print_r($_SESSION);
         $service = new Google_Service_Calendar($client);
         $calendarList = $service->calendarList->listCalendarList();
         while (true) {
             foreach ($calendarList->getItems() as $calendarListEntry) {
                 echo $calendarListEntry->getSummary() . "<br>\n";
                 // get events
                 $events = $service->events->listEvents($calendarListEntry->id);
                 foreach ($events->getItems() as $event) {
                     echo "-----" . $event->getSummary() . "<br>";
                 }
             }
             $pageToken = $calendarList->getNextPageToken();
             if ($pageToken) {
                 $optParams = array('pageToken' => $pageToken);
                 $calendarList = $service->calendarList->listCalendarList($optParams);
             } else {
                 break;
             }
         }
         // reservation
         if ($_REQUEST["type"] == "r") {
             $rsv = $this->Space_reserve->list_(1, 1000, 'sr.state = 1 and sr.date > "' . date('Y.m.d', strtotime('-1 month')) . '"');
             $len_rsv = sizeof($rsv);
             for ($r = 0; $r < $len_rsv; $r++) {
                 $rsv[$r]["s"] = substr_replace(date("Y-m-dH:i:00", strtotime(str_replace(".", "-", $rsv[$r]["date"]) . $rsv[$r]["start"])), 'T', 10, 0);
                 $rsv[$r]["e"] = substr_replace(date("Y-m-dH:i:00", strtotime(str_replace(".", "-", $rsv[$r]["date"]) . $rsv[$r]["end"])), 'T', 10, 0);
                 $rsv[$r]["summary"] = "[" . $rsv[$r]["opt"] . "F " . explode_ext($rsv[$r]["name"], '(') . "] " . $rsv[$r]["purpose"];
                 $rsv[$r]["location"] = $rsv[$r]["opt"] . "F " . explode_ext($rsv[$r]["name"], '(');
             }
             $_calId = '*****@*****.**';
             $fo = $rsv;
         }
         // event
         if ($_REQUEST["type"] == "e") {
             $ev = $this->Event->list_(1, 10000, 'e.state = 1 and open = 1 and (e.date > "' . date('Y.m.d', strtotime('-1 month')) . '" or e.date_e > "' . date('Y.m.d', strtotime('-1 month')) . '")');
             $len_ev = sizeof($ev);
             for ($r = 0; $r < $len_ev; $r++) {
                 $ev[$r]["s"] = substr_replace(date("Y-m-dH:i:00", strtotime(str_replace(".", "-", $ev[$r]["date"]) . $ev[$r]["start"])), 'T', 10, 0);
                 $ev[$r]["e"] = substr_replace(date("Y-m-dH:i:00", strtotime(str_replace(".", "-", $ev[$r]["date_e"]) . $ev[$r]["end"])), 'T', 10, 0);
                 $ev[$r]["summary"] = "[Event] " . $ev[$r]["title"];
                 if ($ev[$r]["space_id"] == 0) {
                     $ev[$r]["location"] = $ev[$r]["space_etc"];
                 } else {
                     $ev[$r]["location"] = "D.CAMP " . $ev[$r]["opt"] . "F " . explode_ext($ev[$r]["sname"], '(');
                 }
             }
             $_calId = '*****@*****.**';
             $fo = $ev;
         }
         // office_hours
         if ($_REQUEST["type"] == "o") {
             $off = $this->Office_hours->list_(1, 1000, 'o.status = 1 and o.is_open = 1 and o.e_start > "' . date('Y.m.d', strtotime('-1 month')) . '"');
             $len_off = sizeof($off);
             for ($r = 0; $r < $len_off; $r++) {
                 $off[$r]["s"] = substr_replace(date("Y-m-dH:i:00", strtotime(str_replace(".", "-", str_replace(" ", "", $off[$r]["e_start"])))), 'T', 10, 0);
                 $off[$r]["e"] = substr_replace(date("Y-m-dH:i:00", strtotime(str_replace(".", "-", str_replace(" ", "", $off[$r]["e_end"])))), 'T', 10, 0);
                 $off[$r]["summary"] = "[Office Hours] " . $off[$r]["subject"];
                 $off[$r]["location"] = "D.CAMP " . $off[$r]["place"];
             }
             $_calId = '*****@*****.**';
             $fo = $off;
         }
         // challenge
         if ($_REQUEST["type"] == "c") {
             $ch = $this->Competitions->get_list(1, 1000, 'c.status = 1 and c.open = 1 and (c.date_s > "' . date('Y.m.d', strtotime('-1 month')) . '" or c.date_e > "' . date('Y.m.d', strtotime('-1 month')) . '")');
             $len_ch = sizeof($ch);
             for ($r = 0; $r < $len_ch; $r++) {
                 $ch[$r]["s"] = substr_replace(date("Y-m-dH:i:00", strtotime(str_replace(".", "-", $ch[$r]["date_s"]) . $ch[$r]["time_s"])), 'T', 10, 0);
                 $ch[$r]["e"] = substr_replace(date("Y-m-dH:i:00", strtotime(str_replace(".", "-", $ch[$r]["date_e"]) . $ch[$r]["time_e"])), 'T', 10, 0);
                 $ch[$r]["summary"] = "[Challenge] " . $ch[$r]["subject"];
                 $ch[$r]["location"] = "";
             }
             $_calId = '*****@*****.**';
             $fo = $ch;
         }
         // Remove
         if ($_REQUEST["remove"]) {
             // $primary = '*****@*****.**';
             $events = $service->events->listEvents($_calId);
             while (true) {
                 foreach ($events->getItems() as $event) {
                     echo $event->getSummary();
                     $service->events->delete($_calId, $event->id);
                 }
                 $pageToken = $events->getNextPageToken();
                 if ($pageToken) {
                     $optParams = array('pageToken' => $pageToken);
                     $events = $service->events->listEvents($_calId, $optParams);
                 } else {
                     break;
                 }
             }
         } else {
             if ($fo) {
                 $len_fo = sizeof($fo);
                 for ($i = 0; $i < $len_fo; $i++) {
                     $event = new Google_Service_Calendar_Event(array('summary' => $fo[$i]["summary"], 'location' => $fo[$i]["location"], 'start' => array('dateTime' => $fo[$i]["s"], 'timeZone' => "Asia/Seoul"), 'end' => array('dateTime' => $fo[$i]["e"], 'timeZone' => "Asia/Seoul")));
                     $calendarId = $_calId;
                     $event = $service->events->insert($calendarId, $event);
                     // printf('<br>Event created: %s\n', $event->htmlLink);
                 }
             }
         }
     }
 }
Пример #2
0
 public function index()
 {
     ini_set('memory_limit', -1);
     $this->tpl_name = "";
     require_once '../tf_app/ext/google/autoload.php';
     session_start();
     // ********************************************************  //
     // Get these values from https://console.developers.google.com
     // Be sure to enable the Analytics API
     // ********************************************************    //
     // violet
     $client_id = '334086275725-f15a3bl6bm7kbhfkm66u9va1si5bb9ia.apps.googleusercontent.com';
     $client_secret = 'FbKWozz_ZNmlk5PUEXPC2BUO';
     // dcamp
     // $client_id = '77977713151-g8vu8dfj8ehn6ac53h3fmifau36g824o.apps.googleusercontent.com';
     // $client_secret = 'fO90AB1epKqAYZUqVojZ883k';
     $redirect_uri = 'http://dcamp.kr/gcalendar';
     $client = new Google_Client();
     $client->setApplicationName("test-calendar");
     $client->setClientId($client_id);
     $client->setClientSecret($client_secret);
     $client->setRedirectUri($redirect_uri);
     $client->setAccessType('offline');
     // Gets us our refreshtoken
     $client->setApprovalPrompt('force');
     $client->setScopes(array('https://www.googleapis.com/auth/calendar'));
     // Use refresh token.
     $rt = $this->Code->get_by_key('gcalendar');
     if ($rt[0]["_value"]) {
         $refrestoketn = $rt[0];
         $client->refreshToken($refrestoketn["_value"]);
         $_SESSION['t'] = $client->getAccessToken();
         $token = json_decode($_SESSION['t']);
         if ($token->access_token) {
             $_SESSION['token'] = $_SESSION['t'];
         }
     }
     if (isset($_GET['code'])) {
         $client->authenticate($_GET['code']);
         $_SESSION['token'] = $client->getAccessToken();
         $redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
         header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
     }
     // For loging out.
     if (isset($_GET['logout'])) {
         unset($_SESSION['token']);
     }
     // Step 1:  The user has not authenticated we give them a link to login
     if (!isset($_SESSION['token'])) {
         $authUrl = $client->createAuthUrl();
         print "<a class='login' href='{$authUrl}'>Connect Me!</a>";
     }
     // Step 3: We have access we can now create our service
     if (isset($_SESSION['token'])) {
         $client->setAccessToken($_SESSION['token']);
         $service = new Google_Service_Calendar($client);
         $token = json_decode($_SESSION['token']);
         if ($token->refresh_token) {
             $_arr["_key"] = "gcalendar";
             $_arr["_value"] = $token->refresh_token;
             $_arr["id"] = 9222;
             $this->Code->debug();
             $this->Code->add($_arr);
         }
         // echo "<br>Access Token = " . $token->access_token . '<br/>';
         // echo "Refresh Token = " . $token->refresh_token . '<br/>';
         // echo "Token type = " . $token->token_type . '<br/>';
         // echo "Expires in = " . $token->expires_in . '<br/>';
         // echo "ID Token = " . $token->id_token . '<br/>';
         // echo "Created = " . $token->created . '<br/>';
         print "<a class='logout' href='http://dcamp.kr/gcalendar?logout=1'>LogOut</a><br>";
         // event
         if ($_REQUEST["type"] == "e") {
             $_calId = '*****@*****.**';
             // remove
             $events = $service->events->listEvents($_calId);
             while (true) {
                 foreach ($events->getItems() as $event) {
                     $service->events->delete($_calId, $event->id);
                 }
                 $pageToken = $events->getNextPageToken();
                 if ($pageToken) {
                     $optParams = array('pageToken' => $pageToken);
                     $events = $service->events->listEvents($_calId, $optParams);
                 } else {
                     break;
                 }
             }
             // write
             $ev = $this->Event->list_(1, 10000, 'e.state = 1 and open = 1 and (e.date > "' . date('Y.m.d', strtotime('-1 month')) . '" or e.date_e > "' . date('Y.m.d', strtotime('-1 month')) . '")');
             $len_ev = sizeof($ev);
             for ($r = 0; $r < $len_ev; $r++) {
                 $ev[$r]["s"] = substr_replace(date("Y-m-dH:i:00", strtotime(str_replace(".", "-", $ev[$r]["date"]) . $ev[$r]["start"])), 'T', 10, 0);
                 $ev[$r]["e"] = substr_replace(date("Y-m-dH:i:00", strtotime(str_replace(".", "-", $ev[$r]["date_e"]) . $ev[$r]["end"])), 'T', 10, 0);
                 $ev[$r]["summary"] = "[Event] " . str_replace('&', '%26', str_replace('#', '%23', $ev[$r]["title"]));
                 if ($ev[$r]["space_id"] == 0) {
                     $ev[$r]["location"] = $ev[$r]["space_etc"];
                 } else {
                     $ev[$r]["location"] = "D.CAMP " . $ev[$r]["opt"] . "F " . explode_ext($ev[$r]["sname"], '(');
                 }
             }
             $fo = $ev;
         }
         // office_hours
         if ($_REQUEST["type"] == "o") {
             $_calId = '*****@*****.**';
             // remove
             $events = $service->events->listEvents($_calId);
             while (true) {
                 foreach ($events->getItems() as $event) {
                     $service->events->delete($_calId, $event->id);
                 }
                 $pageToken = $events->getNextPageToken();
                 if ($pageToken) {
                     $optParams = array('pageToken' => $pageToken);
                     $events = $service->events->listEvents($_calId, $optParams);
                 } else {
                     break;
                 }
             }
             // write
             $off = $this->Office_hours->list_(1, 1000, 'o.status = 1 and o.is_open = 1 and o.e_start > "' . date('Y.m.d', strtotime('-1 month')) . '"');
             $len_off = sizeof($off);
             for ($r = 0; $r < $len_off; $r++) {
                 $off[$r]["s"] = substr_replace(date("Y-m-dH:i:00", strtotime(str_replace(".", "-", str_replace(" ", "", $off[$r]["e_start"])))), 'T', 10, 0);
                 $off[$r]["e"] = substr_replace(date("Y-m-dH:i:00", strtotime(str_replace(".", "-", str_replace(" ", "", $off[$r]["e_end"])))), 'T', 10, 0);
                 $off[$r]["summary"] = "[Office Hours] " . str_replace('&', '%26', str_replace('#', '%23', $off[$r]["subject"]));
                 $off[$r]["location"] = "D.CAMP " . $off[$r]["place"];
             }
             $fo = $off;
         }
         // challenge
         if ($_REQUEST["type"] == "c") {
             $_calId = '*****@*****.**';
             // remove
             $events = $service->events->listEvents($_calId);
             while (true) {
                 foreach ($events->getItems() as $event) {
                     $service->events->delete($_calId, $event->id);
                 }
                 $pageToken = $events->getNextPageToken();
                 if ($pageToken) {
                     $optParams = array('pageToken' => $pageToken);
                     $events = $service->events->listEvents($_calId, $optParams);
                 } else {
                     break;
                 }
             }
             // write
             $ch = $this->Competitions->get_list(1, 1000, 'c.status = 1 and c.open = 1 and (c.date_s > "' . date('Y.m.d', strtotime('-1 month')) . '" or c.date_e > "' . date('Y.m.d', strtotime('-1 month')) . '")');
             $len_ch = sizeof($ch);
             for ($r = 0; $r < $len_ch; $r++) {
                 $ch[$r]["s"] = substr_replace(date("Y-m-dH:i:00", strtotime(str_replace(".", "-", $ch[$r]["date_s"]) . $ch[$r]["time_s"])), 'T', 10, 0);
                 $ch[$r]["e"] = substr_replace(date("Y-m-dH:i:00", strtotime(str_replace(".", "-", $ch[$r]["date_e"]) . $ch[$r]["time_e"])), 'T', 10, 0);
                 $ch[$r]["summary"] = "[Challenge] " . str_replace('&', '%26', str_replace('#', '%23', $ch[$r]["subject"]));
                 $ch[$r]["location"] = "";
             }
             $fo = $ch;
         }
         // reservation
         if ($_REQUEST["type"] == "r") {
             // remove
             $_calId = '*****@*****.**';
             $events = $service->events->listEvents($_calId);
             while (true) {
                 foreach ($events->getItems() as $event) {
                     // echo $event->getSummary();
                     $service->events->delete($_calId, $event->id);
                 }
                 $pageToken = $events->getNextPageToken();
                 if ($pageToken) {
                     $optParams = array('pageToken' => $pageToken);
                     $events = $service->events->listEvents($_calId, $optParams);
                 } else {
                     break;
                 }
             }
             // write
             $rsv = $this->Space_reserve->list_(1, 1000, 'sr.state = 1 and sr.date > "' . date('Y.m.d', strtotime('-1 month')) . '"');
             $len_rsv = sizeof($rsv);
             for ($r = 0; $r < $len_rsv; $r++) {
                 $rsv[$r]["s"] = substr_replace(date("Y-m-dH:i:00", strtotime(str_replace(".", "-", $rsv[$r]["date"]) . $rsv[$r]["start"])), 'T', 10, 0);
                 $rsv[$r]["e"] = substr_replace(date("Y-m-dH:i:00", strtotime(str_replace(".", "-", $rsv[$r]["date"]) . $rsv[$r]["end"])), 'T', 10, 0);
                 $rsv[$r]["summary"] = "[" . $rsv[$r]["opt"] . "F " . explode_ext($rsv[$r]["name"], '(') . "] " . $rsv[$r]["purpose"];
                 $rsv[$r]["location"] = $rsv[$r]["opt"] . "F " . explode_ext($rsv[$r]["name"], '(');
             }
             $fo = $rsv;
         }
         if ($fo) {
             $len_fo = sizeof($fo);
             for ($i = 0; $i < $len_fo; $i++) {
                 $event = new Google_Service_Calendar_Event(array('summary' => $fo[$i]["summary"], 'location' => $fo[$i]["location"], 'start' => array('dateTime' => $fo[$i]["s"], 'timeZone' => "Asia/Seoul"), 'end' => array('dateTime' => $fo[$i]["e"], 'timeZone' => "Asia/Seoul")));
                 $calendarId = $_calId;
                 $event = $service->events->insert($calendarId, $event);
                 // printf('<br>Event created: %s\n', $event->htmlLink);
             }
             echo $token->expires_in . "/" . date("Y-m-d H:i:s") . " " . $_REQUEST["type"] . " done!";
         }
     }
 }