Вход Регистрация
Файл: sys/inc/functions/ds-system.php
Строк: 427
<?php 

/**
* Получает UID языка сайта 
* @return string
*/ 
function get_language() 

    
$language ds_get('site_language''en_US');  
    return 
$language



function 
get_version() 
{
    require 
ROOTPATH '/sys/inc/version.php';
    return 
$cs_core_version
}

/**
* Алиасы класса Registry
* @return object | string | array
*/

function ds_get($key$default NULL) {
    if (isset(
$key)) { 
        
$get Registry::get($key); 

        if (
$get === NULL && $default !== NULL) {
            return 
$default;
        }
        return 
$get
    }
}

/**
* Регистрирует глобальную переменную
* @return bolean true
*/
function ds_set($key$var) {
    return 
Registry::set($key$var); 
}

/**
* Возвращает все глобальные данные
* @return array
*/
function ds_getAll() {
    return 
Registry::getAll($key); 
}


function 
libload($filename
{
    
$path ROOTPATH '/sys/inc/libs/' $filename
    
$hash 'LIB_' md5($path); 

    if (
defined($hash)) {
        return ; 
    }

    if (
is_file($path)) {
        
define($hashtrue); 
        require(
$path); 
    }
}

function 
ds_die($msg ''
{
    
$ob_end_content ob_get_contents(); 
    
ob_end_clean(); 

    if (
$ob_end_content) {
        
$msg $ob_end_content "<br >" $msg
    }
    
    die(
'
    <html>
        <head>
            <title>' 
__('Ошибка %s''CMS-Social') . '</title>
            <style>
            body {
                background-color: white;
                margin: 0; 
                padding: 0;
            }
            #ds-error {
                padding: 20px;
                width: 700px;
                max-width: 90%;
                margin: 30px auto;
                border: 1px solid #eaeaea;
                border-radius: 10px;
                box-sizing: border-box;
                background-color: #f9f9f9;
            }
            </style>
        </head>
        <body><div id="ds-error">
            ' 
$msg '
        </div></body>
    </html>'
);

}

/**
* Получает настройки сайта
* Может возвращать как значение так и все настройки
* @return array | string
*/ 

function get_settings($key false$default ''
{
    
$set = array();
    
$set_default = array();
    
$set_dinamic = array();
    
$set_replace = array();

    
$ini parse_ini_fileROOTPATH.'/sys/upgrade/settings.ini'true );

    if (
is_array($ini['DEFAULT'])) {
        
$set_default $ini['DEFAULT'];
    }
    
    if (
is_array($ini['REPLACE'])) {
        
$set_replace $ini['REPLACE'];
    }
    
    
$set_dinamic get_options();
    
$set use_filters('ds_settings_filter'array_merge($set_default$set_dinamic$set_replace));

    if (
$key === false) {
        return 
$set
    } elseif (isset(
$set[$key])) {
        return 
$set[$key]; 
    }

    return 
$default
}

function 
sort_position($a$b) { 
    return 
strnatcmp($a["position"], $b["position"]); 


function 
file_add_cache($cacheFile$array) {
    
$cacheFile PATH_CACHE '/' $cacheFile '.cache';

    if (
is_file($cacheFile)) {
        
unlink($cacheFile);
    } 

    
file_put_contents($cacheFilejson_encode($array));
}

function 
file_get_cache($cacheFile) {
    
$cacheFile PATH_CACHE '/' $cacheFile '.cache';

    if (
is_file($cacheFile)) {
        
$cache json_decode(file_get_contents($cacheFile), 1); 
        return 
$cache;
    }

    return 
false
}

function 
file_delete_cache($cacheFile) {
    
$cacheFile PATH_CACHE '/' $cacheFile '.cache';
    if (
is_file($cacheFile)) {
        
unlink($cacheFile);
    } 
}


function 
get_options($type 'autoload'
{
    
$options ds_get('ds_options_' $type);

    if (!empty(
$options[$type])) { 
        return 
$options[$type]; 
    }

    
$res db::select("SELECT * FROM `options` WHERE `type` = '" $type "'"); 

    foreach(
$res AS $key => $option) {
        
$options[$type][$option['name']] = $option['value']; 
    }

    
ds_set('ds_options_' $type$options);

    return (
is_array($options[$type]) ? $options[$type] : array()); 
}

function 
get_option($key$default NULL
{
    
$options ds_get('ds_options');

    if (!empty(
$options)) {
        if (isset(
$options[$key])) {
            return 
$options[$key];
        }
    }

    
$cache file_get_cache('options.cache'); 
    if (!empty(
$cache)) {
        if (isset(
$cache[$key])) {
            return 
$cache[$key];   
        }
    }
    
    
$res db::fetch("SELECT * FROM `options` WHERE `name` = '" my_esc($key) . "' LIMIT 1"); 

    if (
$res) {
        return 
$res['value'];  
    }
    
    return 
$default
}

function 
update_option($key$value$type ''

    
// Удаляем кеш опций
    
file_delete_cache('options'); 

    
$option db::fetch("SELECT * FROM `options` WHERE `name` = '" $key "' LIMIT 1"); 

    if (isset(
$option['id'])) {
        if (
is_array($value)) {
            
$value json_encode($value); 
        }
        
$update = array(
            
'value' => $value
        ); 
        
db::update('options'$update, array('name' => $key)); 
    }
    
    else {
       
db::query("INSERT INTO `options` (`name`, `value`, `type`) VALUES ('$key', '$value', '$type')");
    }
}

function 
delete_option($key

    
// Удаляем кеш опций
    
file_delete_cache('options'); 
    
$option db::fetch("SELECT * FROM `options` WHERE `name` = '" $key "' LIMIT 1"); 
    if (isset(
$option['id'])) {
        
db::delete('options', array('name' => $key));
        return 
true;  
    }
    return 
false
}

function 
ds_options_load() 
{
    
$cache file_get_cache('options'); 

    if (empty(
$cache)) {
        
$options db::select("SELECT * FROM `options` WHERE type = 'autoload'"ARRAY_A);

        
$cache = array(); 
        foreach(
$options AS $option) {
            
$cache[$option['name']] = $option['value']; 
        }
        
file_add_cache('options'$cache);
        
ds_get('ds_options'$cache); 
 
        
// Язык сайта 
        
if (isset($options['site_language'])) {
            
ds_set('site_language'$options['site_language']); 
        }
    }

    
ds_set('ds_options'$cache);
}

function 
ds_get_file_extensions($path) {
    return 
strtolower(substr($pathstrrpos($path'.') + 1)); 
}

function 
ds_readdir_files_list($dir$args = array()) 
{
    
$ds_files_recursive = array(); 

    if (!
is_dir($dir)) {
        return 
$ds_files_recursive
    }

    
$opdirbase opendir($dir);
    while (
$filebase readdir($opdirbase)) {
        if (
$filebase == '..' || $filebase == '.') continue; 

        if (
is_file($dir '/' $filebase)) {
            if (!empty(
$args['skip_extensions']) && in_array(ds_get_file_extensions($filebase), $args['skip_extensions'])) {
                continue; 
            }

            if (!empty(
$args['allowed_extensions']) && !in_array(ds_get_file_extensions($filebase), $args['allowed_extensions'])) {
                continue; 
            }

            
$ds_files_recursive[] = $dir '/' $filebase;
        }

        elseif (
is_dir($dir '/' $filebase)) {
            if (!empty(
$args['skip_folders']) && in_array($dir '/' $filebase$args['skip_folders'])) {
                continue;  
            }
            
            
$ds_files_recursive array_merge_recursive($ds_files_recursiveds_readdir_files_list($dir '/' $filebase$args)); 
        }
    }

    return 
$ds_files_recursive
}

function 
ds_readdir_dir_list($dir$ds_directory_recursive = array()) 
{
    
$opdirbase opendir($dir);
    while (
$filebase readdir($opdirbase)) {
        if (
$filebase == '..' || $filebase == '.') continue; 

        if (
is_dir($dir '/' $filebase)) {
            
$ds_directory_recursive[] = $dir '/' $filebase;
            
$ds_directory_recursive array_merge_recursive($ds_directory_recursiveds_readdir_dir_list($dir '/' $filebase)); 
        }
    }

    return 
$ds_directory_recursive
}

function 
ds_check_installed() 
{
    
$install true
    if (!
is_file(ROOTPATH '/config.php')) {
        
header('Location: ' get_site_url('/adm_panel/install.php')); 
        exit;
    }
}

function 
is_serialized$data ) {
    if (!
is_string($data)) {
        return 
false;
    }

    
$data trim($data);

    if (
strlen($data) < 4) {
        return 
false;
    } elseif (
':' !== $data[1]) {
        return 
false;
    } elseif (
';' !== substr($data, -1)) {
        return 
false;
    } elseif (
$data[0] !== 's') {
        return 
false;
    } elseif (
'"' !== substr($data, -21)) {
        return 
false;
    } else {
        return 
true;
    }
}

function 
ds_mail($to$subject$message$headers ''$attachments = array()) 
{
    
$atts use_filters('ds_mail'compact'to''subject''message''headers''attachments'));

    if (
$ds_mail_retrun use_filters('ds_pre_ds_mail'null$to$subject$message$headers$attachments) !== null) {
        return 
$ds_mail_retrun
    }

    if (isset(
$atts['to'])) {
        
$to $atts['to'];
    }

    if (!
is_array($to)) {
        
$to explode(','$to);
    }

    if (isset(
$atts['subject'])) {
        
$subject $atts['subject'];
    }

    if (isset(
$atts['message'])) {
        
$message $atts['message'];
    }

    if (isset(
$atts['headers'])) {
        
$headers $atts['headers'];
    }

    if (isset(
$atts['attachments'])) {
        
$attachments $atts['attachments'];
    }

    if (! 
is_array($attachments)) {
        
$attachments explode("n"str_replace("rn""n"$attachments));
    }

    global 
$phpmailer;

    if (!(
$phpmailer instanceof PHPMailer)) {
        
libload('PHPMailer.php');  
        
libload('SMTP.php');  

        
$phpmailer = new PHPMailer(true);
    }

    
$cc       = array();
    
$bcc      = array();
    
$reply_to = array();

    if ( empty( 
$headers ) ) {
        
$headers = array();
    } else {
        if ( ! 
is_array$headers ) ) {
            
$tempheaders explode"n"str_replace"rn""n"$headers ) );
        } else {
            
$tempheaders $headers;
        }
        
$headers = array();

        if ( ! empty( 
$tempheaders ) ) {
            foreach ( (array) 
$tempheaders as $header ) {
                if ( 
strpos$header':' ) === false ) {
                    if ( 
false !== stripos$header'boundary=' ) ) {
                        
$parts    preg_split'/boundary=/i'trim$header ) );
                        
$boundary trimstr_replace( array( "'"'"' ), ''$parts[1] ) );
                    }
                    continue;
                }

                list( 
$name$content ) = explode':'trim$header ), );

                
$name    trim$name );
                
