]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/profilesettings.php
Merge branch 'master' into 0.9.x
[quix0rs-gnu-social.git] / actions / profilesettings.php
index fb847680b9c158e85dc319d89029933edddabc2d..acfcbcd00747e38832124cc9e78139786f1700bd 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Laconica, the distributed open-source microblogging tool
+ * StatusNet, the distributed open-source microblogging tool
  *
  * Change profile settings
  *
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  * @category  Settings
- * @package   Laconica
- * @author    Evan Prodromou <evan@controlyourself.ca>
- * @author    Zach Copley <zach@controlyourself.ca>
- * @copyright 2008-2009 Control Yourself, Inc.
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @author    Zach Copley <zach@status.net>
+ * @author    Sarven Capadisli <csarven@status.net>
+ * @copyright 2008-2009 StatusNet, Inc.
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link      http://laconi.ca/
+ * @link      http://status.net/
  */
 
-if (!defined('LACONICA')) {
+if (!defined('STATUSNET') && !defined('LACONICA')) {
     exit(1);
 }
 
@@ -38,11 +39,12 @@ require_once INSTALLDIR.'/lib/accountsettingsaction.php';
  * Change profile settings
  *
  * @category Settings
- * @package  Laconica
- * @author   Evan Prodromou <evan@controlyourself.ca>
- * @author   Zach Copley <zach@controlyourself.ca>
+ * @package  StatusNet
+ * @author   Evan Prodromou <evan@status.net>
+ * @author   Zach Copley <zach@status.net>
+ * @author   Sarven Capadisli <csarven@status.net>
  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link     http://laconi.ca/
+ * @link     http://status.net/
  */
 
 class ProfilesettingsAction extends AccountSettingsAction
@@ -67,7 +69,13 @@ 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()
+    {
+        parent::showScripts();
+        $this->autofocus('nickname');
     }
 
     /**
@@ -84,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());
@@ -109,9 +117,16 @@ class ProfilesettingsAction extends AccountSettingsAction
                          _('URL of your homepage, blog, or profile on another site'));
             $this->elementEnd('li');
             $this->elementStart('li');
+            $maxBio = Profile::maxBio();
+            if ($maxBio > 0) {
+                $bioInstr = sprintf(_('Describe yourself and your interests in %d chars'),
+                                    $maxBio);
+            } else {
+                $bioInstr = _('Describe yourself and your interests');
+            }
             $this->textarea('bio', _('Bio'),
                             ($this->arg('bio')) ? $this->arg('bio') : $profile->bio,
-                            _('Describe yourself and your interests in 140 chars'));
+                            $bioInstr);
             $this->elementEnd('li');
             $this->elementStart('li');
             $this->input('location', _('Location'),
@@ -170,7 +185,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;
         }
 
@@ -188,22 +203,23 @@ class ProfilesettingsAction extends AccountSettingsAction
 
             // Some validation
             if (!Validate::string($nickname, array('min_length' => 1,
-                            'max_length' => 64,
-                            'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) {
+                                                   '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) {
                 $this->showForm(_('Full name is too long (max 255 chars).'));
                 return;
-            } else if (!is_null($bio) && mb_strlen($bio) > 140) {
-                $this->showForm(_('Bio is too long (max 140 chars).'));
+            } else if (Profile::bioTooLong($bio)) {
+                $this->showForm(sprintf(_('Bio is too long (max %d chars).'),
+                                        Profile::maxBio()));
                 return;
             } else if (!is_null($location) && mb_strlen($location) > 255) {
                 $this->showForm(_('Location is too long (max 255 chars).'));
@@ -237,15 +253,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);
 
@@ -265,7 +281,7 @@ class ProfilesettingsAction extends AccountSettingsAction
                 }
             }
 
-// XXX: XOR
+            // XXX: XOR
             if ($user->autosubscribe ^ $autosubscribe) {
 
                 $original = clone($user);
@@ -290,6 +306,16 @@ class ProfilesettingsAction extends AccountSettingsAction
             $profile->homepage = $homepage;
             $profile->bio = $bio;
             $profile->location = $location;
+
+            $loc = Location::fromName($location);
+
+            if (!empty($loc)) {
+                $profile->lat         = $loc->lat;
+                $profile->lon         = $loc->lon;
+                $profile->location_id = $loc->location_id;
+                $profile->location_ns = $loc->location_ns;
+            }
+
             $profile->profileurl = common_profile_url($nickname);
 
             common_debug('Old profile: ' . common_log_objstring($orig_profile), __FILE__);
@@ -297,7 +323,7 @@ class ProfilesettingsAction extends AccountSettingsAction
 
             $result = $profile->update($orig_profile);
 
-            if (!$result) {
+            if ($result === false) {
                 common_log_db_error($profile, 'UPDATE', __FILE__);
                 $this->serverError(_('Couldn\'t save profile.'));
                 return;
@@ -325,7 +351,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;
         }