2009-06-18 10:16:39 +01:00
|
|
|
<?php
|
|
|
|
/**
|
2009-08-25 23:12:20 +01:00
|
|
|
* StatusNet, the distributed open-source microblogging tool
|
2009-06-18 10:16:39 +01:00
|
|
|
*
|
|
|
|
* Change user password
|
|
|
|
*
|
|
|
|
* 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
|
|
|
|
* 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/>.
|
|
|
|
*
|
|
|
|
* @category Settings
|
2009-08-25 23:12:20 +01:00
|
|
|
* @package StatusNet
|
2009-08-25 23:19:04 +01:00
|
|
|
* @author Sarven Capadisli <csarven@status.net>
|
|
|
|
* @author Zach Copley <zach@status.net>
|
2009-08-25 23:12:20 +01:00
|
|
|
* @copyright 2008-2009 StatusNet, Inc.
|
2009-06-18 10:16:39 +01:00
|
|
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
2009-08-25 23:16:46 +01:00
|
|
|
* @link http://status.net/
|
2009-06-18 10:16:39 +01:00
|
|
|
*/
|
|
|
|
|
2009-08-26 15:41:36 +01:00
|
|
|
if (!defined('STATUSNET') && !defined('LACONICA')) {
|
2009-06-18 10:16:39 +01:00
|
|
|
exit(1);
|
|
|
|
}
|
|
|
|
|
|
|
|
require_once INSTALLDIR . '/lib/designsettings.php';
|
|
|
|
|
2009-06-30 00:55:42 +01:00
|
|
|
/**
|
2009-06-30 01:04:09 +01:00
|
|
|
* Set a user's design
|
2009-06-30 00:55:42 +01:00
|
|
|
*
|
|
|
|
* Saves a design for a given user
|
|
|
|
*
|
|
|
|
* @category Settings
|
2009-08-25 23:12:20 +01:00
|
|
|
* @package StatusNet
|
2009-08-25 23:19:04 +01:00
|
|
|
* @author Zach Copley <zach@status.net>
|
|
|
|
* @author Sarven Capadisli <csarven@status.net>
|
2009-06-30 00:55:42 +01:00
|
|
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
2009-08-25 23:16:46 +01:00
|
|
|
* @link http://status.net/
|
2009-06-30 00:55:42 +01:00
|
|
|
*/
|
2009-06-18 10:16:39 +01:00
|
|
|
class UserDesignSettingsAction extends DesignSettingsAction
|
|
|
|
{
|
2009-06-30 00:55:42 +01:00
|
|
|
/**
|
|
|
|
* Sets the right action for the form, and passes request args into
|
|
|
|
* the base action
|
|
|
|
*
|
|
|
|
* @param array $args misc. arguments
|
|
|
|
*
|
|
|
|
* @return boolean true
|
|
|
|
*/
|
2009-06-29 22:52:38 +01:00
|
|
|
|
2009-06-18 10:16:39 +01:00
|
|
|
function prepare($args)
|
|
|
|
{
|
|
|
|
parent::prepare($args);
|
|
|
|
$this->submitaction = common_local_url('userdesignsettings');
|
|
|
|
return true;
|
|
|
|
}
|
2009-06-29 22:52:38 +01:00
|
|
|
|
2009-06-18 10:16:39 +01:00
|
|
|
/**
|
|
|
|
* Title of the page
|
|
|
|
*
|
|
|
|
* @return string Title of the page
|
|
|
|
*/
|
|
|
|
function title()
|
|
|
|
{
|
|
|
|
return _('Profile design');
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Instructions for use
|
|
|
|
*
|
|
|
|
* @return instructions for use
|
|
|
|
*/
|
|
|
|
function getInstructions()
|
|
|
|
{
|
|
|
|
return _('Customize the way your profile looks ' .
|
|
|
|
'with a background image and a colour palette of your choice.');
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get the design we want to edit
|
|
|
|
*
|
|
|
|
* @return Design
|
|
|
|
*/
|
2009-06-30 00:55:42 +01:00
|
|
|
function getWorkingDesign()
|
|
|
|
{
|
|
|
|
$user = common_current_user();
|
2009-06-18 10:16:39 +01:00
|
|
|
$design = $user->getDesign();
|
|
|
|
return $design;
|
|
|
|
}
|
2009-06-29 22:52:38 +01:00
|
|
|
|
2009-06-18 10:16:39 +01:00
|
|
|
/**
|
|
|
|
* Content area of the page
|
|
|
|
*
|
|
|
|
* Shows a form for changing the design
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
function showContent()
|
|
|
|
{
|
2009-12-03 00:44:23 +00:00
|
|
|
$design = $this->getWorkingDesign();
|
|
|
|
|
|
|
|
if (empty($design)) {
|
|
|
|
$design = Design::siteDesign();
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->showDesignForm($design);
|
2009-06-18 10:16:39 +01:00
|
|
|
}
|
|
|
|
|
2010-09-11 21:16:38 +01:00
|
|
|
/**
|
|
|
|
* Shows the design settings form
|
|
|
|
*
|
|
|
|
* @param Design $design a working design to show
|
|
|
|
*
|
|
|
|
* @return nothing
|
|
|
|
*/
|
|
|
|
|
|
|
|
function showDesignForm($design)
|
|
|
|
{
|
|
|
|
$form = new UserDesignForm($this, $design, $this->submitaction);
|
|
|
|
$form->show();
|
|
|
|
}
|
|
|
|
|
2009-06-18 10:16:39 +01:00
|
|
|
/**
|
|
|
|
* Save or update the user's design settings
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
function saveDesign()
|
|
|
|
{
|
2010-09-11 21:16:38 +01:00
|
|
|
$this->saveDesignPreferences();
|
|
|
|
|
2009-06-29 22:52:38 +01:00
|
|
|
foreach ($this->args as $key => $val) {
|
|
|
|
if (preg_match('/(#ho|ho)Td.*g/i', $val)) {
|
|
|
|
$this->sethd();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
2009-06-18 10:16:39 +01:00
|
|
|
|
2009-06-29 22:52:38 +01:00
|
|
|
try {
|
2009-06-18 10:16:39 +01:00
|
|
|
$bgcolor = new WebColor($this->trimmed('design_background'));
|
|
|
|
$ccolor = new WebColor($this->trimmed('design_content'));
|
|
|
|
$sbcolor = new WebColor($this->trimmed('design_sidebar'));
|
|
|
|
$tcolor = new WebColor($this->trimmed('design_text'));
|
|
|
|
$lcolor = new WebColor($this->trimmed('design_links'));
|
|
|
|
} catch (WebColorException $e) {
|
|
|
|
$this->showForm($e->getMessage());
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
$onoff = $this->arg('design_background-image_onoff');
|
|
|
|
|
|
|
|
$on = false;
|
|
|
|
$off = false;
|
|
|
|
$tile = false;
|
|
|
|
|
|
|
|
if ($onoff == 'on') {
|
|
|
|
$on = true;
|
|
|
|
} else {
|
|
|
|
$off = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
$repeat = $this->boolean('design_background-image_repeat');
|
|
|
|
|
|
|
|
if ($repeat) {
|
|
|
|
$tile = true;
|
|
|
|
}
|
|
|
|
|
2010-09-11 21:16:38 +01:00
|
|
|
$user = common_current_user();
|
|
|
|
|
2009-06-18 10:16:39 +01:00
|
|
|
$design = $user->getDesign();
|
|
|
|
|
|
|
|
if (!empty($design)) {
|
|
|
|
$original = clone($design);
|
|
|
|
|
|
|
|
$design->backgroundcolor = $bgcolor->intValue();
|
|
|
|
$design->contentcolor = $ccolor->intValue();
|
|
|
|
$design->sidebarcolor = $sbcolor->intValue();
|
|
|
|
$design->textcolor = $tcolor->intValue();
|
|
|
|
$design->linkcolor = $lcolor->intValue();
|
|
|
|
|
|
|
|
$design->setDisposition($on, $off, $tile);
|
|
|
|
|
|
|
|
$result = $design->update($original);
|
|
|
|
|
|
|
|
if ($result === false) {
|
|
|
|
common_log_db_error($design, 'UPDATE', __FILE__);
|
2011-01-20 19:00:45 +00:00
|
|
|
$this->showForm(_('Could not update your design.'));
|
2009-06-18 10:16:39 +01:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
// update design
|
|
|
|
} else {
|
|
|
|
$user->query('BEGIN');
|
|
|
|
|
|
|
|
// save new design
|
|
|
|
$design = new Design();
|
|
|
|
|
|
|
|
$design->backgroundcolor = $bgcolor->intValue();
|
|
|
|
$design->contentcolor = $ccolor->intValue();
|
|
|
|
$design->sidebarcolor = $sbcolor->intValue();
|
|
|
|
$design->textcolor = $tcolor->intValue();
|
|
|
|
$design->linkcolor = $lcolor->intValue();
|
|
|
|
|
|
|
|
$design->setDisposition($on, $off, $tile);
|
|
|
|
|
|
|
|
$id = $design->insert();
|
|
|
|
|
|
|
|
if (empty($id)) {
|
|
|
|
common_log_db_error($id, 'INSERT', __FILE__);
|
2010-01-10 11:26:24 +00:00
|
|
|
$this->showForm(_('Unable to save your design settings.'));
|
2009-06-18 10:16:39 +01:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2009-06-30 00:55:42 +01:00
|
|
|
$original = clone($user);
|
2009-06-18 10:16:39 +01:00
|
|
|
$user->design_id = $id;
|
2009-06-30 00:55:42 +01:00
|
|
|
$result = $user->update($original);
|
2009-06-18 10:16:39 +01:00
|
|
|
|
|
|
|
if (empty($result)) {
|
|
|
|
common_log_db_error($original, 'UPDATE', __FILE__);
|
2010-01-10 11:26:24 +00:00
|
|
|
$this->showForm(_('Unable to save your design settings.'));
|
2009-06-18 10:16:39 +01:00
|
|
|
$user->query('ROLLBACK');
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
$user->query('COMMIT');
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->saveBackgroundImage($design);
|
|
|
|
|
|
|
|
$this->showForm(_('Design preferences saved.'), true);
|
|
|
|
}
|
2009-06-29 22:52:38 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Alternate default colors
|
|
|
|
*
|
|
|
|
* @return nothing
|
|
|
|
*/
|
2009-06-30 00:55:42 +01:00
|
|
|
function sethd()
|
|
|
|
{
|
2009-06-29 22:52:38 +01:00
|
|
|
|
2009-06-30 00:55:42 +01:00
|
|
|
$user = common_current_user();
|
2009-06-29 22:52:38 +01:00
|
|
|
$design = $user->getDesign();
|
|
|
|
|
|
|
|
$user->query('BEGIN');
|
|
|
|
|
|
|
|
// alternate colors
|
|
|
|
$design = new Design();
|
|
|
|
|
|
|
|
$design->backgroundcolor = 16184329;
|
|
|
|
$design->contentcolor = 16059904;
|
|
|
|
$design->sidebarcolor = 16059904;
|
|
|
|
$design->textcolor = 0;
|
|
|
|
$design->linkcolor = 16777215;
|
|
|
|
|
|
|
|
$design->setDisposition(false, true, false);
|
|
|
|
|
|
|
|
$id = $design->insert();
|
|
|
|
|
|
|
|
if (empty($id)) {
|
|
|
|
common_log_db_error($id, 'INSERT', __FILE__);
|
2010-01-10 11:26:24 +00:00
|
|
|
$this->showForm(_('Unable to save your design settings.'));
|
2009-06-29 22:52:38 +01:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2009-06-30 00:55:42 +01:00
|
|
|
$original = clone($user);
|
2009-06-29 22:52:38 +01:00
|
|
|
$user->design_id = $id;
|
2009-06-30 00:55:42 +01:00
|
|
|
$result = $user->update($original);
|
2009-06-29 22:52:38 +01:00
|
|
|
|
|
|
|
if (empty($result)) {
|
|
|
|
common_log_db_error($original, 'UPDATE', __FILE__);
|
2010-01-10 11:26:24 +00:00
|
|
|
$this->showForm(_('Unable to save your design settings.'));
|
2009-06-29 22:52:38 +01:00
|
|
|
$user->query('ROLLBACK');
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
$user->query('COMMIT');
|
|
|
|
|
|
|
|
$this->saveBackgroundImage($design);
|
|
|
|
|
|
|
|
$this->showForm(_('Enjoy your hotdog!'), true);
|
|
|
|
}
|
|
|
|
|
2010-09-11 21:16:38 +01:00
|
|
|
function saveDesignPreferences()
|
|
|
|
{
|
|
|
|
$viewdesigns = $this->boolean('viewdesigns');
|
|
|
|
|
|
|
|
$user = common_current_user();
|
|
|
|
|
|
|
|
$original = clone($user);
|
|
|
|
|
|
|
|
$user->viewdesigns = $viewdesigns;
|
|
|
|
|
|
|
|
$result = $user->update($original);
|
|
|
|
|
|
|
|
if ($result === false) {
|
|
|
|
common_log_db_error($user, 'UPDATE', __FILE__);
|
|
|
|
throw new ServerException(_('Couldn\'t update user.'));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class UserDesignForm extends DesignForm
|
|
|
|
{
|
|
|
|
function __construct($out, $design, $actionurl)
|
|
|
|
{
|
|
|
|
parent::__construct($out, $design, $actionurl);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Legend of the Form
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
function formLegend()
|
|
|
|
{
|
|
|
|
$this->out->element('legend', null, _('Design settings'));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Data elements of the form
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
|
|
|
|
function formData()
|
|
|
|
{
|
|
|
|
$user = common_current_user();
|
|
|
|
|
|
|
|
$this->out->elementStart('ul', 'form_data');
|
|
|
|
$this->out->elementStart('li');
|
|
|
|
$this->out->checkbox('viewdesigns', _('View profile designs'),
|
|
|
|
- $user->viewdesigns, _('Show or hide profile designs.'));
|
|
|
|
$this->out->elementEnd('li');
|
|
|
|
$this->out->elementEnd('ul');
|
|
|
|
|
|
|
|
$this->out->elementEnd('fieldset');
|
|
|
|
|
|
|
|
$this->out->elementStart('fieldset');
|
|
|
|
$this->out->element('legend', null, _('Background file'));
|
|
|
|
|
|
|
|
parent::formData();
|
|
|
|
}
|
2009-06-18 10:16:39 +01:00
|
|
|
}
|