}
function appnet_fetchcontact($a, $uid, $contact, $me, $create_user) {
+
+ $r = q("SELECT id FROM unique_contacts WHERE url='%s' LIMIT 1",
+ dbesc(normalise_link($contact["canonical_url"])));
+
+ if (count($r) == 0)
+ q("INSERT INTO unique_contacts (url, name, nick, avatar) VALUES ('%s', '%s', '%s', '%s')",
+ dbesc(normalise_link($contact["canonical_url"])),
+ dbesc($contact["name"]),
+ dbesc($contact["username"]),
+ dbesc($contact["avatar_image"]["url"]));
+ else
+ q("UPDATE unique_contacts SET name = '%s', nick = '%s', avatar = '%s' WHERE url = '%s'",
+ dbesc($contact["name"]),
+ dbesc($contact["username"]),
+ dbesc($contact["avatar_image"]["url"]),
+ dbesc(normalise_link($contact["canonical_url"])));
+
+ if (DB_UPDATE_VERSION >= "1177")
+ q("UPDATE `unique_contacts` SET `location` = '%s', `about` = '%s' WHERE url = '%s'",
+ dbesc(""),
+ dbesc($contact["description"]["text"]),
+ dbesc(normalise_link($contact["canonical_url"])));
+
+
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `alias` = '%s' LIMIT 1",
intval($uid), dbesc("adn::".$contact["id"]));
intval($contact_id)
);
+ if (DB_UPDATE_VERSION >= "1177")
+ q("UPDATE `contact` SET `location` = '%s',
+ `about` = '%s'
+ WHERE `id` = %d",
+ dbesc(""),
+ dbesc($contact["description"]["text"]),
+ intval($contact_id)
+ );
} else {
// update profile photos once every two weeks as we have no notification of when they change.
dbesc($contact["username"]),
intval($r[0]['id'])
);
+ if (DB_UPDATE_VERSION >= "1177")
+ q("UPDATE `contact` SET `location` = '%s',
+ `about` = '%s'
+ WHERE `id` = %d",
+ dbesc(""),
+ dbesc($contact["description"]["text"]),
+ intval($r[0]['id'])
+ );
}
}
}
logger('appnet_cron: cron_start');
+ $abandon_days = intval(get_config('system','account_abandon_days'));
+ if ($abandon_days < 1)
+ $abandon_days = 0;
+
+ $abandon_limit = date("Y-m-d H:i:s", time() - $abandon_days * 86400);
+
$r = q("SELECT * FROM `pconfig` WHERE `cat` = 'appnet' AND `k` = 'import' AND `v` = '1' ORDER BY RAND()");
if(count($r)) {
foreach($r as $rr) {
+ if ($abandon_days != 0) {
+ $user = q("SELECT `login_date` FROM `user` WHERE uid=%d AND `login_date` >= '%s'", $rr['uid'], $abandon_limit);
+ if (!count($user)) {
+ logger('abandoned account: timeline from user '.$rr['uid'].' will not be imported');
+ continue;
+ }
+ }
+
logger('appnet_cron: importing timeline from user '.$rr['uid']);
appnet_fetchstream($a, $rr["uid"]);
}
-<?
+<?php
class BufferApp {
private $client_id;
private $client_secret;
dav_include_files();
$r = q("SELECT * FROM %s%snotifications WHERE `notified` = 0 AND `alert_date` <= NOW()", CALDAV_SQL_DB, CALDAV_SQL_PREFIX);
+ if (is_array($r)) {
foreach ($r as $not) {
q("UPDATE %s%snotifications SET `notified` = 1 WHERE `id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $not["id"]);
$event = q("SELECT * FROM %s%sjqcalendar WHERE `calendarobject_id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $not["calendarobject_id"]);
break;
}
}
+ }
}
*/
class Diasphp {
+ private $cookiejar;
+
function __construct($pod) {
$this->token_regex = '/content="(.*?)" name="csrf-token/';
$this->cookiejar = tempnam(sys_get_temp_dir(), 'cookies');
}
+ function __destruct() {
+ if (file_exists($this->cookiejar))
+ unlink($this->cookiejar);
+ }
+
function _fetch_token() {
$ch = curl_init();
}
logger('fbsync_cron: cron_start');
+ $abandon_days = intval(get_config('system','account_abandon_days'));
+ if ($abandon_days < 1)
+ $abandon_days = 0;
+
+ $abandon_limit = date("Y-m-d H:i:s", time() - $abandon_days * 86400);
+
$r = q("SELECT * FROM `pconfig` WHERE `cat` = 'fbsync' AND `k` = 'sync' AND `v` = '1' ORDER BY RAND()");
if(count($r)) {
foreach($r as $rr) {
+
+ if ($abandon_days != 0) {
+ $user = q("SELECT `login_date` FROM `user` WHERE uid=%d AND `login_date` >= '%s'", $rr['uid'], $abandon_limit);
+ if (!count($user)) {
+ logger('abandoned account: timeline from user '.$rr['uid'].' will not be imported');
+ continue;
+ }
+ }
+
fbsync_get_self($rr['uid']);
logger('fbsync_cron: importing timeline from user '.$rr['uid']);
}
}
+ $abandon_days = intval(get_config('system','account_abandon_days'));
+ if ($abandon_days < 1)
+ $abandon_days = 0;
+
+ $abandon_limit = date("Y-m-d H:i:s", time() - $abandon_days * 86400);
+
$r = q("SELECT * FROM `pconfig` WHERE `cat` = 'pumpio' AND `k` = 'import' AND `v` = '1' ORDER BY RAND() ");
if(count($r)) {
foreach($r as $rr) {
+ if ($abandon_days != 0) {
+ $user = q("SELECT `login_date` FROM `user` WHERE uid=%d AND `login_date` >= '%s'", $rr['uid'], $abandon_limit);
+ if (!count($user)) {
+ logger('abandoned account: timeline from user '.$rr['uid'].' will not be imported');
+ continue;
+ }
+ }
+
logger('pumpio: importing timeline from user '.$rr['uid']);
pumpio_fetchinbox($a, $rr['uid']);
dbesc($contact->image->url),
dbesc(normalise_link($contact->url)));
+ if (DB_UPDATE_VERSION >= "1177")
+ q("UPDATE `unique_contacts` SET `location` = '%s', `about` = '%s' WHERE url = '%s'",
+ dbesc($contact->location->displayName),
+ dbesc($contact->summary),
+ dbesc(normalise_link($contact->url)));
+
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `url` = '%s' LIMIT 1",
intval($uid), dbesc($contact->url));
dbesc(datetime_convert()),
intval($contact_id)
);
+
+ if (DB_UPDATE_VERSION >= "1177")
+ q("UPDATE `contact` SET `location` = '%s',
+ `about` = '%s'
+ WHERE `id` = %d",
+ dbesc($contact->location->displayName),
+ dbesc($contact->summary),
+ intval($contact_id)
+ );
} else {
// update profile photos once every two weeks as we have no notification of when they change.
-
- $update_photo = (($r[0]['avatar-date'] < datetime_convert('','','now -14 days')) ? true : false);
+ //$update_photo = (($r[0]['avatar-date'] < datetime_convert('','','now -14 days')) ? true : false);
+ $update_photo = ($r[0]['avatar-date'] < datetime_convert('','','now -12 hours'));
// check that we have all the photos, this has been known to fail on occasion
dbesc($contact->preferredUsername),
intval($r[0]['id'])
);
+
+ if (DB_UPDATE_VERSION >= "1177")
+ q("UPDATE `contact` SET `location` = '%s',
+ `about` = '%s'
+ WHERE `id` = %d",
+ dbesc($contact->location->displayName),
+ dbesc($contact->summary),
+ intval($r[0]['id'])
+ );
}
}
}
}
+ $abandon_days = intval(get_config('system','account_abandon_days'));
+ if ($abandon_days < 1)
+ $abandon_days = 0;
+
+ $abandon_limit = date("Y-m-d H:i:s", time() - $abandon_days * 86400);
+
$r = q("SELECT * FROM `pconfig` WHERE `cat` = 'statusnet' AND `k` = 'import' AND `v` = '1' ORDER BY RAND()");
if(count($r)) {
foreach($r as $rr) {
+ if ($abandon_days != 0) {
+ $user = q("SELECT `login_date` FROM `user` WHERE uid=%d AND `login_date` >= '%s'", $rr['uid'], $abandon_limit);
+ if (!count($user)) {
+ logger('abandoned account: timeline from user '.$rr['uid'].' will not be imported');
+ continue;
+ }
+ }
+
logger('statusnet: importing timeline from user '.$rr['uid']);
statusnet_fetchhometimeline($a, $rr["uid"]);
}
dbesc($contact->profile_image_url),
dbesc(normalise_link($contact->statusnet_profile_url)));
+ if (DB_UPDATE_VERSION >= "1177")
+ q("UPDATE `unique_contacts` SET `location` = '%s', `about` = '%s' WHERE url = '%s'",
+ dbesc($contact->location),
+ dbesc($contact->description),
+ dbesc(normalise_link($contact->statusnet_profile_url)));
+
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `alias` = '%s' LIMIT 1",
intval($uid), dbesc(normalise_link($contact->statusnet_profile_url)));
intval($contact_id)
);
+ if (DB_UPDATE_VERSION >= "1177")
+ q("UPDATE `contact` SET `location` = '%s',
+ `about` = '%s'
+ WHERE `id` = %d",
+ dbesc($contact->location),
+ dbesc($contact->description),
+ intval($contact_id)
+ );
+
} else {
// update profile photos once every two weeks as we have no notification of when they change.
dbesc($contact->screen_name),
intval($r[0]['id'])
);
+
+ if (DB_UPDATE_VERSION >= "1177")
+ q("UPDATE `contact` SET `location` = '%s',
+ `about` = '%s'
+ WHERE `id` = %d",
+ dbesc($contact->location),
+ dbesc($contact->description),
+ intval($r[0]['id'])
+ );
}
}
}
}
+ $abandon_days = intval(get_config('system','account_abandon_days'));
+ if ($abandon_days < 1)
+ $abandon_days = 0;
+
+ $abandon_limit = date("Y-m-d H:i:s", time() - $abandon_days * 86400);
$r = q("SELECT * FROM `pconfig` WHERE `cat` = 'twitter' AND `k` = 'import' AND `v` = '1' ORDER BY RAND()");
if(count($r)) {
foreach($r as $rr) {
+ if ($abandon_days != 0) {
+ $user = q("SELECT `login_date` FROM `user` WHERE uid=%d AND `login_date` >= '%s'", $rr['uid'], $abandon_limit);
+ if (!count($user)) {
+ logger('abandoned account: timeline from user '.$rr['uid'].' will not be imported');
+ continue;
+ }
+ }
+
logger('twitter: importing timeline from user '.$rr['uid']);
twitter_fetchhometimeline($a, $rr["uid"]);
dbesc($avatar),
dbesc(normalise_link("https://twitter.com/".$contact->screen_name)));
+ if (DB_UPDATE_VERSION >= "1177")
+ q("UPDATE `unique_contacts` SET `location` = '%s', `about` = '%s' WHERE url = '%s'",
+ dbesc($contact->location),
+ dbesc($contact->description),
+ dbesc(normalise_link("https://twitter.com/".$contact->screen_name)));
+
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `alias` = '%s' LIMIT 1",
intval($uid), dbesc("twitter::".$contact->id_str));
q("INSERT INTO `contact` ( `uid`, `created`, `url`, `nurl`, `addr`, `alias`, `notify`, `poll`,
`name`, `nick`, `photo`, `network`, `rel`, `priority`,
`writable`, `blocked`, `readonly`, `pending` )
- VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, 0, 0, 0 ) ",
+ VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, 0, 0, 0) ",
intval($uid),
dbesc(datetime_convert()),
dbesc("https://twitter.com/".$contact->screen_name),
intval($contact_id)
);
+ if (DB_UPDATE_VERSION >= "1177")
+ q("UPDATE `contact` SET `location` = '%s',
+ `about` = '%s'
+ WHERE `id` = %d",
+ dbesc($contact->location),
+ dbesc($contact->description),
+ intval($contact_id)
+ );
+
} else {
// update profile photos once every two weeks as we have no notification of when they change.
dbesc($contact->screen_name),
intval($r[0]['id'])
);
+
+ if (DB_UPDATE_VERSION >= "1177")
+ q("UPDATE `contact` SET `location` = '%s',
+ `about` = '%s'
+ WHERE `id` = %d",
+ dbesc($contact->location),
+ dbesc($contact->description),
+ intval($r[0]['id'])
+ );
}
}
/**
* Name: WindowsPhonePush
* Description: Enable push notification to send information to Friendica Mobile app on Windows phone (count of unread timeline entries, text of last posting - if wished by user)
- * Version: 1.1
+ * Version: 2.0
* Author: Gerhard Seeber <http://friendica.seeber.at/profile/admin>
*
*
* Version history:
* 1.1 : addon crashed on php versions >= 5.4 as of removed deprecated call-time
* pass-by-reference used in function calls within function windowsphonepush_content
+ * 2.0 : adaption for supporting emphasizing new entries in app (count on tile cannot be read out,
+ * so we need to retrieve counter through show_settings secondly). Provide new function for
+ * calling from app to set the counter back after start (if user starts again before cronjob
+ * sets the counter back
+ * count only unseen elements which are not type=activity (likes and dislikes not seen as new elements)
*/
function windowsphonepush_settings_post($a,$post) {
if(! local_user() || (! x($_POST,'windowsphonepush-submit')))
return;
+ $enable = intval($_POST['windowsphonepush']);
+ set_pconfig(local_user(),'windowsphonepush','enable',$enable);
+
+ if($enable) {
+ set_pconfig(local_user(),'windowsphonepush','counterunseen', 0);
+ }
- set_pconfig(local_user(),'windowsphonepush','enable',intval($_POST['windowsphonepush']));
set_pconfig(local_user(),'windowsphonepush','senditemtext',intval($_POST['windowsphonepush-senditemtext']));
info( t('WindowsPhonePush settings updated.') . EOL);
} else {
// retrieve the number of unseen items and the id of the latest one (if there are more than
// one new entries since last poller run, only the latest one will be pushed)
- $count = q("SELECT count(`id`) as count, max(`id`) as max FROM `item` WHERE `unseen` = 1 AND `uid` = %d",
+ $count = q("SELECT count(`id`) as count, max(`id`) as max FROM `item` WHERE `unseen` = 1 AND `type` <> 'activity' AND `uid` = %d",
intval($rr['uid'])
);
$res_tile = send_tile_update($device_url, "", $count[0]['count'], "");
switch (trim($res_tile)) {
case "Received":
- // ok, count has been pushed
+ // ok, count has been pushed, let's save it in personal settings
+ set_pconfig($rr['uid'], 'windowsphonepush', 'counterunseen', $count[0]['count']);
break;
case "QueueFull":
// maximum of 30 messages reached, server rejects any further push notification until device reconnects
* reading information from url and deciding which function to start
* show_settings = delivering settings to check
* update_settings = set the device_url
+ * update_counterunseen = set counter for unseen elements to zero
*
*/
function windowsphonepush_content(&$a) {
echo json_encode(array('status' => $ret));
killme();
break;
+ case "update_counterunseen":
+ $ret = windowsphonepush_updatecounterunseen();
+ header("Content-Type: application/json; charset=utf-8");
+ echo json_encode(array('status' => $ret));
+ killme();
+ break;
default:
echo "Fehler";
}
$device_url = get_pconfig(local_user(), 'windowsphonepush', 'device_url');
$senditemtext = get_pconfig(local_user(), 'windowsphonepush', 'senditemtext');
$lastpushid = get_pconfig(local_user(), 'windowsphonepush', 'lastpushid');
+ $counterunseen = get_pconfig(local_user(), 'windowsphonepush', 'counterunseen');
+ $addonversion = "2.0";
if (!$device_url)
$device_url = "";
'enable' => $enable,
'device_url' => $device_url,
'senditemtext' => $senditemtext,
- 'lastpushid' => $lastpushid));
+ 'lastpushid' => $lastpushid,
+ 'counterunseen' => $counterunseen,
+ 'addonversion' => $addonversion));
}
/*
return "Device-URL updated successfully!";
}
+/*
+ * update_counterunseen is used to reset the counter to zero from Windows Phone app
+ */
+function windowsphonepush_updatecounterunseen() {
+ if(! local_user()) {
+ return "Not Authenticated";
+ }
+
+ // no updating if user hasn't enabled the plugin
+ $enable = get_pconfig(local_user(), 'windowsphonepush', 'enable');
+ if(! $enable) {
+ return "Plug-in not enabled";
+ }
+
+ set_pconfig(local_user(),'windowsphonepush','counterunseen', 0);
+ return "Counter set to zero";
+}
+
/*
* helper function to login to the server with the specified Network credentials
* (mainly copied from api.php)