$content trim$content );

                switch ( 
strtolower$name ) ) {
                    case 
'from':
                        
$bracket_pos strpos$content'<' );
                        if ( 
false !== $bracket_pos ) {
                            if ( 
$bracket_pos ) {
                                
$from_name substr$content0$bracket_pos );
                                
$from_name str_replace'"'''$from_name );
                                
$from_name trim$from_name );
                            }

                            
$from_email substr$content$bracket_pos );
                            
$from_email str_replace'>'''$from_email );
                            
$from_email trim$from_email );

                        } elseif ( 
'' !== trim$content ) ) {
                            
$from_email trim$content );
                        }
                        break;
                    case 
'content-type':
                        if ( 
strpos$content';' ) !== false ) {
                            list( 
$type$charset_content ) = explode';'$content );
                            
$content_type                   trim$type );
                            if ( 
false !== stripos$charset_content'charset=' ) ) {
                                
$charset trimstr_replace( array( 'charset=''"' ), ''$charset_content ) );
                            } elseif ( 
false !== stripos$charset_content'boundary=' ) ) {
                                
$boundary trimstr_replace( array( 'BOUNDARY=''boundary=''"' ), ''$charset_content ) );
                                
$charset  '';
                            }

                        } elseif ( 
'' !== trim$content ) ) {
                            
$content_type trim$content );
                        }
                        break;
                    case 
