forked from GNUsocial/gnu-social
		
	Bring othersettings up to date
This commit is contained in:
		@@ -1,9 +1,12 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
/*
 | 
					/**
 | 
				
			||||||
 * Laconica - a distributed open-source microblogging tool
 | 
					 * Laconica, the distributed open-source microblogging tool
 | 
				
			||||||
 * Copyright (C) 2008, Controlez-Vous, Inc.
 | 
					 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * This program is free software: you can redistribute it and/or modify
 | 
					 * Miscellaneous settings
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * PHP version 5
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * LICENCE: 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
 | 
					 * 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
 | 
					 * the Free Software Foundation, either version 3 of the License, or
 | 
				
			||||||
 * (at your option) any later version.
 | 
					 * (at your option) any later version.
 | 
				
			||||||
@@ -15,26 +18,71 @@
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 * You should have received a copy of the GNU Affero General Public License
 | 
					 * 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/>.
 | 
					 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @category  Settings
 | 
				
			||||||
 | 
					 * @package   Laconica
 | 
				
			||||||
 | 
					 * @author    Robin Millette <millette@controlyourself.ca>
 | 
				
			||||||
 | 
					 * @author    Evan Prodromou <evan@controlyourself.ca>
 | 
				
			||||||
 | 
					 * @copyright 2008-2009 Control Yourself, Inc.
 | 
				
			||||||
 | 
					 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 | 
				
			||||||
 | 
					 * @link      http://laconi.ca/
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (!defined('LACONICA')) { exit(1); }
 | 
					if (!defined('LACONICA')) {
 | 
				
			||||||
 | 
					    exit(1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require_once(INSTALLDIR.'/lib/accountsettingsaction.php');
 | 
					require_once INSTALLDIR.'/lib/accountsettingsaction.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Miscellaneous settings actions
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Currently this just manages URL shortening.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @category Settings
 | 
				
			||||||
 | 
					 * @package  Laconica
 | 
				
			||||||
 | 
					 * @author   Robin Millette <millette@controlyourself.ca>
 | 
				
			||||||
 | 
					 * @author   Zach Copley <zach@controlyourself.ca>
 | 
				
			||||||
 | 
					 * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 | 
				
			||||||
 | 
					 * @link     http://laconi.ca/
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class OthersettingsAction extends AccountSettingsAction
 | 
					class OthersettingsAction extends AccountSettingsAction
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Title of the page
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return string Title of the page
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function get_instructions()
 | 
					    function title()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return _('Other Settings');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Instructions for use
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return instructions for use
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function getInstructions()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return _('Manage various other options.');
 | 
					        return _('Manage various other options.');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function show_form($msg=null, $success=false)
 | 
					    /**
 | 
				
			||||||
 | 
					     * Content area of the page
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * Shows a form for uploading an avatar.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return void
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function showContent()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $user = common_current_user();
 | 
					        $user = common_current_user();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $this->form_header(_('Other Settings'), $msg, $success);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $this->element('h2', null, _('URL Auto-shortening'));
 | 
					        $this->element('h2', null, _('URL Auto-shortening'));
 | 
				
			||||||
        $this->elementStart('form', array('method' => 'post',
 | 
					        $this->elementStart('form', array('method' => 'post',
 | 
				
			||||||
                                          'id' => 'othersettings',
 | 
					                                          'id' => 'othersettings',
 | 
				
			||||||
@@ -42,6 +90,8 @@ class OthersettingsAction extends AccountSettingsAction
 | 
				
			|||||||
                                          common_local_url('othersettings')));
 | 
					                                          common_local_url('othersettings')));
 | 
				
			||||||
        $this->hidden('token', common_session_token());
 | 
					        $this->hidden('token', common_session_token());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // I18N
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $services = array(
 | 
					        $services = array(
 | 
				
			||||||
                          '' => 'None',
 | 
					                          '' => 'None',
 | 
				
			||||||
                          'ur1.ca' => 'ur1.ca (free service)',
 | 
					                          'ur1.ca' => 'ur1.ca (free service)',
 | 
				
			||||||
@@ -54,118 +104,44 @@ class OthersettingsAction extends AccountSettingsAction
 | 
				
			|||||||
                          'metamark.net' => 'metamark.net'
 | 
					                          'metamark.net' => 'metamark.net'
 | 
				
			||||||
                          );
 | 
					                          );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $this->dropdown('urlshorteningservice', _('Service'), $services, _('Automatic shortening service to use.'), false, $user->urlshorteningservice);
 | 
					        $this->dropdown('urlshorteningservice', _('Service'),
 | 
				
			||||||
 | 
					                        $services, _('Automatic shortening service to use.'),
 | 
				
			||||||
 | 
					                        false, $user->urlshorteningservice);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $this->submit('save', _('Save'));
 | 
					        $this->submit('save', _('Save'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $this->elementEnd('form');
 | 
					        $this->elementEnd('form');
 | 
				
			||||||
 | 
					 | 
				
			||||||
//        $this->element('h2', null, _('Delete my account'));
 | 
					 | 
				
			||||||
//        $this->show_delete_form();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        common_show_footer();
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function show_feeds_list($feeds)
 | 
					    /**
 | 
				
			||||||
 | 
					     * Handle a post
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * Saves the changes to url-shortening prefs and shows a success or failure
 | 
				
			||||||
 | 
					     * message.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return void
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function handlePost()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->elementStart('div', array('class' => 'feedsdel'));
 | 
					        // CSRF protection
 | 
				
			||||||
        $this->element('p', null, 'Feeds:');
 | 
					 | 
				
			||||||
        $this->elementStart('ul', array('class' => 'xoxo'));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        foreach ($feeds as $key => $value) {
 | 
					 | 
				
			||||||
            $this->common_feed_item($feeds[$key]);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        $this->elementEnd('ul');
 | 
					 | 
				
			||||||
        $this->elementEnd('div');
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //TODO move to common.php (and retrace its origin)
 | 
					 | 
				
			||||||
    function common_feed_item($feed)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        $user = common_current_user();
 | 
					 | 
				
			||||||
        $nickname = $user->nickname;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        switch($feed['item']) {
 | 
					 | 
				
			||||||
            case 'notices': default:
 | 
					 | 
				
			||||||
                $feed_classname = $feed['type'];
 | 
					 | 
				
			||||||
                $feed_mimetype = "application/".$feed['type']."+xml";
 | 
					 | 
				
			||||||
                $feed_title = "$nickname's ".$feed['version']." notice feed";
 | 
					 | 
				
			||||||
                $feed['textContent'] = "RSS";
 | 
					 | 
				
			||||||
                break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            case 'foaf':
 | 
					 | 
				
			||||||
                $feed_classname = "foaf";
 | 
					 | 
				
			||||||
                $feed_mimetype = "application/".$feed['type']."+xml";
 | 
					 | 
				
			||||||
                $feed_title = "$nickname's FOAF file";
 | 
					 | 
				
			||||||
                $feed['textContent'] = "FOAF";
 | 
					 | 
				
			||||||
                break;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        $this->elementStart('li');
 | 
					 | 
				
			||||||
        $this->element('a', array('href' => $feed['href'],
 | 
					 | 
				
			||||||
                                  'class' => $feed_classname,
 | 
					 | 
				
			||||||
                                  'type' => $feed_mimetype,
 | 
					 | 
				
			||||||
                                  'title' => $feed_title),
 | 
					 | 
				
			||||||
                            $feed['textContent']);
 | 
					 | 
				
			||||||
        $this->elementEnd('li');
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//    function show_delete_form() {
 | 
					 | 
				
			||||||
//        $user = common_current_user();
 | 
					 | 
				
			||||||
//      $notices = DB_DataObject::factory('notice');
 | 
					 | 
				
			||||||
//      $notices->profile_id = $user->id;
 | 
					 | 
				
			||||||
//      $notice_count = (int) $notices->count();
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//        $this->elementStart('form', array('method' => 'POST',
 | 
					 | 
				
			||||||
//                                           'id' => 'delete',
 | 
					 | 
				
			||||||
//                                           'action' =>
 | 
					 | 
				
			||||||
//                                           common_local_url('deleteprofile')));
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//        $this->hidden('token', common_session_token());
 | 
					 | 
				
			||||||
//      $this->element('p', null, "You can copy your notices and contacts by saving the two links below before deleting your account. Be careful, this operation cannot be undone.");
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//        $this->show_feeds_list(array(0=>array('href'=>common_local_url('userrss', array('limit' => $notice_count, 'nickname' => $user->nickname)),
 | 
					 | 
				
			||||||
//                                              'type' => 'rss',
 | 
					 | 
				
			||||||
//                                              'version' => 'RSS 1.0',
 | 
					 | 
				
			||||||
//                                              'item' => 'notices'),
 | 
					 | 
				
			||||||
//                                     1=>array('href'=>common_local_url('foaf',array('nickname' => $user->nickname)),
 | 
					 | 
				
			||||||
//                                              'type' => 'rdf',
 | 
					 | 
				
			||||||
//                                              'version' => 'FOAF',
 | 
					 | 
				
			||||||
//                                              'item' => 'foaf')));
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//        $this->submit('deleteaccount', _('Delete my account'));
 | 
					 | 
				
			||||||
//        $this->elementEnd('form');
 | 
					 | 
				
			||||||
//    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    function handle_post()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        # CSRF protection
 | 
					 | 
				
			||||||
        $token = $this->trimmed('token');
 | 
					        $token = $this->trimmed('token');
 | 
				
			||||||
        if (!$token || $token != common_session_token()) {
 | 
					        if (!$token || $token != common_session_token()) {
 | 
				
			||||||
            $this->show_form(_('There was a problem with your session token. Try again, please.'));
 | 
					            $this->showForm(_('There was a problem with your session token. '.
 | 
				
			||||||
 | 
					                              'Try again, please.'));
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ($this->arg('save')) {
 | 
					 | 
				
			||||||
            $this->save_preferences();
 | 
					 | 
				
			||||||
        }else {
 | 
					 | 
				
			||||||
            $this->show_form(_('Unexpected form submission.'));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    function save_preferences()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $urlshorteningservice = $this->trimmed('urlshorteningservice');
 | 
					        $urlshorteningservice = $this->trimmed('urlshorteningservice');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (!is_null($urlshorteningservice) && strlen($urlshorteningservice) > 50) {
 | 
					        if (!is_null($urlshorteningservice) && strlen($urlshorteningservice) > 50) {
 | 
				
			||||||
            $this->show_form(_('URL shortening service is too long (max 50 chars).'));
 | 
					            $this->showForm(_('URL shortening service is too long (max 50 chars).'));
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $user = common_current_user();
 | 
					        $user = common_current_user();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        assert(!is_null($user)); # should already be checked
 | 
					        assert(!is_null($user)); // should already be checked
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $user->query('BEGIN');
 | 
					        $user->query('BEGIN');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -183,6 +159,6 @@ class OthersettingsAction extends AccountSettingsAction
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        $user->query('COMMIT');
 | 
					        $user->query('COMMIT');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $this->show_form(_('Preferences saved.'), true);
 | 
					        $this->showForm(_('Preferences saved.'), true);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user