Пример #1
0
 public static function share($user)
 {
     // Stats
     $stats = array('lists' => array());
     // Lists
     $lists = \Rest::get(static::$endpoints['lists'], array('maxResults' => static::$limit), $user);
     if ($lists && $lists['items']) {
         foreach ($lists['items'] as $list) {
             $stats['lists'][] = array('id' => $list['id'], 'name' => $list['title'], 'picture' => \Render::image('no-photo.png'), 'data' => $list);
         }
     }
     return $stats;
 }
Пример #2
0
 public static function share($user)
 {
     // Stats
     $stats = array('contacts' => array());
     $contactsFeed = \Rest::get(static::$endpoints['contacts'], array(), $user);
     if (isset($contactsFeed->entry)) {
         foreach ($contactsFeed->entry as $entry) {
             $contact = array();
             $contact['id'] = @basename($entry->id);
             $contact['name'] = (string) $entry->title;
             $data = $entry->children('http://schemas.google.com/g/2005');
             // Email Address
             if ($data->email) {
                 foreach ($data->email as $entity) {
                     $attributes = (array) $entity->attributes();
                     $newContact['emails'][] = $attributes['@attributes'];
                 }
             }
             // Instant messaging
             if ($data->im) {
                 foreach ($data->im as $entity) {
                     $attributes = (array) $entity->attributes();
                     $contact['im'][] = $attributes['@attributes'];
                 }
             }
             // Phone numbers
             if ($data->phoneNumber) {
                 foreach ($data->phoneNumber as $entity) {
                     $attributes = (array) $entity->attributes();
                     $attributes = $attributes['@attributes'];
                     $attributes['number'] = (string) $entity;
                     $contact['phoneNumbers'][] = $attributes;
                 }
             }
             // Postal addresses
             if ($data->postalAddress) {
                 foreach ($data->postalAddress as $entity) {
                     $attributes = (array) $entity->attributes();
                     $attributes = $attributes['@attributes'];
                     $attributes['address'] = (string) $entity;
                     $contact['postalAddress'][] = $attributes;
                 }
             }
             $stats['contacts'][] = array('id' => $contact['id'], 'name' => $contact['name'], 'picture' => \Render::image('no-photo.jpg'), 'data' => $contact);
         }
     }
     return $stats;
 }
Пример #3
0
 public static function backup($user, $taskId = 0, $syncTaskId = 0)
 {
     // Stats
     $stats = array('links' => 0);
     // Lists
     $lists = \Rest::get(static::$endpoints['links'], array(), $user);
     if ($lists && $lists['items']) {
         foreach ($lists['items'] as $list) {
             // Save List
             $backup = BackupsModel::create();
             $backup->user_id = $user['username']['id'];
             $backup->task_id = $taskId;
             $backup->sync_task_id = $syncTaskId;
             $backup->entity_id = $list['id'];
             $backup->entity_type = static::$kind['link'];
             $backup->entity = json_encode($list);
             $backup->created = date(DATE_TIME);
             $backup->save();
             $stats['links']++;
         }
     }
     return $stats;
 }
Пример #4
0
 public function get()
 {
     $res = !empty($this->_params[0]) ? $this->_params[0] : false;
     switch ($res) {
         //List all
         case false:
             break;
             //List only patients
         //List only patients
         case 'patients':
             $this->_filter = array('type' => 'patient');
             break;
             //List only docotrs
         //List only docotrs
         case 'doctors':
             $this->_filter = array('type' => 'doctor');
             break;
             //List gid
         //List gid
         default:
             $this->_filter = array('gid' => $res);
     }
     return json_encode(parent::get());
 }
