Merge branch 'testing' of gitorious.org:statusnet/mainline into 0.9.x
This commit is contained in:
commit
c59eee72a8
|
@ -186,10 +186,13 @@ class FavoritedAction extends Action
|
||||||
function showContent()
|
function showContent()
|
||||||
{
|
{
|
||||||
$weightexpr = common_sql_weight('fave.modified', common_config('popular', 'dropoff'));
|
$weightexpr = common_sql_weight('fave.modified', common_config('popular', 'dropoff'));
|
||||||
|
$cutoff = sprintf("fave.modified > '%s'",
|
||||||
|
common_sql_date(time() - common_config('popular', 'cutoff')));
|
||||||
|
|
||||||
$qry = 'SELECT notice.*, '.
|
$qry = 'SELECT notice.*, '.
|
||||||
$weightexpr . ' as weight ' .
|
$weightexpr . ' as weight ' .
|
||||||
'FROM notice JOIN fave ON notice.id = fave.notice_id ' .
|
'FROM notice JOIN fave ON notice.id = fave.notice_id ' .
|
||||||
|
"WHERE $cutoff " .
|
||||||
'GROUP BY id,profile_id,uri,content,rendered,url,created,notice.modified,reply_to,is_local,source,notice.conversation ' .
|
'GROUP BY id,profile_id,uri,content,rendered,url,created,notice.modified,reply_to,is_local,source,notice.conversation ' .
|
||||||
'ORDER BY weight DESC';
|
'ORDER BY weight DESC';
|
||||||
|
|
||||||
|
|
|
@ -106,7 +106,10 @@ class PublictagcloudAction extends Action
|
||||||
#Add the aggregated columns...
|
#Add the aggregated columns...
|
||||||
$tags->selectAdd('max(notice_id) as last_notice_id');
|
$tags->selectAdd('max(notice_id) as last_notice_id');
|
||||||
$calc = common_sql_weight('created', common_config('tag', 'dropoff'));
|
$calc = common_sql_weight('created', common_config('tag', 'dropoff'));
|
||||||
|
$cutoff = sprintf("notice_tag.created > '%s'",
|
||||||
|
common_sql_date(time() - common_config('tag', 'cutoff')));
|
||||||
$tags->selectAdd($calc . ' as weight');
|
$tags->selectAdd($calc . ' as weight');
|
||||||
|
$tags->addWhere($cutoff);
|
||||||
$tags->groupBy('tag');
|
$tags->groupBy('tag');
|
||||||
$tags->orderBy('weight DESC');
|
$tags->orderBy('weight DESC');
|
||||||
|
|
||||||
|
|
|
@ -1468,4 +1468,25 @@ class Notice extends Memcached_DataObject
|
||||||
$handler->handle($this);
|
$handler->handle($this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function insert()
|
||||||
|
{
|
||||||
|
$result = parent::insert();
|
||||||
|
|
||||||
|
if ($result) {
|
||||||
|
// Profile::hasRepeated() abuses pkeyGet(), so we
|
||||||
|
// have to clear manually
|
||||||
|
if (!empty($this->repeat_of)) {
|
||||||
|
$c = self::memcache();
|
||||||
|
if (!empty($c)) {
|
||||||
|
$ck = self::multicacheKey('Notice',
|
||||||
|
array('profile_id' => $this->profile_id,
|
||||||
|
'repeat_of' => $this->repeat_of));
|
||||||
|
$c->delete($ck);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -586,6 +586,7 @@ modified = 384
|
||||||
|
|
||||||
[user_group__keys]
|
[user_group__keys]
|
||||||
id = N
|
id = N
|
||||||
|
nickname = U
|
||||||
|
|
||||||
[user_openid]
|
[user_openid]
|
||||||
canonical = 130
|
canonical = 130
|
||||||
|
|
|
@ -144,9 +144,11 @@ $default =
|
||||||
'invite' =>
|
'invite' =>
|
||||||
array('enabled' => true),
|
array('enabled' => true),
|
||||||
'tag' =>
|
'tag' =>
|
||||||
array('dropoff' => 864000.0),
|
array('dropoff' => 864000.0, # controls weighting based on age
|
||||||
|
'cutoff' => 86400 * 90), # only look at notices posted in last 90 days
|
||||||
'popular' =>
|
'popular' =>
|
||||||
array('dropoff' => 864000.0),
|
array('dropoff' => 864000.0, # controls weighting based on age
|
||||||
|
'cutoff' => 86400 * 90), # only look at notices favorited in last 90 days
|
||||||
'daemon' =>
|
'daemon' =>
|
||||||
array('piddir' => '/var/run',
|
array('piddir' => '/var/run',
|
||||||
'user' => false,
|
'user' => false,
|
||||||
|
|
|
@ -59,6 +59,7 @@ class GroupTagCloudSection extends TagCloudSection
|
||||||
function getTags()
|
function getTags()
|
||||||
{
|
{
|
||||||
$weightexpr = common_sql_weight('notice_tag.created', common_config('tag', 'dropoff'));
|
$weightexpr = common_sql_weight('notice_tag.created', common_config('tag', 'dropoff'));
|
||||||
|
// @fixme should we use the cutoff too? Doesn't help with indexing per-group.
|
||||||
|
|
||||||
$names = $this->group->getAliases();
|
$names = $this->group->getAliases();
|
||||||
|
|
||||||
|
|
|
@ -59,6 +59,7 @@ class PersonalTagCloudSection extends TagCloudSection
|
||||||
function getTags()
|
function getTags()
|
||||||
{
|
{
|
||||||
$weightexpr = common_sql_weight('notice_tag.created', common_config('tag', 'dropoff'));
|
$weightexpr = common_sql_weight('notice_tag.created', common_config('tag', 'dropoff'));
|
||||||
|
// @fixme should we use the cutoff too? Doesn't help with indexing per-user.
|
||||||
|
|
||||||
$qry = 'SELECT notice_tag.tag, '.
|
$qry = 'SELECT notice_tag.tag, '.
|
||||||
$weightexpr . ' as weight ' .
|
$weightexpr . ' as weight ' .
|
||||||
|
|
|
@ -59,12 +59,15 @@ class PopularNoticeSection extends NoticeSection
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$weightexpr = common_sql_weight('fave.modified', common_config('popular', 'dropoff'));
|
$weightexpr = common_sql_weight('fave.modified', common_config('popular', 'dropoff'));
|
||||||
|
$cutoff = sprintf("fave.modified > '%s'",
|
||||||
|
common_sql_date(time() - common_config('popular', 'cutoff')));
|
||||||
$qry = "SELECT notice.*, $weightexpr as weight ";
|
$qry = "SELECT notice.*, $weightexpr as weight ";
|
||||||
if(isset($tag)) {
|
if(isset($tag)) {
|
||||||
$qry .= 'FROM notice_tag, notice JOIN fave ON notice.id = fave.notice_id ' .
|
$qry .= 'FROM notice_tag, notice JOIN fave ON notice.id = fave.notice_id ' .
|
||||||
"WHERE notice.id = notice_tag.notice_id and '$tag' = notice_tag.tag";
|
"WHERE $cutoff and notice.id = notice_tag.notice_id and '$tag' = notice_tag.tag";
|
||||||
} else {
|
} else {
|
||||||
$qry .= 'FROM notice JOIN fave ON notice.id = fave.notice_id';
|
$qry .= 'FROM notice JOIN fave ON notice.id = fave.notice_id ' .
|
||||||
|
"WHERE $cutoff";
|
||||||
}
|
}
|
||||||
$qry .= ' GROUP BY notice.id,notice.profile_id,notice.content,notice.uri,' .
|
$qry .= ' GROUP BY notice.id,notice.profile_id,notice.content,notice.uri,' .
|
||||||
'notice.rendered,notice.url,notice.created,notice.modified,' .
|
'notice.rendered,notice.url,notice.created,notice.modified,' .
|
||||||
|
|
|
@ -20,35 +20,35 @@
|
||||||
|
|
||||||
define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
|
define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
|
||||||
|
|
||||||
$shortoptions = "t:c:v:k:";
|
$shortoptions = "t:l:v:k:";
|
||||||
|
|
||||||
$helptext = <<<ENDOFHELP
|
$helptext = <<<END_OF_CLEARCACHE_HELP
|
||||||
USAGE: clearcache.php <args>
|
USAGE: clearcache.php <args>
|
||||||
clears the cached object based on the args
|
clears the cached object based on the args
|
||||||
|
|
||||||
-t table Table to look up
|
-t table Table to look up
|
||||||
-c column Column to look up, default "id"
|
-l column Column to look up, default "id"
|
||||||
-v value Value to look up
|
-v value Value to look up
|
||||||
-k key Key to look up; other args are ignored
|
-k key Key to look up; other args are ignored
|
||||||
|
|
||||||
ENDOFHELP;
|
END_OF_CLEARCACHE_HELP;
|
||||||
|
|
||||||
require_once INSTALLDIR.'/scripts/commandline.inc';
|
require_once INSTALLDIR.'/scripts/commandline.inc';
|
||||||
|
|
||||||
$karg = get_option_value('k');
|
$karg = get_option_value('k', 'key');
|
||||||
|
|
||||||
if (!empty($karg)) {
|
if (!empty($karg)) {
|
||||||
$k = common_cache_key($karg);
|
$k = common_cache_key($karg);
|
||||||
} else {
|
} else {
|
||||||
$table = get_option_value('t');
|
$table = get_option_value('t', 'table');
|
||||||
if (empty($table)) {
|
if (empty($table)) {
|
||||||
die("No table or key specified\n");
|
die("No table or key specified\n");
|
||||||
}
|
}
|
||||||
$column = get_option_value('c');
|
$column = get_option_value('l', 'column');
|
||||||
if (empty($column)) {
|
if (empty($column)) {
|
||||||
$column = 'id';
|
$column = 'id';
|
||||||
}
|
}
|
||||||
$value = get_option_value('v');
|
$value = get_option_value('v', 'value');
|
||||||
|
|
||||||
$k = Memcached_DataObject::cacheKey($table, $column, $value);
|
$k = Memcached_DataObject::cacheKey($table, $column, $value);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,11 @@ export sitename="$2"
|
||||||
export tags="$3"
|
export tags="$3"
|
||||||
export email="$4"
|
export email="$4"
|
||||||
export fullname="$5"
|
export fullname="$5"
|
||||||
|
export siteplan="$6"
|
||||||
|
|
||||||
|
if [ "$siteplan" == '' ]; then
|
||||||
|
siteplan='single-user'
|
||||||
|
fi
|
||||||
|
|
||||||
# Fixme: if this is changed later we need to update profile URLs
|
# Fixme: if this is changed later we need to update profile URLs
|
||||||
# for the created user.
|
# for the created user.
|
||||||
|
@ -71,6 +76,7 @@ then
|
||||||
sed "s/\$nickname/$nickname/" | \
|
sed "s/\$nickname/$nickname/" | \
|
||||||
sed "s/\$sitename/$sitename/" | \
|
sed "s/\$sitename/$sitename/" | \
|
||||||
sed "s/\$userpass/$userpass/" | \
|
sed "s/\$userpass/$userpass/" | \
|
||||||
|
sed "s/\$siteplan/$siteplan/" | \
|
||||||
php $PHPBASE/scripts/sendemail.php \
|
php $PHPBASE/scripts/sendemail.php \
|
||||||
-s"$server" \
|
-s"$server" \
|
||||||
-n"$nickname" \
|
-n"$nickname" \
|
||||||
|
|
|
@ -20,14 +20,14 @@
|
||||||
|
|
||||||
define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
|
define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
|
||||||
|
|
||||||
$shortoptions = "t:c:v:k:";
|
$shortoptions = "t:l:v:k:";
|
||||||
|
|
||||||
$helptext = <<<ENDOFHELP
|
$helptext = <<<ENDOFHELP
|
||||||
USAGE: showcache.php <args>
|
USAGE: showcache.php <args>
|
||||||
shows the cached object based on the args
|
shows the cached object based on the args
|
||||||
|
|
||||||
-t table Table to look up
|
-t table Table to look up
|
||||||
-c column Column to look up, default "id"
|
-l column Column to look up, default "id"
|
||||||
-v value Value to look up
|
-v value Value to look up
|
||||||
-k key Key to look up; other args are ignored
|
-k key Key to look up; other args are ignored
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ if (!empty($karg)) {
|
||||||
if (empty($table)) {
|
if (empty($table)) {
|
||||||
die("No table or key specified\n");
|
die("No table or key specified\n");
|
||||||
}
|
}
|
||||||
$column = get_option_value('c');
|
$column = get_option_value('l');
|
||||||
if (empty($column)) {
|
if (empty($column)) {
|
||||||
$column = 'id';
|
$column = 'id';
|
||||||
}
|
}
|
||||||
|
|
99
scripts/updateprofileurl.php
Normal file
99
scripts/updateprofileurl.php
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
#!/usr/bin/env php
|
||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* StatusNet - a distributed open-source microblogging tool
|
||||||
|
* Copyright (C) 2008, 2009, StatusNet, Inc.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
|
||||||
|
|
||||||
|
$shortoptions = 'i:n:a';
|
||||||
|
$longoptions = array('id=', 'nickname=', 'all');
|
||||||
|
|
||||||
|
$helptext = <<<END_OF_UPDATEPROFILEURL_HELP
|
||||||
|
updateprofileurl.php [options]
|
||||||
|
update the URLs of all avatars in the system
|
||||||
|
|
||||||
|
-i --id ID of user to update
|
||||||
|
-n --nickname nickname of the user to update
|
||||||
|
-a --all update all
|
||||||
|
|
||||||
|
END_OF_UPDATEPROFILEURL_HELP;
|
||||||
|
|
||||||
|
require_once INSTALLDIR.'/scripts/commandline.inc';
|
||||||
|
|
||||||
|
try {
|
||||||
|
$user = null;
|
||||||
|
|
||||||
|
if (have_option('i', 'id')) {
|
||||||
|
$id = get_option_value('i', 'id');
|
||||||
|
$user = User::staticGet('id', $id);
|
||||||
|
if (empty($user)) {
|
||||||
|
throw new Exception("Can't find user with id '$id'.");
|
||||||
|
}
|
||||||
|
updateProfileURL($user);
|
||||||
|
} else if (have_option('n', 'nickname')) {
|
||||||
|
$nickname = get_option_value('n', 'nickname');
|
||||||
|
$user = User::staticGet('nickname', $nickname);
|
||||||
|
if (empty($user)) {
|
||||||
|
throw new Exception("Can't find user with nickname '$nickname'");
|
||||||
|
}
|
||||||
|
updateProfileURL($user);
|
||||||
|
} else if (have_option('a', 'all')) {
|
||||||
|
$user = new User();
|
||||||
|
if ($user->find()) {
|
||||||
|
while ($user->fetch()) {
|
||||||
|
updateProfileURL($user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
show_help();
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
} catch (Exception $e) {
|
||||||
|
print $e->getMessage()."\n";
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateProfileURL($user)
|
||||||
|
{
|
||||||
|
$profile = $user->getProfile();
|
||||||
|
|
||||||
|
if (empty($profile)) {
|
||||||
|
throw new Exception("Can't find profile for user $user->nickname ($user->id)");
|
||||||
|
}
|
||||||
|
|
||||||
|
$orig = clone($profile);
|
||||||
|
|
||||||
|
$profile->profileurl = common_profile_url($user->nickname);
|
||||||
|
|
||||||
|
if (!have_option('q', 'quiet')) {
|
||||||
|
print "Updating profile url for $user->nickname ($user->id) ".
|
||||||
|
"from $orig->profileurl to $profile->profileurl...";
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $profile->update($orig);
|
||||||
|
|
||||||
|
if (!$result) {
|
||||||
|
print "FAIL.\n";
|
||||||
|
common_log_db_error($profile, 'UPDATE', __FILE__);
|
||||||
|
throw new Exception("Can't update profile for user $user->nickname ($user->id)");
|
||||||
|
}
|
||||||
|
|
||||||
|
common_broadcast_profile($profile);
|
||||||
|
|
||||||
|
print "OK.\n";
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user