示例#1
0
 /**
  * Save or update the group's design settings
  *
  * @return void
  */
 function saveDesign()
 {
     try {
         $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;
     }
     $design = $this->group->getDesign();
     if (!empty($design)) {
         // update 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__);
             $this->showForm(_('Couldn\'t update your design.'));
             return;
         }
     } else {
         $this->group->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__);
             $this->showForm(_('Unable to save your design settings!'));
             return;
         }
         $original = clone $this->group;
         $this->group->design_id = $id;
         $result = $this->group->update($original);
         if (empty($result)) {
             common_log_db_error($original, 'UPDATE', __FILE__);
             $this->showForm(_('Unable to save your design settings!'));
             $this->group->query('ROLLBACK');
             return;
         }
         $this->group->query('COMMIT');
     }
     $this->saveBackgroundImage($design);
     $this->showForm(_('Design preferences saved.'), true);
 }
示例#2
0
 /**
  * Get a default design
  *
  * @return Design design
  */
 function defaultDesign()
 {
     $defaults = common_config('site', 'design');
     $design = new Design();
     try {
         $color = new WebColor();
         $color->parseColor($defaults['backgroundcolor']);
         $design->backgroundcolor = $color->intValue();
         $color->parseColor($defaults['contentcolor']);
         $design->contentcolor = $color->intValue();
         $color->parseColor($defaults['sidebarcolor']);
         $design->sidebarcolor = $color->intValue();
         $color->parseColor($defaults['textcolor']);
         $design->textcolor = $color->intValue();
         $color->parseColor($defaults['linkcolor']);
         $design->linkcolor = $color->intValue();
         $design->backgroundimage = $defaults['backgroundimage'];
         $design->disposition = $defaults['disposition'];
     } catch (WebColorException $e) {
         common_log(LOG_ERR, _('Bad default color settings: ' . $e->getMessage()));
     }
     return $design;
 }
示例#3
0
 /**
  * Save the new design settings
  *
  * @return void
  */
 function saveDesignSettings()
 {
     // Workaround for PHP returning empty $_POST and $_FILES when POST
     // length > post_max_size in php.ini
     if (empty($_FILES) && empty($_POST) && $_SERVER['CONTENT_LENGTH'] > 0) {
         $msg = _('The server was unable to handle that much POST ' . 'data (%s bytes) due to its current configuration.');
         $this->clientException(sprintf($msg, $_SERVER['CONTENT_LENGTH']));
         return;
     }
     // check for an image upload
     $bgimage = $this->saveBackgroundImage();
     static $settings = array('theme', 'logo');
     $values = array();
     foreach ($settings as $setting) {
         $values[$setting] = $this->trimmed($setting);
     }
     $this->validate($values);
     $oldtheme = common_config('site', 'theme');
     $config = new Config();
     $config->query('BEGIN');
     // Only update colors if the theme has not changed.
     if ($oldtheme == $values['theme']) {
         $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'));
         Config::save('design', 'backgroundcolor', $bgcolor->intValue());
         Config::save('design', 'contentcolor', $ccolor->intValue());
         Config::save('design', 'sidebarcolor', $sbcolor->intValue());
         Config::save('design', 'textcolor', $tcolor->intValue());
         Config::save('design', 'linkcolor', $lcolor->intValue());
     }
     $onoff = $this->arg('design_background-image_onoff');
     $on = false;
     $off = false;
     if ($onoff == 'on') {
         $on = true;
     } else {
         $off = true;
     }
     $tile = $this->boolean('design_background-image_repeat');
     // Hack to use Design's bit setter
     $scratch = new Design();
     $scratch->setDisposition($on, $off, $tile);
     Config::save('design', 'disposition', $scratch->disposition);
     foreach ($settings as $setting) {
         Config::save('site', $setting, $values[$setting]);
     }
     if (isset($bgimage)) {
         Config::save('design', 'backgroundimage', $bgimage);
     }
     $config->query('COMMIT');
 }
 /**
  * Save the new design settings
  *
  * @return void
  */
 function saveDesignSettings()
 {
     // Workaround for PHP returning empty $_POST and $_FILES when POST
     // length > post_max_size in php.ini
     if (empty($_FILES) && empty($_POST) && $_SERVER['CONTENT_LENGTH'] > 0) {
         // TRANS: Client error displayed when the number of bytes in a POST request exceeds a limit.
         // TRANS: %s is the number of bytes of the CONTENT_LENGTH.
         $msg = _m('The server was unable to handle that much POST data (%s byte) due to its current configuration.', 'The server was unable to handle that much POST data (%s bytes) due to its current configuration.', intval($_SERVER['CONTENT_LENGTH']));
         $this->clientException(sprintf($msg, $_SERVER['CONTENT_LENGTH']));
         return;
     }
     // check for file uploads
     $bgimage = $this->saveBackgroundImage();
     $customTheme = $this->saveCustomTheme();
     $oldtheme = common_config('site', 'theme');
     if ($customTheme) {
         // This feels pretty hacky :D
         $this->args['theme'] = $customTheme;
         $themeChanged = true;
     } else {
         $themeChanged = $this->trimmed('theme') != $oldtheme;
     }
     static $settings = array('theme', 'logo', 'ssllogo');
     $values = array();
     foreach ($settings as $setting) {
         $values[$setting] = $this->trimmed($setting);
     }
     $this->validate($values);
     $config = new Config();
     $config->query('BEGIN');
     if ($themeChanged) {
         // If the theme has changed, reset custom colors and let them pick
         // up the new theme's defaults.
         $colors = array('background', 'content', 'sidebar', 'text', 'link');
         foreach ($colors as $colorKey) {
             // Clear from global config so we see defaults on this page...
             $GLOBALS['config']['design'][$colorKey . 'color'] = false;
             // And remove old settings from DB...
             $this->deleteSetting('design', $colorKey . 'color');
         }
     } else {
         // Only save colors from the form if the theme has not changed.
         //
         // @fixme a future more ajaxy form should allow theme switch
         // and color customization in one step.
         $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'));
         Config::save('design', 'backgroundcolor', $bgcolor->intValue());
         Config::save('design', 'contentcolor', $ccolor->intValue());
         Config::save('design', 'sidebarcolor', $sbcolor->intValue());
         Config::save('design', 'textcolor', $tcolor->intValue());
         Config::save('design', 'linkcolor', $lcolor->intValue());
     }
     $onoff = $this->arg('design_background-image_onoff');
     $on = false;
     $off = false;
     if ($onoff == 'on') {
         $on = true;
     } else {
         $off = true;
     }
     $tile = $this->boolean('design_background-image_repeat');
     // Hack to use Design's bit setter
     $scratch = new Design();
     $scratch->setDisposition($on, $off, $tile);
     Config::save('design', 'disposition', $scratch->disposition);
     foreach ($settings as $setting) {
         Config::save('site', $setting, $values[$setting]);
     }
     if (isset($bgimage)) {
         Config::save('design', 'backgroundimage', $bgimage);
     }
     if (common_config('custom_css', 'enabled')) {
         $css = $this->arg('css');
         if ($css != common_config('custom_css', 'css')) {
             Config::save('custom_css', 'css', $css);
         }
     }
     $config->query('COMMIT');
 }