Merge branch '0.8.x' of git@gitorious.org:+laconica-developers/laconica/dev into 0.8.x

This commit is contained in:
Evan Prodromou 2009-06-18 23:25:27 -07:00
commit 45430d2b3b
2 changed files with 59 additions and 20 deletions

View File

@ -154,6 +154,9 @@ $config['sphinx']['port'] = 3312;
// $config['integration']['source'] = 'Laconica'; // $config['integration']['source'] = 'Laconica';
// Enable bidirectional Twitter bridge // Enable bidirectional Twitter bridge
//
// NOTE: if you enable this you must also set $config['avatar']['path']
//
// $config['twitterbridge']['enabled'] = true; // $config['twitterbridge']['enabled'] = true;
// Edit throttling. Off by default. If turned on, you can only post 20 notices // Edit throttling. Off by default. If turned on, you can only post 20 notices

View File

@ -52,6 +52,9 @@ require_once INSTALLDIR . '/lib/daemon.php';
* @link http://laconi.ca/ * @link http://laconi.ca/
*/ */
// NOTE: an Avatar path MUST be set in config.php for this
// script to work: e.g.: $config['avatar']['path'] = '/laconica/avatar';
class TwitterStatusFetcher extends Daemon class TwitterStatusFetcher extends Daemon
{ {
private $_children = array(); private $_children = array();
@ -403,12 +406,13 @@ class TwitterStatusFetcher extends Daemon
} }
} }
function checkAvatar($user, $profile) function checkAvatar($twitter_user, $profile)
{ {
global $config; global $config;
$path_parts = pathinfo($user->profile_image_url); $path_parts = pathinfo($twitter_user->profile_image_url);
$newname = 'Twitter_' . $user->id . '_' .
$newname = 'Twitter_' . $twitter_user->id . '_' .
$path_parts['basename']; $path_parts['basename'];
$oldname = $profile->getAvatar(48)->filename; $oldname = $profile->getAvatar(48)->filename;
@ -421,21 +425,56 @@ class TwitterStatusFetcher extends Daemon
common_debug("old: $oldname new: $newname"); common_debug("old: $oldname new: $newname");
} }
$img_root = substr($path_parts['basename'], 0, -11); $this->updateAvatars($twitter_user, $profile);
$ext = $path_parts['extension']; }
$mediatype = $this->getMediatype($ext);
foreach (array('mini', 'normal', 'bigger') as $size) { if ($this->missingAvatarFile($profile)) {
$url = $path_parts['dirname'] . '/' .
$img_root . '_' . $size . ".$ext";
$filename = 'Twitter_' . $user->id . '_' .
$img_root . "_$size.$ext";
if ($this->fetchAvatar($url, $filename)) { if (defined('SCRIPT_DEBUG')) {
$this->updateAvatar($profile->id, $size, $mediatype, $filename); common_debug('Twitter user ' . $profile->nickname .
} ' is missing one or more local avatars.');
common_debug("old: $oldname new: $newname");
}
$this->updateAvatars($twitter_user, $profile);
}
}
function updateAvatars($twitter_user, $profile) {
global $config;
$path_parts = pathinfo($twitter_user->profile_image_url);
$img_root = substr($path_parts['basename'], 0, -11);
$ext = $path_parts['extension'];
$mediatype = $this->getMediatype($ext);
foreach (array('mini', 'normal', 'bigger') as $size) {
$url = $path_parts['dirname'] . '/' .
$img_root . '_' . $size . ".$ext";
$filename = 'Twitter_' . $twitter_user->id . '_' .
$img_root . "_$size.$ext";
$this->updateAvatar($profile->id, $size, $mediatype, $filename);
$this->fetchAvatar($url, $filename);
}
}
function missingAvatarFile($profile) {
foreach (array(24, 48, 73) as $size) {
$filename = $profile->getAvatar($size)->filename;
$avatarpath = Avatar::path($filename);
if (file_exists($avatarpath) == FALSE) {
return true;
} }
} }
return false;
} }
function getMediatype($ext) function getMediatype($ext)
@ -488,7 +527,7 @@ class TwitterStatusFetcher extends Daemon
$profile = Profile::staticGet($profile_id); $profile = Profile::staticGet($profile_id);
if (!$profile) { if (empty($profile)) {
if (defined('SCRIPT_DEBUG')) { if (defined('SCRIPT_DEBUG')) {
common_debug("Couldn't get profile: $profile_id!"); common_debug("Couldn't get profile: $profile_id!");
} }
@ -498,11 +537,8 @@ class TwitterStatusFetcher extends Daemon
$sizes = array('mini' => 24, 'normal' => 48, 'bigger' => 73); $sizes = array('mini' => 24, 'normal' => 48, 'bigger' => 73);
$avatar = $profile->getAvatar($sizes[$size]); $avatar = $profile->getAvatar($sizes[$size]);
// Delete the avatar, if present
if ($avatar) { if ($avatar) {
if (defined('SCRIPT_DEBUG')) {
common_debug("Deleting $size avatar for $profile->nickname.");
}
@unlink(INSTALLDIR . '/avatar/' . $avatar->filename);
$avatar->delete(); $avatar->delete();
} }
@ -547,7 +583,7 @@ class TwitterStatusFetcher extends Daemon
$id = $avatar->insert(); $id = $avatar->insert();
if (!$id) { if (empty($id)) {
common_log_db_error($avatar, 'INSERT', __FILE__); common_log_db_error($avatar, 'INSERT', __FILE__);
return null; return null;
} }