Пример #5
0
 public static function backup($user, $taskId = 0, $syncTaskId = 0)
 {
     // Stats
     $stats = array('blogs' => 0, 'posts' => 0, 'pages' => 0);
     // Channels
     $blogs = \Rest::get(static::$endpoints['blogs'], array('view' => 'ADMIN'), $user);
     if ($blogs && $blogs['items']) {
         foreach ($blogs['items'] as $blog) {
             // Save blog
             $newBlog = BlogsModel::create();
             $newBlog->user_id = $user['username']['id'];
             $newBlog->task_id = $taskId;
             $newBlog->sync_task_id = $syncTaskId;
             $newBlog->kind = static::$kind['blog'];
             $newBlog->blog_id = $blog['id'];
             $newBlog->name = $blog['name'];
             $newBlog->description = $blog['description'];
             $newBlog->url = $blog['url'];
             $newBlog->created_at = date(DATE_TIME, strtotime($blog['published']));
             $newBlog->status = BlogsModel::STATUS_ACTIVE;
             $newBlog->save();
             $stats['blogs']++;
             $newPosts = array();
             do {
                 $payload = array('view' => 'ADMIN');
                 if (isset($posts['nextPageToken'])) {
                     $payload['pageToken'] = $posts['nextPageToken'];
                 }
                 $posts = array();
                 $posts = \Rest::get(sprintf(static::$endpoints['posts'], $blog['id']), $payload, $user);
                 if (isset($posts['result']['error'])) {
                     d($posts);
                 }
                 if ($posts['items']) {
                     foreach ($posts['items'] as $post) {
                         $formatedData = array('user_id' => $user['username']['id'], 'task_id' => $taskId, 'sync_task_id' => $syncTaskId, 'blog_id' => $newBlog->id, 'blogger_blog_id' => $blog['id'], 'kind' => static::$kind['post'], 'post_id' => $post['id'], 'post_status' => $post['status'], 'title' => $post['title'], 'content' => $post['content'], 'created_at' => date(DATE_TIME, strtotime($post['published'])), 'author_id' => $post['author']['id'], 'author_name' => $post['author']['displayName'], 'author_url' => $post['author']['url'], 'author_avatar' => $post['author']['image']['url'], 'status' => PostsModel::STATUS_ACTIVE);
                         $newPosts[] = $formatedData;
                         $stats['posts']++;
                     }
                 }
             } while (isset($posts['nextPageToken']) && $posts['nextPageToken']);
             if ($newPosts) {
                 PostsModel::insertBatch($newPosts);
             }
             // Pages
             $pages = \Rest::get(sprintf(static::$endpoints['pages'], $blog['id']), array('view' => 'ADMIN'), $user);
             if ($pages && $pages['items']) {
                 foreach ($pages['items'] as $page) {
                     $newPage = PagesModel::create();
                     $newPage->user_id = $user['username']['id'];
                     $newPage->task_id = $taskId;
                     $newPage->sync_task_id = $syncTaskId;
                     $newPage->blog_id = $newBlog->id;
                     $newPage->blogger_blog_id = $blog['id'];
                     $newPage->kind = static::$kind['post'];
                     $newPage->page_id = $page['id'];
                     $newPage->page_status = $page['status'];
                     $newPage->title = $page['title'];
                     $newPage->content = $page['content'];
                     $newPage->created_at = strtotime(DATE_TIME, strtotime($page['published']));
                     $newPage->author_id = $page['author']['id'];
                     $newPage->author_name = $page['author']['displayName'];
                     $newPage->author_url = $page['author']['url'];
                     $newPage->author_avatar = $page['author']['image']['url'];
                     $newPage->status = PostsModel::STATUS_ACTIVE;
                     $newPage->save();
                     $stats['pages']++;
                 }
             }
         }
     }
     return $stats;
 }
