Вход Регистрация
Файл: 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="#">&times;</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]) ? 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]) ? 0,
                    
':signup'  => $this->options['profile-field_signup'][$key],
                    
':id'      => $key
                
);

                if ( 
$stmt->rowCount() < )
                    
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='#'>&times;</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(0count($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();
Онлайн: 0
Реклама