2008-11-06 21:05:52 +00: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' );
class OthersettingsAction extends SettingsAction {
2008-12-23 19:33:23 +00:00
function get_instructions ()
{
2008-12-23 19:19:07 +00:00
return _ ( 'Manage various other options.' );
}
2008-11-06 21:05:52 +00:00
2008-12-23 19:33:23 +00:00
function show_form ( $msg = null , $success = false )
{
2008-12-23 19:19:07 +00:00
$user = common_current_user ();
2008-12-12 04:46:00 +00:00
2008-12-23 19:19:07 +00:00
$this -> form_header ( _ ( 'Other Settings' ), $msg , $success );
2008-12-12 04:46:00 +00:00
2008-12-23 19:21:29 +00:00
common_element ( 'h2' , null , _ ( 'URL Auto-shortening' ));
2008-12-23 19:19:07 +00:00
common_element_start ( 'form' , array ( 'method' => 'post' ,
'id' => 'othersettings' ,
'action' =>
common_local_url ( 'othersettings' )));
common_hidden ( 'token' , common_session_token ());
2008-11-06 21:05:52 +00:00
2008-12-23 19:19:07 +00:00
$services = array (
'' => 'None' ,
2008-11-13 15:27:18 +00:00
'ur1.ca' => 'ur1.ca (free service)' ,
'2tu.us' => '2tu.us (free service)' ,
2008-11-07 19:47:35 +00:00
'ptiturl.com' => 'ptiturl.com' ,
2008-11-07 20:19:26 +00:00
'bit.ly' => 'bit.ly' ,
2008-12-23 19:19:07 +00:00
'tinyurl.com' => 'tinyurl.com' ,
'is.gd' => 'is.gd' ,
'snipr.com' => 'snipr.com' ,
'metamark.net' => 'metamark.net'
);
2008-12-12 04:46:00 +00:00
2008-12-23 19:19:07 +00:00
common_dropdown ( 'urlshorteningservice' , _ ( 'Service' ), $services , _ ( 'Automatic shortening service to use.' ), FALSE , $user -> urlshorteningservice );
2008-12-12 04:46:00 +00:00
2008-12-23 19:19:07 +00:00
common_submit ( 'save' , _ ( 'Save' ));
2008-12-12 04:46:00 +00:00
2008-12-23 19:19:07 +00:00
common_element_end ( 'form' );
2008-12-04 18:02:33 +00:00
2008-12-23 19:21:29 +00:00
// common_element('h2', null, _('Delete my account'));
2008-12-23 19:19:07 +00:00
// $this->show_delete_form();
2008-12-04 18:02:33 +00:00
2008-12-23 19:19:07 +00:00
common_show_footer ();
}
2008-11-06 21:05:52 +00:00
2008-12-23 19:33:23 +00:00
function show_feeds_list ( $feeds )
{
2008-12-23 19:19:07 +00:00
common_element_start ( 'div' , array ( 'class' => 'feedsdel' ));
common_element ( 'p' , null , 'Feeds:' );
common_element_start ( 'ul' , array ( 'class' => 'xoxo' ));
2008-12-04 18:02:33 +00:00
2008-12-23 19:19:07 +00:00
foreach ( $feeds as $key => $value ) {
$this -> common_feed_item ( $feeds [ $key ]);
}
common_element_end ( 'ul' );
common_element_end ( 'div' );
}
2008-12-04 18:02:33 +00:00
//TODO move to common.php (and retrace its origin)
2008-12-23 19:33:23 +00:00
function common_feed_item ( $feed )
{
2008-12-04 18:02:33 +00:00
$user = common_current_user ();
2008-12-23 19:19:07 +00: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 ;
}
common_element_start ( 'li' );
common_element ( 'a' , array ( 'href' => $feed [ 'href' ],
'class' => $feed_classname ,
'type' => $feed_mimetype ,
'title' => $feed_title ),
$feed [ 'textContent' ]);
common_element_end ( 'li' );
}
// function show_delete_form() {
// $user = common_current_user();
2008-12-12 04:46:00 +00:00
// $notices = DB_DataObject::factory('notice');
// $notices->profile_id = $user->id;
// $notice_count = (int) $notices->count();
//
2008-12-23 19:19:07 +00:00
// common_element_start('form', array('method' => 'POST',
// 'id' => 'delete',
// 'action' =>
// common_local_url('deleteprofile')));
2008-12-12 04:46:00 +00:00
//
2008-12-23 19:19:07 +00:00
// common_hidden('token', common_session_token());
2008-12-12 04:46:00 +00:00
// common_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-23 19:19:07 +00: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 04:46:00 +00:00
//
2008-12-23 19:19:07 +00:00
// common_submit('deleteaccount', _('Delete my account'));
// common_element_end('form');
// }
2008-12-04 18:02:33 +00:00
2008-12-23 19:33:23 +00:00
function handle_post ()
{
2008-11-06 21:05:52 +00:00
2008-12-23 19:19:07 +00: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-06 21:05:52 +00:00
2008-12-23 19:19:07 +00:00
if ( $this -> arg ( 'save' )) {
$this -> save_preferences ();
} else {
$this -> show_form ( _ ( 'Unexpected form submission.' ));
}
}
2008-11-06 21:05:52 +00:00
2008-12-23 19:33:23 +00:00
function save_preferences ()
{
2008-11-06 21:05:52 +00:00
2008-12-23 19:19:07 +00:00
$urlshorteningservice = $this -> trimmed ( 'urlshorteningservice' );
2008-12-12 04:46:00 +00:00
2008-12-23 19:19:07 +00:00
if ( ! is_null ( $urlshorteningservice ) && strlen ( $urlshorteningservice ) > 50 ) {
$this -> show_form ( _ ( 'URL shortening service is too long (max 50 chars).' ));
return ;
}
2008-12-12 04:46:00 +00:00
2008-12-23 19:19:07 +00:00
$user = common_current_user ();
2008-11-06 21:05:52 +00:00
2008-12-23 19:19:07 +00:00
assert ( ! is_null ( $user )); # should already be checked
2008-11-06 21:05:52 +00:00
2008-12-23 19:19:07 +00:00
$user -> query ( 'BEGIN' );
2008-11-06 21:05:52 +00:00
2008-12-23 19:19:07 +00:00
$original = clone ( $user );
2008-11-06 21:05:52 +00:00
2008-12-23 19:19:07 +00:00
$user -> urlshorteningservice = $urlshorteningservice ;
2008-11-06 21:05:52 +00:00
2008-12-23 19:19:07 +00:00
$result = $user -> update ( $original );
2008-11-06 21:05:52 +00:00
2008-12-23 19:19:07 +00:00
if ( $result === FALSE ) {
common_log_db_error ( $user , 'UPDATE' , __FILE__ );
common_server_error ( _ ( 'Couldn\'t update user.' ));
return ;
}
2008-11-06 21:05:52 +00:00
2008-12-23 19:19:07 +00:00
$user -> query ( 'COMMIT' );
2008-11-06 21:05:52 +00:00
2008-12-23 19:19:07 +00:00
$this -> show_form ( _ ( 'Preferences saved.' ), true );
}
2008-11-06 21:05:52 +00:00
}