/** * Get an avatar given an email address * See http://en.gravatar.com/site/implement/images/ and http://en.gravatar.com/site/implement/hash/ * * @return string */ public function getAvatarFromEmail($size = 50, $email = null) { if ($email === null) { $email = $this->session->get('email'); } // TODO return standard avatar if (empty($email)) { return; } $user = $this->getUserByEmail($email); if (isset($user['attrprofilePhoto']) && !empty($user['attrprofilePhoto'])) { return $user['attrprofilePhoto']; } $utilityObj = new Utility(); if (empty($this->config->site->cdnPrefix)) { $hostAndProtocol = sprintf('%s://%s', $utilityObj->getProtocol(false), $utilityObj->getHost(false)); } else { $hostAndProtocol = sprintf('%s%s', $utilityObj->getProtocol(false), $this->config->site->cdnPrefix); } if (!$this->themeObj) { $this->themeObj = getTheme(); } $defaultUrl = sprintf('%s%s', $hostAndProtocol, $this->themeObj->asset('image', 'profile-default.png', false)); $hash = md5(strtolower(trim($email))); return sprintf("http://www.gravatar.com/avatar/%s?s=%s&d=%s", $hash, $size, urlencode($defaultUrl)); }
public function renderHead() { $page = $this->plugin->getData('page'); if ($page !== 'photos' && $page !== 'photo-detail' && $page !== 'albums') { return; } $photo = null; if ($page === 'photos') { $photo = array_shift($this->plugin->getData('photos')); } elseif ($page === 'photo-detail') { $photo = $this->plugin->getData('photo'); } elseif ($page === 'albums') { $albums = $this->plugin->getData('albums'); if (count($albums) > 0 && !empty($albums[0]['cover'])) { $photo = $albums[0]['cover']; } } if (empty($photo)) { return; } $utility = new Utility(); $tags = ''; $title = $photo['title'] !== '' ? $photo['title'] : "{$photo['filenameOriginal']} on Trovebox"; $tags .= $this->addTag('twitter:card', 'photo'); $tags .= $this->addTag('twitter:site', '@openphoto'); $tags .= $this->addTag('twitter:url', sprintf('%s://%s%s', $utility->getProtocol(false), $utility->getHost(), $utility->getPath())); $tags .= $this->addTag('twitter:title', $title); $tags .= $this->addTag('twitter:description', 'Trovebox lets you keep all your photos from different services and mobile devices safe in one spot.'); $tags .= $this->addTag('twitter:image', $photo['pathBase']); $tags .= $this->addTag('twitter:image:width', '1280'); return $tags; }
public function renderHead() { $userObj = new User(); $utilityObj = new Utility(); $page = $this->plugin->getData('page'); if ($page !== 'photos' && $page !== 'photo-detail' && $page !== 'albums') { return; } $metaTags = ''; $username = $utilityObj->safe($userObj->getNameFromEmail($this->config->user->email), false); if ($page === 'photos') { $photos = array_slice($this->plugin->getData('photos'), 0, 4); $filters = $this->plugin->getData('filters'); $metaTags .= $this->addTag('twitter:card', 'gallery'); $title = sprintf('%s\'s photos on @Trovebox', $username); if (array_search('album', $filters) !== false) { $album = $this->plugin->getData('album'); $title = sprintf('%s from %s on @Trovebox', $utilityObj->safe($album['name'], false), $username); } elseif (array_search('tags', $filters) !== false) { $tags = implode(',', $this->plugin->getData('tags')); $title = sprintf('Photos tagged with %s from %s on @Trovebox', $utilityObj->safe($tags, false), $username); } $cnt = 0; foreach ($photos as $photo) { $metaTags .= $this->addTag(sprintf('twitter:image%d', $cnt++), $photo['pathBase']); } } elseif ($page === 'photo-detail') { $photo = $this->plugin->getData('photo'); $photoTitle = $photo['title'] !== '' ? $utilityObj->safe($photo['title'], false) : $photo['filenameOriginal']; $title = sprintf('%s from %s on @Trovebox', $photoTitle, $username); $metaTags .= $this->addTag('twitter:card', 'photo'); $metaTags .= $this->addTag('twitter:image', $photo['pathBase']); } elseif ($page === 'albums') { $albums = $this->plugin->getData('albums'); if (count($albums) > 0 && !empty($albums[0]['cover'])) { $photo = $albums[0]['cover']; } $title = sprintf('%s\'s albums on @Trovebox', $username); $metaTags .= $this->addTag('twitter:card', 'photo'); $metaTags .= $this->addTag('twitter:image', $photo['pathBase']); } if (empty($photo)) { return; } $metaTags .= $this->addTag('twitter:site', '@Trovebox'); $metaTags .= $this->addTag('twitter:url', sprintf('%s://%s%s', $utilityObj->getProtocol(false), $utilityObj->getHost(), $utilityObj->getPath())); $metaTags .= $this->addTag('twitter:title', $title); $metaTags .= $this->addTag('twitter:description', 'Trovebox lets you keep all your photos from different services and mobile devices safe in one spot.'); $metaTags .= $this->addTag('twitter:image:width', '1280'); return $metaTags; }
public function uploadNotify($token) { $shareTokenObj = new ShareToken(); $tokenArr = $shareTokenObj->get($token); if (empty($tokenArr) || $tokenArr['type'] != 'upload') { return $this->forbidden('No permissions with the passed in token', false); } $albumId = $tokenArr['data']; $albumResp = $this->api->invoke(sprintf('/album/%s/view.json', $albumId), EpiRoute::httpGet, array('_GET' => array('token' => $token))); if ($albumResp['code'] !== 200) { return $this->error('Could not get album details', false); } $uploader = $count = null; if (isset($_POST['uploader'])) { $uploader = $_POST['uploader']; } if (isset($_POST['count'])) { $count = $_POST['count']; } $utilityObj = new Utility(); $albumName = $albumResp['result']['name']; $albumUrl = sprintf('%s://%s/photos/album-%s/token-%s/list??sortBy=dateUploaded,desc', $utilityObj->getProtocol(false), $utilityObj->getHost(false), $albumId, $token); $tokenOwner = $tokenArr['actor']; $emailer = new Emailer(); $emailer->setRecipients(array($tokenOwner)); if (!empty($albumName)) { $emailer->setSubject(sprintf('Photos uploaded to %s', $albumName)); } else { $emailer->setSubject('New photos were uploaded for you'); } $markup = $this->theme->get('partials/upload-notify.php', array('albumId' => $albumId, 'albumName' => $albumName, 'albumUrl' => $albumUrl, 'uploader' => $uploader, 'count' => $count)); $emailer->setBody($markup); $res = $emailer->send($markup); return $this->success('Email probably sent', true); }
<?php $utilityObj = new Utility(); $configFile = sprintf('%s/configs/%s.ini', getConfig()->get('paths')->userdata, $utilityObj->getHost()); $currentConfigAsString = getConfig()->getString($configFile); // this regex is covered in src/texts/libraries/models/UpgradeTest.php gh-1279 $updatedConfigAsString = preg_replace('/^name ?\\= ?"?.+"?$/m', 'name="fabrizio1.0"', $currentConfigAsString); $status = getConfig()->write($configFile, $updatedConfigAsString); return $status;
/** * Return profile information for the site and the viewer * TODO: separate the viewer into a separate API and call it from here * for backwards compatability * * @return string Standard JSON envelope */ public function profile() { $email = $this->user->getEmailAddress(); $user = $this->user->getUserRecord(); if (empty($user)) { return $this->notFound('Could not load user profile'); } $utilityObj = new Utility(); $photos = $this->api->invoke('/photos/list.json', EpiRoute::httpGet, array('_GET' => array('pageSize' => 1))); $albums = $this->api->invoke('/albums/list.json', EpiRoute::httpGet, array('_GET' => array('pageSize' => 1))); $tags = $this->api->invoke('/tags/list.json', EpiRoute::httpGet, array('_GET' => array('pageSize' => 1))); $profile = array('id' => $utilityObj->getHost(), 'photoUrl' => $this->user->getAvatarFromEmail(100, $this->config->user->email), 'counts' => array('photos' => empty($photos['result']) ? 0 : $photos['result'][0]['totalRows'], 'albums' => empty($albums['result']) ? 0 : $albums['result'][0]['totalRows'], 'tags' => count($tags['result'])), 'name' => $this->user->getNameFromEmail($this->config->user->email)); if ($this->user->isAdmin()) { $profile['email'] = $this->user->getEmailAddress(); $profile['counts']['storage'] = $this->user->getStorageUsed() * 1024; // convert from kilobytes to bytes $profile['counts']['storage_str'] = strval($this->user->getStorageUsed() * 1024); // workaround for bug in ios json parser #1150 } $profile['isOwner'] = $this->user->isAdmin(); // should we include the viewer? if (isset($_GET['includeViewer']) && $_GET['includeViewer'] == '1') { // check if the viewer == owner // if so then we just copy the owner in // else we have to build the viewer array if ($this->user->isOwner()) { $profile['viewer'] = $profile; } else { $viewer = null; if ($email !== null) { $viewer = $this->user->getUserByEmail($email); } if ($viewer !== null) { $profile['viewer'] = array('id' => $viewer['id'], 'photoUrl' => $this->user->getAvatarFromEmail(100, $viewer['id']), 'name' => $this->user->getNameFromEmail($viewer['id'])); } else { $profile['viewer'] = array('id' => null, 'photoUrl' => $this->user->getAvatarFromEmail(100, null), 'name' => User::displayNameDefault); } } } return $this->success('User profile', $profile); }
/** * Get an avatar given an email address * See http://en.gravatar.com/site/implement/images/ and http://en.gravatar.com/site/implement/hash/ * * @return string */ public function getAvatarFromEmail($size = 50, $email = null) { if ($email === null) { $email = $this->session->get('email'); } // TODO return standard avatar if (empty($email)) { return; } $utilityObj = new Utility(); $protocol = $utilityObj->getProtocol(false); if (empty($this->config->site->cdnPrefix)) { $hostAndProtocol = sprintf('%s://%s', $protocol, $utilityObj->getHost(false)); } else { $hostAndProtocol = sprintf('%s:%s', $protocol, $this->config->site->cdnPrefix); } if (!$this->themeObj) { $this->themeObj = getTheme(); } $defaultUrl = sprintf('%s%s', $hostAndProtocol, $this->themeObj->asset('image', 'profile-default.png', false)); $user = $this->getUserByEmail($email); if (isset($user['attrprofilePhoto']) && !empty($user['attrprofilePhoto'])) { return $user['attrprofilePhoto']; } // if gravatar support is disabled and no profile photo exists then we immediately return the default url if ($this->config->site->useGravatar == 0) { return $defaultUrl; } if ($protocol === 'https') { $gravatarUrl = 'https://secure.gravatar.com/avatar/'; } else { $gravatarUrl = 'http://www.gravatar.com/avatar/'; } $hash = md5(strtolower(trim($email))); return sprintf('%s%s?s=%s&d=%s', $gravatarUrl, $hash, $size, urlencode($defaultUrl)); }