Файл: Space race/admin/classes/settings.class.php
Строк: 293
<?php
/**
* Modify this script's options.
*
*/
include_once(dirname(dirname(dirname(__FILE__))) . '/classes/generic.class.php');
class Settings extends Generic {
private $error;
private $options = array();
function __construct() {
// Once the form has been processed
if(!empty($_POST)) {
foreach ($_POST as $key => $value)
$this->options[$key] = parent::secure($value);
// Validate fields
$this->validate();
// Process form
echo empty($this->error) ? $this->process() : $this->error;
exit();
}
}
public function get_domains($json = false) {
$option = parent::getOption('restrict-signups-by-email');
if ( !$option ) return '';
$option = unserialize($option);
$options = '';
foreach ( $option as $value ) :
$options .= $json ? "'$value', " : "$value, ";;
endforeach;
$options = rtrim($options, ', ');
echo $options;
}
// Validate the submitted information
private function validate() {
if(!is_numeric($this->options['default_session']))
$this->error = _('Не установлено время сессий в настройках.');
if(!parent::isEmail($this->options['admin_email']))
$this->error = _('Не установлен Email администратора.');
if(empty($this->options['site_address']))
$this->error = _('Не установлен адрес сайта.');
if(substr($this->options['site_address'], -1) != '/')
$this->options['site_address'] = $this->options['site_address'] . '/';
if(!empty($this->error)) $this->error = '<div class="alert alert-danger fade in"><a class="close" data-dismiss="alert" href="#">×</a>' . $this->error . '</div>';
$checkboxes = array();
if(!empty($_POST['denied-form'])) {
$checkboxes[] = 'block-msg-enable';
$checkboxes[] = 'block-msg-out-enable';
}
if(!empty($_POST['general-options-form'])) {
$checkboxes[] = 'user-activation-enable';
$checkboxes[] = 'notify-new-user-enable';
$checkboxes[] = 'custom-avatar-enable';
$checkboxes[] = 'disable-registrations-enable';
$checkboxes[] = 'disable-logins-enable';
$checkboxes[] = 'email-as-username-enable';
$checkboxes[] = 'pw-encrypt-force-enable';
$checkboxes[] = 'signin-redirect-referrer-enable';
$checkboxes[] = 'signout-redirect-referrer-enable';
$checkboxes[] = 'email-welcome-disable';
}
if(!empty($_POST['integration-form'])) {
$checkboxes[] = 'integration-facebook-enable';
$checkboxes[] = 'integration-google-enable';
$checkboxes[] = 'integration-twitter-enable';
$checkboxes[] = 'integration-yahoo-enable';
}
if(!empty($_POST['update-form'])) {
$checkboxes[] = 'update-check-enable';
}
if(!empty($_POST['user-profiles-form'])) {
$checkboxes[] = 'profile-display-email-enable';
$checkboxes[] = 'profile-display-name-enable';
$checkboxes[] = 'profile-public-enable';
$checkboxes[] = 'profile-timestamps-admin-enable';
$checkboxes[] = 'profile-timestamps-enable';
}
foreach($checkboxes as $label)
$this->options[$label] = !empty($this->options[$label]) ? 1 : 0;
$this->options['default-level'] = !empty($this->options['default-level']) ? serialize($this->options['default-level']) : serialize(array('3'));
$this->options['restrict-signups-by-email'] = !empty($this->options['restrict-signups-by-email']) ? serialize(preg_split ('/,/', $this->options['restrict-signups-by-email'])) : '';
}
/** Insert setting values into the database */
private function process() {
if(!empty($this->error))
return false;
/** Saves the profile fields, first checks if it exists */
if (!empty($this->options['profile-field_section'])) :
foreach($this->options['profile-field_section'] as $key => $value) :
if(empty($value)) continue;
/** Deletes a profile field if Delete is checked */
if( isset($this->options['profile-field_delete'][$key]) ) :
$params = array(
':section' => $value,
':type' => $this->options['profile-field_type'][$key],
':label' => $this->options['profile-field_name'][$key]
);
$sql = "DELETE FROM `login_profile_fields` WHERE `section` = :section AND `type` = :type AND `label` = :label;";
parent::query($sql, $params);
continue;
endif;
/** Adds profile fields */
$params = array( ':id' => $key );
$stmt = parent::query("SELECT `id` FROM `login_profile_fields` WHERE `id` = :id;", $params);
$params = array(
':section' => $value,
':type' => $this->options['profile-field_type'][$key],
':label' => $this->options['profile-field_name'][$key],
':public' => !empty($this->options['profile-field_public'][$key]) ? 1 : 0,
':signup' => $this->options['profile-field_signup'][$key],
':id' => $key
);
if ( $stmt->rowCount() < 1 )
parent::query("INSERT INTO `login_profile_fields` (`id`, `section`, `type`, `label`, `public`, `signup`) VALUES (:id, :section, :type, :label, :public, :signup);", $params);
else
parent::query("UPDATE `login_profile_fields` SET `section` = :section, `type` = :type, `label` = :label, `public` = :public, `signup` = :signup WHERE `id` = :id", $params);
endforeach;
endif;
/** Save every other field */
foreach ( $this->options as $option => $newvalue )
if ( ! is_array($option) )
parent::updateOption( $option, $newvalue );
return "<div class='alert alert-success fade in'><a class='close' data-dismiss='alert' href='#'>×</a>"._('Настройки сохранены')."</div>";
}
public function profile_fields() {
$field_types = array(
'text_input'=> _('Text Input'),
'textarea' => _('Textarea'),
'checkbox' => _('Checkbox'),
);
$signup_types = array(
'hide' => _('Hide'),
'require' => _('Require'),
'optional' => _('Optional'),
);
$sql = "SELECT * FROM `login_profile_fields`";
$stmt = parent::query($sql);
$i = 1;
?><tbody><?php
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) :
?><tr class="profile-field-row">
<td><input type="text" value="<?php echo $row['section']; ?>" name="profile-field_section[<?php echo $i; ?>]" placeholder="<?php _e('Section name'); ?>" class="form-control input-medium"></td>
<td>
<select name="profile-field_type[<?php echo $i; ?>]" class="form-control input-medium">
<?php foreach ($field_types as $field_type => $field_label) :
$selected = (strstr($row['type'], $field_type)) ? 'selected="selected"' : ''; ?>
<option value="<?php echo $field_type; ?>" <?php echo $selected; ?>><?php echo $field_label; ?></option>
<?php endforeach;?>
</select>
</td>
<td><input type="text" value="<?php echo $row['label']; ?>" name="profile-field_name[<?php echo $i; ?>]" placeholder="<?php _e('Field name'); ?>" class="form-control input-medium"></td>
<td>
<select name="profile-field_signup[<?php echo $i; ?>]" class="form-control input-medium">
<?php foreach ($signup_types as $field_type => $field_label) :
$selected = (strstr($row['signup'], $field_type)) ? 'selected="selected"' : ''; ?>
<option value="<?php echo $field_type; ?>" <?php echo $selected; ?>><?php echo $field_label; ?></option>
<?php endforeach;?>
</select>
</td>
<td><input type="checkbox" name="profile-field_public[<?php echo $i; ?>]" <?php if ( !empty($row['public']) ) echo 'checked="checked"'; ?>></td>
<td><input type="checkbox" name="profile-field_delete[<?php echo $i; ?>]"></td>
</tr><?php
$i++;
endwhile;
?>
<tr><td colspan="5"><button class="add-field btn btn-default"><i class="glyphicon glyphicon-plus-sign"></i> Добавить поле</button></td></tr>
</tbody>
<?php
}
/**
* Checks for updates.
*
* Used in admin settings page.
*/
private function grabUpdate() {
if( !ini_get('allow_url_fopen') || !parent::getOption('update-check-enable') )
return false;
if ( !$t = file_get_contents('http://race3d.ru/update/freechangelog.txt') )
return false;
$t = explode(';',$t);
return $t;
}
public function newUpdate() {
$t = $this->grabUpdate();
return ($t[0] > phplogin_version);
}
public function newVersion() {
$version = $this->grabUpdate();
return $version[0];
}
public function newChangelog() {
$changelog = $this->grabUpdate();
return $changelog[1];
}
/* @TODO: This function is repeated once in edit_user.class.php. Obliterate that repeat. */
public function returnLevels($id = 'default-level') {
$option = parent::getOption($id);
$ids = !empty( $option ) ? unserialize($option) : array('');
$placeholder = array_fill(0, count($ids), '?');
$sql = "SELECT level_name, level_level FROM login_levels WHERE level_disabled != 1 AND level_level NOT IN (" . implode(',', $placeholder) . ")";
$stmt2 = parent::query($sql, $ids);
$sql = "SELECT level_name, level_level FROM login_levels WHERE level_level IN (" . implode(',', $placeholder) . ")";
$stmt3 = parent::query($sql, $ids);
?>
<select class="form-control chzn-select" data-placeholder="<?php _e('Select your levels'); ?>" multiple="multiple" id="<?php echo $id; ?>" name="<?php echo $id; ?>[]">
<?php while($level = $stmt3->fetch()) : ?>
<?php echo $level['level_level']; ?>
<option selected="selected" value="<?php echo $level['level_level']; ?>"><?php echo $level['level_name']; ?></option>
<?php endwhile; ?>
<?php while($level = $stmt2->fetch()) : ?>
<option value="<?php echo $level['level_level']; ?>"><?php echo $level['level_name']; ?></option>
<?php endwhile; ?>
</select>
<?php
}
}
$settings = new Settings();