Check if the given AppID/Secret works. Make the polling interval configurable.

This commit is contained in:
Tobias Hößl 2012-04-02 20:12:06 +00:00
parent 1b1237d97c
commit dc7bdfcec6

View File

@ -25,9 +25,8 @@
* d. Navigate to Set Web->Site URL & Domain -> Website Settings. Set * d. Navigate to Set Web->Site URL & Domain -> Website Settings. Set
* Site URL to yoursubdomain.yourdomain.com. Set Site Domain to your * Site URL to yoursubdomain.yourdomain.com. Set Site Domain to your
* yourdomain.com. * yourdomain.com.
* 2. (This step is now obsolete. Enable the plugin via the Admin panel.) * 2. Visit the Facebook Settings section of the "Settings->Plugin Settings" page.
* Enable the facebook plugin by including it in .htconfig.php - e.g. * and click 'Install Facebook Connector'.
* $a->config['system']['addon'] = 'plugin1,plugin2,facebook';
* 3. Visit the Facebook Settings section of the "Settings->Plugin Settings" page. * 3. Visit the Facebook Settings section of the "Settings->Plugin Settings" page.
* and click 'Install Facebook Connector'. * and click 'Install Facebook Connector'.
* 4. This will ask you to login to Facebook and grant permission to the * 4. This will ask you to login to Facebook and grant permission to the
@ -50,12 +49,12 @@
/** TODO /** TODO
* - Implement a method for the administrator to delete all configuration data the plugin has created, * - Implement a method for the administrator to delete all configuration data the plugin has created,
* e.g. the app_access_token * e.g. the app_access_token
* - Implement a configuration option to set the polling interval system-wide
*/ */
define('FACEBOOK_MAXPOSTLEN', 420); define('FACEBOOK_MAXPOSTLEN', 420);
define('FACEBOOK_SESSION_ERR_NOTIFICATION_INTERVAL', 259200); // 3 days define('FACEBOOK_SESSION_ERR_NOTIFICATION_INTERVAL', 259200); // 3 days
define('FACEBOOK_DEFAULT_POLL_INTERVAL', 60); // given in minutes
define('FACEBOOK_MIN_POLL_INTERVAL', 5);
function facebook_install() { function facebook_install() {
register_hook('post_local', 'addon/facebook/facebook.php', 'facebook_post_local'); register_hook('post_local', 'addon/facebook/facebook.php', 'facebook_post_local');
@ -555,7 +554,7 @@ function facebook_cron($a,$b) {
$poll_interval = intval(get_config('facebook','poll_interval')); $poll_interval = intval(get_config('facebook','poll_interval'));
if(! $poll_interval) if(! $poll_interval)
$poll_interval = 3600; $poll_interval = FACEBOOK_DEFAULT_POLL_INTERVAL;
if($last) { if($last) {
$next = $last + $poll_interval; $next = $last + $poll_interval;
@ -647,12 +646,25 @@ function facebook_plugin_admin(&$a, &$o){
$appid = get_config('facebook', 'appid' ); $appid = get_config('facebook', 'appid' );
$appsecret = get_config('facebook', 'appsecret' ); $appsecret = get_config('facebook', 'appsecret' );
$poll_interval = get_config('facebook', 'poll_interval' );
if (!$poll_interval) $poll_interval = FACEBOOK_DEFAULT_POLL_INTERVAL;
$working_connection = false;
if ($appid && $appsecret) {
$subs = facebook_subscriptions_get();
if ($subs === null) $o .= t('Error: the given API Key seems to be incorrect (the application access token could not be retrieved).') . '<br>';
elseif (is_array($subs)) {
$o .= t('The given API Key seems to work correctly.') . '<br>';
$working_connection = true;
} else $o .= t('The correctness of the API Key could not be detected. Somthing strang\'s going on.') . '<br>';
}
$o .= '<label for="fb_appid">' . t('App-ID / API-Key') . '</label><input name="appid" type="text" value="' . escape_tags($appid ? $appid : "") . '"><br style="clear: both;">'; $o .= '<label for="fb_appid">' . t('App-ID / API-Key') . '</label><input name="appid" type="text" value="' . escape_tags($appid ? $appid : "") . '"><br style="clear: both;">';
$o .= '<label for="fb_appsecret">' . t('Application secret') . '</label><input name="appsecret" type="text" value="' . escape_tags($appsecret ? $appsecret : "") . '"><br style="clear: both;">'; $o .= '<label for="fb_appsecret">' . t('Application secret') . '</label><input name="appsecret" type="text" value="' . escape_tags($appsecret ? $appsecret : "") . '"><br style="clear: both;">';
$o .= '<label for="fb_poll_interval">' . sprintf(t('Polling Interval (min. %1$s minutes)'), FACEBOOK_MIN_POLL_INTERVAL) . '</label><input name="poll_interval" type="number" min="' . FACEBOOK_MIN_POLL_INTERVAL . '" value="' . $poll_interval . '"><br style="clear: both;">';
$o .= '<input type="submit" name="fb_save_keys" value="' . t('Save') . '">'; $o .= '<input type="submit" name="fb_save_keys" value="' . t('Save') . '">';
if ($appid && $appsecret) { if ($working_connection) {
$o .= '<h4>' . t('Real-Time Updates') . '</h4>'; $o .= '<h4>' . t('Real-Time Updates') . '</h4>';
$activated = facebook_check_realtime_active(); $activated = facebook_check_realtime_active();
@ -671,6 +683,8 @@ function facebook_plugin_admin_post(&$a, &$o){
if (x($_REQUEST,'fb_save_keys')) { if (x($_REQUEST,'fb_save_keys')) {
set_config('facebook', 'appid', $_REQUEST['appid']); set_config('facebook', 'appid', $_REQUEST['appid']);
set_config('facebook', 'appsecret', $_REQUEST['appsecret']); set_config('facebook', 'appsecret', $_REQUEST['appsecret']);
$poll_interval = IntVal($_REQUEST['poll_interval']);
if ($poll_interval >= FACEBOOK_MIN_POLL_INTERVAL) set_config('facebook', 'poll_interval', $poll_interval);
del_config('facebook', 'app_access_token'); del_config('facebook', 'app_access_token');
info(t('The new values have been saved.')); info(t('The new values have been saved.'));
} }
@ -1511,7 +1525,7 @@ function facebook_subscription_del_users() {
$url = "https://graph.facebook.com/" . get_config('facebook', 'appid' ) . "/subscriptions?access_token=" . $access_token; $url = "https://graph.facebook.com/" . get_config('facebook', 'appid' ) . "/subscriptions?access_token=" . $access_token;
facebook_delete_url($url); facebook_delete_url($url);
del_config('facebook', 'realtime_active'); if (!facebook_check_realtime_active()) del_config('facebook', 'realtime_active');
} }
function facebook_subscription_add_users($second_try = false) { function facebook_subscription_add_users($second_try = false) {