summaryrefslogtreecommitdiff
path: root/actions
diff options
context:
space:
mode:
Diffstat (limited to 'actions')
-rw-r--r--actions/favorited.php8
-rw-r--r--actions/featured.php2
-rw-r--r--actions/geocode.php98
-rw-r--r--actions/newnotice.php2
-rw-r--r--actions/profilesettings.php30
-rw-r--r--actions/publictagcloud.php16
6 files changed, 126 insertions, 30 deletions
diff --git a/actions/favorited.php b/actions/favorited.php
index 150b67b0b..9ffa5b844 100644
--- a/actions/favorited.php
+++ b/actions/favorited.php
@@ -185,11 +185,7 @@ class FavoritedAction extends Action
function showContent()
{
- if (common_config('db', 'type') == 'pgsql') {
- $weightexpr='sum(exp(-extract(epoch from (now() - fave.modified)) / %s))';
- } else {
- $weightexpr='sum(exp(-(now() - fave.modified) / %s))';
- }
+ $weightexpr = common_sql_weight('fave.modified', common_config('popular', 'dropoff'));
$qry = 'SELECT notice.*, '.
$weightexpr . ' as weight ' .
@@ -207,7 +203,7 @@ class FavoritedAction extends Action
}
$notice = Memcached_DataObject::cachedQuery('Notice',
- sprintf($qry, common_config('popular', 'dropoff')),
+ $qry,
600);
$nl = new NoticeList($notice, $this);
diff --git a/actions/featured.php b/actions/featured.php
index 39bf09d8f..dd1056dd5 100644
--- a/actions/featured.php
+++ b/actions/featured.php
@@ -96,7 +96,7 @@ class FeaturedAction extends Action
function getInstructions()
{
- return sprintf(_('A selection of some of the great users on %s'),
+ return sprintf(_('A selection of some great users on %s'),
common_config('site', 'name'));
}
diff --git a/actions/geocode.php b/actions/geocode.php
new file mode 100644
index 000000000..9671d2c27
--- /dev/null
+++ b/actions/geocode.php
@@ -0,0 +1,98 @@
+<?php
+/**
+ * Geocode action class
+ *
+ * PHP version 5
+ *
+ * @category Action
+ * @package StatusNet
+ * @author Craig Andrews <candrews@integralblue.com>
+ * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link http://status.net/
+ *
+ * StatusNet - the 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/>.
+ */
+
+if (!defined('STATUSNET') && !defined('LACONICA')) {
+ exit(1);
+}
+
+/**
+ * Geocode action class
+ *
+ * @category Action
+ * @package StatusNet
+ * @author Craig Andrews <candrews@integralblue.com>
+ * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link http://status.net/
+ */
+class GeocodeAction extends Action
+{
+ function prepare($args)
+ {
+ parent::prepare($args);
+ $token = $this->trimmed('token');
+ if (!$token || $token != common_session_token()) {
+ $this->clientError(_('There was a problem with your session token. '.
+ 'Try again, please.'));
+ }
+ $this->lat = $this->trimmed('lat');
+ $this->lon = $this->trimmed('lon');
+ $location = Location::fromLatLon($this->lat, $this->lon);
+ if ($location) {
+ $this->location = Location::fromId($location->location_id, $location->location_ns);
+ $this->lat = $this->location->lat;
+ $this->lon = $this->location->lon;
+ }
+ return true;
+ }
+
+ /**
+ * Class handler
+ *
+ * @param array $args query arguments
+ *
+ * @return nothing
+ *
+ **/
+ function handle($args)
+ {
+ header('Content-Type: application/json; charset=utf-8');
+ $location_object = array();
+ $location_object['lat']=$this->lat;
+ $location_object['lon']=$this->lon;
+ if($this->location) {
+ $location_object['location_id']=$this->location->location_id;
+ $location_object['location_ns']=$this->location->location_ns;
+ $location_object['name']=$this->location->getName();
+ $location_object['url']=$this->location->getUrl();
+ }
+ print(json_encode($location_object));
+ }
+
+ /**
+ * Is this action read-only?
+ *
+ * @return boolean true
+ */
+
+ function isReadOnly($args)
+ {
+ return true;
+ }
+}
+?>
diff --git a/actions/newnotice.php b/actions/newnotice.php
index 2d9f0ff79..a4ed87bb6 100644
--- a/actions/newnotice.php
+++ b/actions/newnotice.php
@@ -184,7 +184,7 @@ class NewnoticeAction extends Action
$options = array('reply_to' => ($replyto == 'false') ? null : $replyto);
- if ($user->shareLocation()) {
+ if ($user->shareLocation() && $this->arg('notice_data-geo')) {
$locOptions = Notice::locationOptions($this->trimmed('lat'),
$this->trimmed('lon'),
diff --git a/actions/profilesettings.php b/actions/profilesettings.php
index 7db86a6c8..ee236fe62 100644
--- a/actions/profilesettings.php
+++ b/actions/profilesettings.php
@@ -69,7 +69,7 @@ class ProfilesettingsAction extends AccountSettingsAction
function getInstructions()
{
return _('You can update your personal profile info here '.
- 'so people know more about you.');
+ 'so people know more about you.');
}
function showScripts()
@@ -92,9 +92,9 @@ class ProfilesettingsAction extends AccountSettingsAction
$profile = $user->getProfile();
$this->elementStart('form', array('method' => 'post',
- 'id' => 'form_settings_profile',
- 'class' => 'form_settings',
- 'action' => common_local_url('profilesettings')));
+ 'id' => 'form_settings_profile',
+ 'class' => 'form_settings',
+ 'action' => common_local_url('profilesettings')));
$this->elementStart('fieldset');
$this->element('legend', null, _('Profile information'));
$this->hidden('token', common_session_token());
@@ -192,7 +192,7 @@ class ProfilesettingsAction extends AccountSettingsAction
$token = $this->trimmed('token');
if (!$token || $token != common_session_token()) {
$this->showForm(_('There was a problem with your session token. '.
- 'Try again, please.'));
+ 'Try again, please.'));
return;
}
@@ -210,15 +210,15 @@ class ProfilesettingsAction extends AccountSettingsAction
// Some validation
if (!Validate::string($nickname, array('min_length' => 1,
- 'max_length' => 64,
- 'format' => NICKNAME_FMT))) {
+ 'max_length' => 64,
+ 'format' => NICKNAME_FMT))) {
$this->showForm(_('Nickname must have only lowercase letters and numbers and no spaces.'));
return;
} else if (!User::allowed_nickname($nickname)) {
$this->showForm(_('Not a valid nickname.'));
return;
} else if (!is_null($homepage) && (strlen($homepage) > 0) &&
- !Validate::uri($homepage, array('allowed_schemes' => array('http', 'https')))) {
+ !Validate::uri($homepage, array('allowed_schemes' => array('http', 'https')))) {
$this->showForm(_('Homepage is not a valid URL.'));
return;
} else if (!is_null($fullname) && mb_strlen($fullname) > 255) {
@@ -260,15 +260,15 @@ class ProfilesettingsAction extends AccountSettingsAction
$user->query('BEGIN');
if ($user->nickname != $nickname ||
- $user->language != $language ||
- $user->timezone != $timezone) {
+ $user->language != $language ||
+ $user->timezone != $timezone) {
common_debug('Updating user nickname from ' . $user->nickname . ' to ' . $nickname,
- __FILE__);
+ __FILE__);
common_debug('Updating user language from ' . $user->language . ' to ' . $language,
- __FILE__);
+ __FILE__);
common_debug('Updating user timezone from ' . $user->timezone . ' to ' . $timezone,
- __FILE__);
+ __FILE__);
$original = clone($user);
@@ -288,7 +288,7 @@ class ProfilesettingsAction extends AccountSettingsAction
}
}
-// XXX: XOR
+ // XXX: XOR
if ($user->autosubscribe ^ $autosubscribe) {
$original = clone($user);
@@ -389,7 +389,7 @@ class ProfilesettingsAction extends AccountSettingsAction
$user = common_current_user();
$other = User::staticGet('nickname', $nickname);
if (!$other) {
- return false;
+ return false;
} else {
return $other->id != $user->id;
}
diff --git a/actions/publictagcloud.php b/actions/publictagcloud.php
index e7f6ee36c..b5b474f13 100644
--- a/actions/publictagcloud.php
+++ b/actions/publictagcloud.php
@@ -105,12 +105,8 @@ class PublictagcloudAction extends Action
#Add the aggregated columns...
$tags->selectAdd('max(notice_id) as last_notice_id');
- if(common_config('db','type')=='pgsql') {
- $calc='sum(exp(-extract(epoch from (now()-created))/%s)) as weight';
- } else {
- $calc='sum(exp(-(now() - created)/%s)) as weight';
- }
- $tags->selectAdd(sprintf($calc, common_config('tag', 'dropoff')));
+ $calc = common_sql_weight('created', common_config('tag', 'dropoff'));
+ $tags->selectAdd($calc . ' as weight');
$tags->groupBy('tag');
$tags->orderBy('weight DESC');
@@ -136,7 +132,13 @@ class PublictagcloudAction extends Action
$this->elementStart('dd');
$this->elementStart('ul', 'tags xoxo tag-cloud');
foreach ($tw as $tag => $weight) {
- $this->showTag($tag, $weight, $weight/$sum);
+ common_log(LOG_DEBUG, "$weight/$sum");
+ if ($sum) {
+ $weightedSum = $weight/$sum;
+ } else {
+ $weightedSum = 0.5;
+ }
+ $this->showTag($tag, $weight, $weightedSum);
}
$this->elementEnd('ul');
$this->elementEnd('dd');