X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Ffacebookhome.php;h=70f20520530d2140ea7a4709d9fa2736d70160ae;hb=82b0927f5838f3c12816e03712df9460a9f77b72;hp=e8c10c9edf28bf356f6e07f31ddb6b0591903f6c;hpb=3af566d1ecb5793324f7395ebec254848c47df09;p=quix0rs-gnu-social.git diff --git a/actions/facebookhome.php b/actions/facebookhome.php index e8c10c9edf..70f2052053 100644 --- a/actions/facebookhome.php +++ b/actions/facebookhome.php @@ -1,7 +1,7 @@ . */ -if (!defined('LACONICA')) { exit(1); } +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } require_once INSTALLDIR.'/lib/facebookaction.php'; - class FacebookhomeAction extends FacebookAction { var $page = null; - + function prepare($argarray) - { + { parent::prepare($argarray); - + $this->page = $this->trimmed('page'); - + if (!$this->page) { $this->page = 1; } - + return true; } function handle($args) { - parent::handle($args); - + parent::handle($args); + // If the user has opted not to initially allow the app to have // Facebook status update permission, store that preference. Only // promt the user the first time she uses the app - if ($this->arg('skip')) { + if ($this->arg('skip') || $args['fb_sig_request_method'] == 'GET') { $this->facebook->api_client->data_setUserPreference( FACEBOOK_PROMPTED_UPDATE_PREF, 'true'); } @@ -58,7 +57,7 @@ class FacebookhomeAction extends FacebookAction // If this is the first time the user has started the app // prompt for Facebook status update permission - if (!$this->facebook->api_client->users_hasAppPermission('status_update')) { + if (!$this->facebook->api_client->users_hasAppPermission('publish_stream')) { if ($this->facebook->api_client->data_getUserPreference( FACEBOOK_PROMPTED_UPDATE_PREF) != 'true') { @@ -73,7 +72,7 @@ class FacebookhomeAction extends FacebookAction $this->updateProfileBox($notice); } - if ($this->arg('status_submit') == 'Send') { + if ($this->arg('status_submit') == 'Send') { $this->saveNewNotice(); } @@ -81,7 +80,7 @@ class FacebookhomeAction extends FacebookAction // Facebook status update permission? Then show the main page // of the app $this->showPage(); - + } else { // User hasn't authenticated yet, prompt for creds @@ -92,9 +91,9 @@ class FacebookhomeAction extends FacebookAction function login() { - + $this->showStylesheets(); - + $nickname = common_canonical_nickname($this->trimmed('nickname')); $password = $this->arg('password'); @@ -115,14 +114,13 @@ class FacebookhomeAction extends FacebookAction $flink->foreign_id = $this->fbuid; $flink->service = FACEBOOK_SERVICE; $flink->created = common_sql_now(); - $flink->set_flags(true, false, false); + $flink->set_flags(true, false, false, false); $flink_id = $flink->insert(); // XXX: Do some error handling here $this->setDefaults(); - //$this->showHome($flink, _('You can now use Identi.ca from Facebook!')); $this->getUpdatePermission(); return; @@ -133,25 +131,21 @@ class FacebookhomeAction extends FacebookAction } $this->showLoginForm($msg); + $this->showFooter(); } function setDefaults() { - // A default prefix string for notices - $this->facebook->api_client->data_setUserPreference( - FACEBOOK_NOTICE_PREFIX, 'dented: '); $this->facebook->api_client->data_setUserPreference( FACEBOOK_PROMPTED_UPDATE_PREF, 'false'); } - function showNoticeForm() { - $post_action = "$this->app_uri/index.php"; - - $notice_form = new FacebookNoticeForm($this, $post_action, null, + + $notice_form = new FacebookNoticeForm($this, $post_action, null, $post_action, $this->user); $notice_form->show(); } @@ -167,22 +161,19 @@ class FacebookhomeAction extends FacebookAction function showContent() { + $notice = $this->user->noticeInbox(($this->page-1) * NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); - $notice = $this->user->noticesWithFriends(($this->page-1) * - NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); - $nl = new NoticeList($notice, $this); $cnt = $nl->show(); $this->pagination($this->page > 1, $cnt > NOTICES_PER_PAGE, $this->page, 'index.php', array('nickname' => $this->user->nickname)); - } function showNoticeList($notice) { - + $nl = new NoticeList($notice, $this); return $nl->show(); } @@ -191,7 +182,7 @@ class FacebookhomeAction extends FacebookAction $this->showStylesheets(); - $this->elementStart('div', array('class' => 'content')); + $this->elementStart('div', array('class' => 'facebook_guide')); $instructions = sprintf(_('If you would like the %s app to automatically update ' . 'your Facebook status with your latest notice, you need ' . @@ -202,16 +193,24 @@ class FacebookhomeAction extends FacebookAction $this->elementEnd('p'); $this->elementStart('form', array('method' => 'post', - 'action' => $app_url, + 'action' => "index.php", 'id' => 'facebook-skip-permissions')); $this->elementStart('ul', array('id' => 'fb-permissions-list')); $this->elementStart('li', array('id' => 'fb-permissions-item')); - $this->elementStart('fb:prompt-permission', array('perms' => 'status_update', - 'next_fbjs' => 'document.setLocation(\'' . $this->app_uri . '\')')); - $this->element('span', array('class' => 'facebook-button'), - sprintf(_('Allow %s to update my Facebook status'), $this->app_name)); - $this->elementEnd('fb:prompt-permission'); + + $next = urlencode("$this->app_uri/index.php"); + $api_key = common_config('facebook', 'apikey'); + + $auth_url = 'http://www.facebook.com/authorize.php?api_key=' . + $api_key . '&v=1.0&ext_perm=publish_stream&next=' . $next . + '&next_cancel=' . $next . '&submit=skip'; + + $this->elementStart('span', array('class' => 'facebook-button')); + $this->element('a', array('href' => $auth_url), + sprintf(_('Okay, do it!'), $this->app_name)); + $this->elementEnd('span'); + $this->elementEnd('li'); $this->elementStart('li', array('id' => 'fb-permissions-item')); @@ -224,53 +223,6 @@ class FacebookhomeAction extends FacebookAction } - function saveNewNotice() - { - - $user = $this->flink->getUser(); - - $content = $this->trimmed('status_textarea'); - - if (!$content) { - $this->showPage(_('No notice content!')); - return; - } else { - $content_shortened = common_shorten_links($content); - - if (mb_strlen($content_shortened) > 140) { - common_debug("Content = '$content_shortened'", __FILE__); - common_debug("mb_strlen(\$content) = " . mb_strlen($content_shortened), __FILE__); - $this->showPage(_('That\'s too long. Max notice size is 140 chars.')); - return; - } - } - - $inter = new CommandInterpreter(); - - $cmd = $inter->handle_command($user, $content_shortened); - - if ($cmd) { - - // XXX fix this - - $cmd->execute(new WebChannel()); - return; - } - - $replyto = $this->trimmed('inreplyto'); - - $notice = Notice::saveNew($user->id, $content, - 'Facebook', 1, ($replyto == 'false') ? null : $replyto); - - if (is_string($notice)) { - $this->showPage($notice); - return; - } - - common_broadcast_notice($notice); - - } - /** * Generate pagination links * @@ -284,11 +236,11 @@ class FacebookhomeAction extends FacebookAction */ function pagination($have_before, $have_after, $page, $action, $args=null) { - + // Does a little before-after block for next/prev page - + // XXX: Fix so this uses common_local_url() if possible. - + if ($have_before || $have_after) { $this->elementStart('div', array('class' => 'pagination')); $this->elementStart('dl', null); @@ -299,7 +251,7 @@ class FacebookhomeAction extends FacebookAction if ($have_before) { $pargs = array('page' => $page-1); $newargs = $args ? array_merge($args, $pargs) : $pargs; - $this->elementStart('li', array('class' => 'nav_prev')); + $this->elementStart('li', array('class' => 'nav_prev')); $this->element('a', array('href' => "$action?page=$newargs[page]", 'rel' => 'prev'), _('After')); $this->elementEnd('li'); @@ -319,6 +271,5 @@ class FacebookhomeAction extends FacebookAction $this->elementEnd('div'); } } - }