case 'facebookmanagement':
return $this->_facebookManagement($ui);
+ case 'twittermanagement':
+ return $this->_twitterManagement($ui);
+
return '';
}
}
case 'facebookmanagement':
$this->_updateFacebookManagement($ui);
break;
+
+ case 'twittermanagement':
+ $this->_updateTwitterManagement($ui);
}
return false;
return $t->fetch(HORDE_TEMPLATES . '/prefs/facebook.html');
}
+ protected function _twitterManagement($ui)
+ {
+ global $prefs, $registry;
+
+ $twitter = $GLOBALS['injector']->getInstance('Horde_Service_Twitter');
+ $token = unserialize($prefs->getValue('twitter'));
+
+ /* Check for an existing token */
+ if (!empty($token['key']) && !empty($token['secret'])) {
+ $auth_token = new Horde_Oauth_Token($token['key'], $token['secret']);
+ $twitter->auth->setToken($auth_token);
+ }
+ try {
+ $profile = Horde_Serialize::unserialize($twitter->account->verifyCredentials(), Horde_Serialize::JSON);
+ } catch (Horde_Service_Twitter_Exception $e) {}
+
+ $t = $GLOBALS['injector']->createInstance('Horde_Template');
+ $t->setOption('gettext', true);
+ $t->set('css_link', $GLOBALS['registry']->get('themesuri', 'horde') . '/facebook.css');
+
+ /* Could not find a valid auth token, and we are not in the process of getting one */
+ if (empty($profile)) {
+ try {
+ $results = $twitter->auth->getRequestToken();
+ } catch (Horde_Service_Twitter_Exception $e) {
+ $t->set('error', sprintf(_("Error connecting to Twitter: %s Details have been logged for the administrator."), $e->getMessage()), true);
+ //echo '<div class="fberrorbox">' . sprintf(_("Error connecting to Twitter: %s Details have been logged for the administrator."), $e->getMessage()) . '</div>';
+ //echo '</form>';
+ //require HORDE_TEMPLATES . '/common-footer.inc';
+ exit;
+ }
+ $_SESSION['twitter_request_secret'] = $results->secret;
+
+ $t->set('appname', $registry->get('name'));
+ $t->set('link', Horde::link(Horde::externalUrl($twitter->auth->getUserAuthorizationUrl($results), false), '', 'fbbutton', '', 'openTwitterWindow(); return false;') . 'Twitter</a>');
+ $t->set('popupjs', Horde::popupJs(Horde::externalUrl($twitter->auth->getUserAuthorizationUrl($results), false), array('urlencode' => true)));
+ } else {
+ /* We know we have a good Twitter token here, so check for any actions... */
+ $t->set('haveSession', true, true);
+ $t->set('profile_image_url', $profile->profile_image_url);
+ $t->set('profile_screenname', htmlspecialchars($profile->screen_name));
+ $t->set('profile_name', htmlspecialchars($profile->name));
+ $t->set('profile_location', htmlspecialchars($profile->location));
+ $t->set('appname', $registry->get('name'));
+ }
+
+ return $t->fetch(HORDE_TEMPLATES . '/prefs/twitter.html');
+ }
+
/**
* Update category related preferences.
*
}
}
+ protected function _updateTwitterManagement($ui)
+ {
+ global $prefs, $registry;
+
+ $twitter = $GLOBALS['injector']->getInstance('Horde_Service_Twitter');
+ $token = unserialize($prefs->getValue('twitter'));
+
+ /* Check for an existing token */
+ if (!empty($token['key']) && !empty($token['secret'])) {
+ $auth_token = new Horde_Oauth_Token($token['key'], $token['secret']);
+ $twitter->auth->setToken($auth_token);
+ }
+
+ switch ($ui->vars->twitteractionID) {
+ case 'revokeInfinite':
+ $twitter->account->endSession();
+ $prefs->setValue('twitter', 'a:0:{}');
+ echo '<script type="text/javascript">location.href="' . $url = Horde::url('services/prefs.php', true)->add(array('group' => 'twitter', 'app' => 'horde')) . '";</script>';
+ exit;
+ }
+ }
}
/* See if we are here for any actions */
$action = Horde_Util::getPost('actionID');
switch ($action) {
-case 'revokeInfinite':
- $twitter->account->endSession();
- $prefs->setValue('twitter', 'a:0:{}');
- echo '<script type="text/javascript">location.href="' . Horde::selfUrl(false) . '?app=horde&nomenu=0&group=twitter";</script>';
- exit;
case 'updateStatus':
$result = $twitter->statuses->update(Horde_Util::getPost('statusText'), Horde_Util::getPost('inReplyTo', ''));
}
}
}
-
-/* Could not find a valid auth token, and we are not in the process of getting one */
-if (empty($profile)) {
- try {
- $results = $twitter->auth->getRequestToken();
- } catch (Horde_Service_Twitter_Exception $e) {
- echo '<div class="fberrorbox">' . sprintf(_("Error connecting to Twitter: %s Details have been logged for the administrator."), $e->getMessage()) . '</div>';
- echo '</form>';
- require HORDE_TEMPLATES . '/common-footer.inc';
- exit;
- }
- $_SESSION['twitter_request_secret'] = $results->secret;
- echo '<div class="fberrorbox">' . sprintf(_("Could not find authorization for %s to interact with your Twitter account."), $registry->get('name')) . '</div>';
- $link = Horde::link(Horde::externalUrl($twitter->auth->getUserAuthorizationUrl($results), false), '', 'fbbutton', '', 'openTwitterWindow(); return false;');
- echo '<script type="text/javascript">function openTwitterWindow() {' . Horde::popupJs(Horde::externalUrl($twitter->auth->getUserAuthorizationUrl($results), false), array('urlencode' => true)) . '}</script>';
- echo sprintf(_("Login to Twitter and authorize the %s application:"), $registry->get('name')) . $link . 'Twitter</a>';
-} else {
- /* We know we have a good Twitter token here, so check for any actions... */
- echo '<div class="fbbluebox fbboxfont" style="float:left">';
- echo '<span><img src="' . $profile->profile_image_url. '" alt="' . htmlspecialchars($profile->screen_name) . '" /></span>';
- echo '<span><div>' . htmlspecialchars($profile->name) . '</div><div>' . htmlspecialchars($profile->location) . '</div></span>';
- echo '</div><div class="clear"> </div>';
- echo '<div class="fbbluebox fbboxfont">' . sprintf(_("%s can interact with your Twitter account."), $registry->get('name'));
- echo ' <div class="fbaction"><input type="submit" class="fbbutton" value="' . _("Disable") . '" onclick="document.prefs.actionID.value=\'revokeInfinite\'; return true" /></div></div>';
-}
--- /dev/null
+<link href="<tag:css_link />" rel="stylesheet" type="text/css" />
+<input type="hidden" name="twitteractionID" id="twitteractionID" />
+<if:haveSession>
+ <div class="fbbluebox fbboxfont" style="float:left">
+ <img src="<tag:profile_image_url />" alt="<tag:profile_screenname />" />
+ <div><tag:profile_name /></div><div><tag:profile_location /></div>
+ </div>
+ <div class="clear"> </div>
+ <div class="fbbluebox fbboxfont">
+ <tag:appname /> <gettext>can interact with your Twitter account</gettext>.
+ <div class="fbaction"><input type="submit" class="fbbutton" value="<gettext>Disable</gettext>" onclick="document.prefs.twitteractionID.value='revokeInfinite'; return true" /></div>
+ </div>
+<else:haveSession>
+ <div class="fberrorbox">
+ <gettext>Could not find authorization for</gettext> <tag:appname /> <gettext>to interact with your Twitter account</gettext>
+ </div>
+ <script type="text/javascript">
+ function openTwitterWindow() {
+ <tag:popupjs />
+ }
+ </script>
+ <gettext>Login to Twitter and authorize the</gettext> <tag:appname /> <gettext>application</gettext>: <tag:link />
+</else:haveSession>
+</if:haveSession>
\ No newline at end of file