Пример #6
0
 public static function _clean($destination, $source, $syncTaskId = 0, $whitelist = array())
 {
     $service = ServicesModel::first(array('library' => 'Calendar'))->toArray();
     $task = TasksServicesModel::first(array('task_id' => $syncTaskId, 'service_id' => $service['id']))->toArray();
     $task['stats'] = json_decode($task['stats'], true);
     // Calendars
     $calendars = CalendarsModel::all(array('user_id' => $source['username']['id'], 'sync_task_id' => $syncTaskId))->toArray();
     // Events
     $toDeleteEvents = array();
     $migratedEvents = MigratedDataModel::all(array('source_id' => $source['username']['id'], 'sync_task_id' => $syncTaskId, 'kind' => static::$kind['event']));
     if ($migratedEvents) {
         $migratedEvents = $migratedEvents->toArray();
         if ($migratedEvents) {
             $destinationCalendars = CalendarsModel::all(array('user_id' => $destination['username']['id'], 'sync_task_id' => $syncTaskId));
             if ($destinationCalendars) {
                 $destinationCalendars = $destinationCalendars->toArray();
                 if ($destinationCalendars) {
                     foreach ($destinationCalendars as $calendar) {
                         // get events
                         $newEvents = array();
                         do {
                             $payload = array('maxResults' => static::$limit);
                             if (isset($events['nextPageToken'])) {
                                 $payload['pageToken'] = $events['nextPageToken'];
                             }
                             $events = \Rest::get(sprintf(static::$endpoints['events'], $calendar['calendar_id']), $payload, $destination);
                             if (isset($events['result']['error'])) {
                                 d(static::$endpoints['events']);
                             }
                             if (isset($events['items'])) {
                                 foreach ($events['items'] as $event) {
                                     if (isset($event['summary'])) {
                                         $newEvents[static::identifier($event, $calendar)] = $event['id'];
                                     }
                                 }
                             }
                         } while (isset($events['nextPageToken']) && $events['nextPageToken']);
                         // Mark events
                         foreach ($migratedEvents as $event) {
                             if (isset($newEvents[$event['unique']])) {
                                 $toDeleteEvents[] = array('eventId' => $newEvents[$event['unique']], 'calendarId' => $calendar['calendar_id']);
                             }
                         }
                     }
                 }
             }
         }
     }
     switch (true) {
         # Share / Clean
         ############################################################################
         case !empty($whitelist):
             // Calendars
             if ($calendars) {
                 foreach ($calendars as $calendar) {
                     if (isset($whitelist['calendars']) && in_array($calendar['calendar_id'], $whitelist['calendars'])) {
                         \Rest::delete('https://www.googleapis.com/calendar/v3/calendars/' . $calendar['calendar_id'], array(), $destination);
                     }
                 }
             }
             break;
             # Move
             ############################################################################
         # Move
         ############################################################################
         case $destination['username']['id'] == $source['username']['id']:
             // Calendars
             if ($calendars) {
                 foreach ($calendars as $calendar) {
                     \Rest::delete('https://www.googleapis.com/calendar/v3/calendars/' . $calendar['calendar_id'], array(), $destination);
                 }
             }
             # Migrate / Sync
             ############################################################################
         # Migrate / Sync
         ############################################################################
         default:
             // Calendars
             if ($calendars && $task['stats']['calendars']) {
                 foreach ($calendars as $calendar) {
                     if ($calendar['calendar_new_id']) {
                         \Rest::delete('https://www.googleapis.com/calendar/v3/calendars/' . $calendar['calendar_new_id'], array(), $destination);
                     }
                 }
             }
             // Events
             if ($toDeleteEvents && $task['stats']['events']) {
                 foreach ($toDeleteEvents as $event) {
                     \Rest::delete('https://www.googleapis.com/calendar/v3/calendars/' . $event['calendarId'] . '/events/' . $event['eventId'], array(), $destination);
                 }
             }
             break;
     }
 }
Пример #7
0
 public static function oAuthTokensPermissions($tokens = false)
 {
     $profile = Rest::get('https://www.googleapis.com/oauth2/v1/userinfo', array('alt' => 'json', 'access_token' => $tokens['access_token']));
     $username = UsersModel::first(array('google_id' => $profile['id'], 'status' => UsersModel::STATUS_ACTIVE)) ?: UsersModel::create();
     if (!static::showWizard()) {
         $redirectUrl = BASE_URL . 'accounts/permissions';
     } else {
         $redirectUrl = BASE_URL . 'accounts/add';
     }
     Util::notice(array('type' => 'success', 'text' => 'You have successfully updated your ' . $username->email . ' account permissions.'));
     $username->last_login = $_SESSION['current']['username']['last_login'];
     $username->save();
     // Credentials update
     $credentials = UsersCredentialsModel::first(array('user_id' => $username->id));
     // Get refresh token
     $data = array('client_id' => OAUTH_CLIENT_ID, 'client_secret' => OAUTH_CLIENT_SECRET, 'redirect_uri' => 'postmessage', 'code' => $tokens['code'], 'grant_type' => 'authorization_code');
     $tokens = Rest::post('https://accounts.google.com/o/oauth2/token', $data);
     $credentials->refresh_token = $tokens['refresh_token'];
     $credentials->access_token = $tokens['access_token'];
     $credentials->expires_at = date(DATE_TIME, time() + $tokens['expires_in']);
     $credentials->save();
     $services = UsersServicesModel::all(array('user_id' => $username->id))->toArray();
     $credentials = $credentials->toArray();
     // User profile
     $userProfile = UsersProfilesModel::first(array('user_id' => $username->id))->toArray();
     $username = $username->toArray();
     $setSession = true;
     // Session thingie
     static::setUsername(compact('username', 'services', 'credentials', 'userProfile', 'setSession'));
     return array('success' => 'true', 'redirectUrl' => $redirectUrl);
 }