'cc':
                        
$cc array_merge( (array) $ccexplode','$content ) );
                        break;
                    case 
'bcc':
                        
$bcc array_merge( (array) $bccexplode','$content ) );
                        break;
                    case 
'reply-to':
                        
$reply_to array_merge( (array) $reply_toexplode','$content ) );
                        break;
                    default:
                        
$headerstrim$name ) ] = trim$content );
                        break;
                }
            }
        }
    }

    
$phpmailer->clearAllRecipients();
    
$phpmailer->clearAttachments();
    
$phpmailer->clearCustomHeaders();
    
$phpmailer->clearReplyTos();

    if ( ! isset( 
$from_name ) ) {
        
$from_name 'CMS-Social';
    }

    if ( ! isset( 
$from_email ) ) {
        
$sitename strtolower$_SERVER['SERVER_NAME'] );
        if ( 
substr$sitename0) == 'www.' ) {
            
$sitename substr$sitename);
        }

        
$from_email 'cms-social@' $sitename;
    }

    
$from_email use_filters'ds_mail_from'$from_email );
    
$from_name use_filters'ds_mail_from_name'$from_name );

    try {
        
$phpmailer->setFrom$from_email$from_namefalse );
    } catch ( 
phpmailerException $e ) {
        
$mail_error_data                             compact'to''subject''message''headers''attachments' );
        
