diff --git a/addon/facebook/facebook.php b/addon/facebook/facebook.php
index 3cc40330c..ac522aab6 100644
--- a/addon/facebook/facebook.php
+++ b/addon/facebook/facebook.php
@@ -335,18 +335,20 @@ function facebook_content(&$a) {
}
function facebook_install() {
- register_hook('post_local_end', 'addon/facebook/facebook.php', 'facebook_post_hook');
- register_hook('jot_networks', 'addon/facebook/facebook.php', 'facebook_jot_nets');
- register_hook('plugin_settings', 'addon/facebook/facebook.php', 'facebook_plugin_settings');
- register_hook('cron', 'addon/facebook/facebook.php', 'facebook_cron');
+ register_hook('post_local_end', 'addon/facebook/facebook.php', 'facebook_post_hook');
+ register_hook('jot_networks', 'addon/facebook/facebook.php', 'facebook_jot_nets');
+ register_hook('plugin_settings', 'addon/facebook/facebook.php', 'facebook_plugin_settings');
+ register_hook('cron', 'addon/facebook/facebook.php', 'facebook_cron');
+ register_hook('queue_predeliver', 'addon/facebook/facebook.php', 'fb_queue_hook');
}
function facebook_uninstall() {
- unregister_hook('post_local_end', 'addon/facebook/facebook.php', 'facebook_post_hook');
- unregister_hook('jot_networks', 'addon/facebook/facebook.php', 'facebook_jot_nets');
- unregister_hook('plugin_settings', 'addon/facebook/facebook.php', 'facebook_plugin_settings');
- unregister_hook('cron', 'addon/facebook/facebook.php', 'facebook_cron');
+ unregister_hook('post_local_end', 'addon/facebook/facebook.php', 'facebook_post_hook');
+ unregister_hook('jot_networks', 'addon/facebook/facebook.php', 'facebook_jot_nets');
+ unregister_hook('plugin_settings', 'addon/facebook/facebook.php', 'facebook_plugin_settings');
+ unregister_hook('cron', 'addon/facebook/facebook.php', 'facebook_cron');
+ unregister_hook('queue_predeliver', 'addon/facebook/facebook.php', 'fb_queue_hook');
}
@@ -635,9 +637,19 @@ function facebook_post_hook(&$a,&$b) {
);
}
else {
- // FIXME queue the message so we can attempt to redeliver, see include/notifier.php and include/queue.php
- if(! $likes)
- notice( t('Facebook delivery failed.') . EOL);
+ if(! $likes) {
+ $s = serialize(array('url' => $url, 'item' => $b['id'], 'post' => $postvars));
+ q("INSERT INTO `queue` ( `network`, `cid`, `created`, `last`, `content`)
+ VALUES ( '%s', '%s', '%s', '%s') ",
+ dbesc(NETWORK_FACEBOOK),
+ intval($a->contact),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ dbesc($s)
+ );
+
+ notice( t('Facebook post failed. Queued for retry.') . EOL);
+ }
}
logger('Facebook post returns: ' . $x, LOGGER_DEBUG);
@@ -648,6 +660,56 @@ function facebook_post_hook(&$a,&$b) {
}
+function fb_queue_hook(&$a,&$b) {
+
+ require_once('include/queue_fn.php');
+ if((! is_array($b)) || (! count($b)))
+ return;
+ foreach($b as $x) {
+ if($b['network'] !== NETWORK_FACEBOOK)
+ continue;
+ $r = q("SELECT `user`.* FROM `user` LEFT JOIN `contact` on `contact`.`uid` = `user`.`uid`
+ WHERE `contact`.`self` = 1 AND `contact`.`id` = %d LIMIT 1",
+ intval($x['cid'])
+ );
+ if(! count($r))
+ continue;
+
+ $user = $r[0];
+
+ $appid = get_config('facebook', 'appid' );
+ $secret = get_config('facebook', 'appsecret' );
+
+ if($appid && $secret) {
+ $fb_post = intval(get_pconfig($user['uid'],'facebook','post'));
+ $fb_token = get_pconfig($user['uid'],'facebook','access_token');
+
+ if($fb_post && $fb_token) {
+ logger('facebook_queue: able to post');
+ require_once('library/facebook.php');
+
+ $z = unserialize($x['content']);
+ $item = $z['item'];
+ $j = post_url($z['url'],$z['post']);
+
+ $retj = json_decode($j);
+ if($retj->id) {
+ q("UPDATE `item` SET `extid` = '%s' WHERE `id` = %d LIMIT 1",
+ dbesc('fb::' . $retj->id),
+ intval($item)
+ );
+ logger('facebook queue: success: ' . $j);
+ remove_queue_item($x['id']);
+ }
+ else {
+ logger('facebook_queue: failed: ' . $j);
+ update_queue_time($x['id']);
+ }
+ }
+ }
+ }
+}
+
function fb_consume_all($uid) {
require_once('include/items.php');
diff --git a/boot.php b/boot.php
index 0af73c468..798a2ef43 100644
--- a/boot.php
+++ b/boot.php
@@ -6,7 +6,7 @@ ini_set('pcre.backtrack_limit', 250000);
define ( 'FRIENDIKA_VERSION', '2.2.999' );
define ( 'DFRN_PROTOCOL_VERSION', '2.21' );
-define ( 'DB_UPDATE_VERSION', 1059 );
+define ( 'DB_UPDATE_VERSION', 1060 );
define ( 'EOL', "
\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
@@ -481,17 +481,26 @@ function check_config(&$a) {
$stored = intval($build);
$current = intval(DB_UPDATE_VERSION);
if(($stored < $current) && file_exists('update.php')) {
+
// We're reporting a different version than what is currently installed.
// Run any existing update scripts to bring the database up to current.
require_once('update.php');
- for($x = $stored; $x < $current; $x ++) {
- if(function_exists('update_' . $x)) {
- $func = 'update_' . $x;
- $func($a);
+
+ // make sure that boot.php and update.php are the same release, we might be
+ // updating right this very second and the correct version of the update.php
+ // file may not be here yet. This can happen on a very busy site.
+
+ if(DB_UPDATE_VERSION == UPDATE_VERSION) {
+
+ for($x = $stored; $x < $current; $x ++) {
+ if(function_exists('update_' . $x)) {
+ $func = 'update_' . $x;
+ $func($a);
+ }
}
+ set_config('system','build', DB_UPDATE_VERSION);
}
- set_config('system','build', DB_UPDATE_VERSION);
}
}
diff --git a/database.sql b/database.sql
index 8948e9b06..7c26af341 100644
--- a/database.sql
+++ b/database.sql
@@ -440,6 +440,7 @@ PRIMARY KEY ( `id` )
CREATE TABLE IF NOT EXISTS `queue` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`cid` INT NOT NULL ,
+`network` CHAR( 32 ) NOT NULL,
`created` DATETIME NOT NULL ,
`last` DATETIME NOT NULL ,
`content` MEDIUMTEXT NOT NULL
diff --git a/doc/Account-Basics.md b/doc/Account-Basics.md
index 9c6548430..5791dce78 100644
--- a/doc/Account-Basics.md
+++ b/doc/Account-Basics.md
@@ -53,6 +53,9 @@ Otherwise, enter your password. This will have been initially provided in your r
After your first login, please visit the 'Settings' page from the top menu bar and change your password to something that you will remember.
+**Getting Started**
+
+A ['Tips for New Members'](newmember) link will show up on your home page for two weeks to provide some important Getting Started information.
**See Also**
diff --git a/include/auth.php b/include/auth.php
index fd80a63e2..d1eb9d131 100644
--- a/include/auth.php
+++ b/include/auth.php
@@ -63,6 +63,12 @@ if((isset($_SESSION)) && (x($_SESSION,'authenticated')) && ((! (x($_POST,'auth-p
$_SESSION['theme'] = $a->user['theme'];
$_SESSION['page_flags'] = $a->user['page-flags'];
+ $member_since = strtotime($a->user['register_date']);
+ if(time() < ($member_since + ( 60 * 60 * 24 * 14)))
+ $_SESSION['new_member'] = true;
+ else
+ $_SESSION['new_member'] = false;
+
if(strlen($a->user['timezone'])) {
date_default_timezone_set($a->user['timezone']);
$a->timezone = $a->user['timezone'];
@@ -211,6 +217,13 @@ else {
else
info( t("Welcome back ") . $a->user['username'] . EOL);
+
+ $member_since = strtotime($a->user['register_date']);
+ if(time() < ($member_since + ( 60 * 60 * 24 * 14)))
+ $_SESSION['new_member'] = true;
+ else
+ $_SESSION['new_member'] = false;
+
if(strlen($a->user['timezone'])) {
date_default_timezone_set($a->user['timezone']);
$a->timezone = $a->user['timezone'];
diff --git a/include/queue.php b/include/queue.php
index ff280cb53..cc36b2f62 100644
--- a/include/queue.php
+++ b/include/queue.php
@@ -1,20 +1,6 @@
$owner, 'contact' => $contact, 'queue' => $q_item, 'result' => false);
call_hooks('queue_deliver', $a, $params);
diff --git a/include/queue_fn.php b/include/queue_fn.php
new file mode 100644
index 000000000..bc47ceffd
--- /dev/null
+++ b/include/queue_fn.php
@@ -0,0 +1,16 @@
+' . t('Welcome to Friendika') . '';
+
+ $o .= '