2008-11-07 06:05:52 +09:00
< ? php
/*
* Laconica - a distributed open - source microblogging tool
* Copyright ( C ) 2008 , Controlez - Vous , 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 ( 'LACONICA' )) { exit ( 1 ); }
require_once ( INSTALLDIR . '/lib/settingsaction.php' );
2008-12-24 04:49:23 +09:00
class OthersettingsAction extends SettingsAction
{
2008-11-07 06:05:52 +09:00
2008-12-24 04:33:23 +09:00
function get_instructions ()
{
2008-12-24 04:19:07 +09:00
return _ ( 'Manage various other options.' );
}
2008-11-07 06:05:52 +09:00
2008-12-24 04:33:23 +09:00
function show_form ( $msg = null , $success = false )
{
2008-12-24 04:19:07 +09:00
$user = common_current_user ();
2008-12-12 13:46:00 +09:00
2008-12-24 04:19:07 +09:00
$this -> form_header ( _ ( 'Other Settings' ), $msg , $success );
2008-12-12 13:46:00 +09:00
2009-01-16 07:57:15 +09:00
$this -> element ( 'h2' , null , _ ( 'URL Auto-shortening' ));
$this -> elementStart ( 'form' , array ( 'method' => 'post' ,
2008-12-24 04:19:07 +09:00
'id' => 'othersettings' ,
'action' =>
common_local_url ( 'othersettings' )));
2009-01-16 07:57:15 +09:00
$this -> hidden ( 'token' , common_session_token ());
2008-11-07 06:05:52 +09:00
2008-12-24 04:19:07 +09:00
$services = array (
'' => 'None' ,
2008-11-14 00:27:18 +09:00
'ur1.ca' => 'ur1.ca (free service)' ,
'2tu.us' => '2tu.us (free service)' ,
2008-11-08 04:47:35 +09:00
'ptiturl.com' => 'ptiturl.com' ,
2008-11-08 05:19:26 +09:00
'bit.ly' => 'bit.ly' ,
2008-12-24 04:19:07 +09:00
'tinyurl.com' => 'tinyurl.com' ,
'is.gd' => 'is.gd' ,
'snipr.com' => 'snipr.com' ,
'metamark.net' => 'metamark.net'
);
2008-12-12 13:46:00 +09:00
2009-01-16 07:57:15 +09:00
$this -> dropdown ( 'urlshorteningservice' , _ ( 'Service' ), $services , _ ( 'Automatic shortening service to use.' ), false , $user -> urlshorteningservice );
2008-12-12 13:46:00 +09:00
2009-01-16 07:57:15 +09:00
$this -> submit ( 'save' , _ ( 'Save' ));
2008-12-12 13:46:00 +09:00
2009-01-16 07:57:15 +09:00
$this -> elementEnd ( 'form' );
2008-12-05 03:02:33 +09:00
2009-01-16 07:57:15 +09:00
// $this->element('h2', null, _('Delete my account'));
2008-12-24 04:19:07 +09:00
// $this->show_delete_form();
2008-12-05 03:02:33 +09:00
2008-12-24 04:19:07 +09:00
common_show_footer ();
}
2008-11-07 06:05:52 +09:00
2008-12-24 04:33:23 +09:00
function show_feeds_list ( $feeds )
{
2009-01-16 07:57:15 +09:00
$this -> elementStart ( 'div' , array ( 'class' => 'feedsdel' ));
$this -> element ( 'p' , null , 'Feeds:' );
$this -> elementStart ( 'ul' , array ( 'class' => 'xoxo' ));
2008-12-05 03:02:33 +09:00
2008-12-24 04:19:07 +09:00
foreach ( $feeds as $key => $value ) {
$this -> common_feed_item ( $feeds [ $key ]);
}
2009-01-16 07:57:15 +09:00
$this -> elementEnd ( 'ul' );
$this -> elementEnd ( 'div' );
2008-12-24 04:19:07 +09:00
}
2008-12-05 03:02:33 +09:00
//TODO move to common.php (and retrace its origin)
2008-12-24 04:33:23 +09:00
function common_feed_item ( $feed )
{
2008-12-05 03:02:33 +09:00
$user = common_current_user ();
2008-12-24 04:19:07 +09:00
$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 ;
}
2009-01-16 07:57:15 +09:00
$this -> elementStart ( 'li' );
$this -> element ( 'a' , array ( 'href' => $feed [ 'href' ],
2008-12-24 04:19:07 +09:00
'class' => $feed_classname ,
'type' => $feed_mimetype ,
'title' => $feed_title ),
$feed [ 'textContent' ]);
2009-01-16 07:57:15 +09:00
$this -> elementEnd ( 'li' );
2008-12-24 04:19:07 +09:00
}
// function show_delete_form() {
// $user = common_current_user();
2008-12-12 13:46:00 +09:00
// $notices = DB_DataObject::factory('notice');
// $notices->profile_id = $user->id;
// $notice_count = (int) $notices->count();
//
2009-01-16 07:57:15 +09:00
// $this->elementStart('form', array('method' => 'POST',
2008-12-24 04:19:07 +09:00
// 'id' => 'delete',
// 'action' =>
// common_local_url('deleteprofile')));
2008-12-12 13:46:00 +09:00
//
2009-01-16 07:57:15 +09:00
// $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.");
2008-12-12 13:46:00 +09:00
//
2008-12-24 04:19:07 +09:00
// $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')));
2008-12-12 13:46:00 +09:00
//
2009-01-16 07:57:15 +09:00
// $this->submit('deleteaccount', _('Delete my account'));
// $this->elementEnd('form');
2008-12-24 04:19:07 +09:00
// }
2008-12-05 03:02:33 +09:00
2008-12-24 04:33:23 +09:00
function handle_post ()
{
2008-11-07 06:05:52 +09:00
2008-12-24 04:19:07 +09:00
# CSRF protection
$token = $this -> trimmed ( 'token' );
if ( ! $token || $token != common_session_token ()) {
$this -> show_form ( _ ( 'There was a problem with your session token. Try again, please.' ));
return ;
}
2008-11-07 06:05:52 +09:00
2008-12-24 04:19:07 +09:00
if ( $this -> arg ( 'save' )) {
$this -> save_preferences ();
} else {
$this -> show_form ( _ ( 'Unexpected form submission.' ));
}
}
2008-11-07 06:05:52 +09:00
2008-12-24 04:33:23 +09:00
function save_preferences ()
{
2008-11-07 06:05:52 +09:00
2008-12-24 04:19:07 +09:00
$urlshorteningservice = $this -> trimmed ( 'urlshorteningservice' );
2008-12-12 13:46:00 +09:00
2008-12-24 04:19:07 +09:00
if ( ! is_null ( $urlshorteningservice ) && strlen ( $urlshorteningservice ) > 50 ) {
$this -> show_form ( _ ( 'URL shortening service is too long (max 50 chars).' ));
return ;
}
2008-12-12 13:46:00 +09:00
2008-12-24 04:19:07 +09:00
$user = common_current_user ();
2008-11-07 06:05:52 +09:00
2008-12-24 04:19:07 +09:00
assert ( ! is_null ( $user )); # should already be checked
2008-11-07 06:05:52 +09:00
2008-12-24 04:19:07 +09:00
$user -> query ( 'BEGIN' );
2008-11-07 06:05:52 +09:00
2008-12-24 04:19:07 +09:00
$original = clone ( $user );
2008-11-07 06:05:52 +09:00
2008-12-24 04:19:07 +09:00
$user -> urlshorteningservice = $urlshorteningservice ;
2008-11-07 06:05:52 +09:00
2008-12-24 04:19:07 +09:00
$result = $user -> update ( $original );
2008-11-07 06:05:52 +09:00
2008-12-24 04:44:28 +09:00
if ( $result === false ) {
2008-12-24 04:19:07 +09:00
common_log_db_error ( $user , 'UPDATE' , __FILE__ );
2009-01-16 08:03:38 +09:00
$this -> serverError ( _ ( 'Couldn\'t update user.' ));
2008-12-24 04:19:07 +09:00
return ;
}
2008-11-07 06:05:52 +09:00
2008-12-24 04:19:07 +09:00
$user -> query ( 'COMMIT' );
2008-11-07 06:05:52 +09:00
2008-12-24 04:19:07 +09:00
$this -> show_form ( _ ( 'Preferences saved.' ), true );
}
2008-11-07 06:05:52 +09:00
}