Пример #8
0
 public static function _clean($destination, $source, $syncTaskId = 0, $whitelist = array())
 {
     $service = ServicesModel::first(array('library' => 'Youtube'))->toArray();
     $task = TasksServicesModel::first(array('task_id' => $syncTaskId, 'service_id' => $service['id']))->toArray();
     $task['stats'] = json_decode($task['stats'], true);
     // Playlists
     $playlists = PlaylistsModel::all(array('user_id' => $source['username']['id'], 'sync_task_id' => $syncTaskId))->toArray();
     // Videos
     $videos = array();
     $migratedVideos = MigratedDataModel::all(array('source_id' => $source['username']['id'], 'sync_task_id' => $syncTaskId, 'kind' => static::$kind['video']));
     if ($migratedVideos) {
         $migratedVideos = $migratedVideos->toArray();
         if ($migratedVideos) {
             $destinationPlaylists = PlaylistsModel::all(array('user_id' => $destination['username']['id'], 'sync_task_id' => $syncTaskId));
             if ($destinationPlaylists) {
                 $destinationPlaylists = $destinationPlaylists->toArray();
                 if ($destinationPlaylists) {
                     foreach ($destinationPlaylists as $playlist) {
                         foreach ($migratedVideos as $video) {
                             $payload = array('part' => static::$part['playlistItems']['minimal'], 'playlistId' => $playlist['youtube_playlist_id'], 'videoId' => $video['identifier']);
                             $vids = array();
                             $vids = \Rest::get(static::$endpoints['playlistItems'], $payload, $destination);
                             if (isset($vids['result']['error'])) {
                                 d($vids);
                             }
                             if ($vids && $vids['items']) {
                                 foreach ($vids['items'] as $vid) {
                                     $videos[] = $vid['id'];
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     // Subscriptions
     $newSubscriptions = array();
     $oldSubscriptions = MigratedDataModel::all(array('destination_id' => $destination['username']['id'], 'sync_task_id' => $syncTaskId))->column('identifier');
     do {
         $payload = array('part' => static::$part['subscriptions']['minimal'], 'mine' => 'true', 'maxResults' => static::$limit);
         if (isset($subscriptions['nextPageToken'])) {
             $payload['pageToken'] = $subscriptions['nextPageToken'];
         }
         $subscriptions = \Rest::get(static::$endpoints['subscriptions'], $payload, $destination);
         if (isset($subscriptions['result']['error'])) {
             d($subscriptions);
         }
         if ($subscriptions['items']) {
             foreach ($subscriptions['items'] as $sub) {
                 $newSubscriptions[] = $sub;
             }
         }
     } while (isset($subscriptions['nextPageToken']) && $subscriptions['nextPageToken']);
     switch (true) {
         # Share / Clean
         ############################################################################
         case !empty($whitelist):
             // Playlist
             if ($playlists) {
                 foreach ($playlists as $playlist) {
                     if (isset($whitelist['playlists']) && in_array($playlist['youtube_playlist_id'], $whitelist['playlists'])) {
                         \Rest::delete(static::$endpoints['playlists'], array('id' => $playlist['youtube_playlist_id']), $destination);
                     }
                 }
             }
             // Subscriptions
             if ($newSubscriptions) {
                 foreach ($newSubscriptions as $sub) {
                     if (isset($whitelist['subscriptions']) && in_array($sub['snippet']['resourceId']['channelId'], $whitelist['subscriptions'])) {
                         \Rest::delete(static::$endpoints['subscriptions'], array('id' => $sub['id']), $destination);
                     }
                 }
             }
             break;
             # Move
             ############################################################################
         # Move
         ############################################################################
         case $destination['username']['id'] == $source['username']['id']:
             // Playlist
             if ($playlists) {
                 foreach ($playlists as $playlist) {
                     \Rest::delete(static::$endpoints['playlists'], array('id' => $playlist['youtube_playlist_id']), $destination);
                 }
             }
             // Subscriptions
             if ($newSubscriptions) {
                 foreach ($newSubscriptions as $sub) {
                     \Rest::delete(static::$endpoints['subscriptions'], array('id' => $sub['id']), $destination);
                 }
             }
             break;
             # Migrate / Sync
             ############################################################################
         # Migrate / Sync
         ############################################################################
         default:
             // Playlist
             if ($playlists && $task['stats']['playlists']) {
                 foreach ($playlists as $playlist) {
                     if ($playlist['new_youtube_id']) {
                         \Rest::delete(static::$endpoints['playlists'], array('id' => $playlist['new_youtube_id']), $destination);
                     }
                 }
             }
             // Videos
             if ($videos && $task['stats']['videos']) {
                 foreach ($videos as $videoId) {
                     \Rest::delete(static::$endpoints['playlistItems'], array('id' => $videoId), $destination);
                 }
             }
             // Subscriptions
             if ($newSubscriptions) {
                 foreach ($newSubscriptions as $sub) {
                     if (in_array($sub['snippet']['resourceId']['channelId'], $oldSubscriptions) && $task['stats']['subscriptions']) {
                         \Rest::delete(static::$endpoints['subscriptions'], array('id' => $sub['id']), $destination);
                     }
                 }
             }
             break;
     }
 }