$mail_error_data['phpmailer_exception_code'] = $e->getCode();

        
do_event'ds_mail_failed'$mail_error_data);

        return 
false;
    }

    
$phpmailer->Subject $subject;
    
$phpmailer->Body    $message;

    
$address_headers compact'to''cc''bcc''reply_to' );

    foreach ( 
$address_headers as $address_header => $addresses ) {
        if ( empty( 
$addresses ) ) {
            continue;
        }

        foreach ( (array) 
$addresses as $address ) {
            try {
                
$recipient_name '';

                if ( 
preg_match'/(.*)<(.+)>/'$address$matches ) ) {
                    if ( 
count$matches ) == ) {
                        
$recipient_name $matches[1];
                        
$address        $matches[2];
                    }
                }

                switch ( 
$address_header ) {
                    case 
'to':
                        
$phpmailer->addAddress$address$recipient_name );
                        break;
                    case 
'cc':
                        
$phpmailer->addCc$address$recipient_name );
                        break;
                    case 
'bcc':
                        
$phpmailer->addBcc$address$recipient_name );
                        break;
                    case 
'reply_to':
                        
$phpmailer->addReplyTo$address$recipient_name );
                        break;
                }
            } catch ( 
phpmailerException $e ) {
                continue;
            }
        }
    }

    
$phpmailer->isMail();

    if (!isset(
$content_type)) {
        
$content_type 'text/plain';
    }

    
$content_type use_filters'ds_mail_content_type'$content_type );
    
$phpmailer->ContentType $content_type;

    if ( 
'text/html' == $content_type ) {
        
$phpmailer->isHTMLtrue );
    }

    if ( ! isset( 
$charset ) ) {
        
$charset 'utf-8';
    }

    
$phpmailer->CharSet use_filters'ds_mail_charset'$charset );

    if ( ! empty( 
$headers ) ) {
        foreach ( (array) 
$headers as $name => $content ) {
            if ( ! 
in_array$name, array( 'MIME-Version''X-Mailer' ) ) ) {
                
$phpmailer->addCustomHeadersprintf'%1$s: %2$s'$name$content ) );
            }
        }

        if ( 
false !== stripos$content_type'multipart' ) && ! empty( $boundary ) ) {
            
$phpmailer->addCustomHeadersprintf"Content-Type: %s;nt boundary="%s""$content_type$boundary ) );
        }
    }

    if ( ! empty( 
$attachments ) ) {
        foreach ( 
$attachments as $attachment ) {
            try {
                
$phpmailer->addAttachment$attachment );
            } catch ( 
phpmailerException $e ) {
                continue;
            }
        }
    }

    try {
        return 
$phpmailer->send();
    } catch ( 
phpmailerException $e ) {

        
$mail_error_data                             compact'to''subject''message''headers''attachments' );
        
$mail_error_data['phpmailer_exception_code'] = $e->getCode();

        
do_event'ds_mail_failed'$mail_error_data);

        return 
false;
    }
}
Онлайн: 0
Реклама