mirror of https://github.com/avecms/AVE.cms.git
M@d D3n
6 years ago
41 changed files with 2651 additions and 2303 deletions
@ -1,161 +1,155 @@ |
|||||||
<?php |
<?php |
||||||
|
|
||||||
/** |
|
||||||
* AVE.cms |
|
||||||
* |
|
||||||
* @package AVE.cms |
|
||||||
* @version 3.x |
|
||||||
* @filesource |
|
||||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
|
||||||
* |
|
||||||
* @license GPL v.2 |
|
||||||
*/ |
|
||||||
|
|
||||||
class AVE_Session_DB |
|
||||||
{ |
|
||||||
|
|
||||||
public $sess_lifetime; |
|
||||||
|
|
||||||
/** |
/** |
||||||
* Хост |
* AVE.cms |
||||||
* |
* |
||||||
* @var string |
* @package AVE.cms |
||||||
*/ |
* @version 3.x |
||||||
protected $db_host; |
* @filesource |
||||||
|
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
||||||
/** |
|
||||||
* Имя пользователя |
|
||||||
* |
* |
||||||
* @var string |
* @license GPL v.2 |
||||||
*/ |
*/ |
||||||
protected $db_user; |
|
||||||
|
|
||||||
/** |
class AVE_Session_DB |
||||||
* Пароль |
{ |
||||||
* |
|
||||||
* @var string |
|
||||||
*/ |
|
||||||
protected $db_pass; |
|
||||||
|
|
||||||
/** |
public $sess_lifetime; |
||||||
* Имя текущей БД. |
|
||||||
* |
/** |
||||||
* @var string |
* Хост |
||||||
*/ |
* |
||||||
protected $db_dbase; |
* @var string |
||||||
|
*/ |
||||||
|
protected $db_host; |
||||||
|
|
||||||
|
/** |
||||||
|
* Имя пользователя |
||||||
|
* |
||||||
|
* @var string |
||||||
|
*/ |
||||||
|
protected $db_user; |
||||||
|
|
||||||
|
/** |
||||||
|
* Пароль |
||||||
|
* |
||||||
|
* @var string |
||||||
|
*/ |
||||||
|
protected $db_pass; |
||||||
|
|
||||||
|
/** |
||||||
|
* Имя текущей БД. |
||||||
|
* |
||||||
|
* @var string |
||||||
|
*/ |
||||||
|
protected $db_dbase; |
||||||
|
|
||||||
|
/** |
||||||
|
* Префикс БД. |
||||||
|
* |
||||||
|
* @var string |
||||||
|
*/ |
||||||
|
protected $db_prefix; |
||||||
|
|
||||||
|
private $mysql_connect = null; |
||||||
|
private $mysql_db = null; |
||||||
|
|
||||||
|
|
||||||
|
/* Create a connection to a database */ |
||||||
|
function __construct() |
||||||
|
{ |
||||||
|
// Подключаем конфигурационный файл с параметрами подключения |
||||||
|
require (BASE_DIR . '/config/db.config.php'); |
||||||
|
|
||||||
/** |
$this->db_host = $config['dbhost']; |
||||||
* Префикс БД. |
$this->db_user = $config['dbuser']; |
||||||
* |
$this->db_pass = $config['dbpass']; |
||||||
* @var string |
$this->db_dbase = $config['dbname']; |
||||||
*/ |
$this->db_prefix = $config['dbpref']; |
||||||
protected $db_prefix; |
|
||||||
|
|
||||||
private $mysql_connect = null; |
$this->sess_lifetime = (defined('SESSION_LIFETIME') && is_numeric(SESSION_LIFETIME)) |
||||||
private $mysql_db = null; |
? SESSION_LIFETIME |
||||||
|
: (get_cfg_var("session.gc_maxlifetime") < 1440 |
||||||
|
? 1440 |
||||||
|
: get_cfg_var("session.gc_maxlifetime")); |
||||||
|
|
||||||
/* Create a connection to a database */ |
if (! $this->mysql_connect = mysqli_connect ($this->db_host, $this->db_user, $this->db_pass)) |
||||||
function __construct() |
$this->error(); |
||||||
{ |
|
||||||
// Подключаем конфигурационный файл с параметрами подключения |
|
||||||
require (BASE_DIR . '/config/db.config.php'); |
|
||||||
|
|
||||||
$this->db_host = $config['dbhost']; |
|
||||||
$this->db_user = $config['dbuser']; |
|
||||||
$this->db_pass = $config['dbpass']; |
|
||||||
$this->db_dbase = $config['dbname']; |
|
||||||
$this->db_prefix = $config['dbpref']; |
|
||||||
|
|
||||||
$this->sess_lifetime = (defined('SESSION_LIFETIME') && is_numeric(SESSION_LIFETIME)) |
|
||||||
? SESSION_LIFETIME |
|
||||||
: (get_cfg_var("session.gc_maxlifetime") < 1440 |
|
||||||
? 1440 |
|
||||||
: get_cfg_var("session.gc_maxlifetime")); |
|
||||||
|
|
||||||
if (! $this->mysql_connect = mysqli_connect ($this->db_host, $this->db_user, $this->db_pass)) |
|
||||||
{ |
|
||||||
$this->error(); |
|
||||||
} |
|
||||||
|
|
||||||
if (! $this->mysql_db = mysqli_select_db ($this->mysql_connect, $this->db_dbase)) |
if (! $this->mysql_db = mysqli_select_db ($this->mysql_connect, $this->db_dbase)) |
||||||
{ |
$this->error(); |
||||||
$this->error(); |
|
||||||
} |
|
||||||
|
|
||||||
$this->mysql_connect->set_charset('utf8'); |
$this->mysql_connect->set_charset('utf8'); |
||||||
|
|
||||||
return true; |
return true; |
||||||
} |
} |
||||||
|
|
||||||
/* Open session */ |
|
||||||
function _open($path, $name) |
|
||||||
{ |
|
||||||
return true; |
|
||||||
} |
|
||||||
|
|
||||||
/* Close session */ |
/* Open session */ |
||||||
function _close() |
function _open($path, $name) |
||||||
{ |
{ |
||||||
@mysqli_query($this->mysql_connect, "DELETE FROM " . PREFIX . "_sessions WHERE expiry < '" . time() . "'"); |
return true; |
||||||
|
} |
||||||
|
|
||||||
if ($this->mysql_connect !== null) |
|
||||||
@mysqli_close($this->mysql_connect); |
|
||||||
|
|
||||||
return true; |
/* Close session */ |
||||||
} |
function _close() |
||||||
|
{ |
||||||
|
@mysqli_query($this->mysql_connect, "DELETE FROM " . PREFIX . "_sessions WHERE expiry < '" . time() . "'"); |
||||||
|
|
||||||
/* Read session */ |
if ($this->mysql_connect !== null) |
||||||
function _read($ses_id) |
@mysqli_close($this->mysql_connect); |
||||||
{ |
|
||||||
$qid = @mysqli_query($this->mysql_connect, "SELECT value, Ip FROM " . PREFIX . "_sessions WHERE sesskey = '" . $ses_id . "' AND expiry > '" . time() . "'"); |
|
||||||
|
|
||||||
if ((list($value, $ip) = @mysqli_fetch_row($qid)) && $ip == $_SERVER['REMOTE_ADDR']) |
return true; |
||||||
{ |
|
||||||
return $value; |
|
||||||
} |
} |
||||||
|
|
||||||
return ''; |
|
||||||
} |
|
||||||
|
|
||||||
/* Write new data */ |
/* Read session */ |
||||||
function _write($ses_id, $data) |
function _read($ses_id) |
||||||
{ |
|
||||||
if (! $qid = @mysqli_query($this->mysql_connect, "INSERT INTO ".PREFIX."_sessions VALUES ('".$ses_id."', ".(time()+$this->sess_lifetime).", '".addslashes($data)."', '".$_SERVER['REMOTE_ADDR']."', FROM_UNIXTIME(expiry, '%d.%m.%Y, %H:%i:%s'))")) |
|
||||||
{ |
{ |
||||||
$qid = @mysqli_query($this->mysql_connect, "UPDATE ".PREFIX."_sessions SET expiry = ".(time()+$this->sess_lifetime).", expire_datum = FROM_UNIXTIME(expiry,'%d.%m.%Y, %H:%i:%s'), value = '".addslashes($data)."', Ip = '".$_SERVER['REMOTE_ADDR']."' WHERE sesskey = '".$ses_id."' AND expiry > '".time()."'"); |
$qid = @mysqli_query($this->mysql_connect, "SELECT value, Ip FROM " . PREFIX . "_sessions WHERE sesskey = '" . $ses_id . "' AND expiry > '" . time() . "'"); |
||||||
|
|
||||||
|
if ((list($value, $ip) = @mysqli_fetch_row($qid)) && $ip == $_SERVER['REMOTE_ADDR']) |
||||||
|
return $value; |
||||||
|
|
||||||
|
return ''; |
||||||
} |
} |
||||||
|
|
||||||
return $qid; |
|
||||||
} |
|
||||||
|
|
||||||
/* Destroy session */ |
/* Write new data */ |
||||||
function _destroy($ses_id) |
function _write($ses_id, $data) |
||||||
{ |
{ |
||||||
return @mysqli_query($this->mysql_connect, "DELETE FROM ".PREFIX."_sessions WHERE sesskey = '".$ses_id."'"); |
if (! $qid = @mysqli_query($this->mysql_connect, "INSERT INTO ".PREFIX."_sessions VALUES ('".$ses_id."', ".(time()+$this->sess_lifetime).", '".addslashes($data)."', '".$_SERVER['REMOTE_ADDR']."', FROM_UNIXTIME(expiry, '%d.%m.%Y, %H:%i:%s'))")) |
||||||
} |
$qid = @mysqli_query($this->mysql_connect, "UPDATE ".PREFIX."_sessions SET expiry = ".(time()+$this->sess_lifetime).", expire_datum = FROM_UNIXTIME(expiry,'%d.%m.%Y, %H:%i:%s'), value = '".addslashes($data)."', Ip = '".$_SERVER['REMOTE_ADDR']."' WHERE sesskey = '".$ses_id."' AND expiry > '".time()."'"); |
||||||
|
|
||||||
/* Garbage collection, deletes old sessions */ |
return $qid; |
||||||
function _gc($maxlifetime) |
} |
||||||
{ |
|
||||||
$session_res = @mysqli_query($this->mysql_connect, "DELETE FROM ".PREFIX."_sessions WHERE expire < (UNIX_TIMESTAMP(NOW()) - " . (int)$maxlifetime . ")"); |
|
||||||
|
|
||||||
if (!$session_res) { |
/* Destroy session */ |
||||||
return false; |
function _destroy($ses_id) |
||||||
|
{ |
||||||
|
return @mysqli_query($this->mysql_connect, "DELETE FROM ".PREFIX."_sessions WHERE sesskey = '".$ses_id."'"); |
||||||
} |
} |
||||||
else |
|
||||||
|
/* Garbage collection, deletes old sessions */ |
||||||
|
function _gc($maxlifetime) |
||||||
{ |
{ |
||||||
return true; |
$session_res = @mysqli_query($this->mysql_connect, "DELETE FROM ".PREFIX."_sessions WHERE expire < (UNIX_TIMESTAMP(NOW()) - " . (int)$maxlifetime . ")"); |
||||||
|
|
||||||
|
if (! $session_res) |
||||||
|
return false; |
||||||
|
else |
||||||
|
return true; |
||||||
} |
} |
||||||
} |
|
||||||
|
|
||||||
function error() { |
function error() { |
||||||
ob_start(); |
ob_start(); |
||||||
header('HTTP/1.1 503 Service Temporarily Unavailable'); |
header('HTTP/1.1 503 Service Temporarily Unavailable'); |
||||||
header('Status: 503 Service Temporarily Unavailable'); |
header('Status: 503 Service Temporarily Unavailable'); |
||||||
header('Retry-After: 3600'); |
header('Retry-After: 3600'); |
||||||
header('X-Powered-By:'); |
header('X-Powered-By:'); |
||||||
display_notice("Error connect to MySQL."); |
display_notice("Error connect to MySQL."); |
||||||
die; |
die; |
||||||
|
} |
||||||
} |
} |
||||||
} |
|
||||||
?> |
?> |
@ -1,121 +1,119 @@ |
|||||||
<?php |
<?php |
||||||
/* |
/* |
||||||
|
Версия от 06.03.2018г. |
||||||
Версия от 06.03.2018г. |
|
||||||
|
Как это работает: |
||||||
Как это работает: |
1) Пользователь зашел на сайт первый раз. |
||||||
1) Пользователь зашел на сайт первый раз. |
2) Если есть хотя бы один параметр - сохраняет cookies |
||||||
2) Если есть хотя бы один параметр - сохраняет cookies |
3) Если utm_history уже есть, то сохраняет данные в utm_last |
||||||
3) Если utm_history уже есть, то сохраняет данные в utm_last |
4) utm_last перезаписывается при каждом новом значении, а utm_history всегда остаётся неизменной (если был передан хотя бы один параметр) |
||||||
4) utm_last перезаписывается при каждом новом значении, а utm_history всегда остаётся неизменной (если был передан хотя бы один параметр) |
5) utm_source сохраняется всегда до закрытия браузера |
||||||
5) utm_source сохраняется всегда до закрытия браузера |
*/ |
||||||
|
class UTMCookie |
||||||
*/ |
|
||||||
class UTMCookie |
|
||||||
{ |
|
||||||
|
|
||||||
private $parameters = array('utm_source', 'utm_medium', 'utm_campaign'); |
|
||||||
|
|
||||||
private $utm_history = ''; |
|
||||||
private $utm_last = ''; |
|
||||||
private $utm_source = ''; |
|
||||||
|
|
||||||
//Проверка параметров: Если все присутствуют - true, иначе false |
|
||||||
private function check_parameters() |
|
||||||
{ |
{ |
||||||
//return true; //Сохранять всегда! |
|
||||||
|
|
||||||
$return = false; |
private $parameters = array('utm_source', 'utm_medium', 'utm_campaign'); |
||||||
|
|
||||||
foreach ($this->parameters as $param) |
private $utm_history = ''; |
||||||
if (isset($_GET[$param]) && $_GET[$param] != '') |
private $utm_last = ''; |
||||||
$return = true; |
private $utm_source = ''; |
||||||
|
|
||||||
return $return; |
//Проверка параметров: Если все присутствуют - true, иначе false |
||||||
} |
private function check_parameters() |
||||||
|
{ |
||||||
|
//return true; //Сохранять всегда! |
||||||
|
|
||||||
//Создаёт строку с параметрами вот такого вида: utm_source=test; utm_medium=none; utm_campaign=kompaniya1; |
$return = false; |
||||||
private function create_parameters() |
|
||||||
{ |
|
||||||
$content = ''; |
|
||||||
foreach($this->parameters as $param){ |
|
||||||
|
|
||||||
if (isset($_GET[$param]) && $_GET[$param] != '') |
foreach ($this->parameters as $param) |
||||||
{ |
if (isset($_GET[$param]) && $_GET[$param] != '') |
||||||
$content .= $param.'='.$_GET[$param].'; '; |
$return = true; |
||||||
|
|
||||||
} |
return $return; |
||||||
else |
|
||||||
{ |
|
||||||
$content .= $param.'=none; '; |
|
||||||
} |
|
||||||
} |
} |
||||||
|
|
||||||
return $content; |
//Создаёт строку с параметрами вот такого вида: utm_source=test; utm_medium=none; utm_campaign=kompaniya1; |
||||||
} |
private function create_parameters() |
||||||
|
|
||||||
//Сохраняет переданные параметры, если требуется |
|
||||||
//Если utm_history присутствует, то сохраняет utm_last |
|
||||||
public function save_parameters() |
|
||||||
{ |
|
||||||
if (isset($_GET['utm_source']) && trim($_GET['utm_source']) != '') |
|
||||||
{ |
{ |
||||||
setcookie('utm_source', $_GET['utm_source']); |
$content = ''; |
||||||
|
foreach($this->parameters as $param){ |
||||||
|
|
||||||
|
if (isset($_GET[$param]) && $_GET[$param] != '') |
||||||
|
{ |
||||||
|
$content .= $param.'='.$_GET[$param].'; '; |
||||||
|
|
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
$content .= $param.'=none; '; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
$this->utm_source = $_GET['utm_source']; |
return $content; |
||||||
} |
} |
||||||
|
|
||||||
//$utm_history = ''; |
//Сохраняет переданные параметры, если требуется |
||||||
|
//Если utm_history присутствует, то сохраняет utm_last |
||||||
if (! isset($_COOKIE['utm_history']) || $_COOKIE['utm_history'] == '') |
public function save_parameters() |
||||||
{ |
{ |
||||||
//Отсутствует utm_history |
if (isset($_GET['utm_source']) && trim($_GET['utm_source']) != '') |
||||||
if($this->check_parameters() == true) |
|
||||||
{ |
{ |
||||||
|
setcookie('utm_source', $_GET['utm_source']); |
||||||
|
|
||||||
$utm_history = $this->create_parameters(); |
$this->utm_source = $_GET['utm_source']; |
||||||
setcookie('utm_history', $utm_history, time()+15552000); //На 6 месяцев |
} |
||||||
setcookie('utm_last', ''); |
|
||||||
|
//$utm_history = ''; |
||||||
|
|
||||||
|
if (! isset($_COOKIE['utm_history']) || $_COOKIE['utm_history'] == '') |
||||||
|
{ |
||||||
|
//Отсутствует utm_history |
||||||
|
if($this->check_parameters() == true) |
||||||
|
{ |
||||||
|
|
||||||
|
$utm_history = $this->create_parameters(); |
||||||
|
setcookie('utm_history', $utm_history, time()+15552000); //На 6 месяцев |
||||||
|
setcookie('utm_last', ''); |
||||||
|
|
||||||
|
$this->utm_history = $utm_history; |
||||||
|
} |
||||||
|
|
||||||
$this->utm_history = $utm_history; |
|
||||||
} |
} |
||||||
|
else |
||||||
|
{ |
||||||
|
//utm_history присутствует |
||||||
|
|
||||||
} |
$this->utm_history = $_COOKIE['utm_history']; |
||||||
else |
|
||||||
{ |
|
||||||
//utm_history присутствует |
|
||||||
|
|
||||||
$this->utm_history = $_COOKIE['utm_history']; |
//Перезапишем utm_last, если есть данные для этого |
||||||
|
if($this->check_parameters() == true){ |
||||||
|
|
||||||
//Перезапишем utm_last, если есть данные для этого |
$utm_last = $this->create_parameters(); |
||||||
if($this->check_parameters() == true){ |
|
||||||
|
|
||||||
$utm_last = $this->create_parameters(); |
if($utm_last != $_COOKIE['utm_history']) |
||||||
|
setcookie('utm_last', $utm_last, time()+15552000); //На 6 месяцев |
||||||
|
|
||||||
if($utm_last != $_COOKIE['utm_history']) |
$this->utm_last = $utm_last; |
||||||
setcookie('utm_last', $utm_last, time()+15552000); //На 6 месяцев |
|
||||||
|
|
||||||
$this->utm_last = $utm_last; |
} |
||||||
|
|
||||||
} |
} |
||||||
|
|
||||||
|
return true; |
||||||
} |
} |
||||||
|
|
||||||
return true; |
//Возвращает значение cookies |
||||||
} |
public function get_value($name = '') |
||||||
|
{ |
||||||
//Возвращает значение cookies |
$name = trim($name); |
||||||
public function get_value($name = '') |
|
||||||
{ |
|
||||||
$name = trim($name); |
|
||||||
|
|
||||||
if ($name == '' || ! in_array($name, array('utm_history', 'utm_last', 'utm_source'))) |
if ($name == '' || ! in_array($name, array('utm_history', 'utm_last', 'utm_source'))) |
||||||
$name = 'utm_history'; |
$name = 'utm_history'; |
||||||
|
|
||||||
if (isset($this->$name) && $this->$name != '') |
if (isset($this->$name) && $this->$name != '') |
||||||
return $this->$name; |
return $this->$name; |
||||||
|
|
||||||
return isset($_COOKIE[$name]) ? $_COOKIE[$name] : ''; |
return isset($_COOKIE[$name]) ? $_COOKIE[$name] : ''; |
||||||
|
} |
||||||
} |
} |
||||||
} |
|
||||||
?> |
?> |
@ -1,163 +0,0 @@ |
|||||||
<?php |
|
||||||
|
|
||||||
/** |
|
||||||
* AVE.cms |
|
||||||
* |
|
||||||
* @package AVE.cms |
|
||||||
* @version 3.x |
|
||||||
* @filesource |
|
||||||
* @copyright © 2007-2015 AVE.cms, http://www.ave-cms.ru |
|
||||||
* |
|
||||||
* @license GPL v.2 |
|
||||||
*/ |
|
||||||
|
|
||||||
// Мульти чекбокс |
|
||||||
function get_field_checkbox_multi($field_value, $action, $field_id=0, $tpl='', $tpl_empty=0, &$maxlength=null, $document_fields=array(), $rubric_id=0, $default=null, $_tpl=null) |
|
||||||
{ |
|
||||||
global $AVE_Template; |
|
||||||
|
|
||||||
$fld_dir = dirname(__FILE__) . '/'; |
|
||||||
$tpl_dir = $fld_dir . 'tpl/'; |
|
||||||
|
|
||||||
$lang_file = $fld_dir . 'lang/' . (defined('ACP') ? $_SESSION['admin_language'] : $_SESSION['user_language']) . '.txt'; |
|
||||||
|
|
||||||
$AVE_Template->config_load($lang_file, 'lang'); |
|
||||||
$AVE_Template->assign('config_vars', $AVE_Template->get_config_vars()); |
|
||||||
$AVE_Template->config_load($lang_file, 'admin'); |
|
||||||
|
|
||||||
$res = array(); |
|
||||||
|
|
||||||
switch ($action) |
|
||||||
{ |
|
||||||
case 'edit': |
|
||||||
$default_items = explode(',', $default); |
|
||||||
$default_items = array_diff($default_items, array('')); |
|
||||||
|
|
||||||
$field_value_array = explode('|', $field_value); |
|
||||||
$field_value_array = array_values(array_diff($field_value_array, array(''))); |
|
||||||
|
|
||||||
$AVE_Template->assign('items', $default_items); |
|
||||||
$AVE_Template->assign('used', $field_value_array); |
|
||||||
$AVE_Template->assign('doc_id', (isset($_REQUEST['Id']) ? (int)$_REQUEST['Id'] : 0)); |
|
||||||
$AVE_Template->assign('field_id', $field_id); |
|
||||||
$AVE_Template->assign('field_value', $field_value); |
|
||||||
|
|
||||||
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'admin', $_tpl); |
|
||||||
|
|
||||||
return $AVE_Template->fetch($tpl_file); |
|
||||||
break; |
|
||||||
|
|
||||||
case 'doc': |
|
||||||
$default_items = explode(',', $default); |
|
||||||
|
|
||||||
$items = explode('|', $field_value); |
|
||||||
$items = array_diff($items, array('')); |
|
||||||
|
|
||||||
if (! empty($items)) |
|
||||||
{ |
|
||||||
foreach($items as $item) |
|
||||||
{ |
|
||||||
if ($item) |
|
||||||
{ |
|
||||||
if ($tpl_empty) |
|
||||||
{ |
|
||||||
$item = $default_items[(int)$item-1]; |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
$field_param = explode('|', $item); |
|
||||||
|
|
||||||
$item = preg_replace_callback( |
|
||||||
'/\[tag:parametr:(\d+)\]/i', |
|
||||||
function($data) use($field_param, $default_items) |
|
||||||
{ |
|
||||||
return $default_items[$field_param[(int)$data[1]]-1]; |
|
||||||
}, |
|
||||||
$tpl |
|
||||||
); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
$res[] = $item; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'doc', $_tpl); |
|
||||||
|
|
||||||
if ($tpl_empty && $tpl_file) |
|
||||||
{ |
|
||||||
$AVE_Template->assign('field_id', $field_id); |
|
||||||
$AVE_Template->assign('field_value', $res); |
|
||||||
$AVE_Template->assign('rubric_id', $rubric_id); |
|
||||||
$AVE_Template->assign('default', $default_items); |
|
||||||
|
|
||||||
return $AVE_Template->fetch($tpl_file); |
|
||||||
} |
|
||||||
|
|
||||||
return (! empty($res)) |
|
||||||
? implode(PHP_EOL, $res) |
|
||||||
: $tpl; |
|
||||||
|
|
||||||
break; |
|
||||||
|
|
||||||
case 'req': |
|
||||||
$default_items = explode(',', $default); |
|
||||||
|
|
||||||
$items = explode('|', $field_value); |
|
||||||
$items = array_diff($items, array('')); |
|
||||||
|
|
||||||
if (! empty($items)) |
|
||||||
{ |
|
||||||
foreach($items as $item) |
|
||||||
{ |
|
||||||
if ($item) |
|
||||||
{ |
|
||||||
if ($tpl_empty) |
|
||||||
{ |
|
||||||
$item = $default_items[(int)$item-1]; |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
$field_param = explode('|', $item); |
|
||||||
|
|
||||||
$item = preg_replace_callback( |
|
||||||
'/\[tag:parametr:(\d+)\]/i', |
|
||||||
function($data) use($field_param, $default_items) |
|
||||||
{ |
|
||||||
return $default_items[$field_param[(int)$data[1]]-1]; |
|
||||||
}, |
|
||||||
$tpl |
|
||||||
); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
$res[] = $item; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'req', $_tpl); |
|
||||||
|
|
||||||
if ($tpl_empty && $tpl_file) |
|
||||||
{ |
|
||||||
$AVE_Template->assign('field_id', $field_id); |
|
||||||
$AVE_Template->assign('field_value', $res); |
|
||||||
$AVE_Template->assign('rubric_id', $rubric_id); |
|
||||||
$AVE_Template->assign('default', $default_items); |
|
||||||
|
|
||||||
return $AVE_Template->fetch($tpl_file); |
|
||||||
} |
|
||||||
|
|
||||||
return (! empty($res)) |
|
||||||
? implode(PHP_EOL, $res) |
|
||||||
: $tpl; |
|
||||||
|
|
||||||
break; |
|
||||||
|
|
||||||
case 'name': |
|
||||||
return $AVE_Template->get_config_vars('name'); |
|
||||||
break; |
|
||||||
|
|
||||||
} |
|
||||||
return ($res ? $res : $field_value); |
|
||||||
} |
|
||||||
?> |
|
@ -0,0 +1,163 @@ |
|||||||
|
<? |
||||||
|
|
||||||
|
/** |
||||||
|
* AVE.cms |
||||||
|
* |
||||||
|
* @package AVE.cms |
||||||
|
* @version 3.x |
||||||
|
* @filesource |
||||||
|
* @copyright © 2007-2015 AVE.cms, http://www.ave-cms.ru |
||||||
|
* |
||||||
|
* @license GPL v.2 |
||||||
|
*/ |
||||||
|
|
||||||
|
// Мульти чекбокс |
||||||
|
function get_field_multi_checkbox($field_value, $action, $field_id=0, $tpl='', $tpl_empty=0, &$maxlength=null, $document_fields=array(), $rubric_id=0, $default=null) |
||||||
|
{ |
||||||
|
global $AVE_Template; |
||||||
|
|
||||||
|
$fld_dir = dirname(__FILE__) . '/'; |
||||||
|
$tpl_dir = $fld_dir . 'tpl/'; |
||||||
|
|
||||||
|
$lang_file = $fld_dir . 'lang/' . (defined('ACP') ? $_SESSION['admin_language'] : $_SESSION['user_language']) . '.txt'; |
||||||
|
|
||||||
|
$AVE_Template->config_load($lang_file, 'lang'); |
||||||
|
$AVE_Template->assign('config_vars', $AVE_Template->get_config_vars()); |
||||||
|
$AVE_Template->config_load($lang_file, 'admin'); |
||||||
|
|
||||||
|
$res = array(); |
||||||
|
|
||||||
|
switch ($action) |
||||||
|
{ |
||||||
|
case 'edit': |
||||||
|
$default_items = explode(',', $default); |
||||||
|
$default_items = array_diff($default_items, array('')); |
||||||
|
|
||||||
|
$field_value_array = explode('|', $field_value); |
||||||
|
$field_value_array = array_values(array_diff($field_value_array, array(''))); |
||||||
|
|
||||||
|
$AVE_Template->assign('items', $default_items); |
||||||
|
$AVE_Template->assign('used', $field_value_array); |
||||||
|
$AVE_Template->assign('doc_id', (isset($_REQUEST['Id']) ? (int)$_REQUEST['Id'] : 0)); |
||||||
|
$AVE_Template->assign('field_id', $field_id); |
||||||
|
$AVE_Template->assign('field_value', $field_value); |
||||||
|
|
||||||
|
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'admin'); |
||||||
|
|
||||||
|
return $AVE_Template->fetch($tpl_file); |
||||||
|
break; |
||||||
|
|
||||||
|
case 'doc': |
||||||
|
$default_items = explode(',', $default); |
||||||
|
|
||||||
|
$items = explode('|', $field_value); |
||||||
|
$items = array_diff($items, array('')); |
||||||
|
|
||||||
|
if (! empty($items)) |
||||||
|
{ |
||||||
|
foreach($items as $item) |
||||||
|
{ |
||||||
|
if ($item) |
||||||
|
{ |
||||||
|
if ($tpl_empty) |
||||||
|
{ |
||||||
|
$item = $default_items[(int)$item-1]; |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
$field_param = explode('|', $item); |
||||||
|
|
||||||
|
$item = preg_replace_callback( |
||||||
|
'/\[tag:parametr:(\d+)\]/i', |
||||||
|
function($data) use($field_param, $default_items) |
||||||
|
{ |
||||||
|
return $default_items[$field_param[(int)$data[1]]-1]; |
||||||
|
}, |
||||||
|
$tpl |
||||||
|
); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
$res[] = $item; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'doc'); |
||||||
|
|
||||||
|
if ($tpl_empty && $tpl_file) |
||||||
|
{ |
||||||
|
$AVE_Template->assign('field_id', $field_id); |
||||||
|
$AVE_Template->assign('field_value', $res); |
||||||
|
$AVE_Template->assign('rubric_id', $rubric_id); |
||||||
|
$AVE_Template->assign('default', $default_items); |
||||||
|
|
||||||
|
return $AVE_Template->fetch($tpl_file); |
||||||
|
} |
||||||
|
|
||||||
|
return (! empty($res)) |
||||||
|
? implode(PHP_EOL, $res) |
||||||
|
: $tpl; |
||||||
|
|
||||||
|
break; |
||||||
|
|
||||||
|
case 'req': |
||||||
|
$default_items = explode(',', $default); |
||||||
|
|
||||||
|
$items = explode('|', $field_value); |
||||||
|
$items = array_diff($items, array('')); |
||||||
|
|
||||||
|
if (! empty($items)) |
||||||
|
{ |
||||||
|
foreach($items as $item) |
||||||
|
{ |
||||||
|
if ($item) |
||||||
|
{ |
||||||
|
if ($tpl_empty) |
||||||
|
{ |
||||||
|
$item = $default_items[(int)$item-1]; |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
$field_param = explode('|', $item); |
||||||
|
|
||||||
|
$item = preg_replace_callback( |
||||||
|
'/\[tag:parametr:(\d+)\]/i', |
||||||
|
function($data) use($field_param, $default_items) |
||||||
|
{ |
||||||
|
return $default_items[$field_param[(int)$data[1]]-1]; |
||||||
|
}, |
||||||
|
$tpl |
||||||
|
); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
$res[] = $item; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'req'); |
||||||
|
|
||||||
|
if ($tpl_empty && $tpl_file) |
||||||
|
{ |
||||||
|
$AVE_Template->assign('field_id', $field_id); |
||||||
|
$AVE_Template->assign('field_value', $res); |
||||||
|
$AVE_Template->assign('rubric_id', $rubric_id); |
||||||
|
$AVE_Template->assign('default', $default_items); |
||||||
|
|
||||||
|
return $AVE_Template->fetch($tpl_file); |
||||||
|
} |
||||||
|
|
||||||
|
return (! empty($res)) |
||||||
|
? implode(PHP_EOL, $res) |
||||||
|
: $tpl; |
||||||
|
|
||||||
|
break; |
||||||
|
|
||||||
|
case 'name': |
||||||
|
return $AVE_Template->get_config_vars('name'); |
||||||
|
break; |
||||||
|
|
||||||
|
} |
||||||
|
return ($res ? $res : $field_value); |
||||||
|
} |
||||||
|
?> |
@ -1,250 +1,252 @@ |
|||||||
<?php |
<?php |
||||||
|
|
||||||
/** |
/** |
||||||
* AVE.cms |
* AVE.cms |
||||||
* |
* |
||||||
* @package AVE.cms |
* @package AVE.cms |
||||||
* @version 3.x |
* @version 3.x |
||||||
* @filesource |
* @filesource |
||||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
||||||
* |
* |
||||||
* @license GPL v.2 |
* @license GPL v.2 |
||||||
*/ |
*/ |
||||||
|
|
||||||
|
|
||||||
/** |
/** |
||||||
* Отправка e-Mail |
* Отправка e-Mail |
||||||
* |
* |
||||||
* @param string $to - email получателя |
* @param string $to - email получателя |
||||||
* @param string $body - текст сообщения |
* @param string $body - текст сообщения |
||||||
* @param string $subject - тема сообщения |
* @param string $subject - тема сообщения |
||||||
* @param string $from_email - e-mail отправителя |
* @param string $from_email - e-mail отправителя |
||||||
* @param string $from_name - имя отправителя |
* @param string $from_name - имя отправителя |
||||||
* @param string $type - содержимое (html или text) |
* @param string $type - содержимое (html или text) |
||||||
* @param array $attach - пути файлов вложений |
* @param array $attach - пути файлов вложений |
||||||
* @param bool $saveattach - сохранять вложения после отправки в ATTACH_DIR? |
* @param bool $saveattach - сохранять вложения после отправки в ATTACH_DIR? |
||||||
* @param bool $signature - добавлять подпись из общих настроек? |
* @param bool $signature - добавлять подпись из общих настроек? |
||||||
*/ |
*/ |
||||||
if ( ! function_exists('send_mail')) |
if (! function_exists('send_mail')) |
||||||
{ |
|
||||||
function send_mail($to='', $body='', $subject='', $from_email='', $from_name='', $type='text', $attach=array(), $saveattach=true, $signature=true) |
|
||||||
{ |
{ |
||||||
require_once BASE_DIR . '/lib/SwiftMailer/swift_required.php'; |
function send_mail($to='', $body='', $subject='', $from_email='', $from_name='', $type='text', $attach=array(), $saveattach=true, $signature=true) |
||||||
|
{ |
||||||
|
require_once BASE_DIR . '/lib/SwiftMailer/swift_required.php'; |
||||||
|
|
||||||
unset($transport, $message, $mailer); |
unset($transport, $message, $mailer); |
||||||
|
|
||||||
$to = str_nospace($to); |
$to = str_nospace($to); |
||||||
|
|
||||||
$from_email = str_nospace($from_email); |
$from_email = str_nospace($from_email); |
||||||
|
|
||||||
// Определяем тип письма |
// Определяем тип письма |
||||||
$type = ((strtolower($type) == 'html' || strtolower($type) == 'text/html') ? 'text/html' : 'text/plain'); |
$type = ((strtolower($type) == 'html' || strtolower($type) == 'text/html') ? 'text/html' : 'text/plain'); |
||||||
|
|
||||||
// Добавляем подпись, если просили |
// Добавляем подпись, если просили |
||||||
if ($signature) |
if ($signature) |
||||||
{ |
|
||||||
if ($type == 'text/html') |
|
||||||
{ |
|
||||||
$signature = '<br><br>' . nl2br(get_settings('mail_signature')); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
{ |
||||||
$signature = "\r\n\r\n" . get_settings('mail_signature'); |
if ($type == 'text/html') |
||||||
|
{ |
||||||
|
$signature = '<br><br>' . nl2br(get_settings('mail_signature')); |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
$signature = "\r\n\r\n" . get_settings('mail_signature'); |
||||||
|
} |
||||||
} |
} |
||||||
} |
else $signature = ''; |
||||||
else $signature = ''; |
|
||||||
|
|
||||||
// Составляем тело письма |
// Составляем тело письма |
||||||
$body = stripslashes($body) . $signature; |
$body = stripslashes($body) . $signature; |
||||||
|
|
||||||
if ($type == 'text/html') |
if ($type == 'text/html') |
||||||
{ |
{ |
||||||
$body = str_replace(array("\t","\r","\n"),'',$body); |
$body = str_replace(array("\t","\r","\n"),'',$body); |
||||||
$body = str_replace(array(' ','> <'),array(' ','><'),$body); |
$body = str_replace(array(' ','> <'),array(' ','><'),$body); |
||||||
} |
} |
||||||
|
|
||||||
// Формируем письмо |
// Формируем письмо |
||||||
$message = Swift_Message::newInstance($subject) |
$message = Swift_Message::newInstance($subject) |
||||||
-> setFrom(array($from_email => $from_name)) |
-> setFrom(array($from_email => $from_name)) |
||||||
-> setTo($to) |
-> setTo($to) |
||||||
-> setContentType($type) |
-> setContentType($type) |
||||||
-> setBody($body) |
-> setBody($body) |
||||||
-> setMaxLineLength((int)get_settings('mail_word_wrap')); |
-> setMaxLineLength((int)get_settings('mail_word_wrap')); |
||||||
|
|
||||||
// Прикрепляем вложения |
// Прикрепляем вложения |
||||||
if ($attach) |
if ($attach) |
||||||
{ |
|
||||||
foreach ($attach as $attach_file) |
|
||||||
{ |
{ |
||||||
$message -> attach(Swift_Attachment::fromPath(trim($attach_file))); |
foreach ($attach as $attach_file) |
||||||
|
{ |
||||||
|
$message -> attach(Swift_Attachment::fromPath(trim($attach_file))); |
||||||
|
} |
||||||
} |
} |
||||||
} |
|
||||||
|
|
||||||
// Выбираем метод отправки и формируем транспорт |
// Выбираем метод отправки и формируем транспорт |
||||||
switch (get_settings('mail_type')) |
switch (get_settings('mail_type')) |
||||||
{ |
{ |
||||||
default: |
default: |
||||||
case 'mail': |
case 'mail': |
||||||
$transport = Swift_MailTransport::newInstance(); |
$transport = Swift_MailTransport::newInstance(); |
||||||
break; |
break; |
||||||
|
|
||||||
case 'smtp': |
case 'smtp': |
||||||
$transport = Swift_SmtpTransport::newInstance(stripslashes(get_settings('mail_host')), (int)get_settings('mail_port')); |
$transport = Swift_SmtpTransport::newInstance(stripslashes(get_settings('mail_host')), (int)get_settings('mail_port')); |
||||||
|
|
||||||
// Добавляем шифрование |
// Добавляем шифрование |
||||||
$smtp_encrypt = get_settings('mail_smtp_encrypt'); |
$smtp_encrypt = get_settings('mail_smtp_encrypt'); |
||||||
if($smtp_encrypt) |
if($smtp_encrypt) |
||||||
$transport |
$transport |
||||||
->setEncryption(strtolower(stripslashes($smtp_encrypt))); |
->setEncryption(strtolower(stripslashes($smtp_encrypt))); |
||||||
|
|
||||||
// Имя пользователя/пароль |
// Имя пользователя/пароль |
||||||
$smtp_user = get_settings('mail_smtp_login'); |
$smtp_user = get_settings('mail_smtp_login'); |
||||||
$smtp_pass = get_settings('mail_smtp_pass'); |
$smtp_pass = get_settings('mail_smtp_pass'); |
||||||
if($smtp_user) |
if($smtp_user) |
||||||
$transport |
$transport |
||||||
->setUsername(stripslashes($smtp_user)) |
->setUsername(stripslashes($smtp_user)) |
||||||
->setPassword(stripslashes($smtp_pass)); |
->setPassword(stripslashes($smtp_pass)); |
||||||
break; |
break; |
||||||
|
|
||||||
case 'sendmail': |
case 'sendmail': |
||||||
$transport = Swift_SendmailTransport::newInstance(get_settings('mail_sendmail_path')); |
$transport = Swift_SendmailTransport::newInstance(get_settings('mail_sendmail_path')); |
||||||
break; |
break; |
||||||
} |
} |
||||||
|
|
||||||
// Сохраняем вложения в ATTACH_DIR, если просили |
// Сохраняем вложения в ATTACH_DIR, если просили |
||||||
if ($attach && $saveattach) |
if ($attach && $saveattach) |
||||||
{ |
|
||||||
$attach_dir = BASE_DIR . '/tmp/' . ATTACH_DIR . '/'; |
|
||||||
foreach ($attach as $file_path) |
|
||||||
{ |
{ |
||||||
if ($file_path && file_exists($file_path)) |
$attach_dir = BASE_DIR . '/tmp/' . ATTACH_DIR . '/'; |
||||||
|
foreach ($attach as $file_path) |
||||||
{ |
{ |
||||||
$file_name = basename($file_path); |
if ($file_path && file_exists($file_path)) |
||||||
$file_name = str_replace(' ','',mb_strtolower(trim($file_name))); |
|
||||||
if (file_exists($attach_dir . $file_name)) |
|
||||||
{ |
|
||||||
$file_name = rand(1000, 9999) . '_' . $file_name; |
|
||||||
} |
|
||||||
$file_path_new = $attach_dir . $file_name; |
|
||||||
if (!@move_uploaded_file($file_path,$file_path_new)) |
|
||||||
{ |
{ |
||||||
copy($file_path,$file_path_new); |
$file_name = basename($file_path); |
||||||
|
$file_name = str_replace(' ','',mb_strtolower(trim($file_name))); |
||||||
|
if (file_exists($attach_dir . $file_name)) |
||||||
|
{ |
||||||
|
$file_name = rand(1000, 9999) . '_' . $file_name; |
||||||
|
} |
||||||
|
$file_path_new = $attach_dir . $file_name; |
||||||
|
if (!@move_uploaded_file($file_path,$file_path_new)) |
||||||
|
{ |
||||||
|
copy($file_path,$file_path_new); |
||||||
|
} |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
} |
|
||||||
|
|
||||||
// Отправляем письмо |
// Отправляем письмо |
||||||
/** @var $transport TYPE_NAME */ |
/** @var $transport TYPE_NAME */ |
||||||
$mailer = Swift_Mailer::newInstance($transport); |
$mailer = Swift_Mailer::newInstance($transport); |
||||||
|
|
||||||
if (!@$mailer -> send($message, $failures)) |
if (!@$mailer -> send($message, $failures)) |
||||||
{ |
{ |
||||||
reportLog('Не удалось отправить письма следующим адресатам: ' . implode(',',$failures)); |
reportLog('Не удалось отправить письма следующим адресатам: ' . implode(',',$failures)); |
||||||
return $failures; |
return $failures; |
||||||
} |
} |
||||||
|
|
||||||
|
} |
||||||
} |
} |
||||||
} |
|
||||||
|
|
||||||
if ( ! function_exists('safe_mailto')) |
if ( ! function_exists('safe_mailto')) |
||||||
{ |
|
||||||
function safe_mailto($email, $title = '', $attributes = '') |
|
||||||
{ |
{ |
||||||
$title = (string) $title; |
function safe_mailto($email, $title = '', $attributes = '') |
||||||
|
|
||||||
if ($title == "") |
|
||||||
{ |
{ |
||||||
$title = $email; |
$title = (string) $title; |
||||||
} |
|
||||||
|
|
||||||
for ($i = 0; $i < 16; $i++) |
if ($title == "") |
||||||
{ |
{ |
||||||
$x[] = substr('<a href="mailto:', $i, 1); |
$title = $email; |
||||||
} |
} |
||||||
|
|
||||||
for ($i = 0; $i < strlen($email); $i++) |
for ($i = 0; $i < 16; $i++) |
||||||
{ |
{ |
||||||
$x[] = "|".ord(substr($email, $i, 1)); |
$x[] = substr('<a href="mailto:', $i, 1); |
||||||
} |
} |
||||||
|
|
||||||
$x[] = '"'; |
for ($i = 0; $i < strlen($email); $i++) |
||||||
|
{ |
||||||
|
$x[] = "|".ord(substr($email, $i, 1)); |
||||||
|
} |
||||||
|
|
||||||
if ($attributes != '') |
$x[] = '"'; |
||||||
{ |
|
||||||
if (is_array($attributes)) |
if ($attributes != '') |
||||||
{ |
{ |
||||||
foreach ($attributes as $key => $val) |
if (is_array($attributes)) |
||||||
{ |
{ |
||||||
$x[] = ' '.$key.'="'; |
foreach ($attributes as $key => $val) |
||||||
for ($i = 0; $i < strlen($val); $i++) |
|
||||||
{ |
{ |
||||||
$x[] = "|".ord(substr($val, $i, 1)); |
$x[] = ' '.$key.'="'; |
||||||
|
for ($i = 0; $i < strlen($val); $i++) |
||||||
|
{ |
||||||
|
$x[] = "|".ord(substr($val, $i, 1)); |
||||||
|
} |
||||||
|
$x[] = '"'; |
||||||
} |
} |
||||||
$x[] = '"'; |
|
||||||
} |
} |
||||||
} |
else |
||||||
else |
|
||||||
{ |
|
||||||
for ($i = 0; $i < strlen($attributes); $i++) |
|
||||||
{ |
{ |
||||||
$x[] = substr($attributes, $i, 1); |
for ($i = 0; $i < strlen($attributes); $i++) |
||||||
|
{ |
||||||
|
$x[] = substr($attributes, $i, 1); |
||||||
|
} |
||||||
} |
} |
||||||
} |
} |
||||||
} |
|
||||||
|
|
||||||
$x[] = '>'; |
$x[] = '>'; |
||||||
|
|
||||||
$temp = array(); |
$temp = array(); |
||||||
|
|
||||||
for ($i = 0; $i < strlen($title); $i++) |
for ($i = 0; $i < strlen($title); $i++) |
||||||
{ |
|
||||||
$ordinal = ord($title[$i]); |
|
||||||
|
|
||||||
if ($ordinal < 128) |
|
||||||
{ |
{ |
||||||
$x[] = "|".$ordinal; |
$ordinal = ord($title[$i]); |
||||||
} |
|
||||||
else |
if ($ordinal < 128) |
||||||
{ |
|
||||||
if (count($temp) == 0) |
|
||||||
{ |
{ |
||||||
$count = ($ordinal < 224) ? 2 : 3; |
$x[] = "|".$ordinal; |
||||||
} |
} |
||||||
|
else |
||||||
$temp[] = $ordinal; |
|
||||||
if (count($temp) == $count) |
|
||||||
{ |
{ |
||||||
$number = ($count == 3) ? (($temp['0'] % 16) * 4096) + (($temp['1'] % 64) * 64) + ($temp['2'] % 64) : (($temp['0'] % 32) * 64) + ($temp['1'] % 64); |
if (count($temp) == 0) |
||||||
$x[] = "|".$number; |
{ |
||||||
$count = 1; |
$count = ($ordinal < 224) ? 2 : 3; |
||||||
$temp = array(); |
} |
||||||
|
|
||||||
|
$temp[] = $ordinal; |
||||||
|
if (count($temp) == $count) |
||||||
|
{ |
||||||
|
$number = ($count == 3) ? (($temp['0'] % 16) * 4096) + (($temp['1'] % 64) * 64) + ($temp['2'] % 64) : (($temp['0'] % 32) * 64) + ($temp['1'] % 64); |
||||||
|
$x[] = "|".$number; |
||||||
|
$count = 1; |
||||||
|
$temp = array(); |
||||||
|
} |
||||||
} |
} |
||||||
} |
} |
||||||
} |
|
||||||
|
|
||||||
$x[] = '<'; $x[] = '/'; $x[] = 'a'; $x[] = '>'; |
|
||||||
|
|
||||||
$x = array_reverse($x); |
$x[] = '<'; $x[] = '/'; $x[] = 'a'; $x[] = '>'; |
||||||
ob_start(); |
|
||||||
|
$x = array_reverse($x); |
||||||
?><script type="text/javascript"> |
ob_start(); |
||||||
//<![CDATA[ |
|
||||||
var l=new Array(); |
?><script type="text/javascript"> |
||||||
<?php |
//<![CDATA[ |
||||||
$i = 0; |
var l=new Array(); |
||||||
foreach ($x as $val){ ?>l[<?php echo $i++; ?>]='<?php echo $val; ?>';<?php } ?> |
<?php |
||||||
|
$i = 0; |
||||||
for (var i = l.length-1; i >= 0; i=i-1){ |
foreach ($x as $val){ ?>l[<?php echo $i++; ?>]='<?php echo $val; ?>';<?php } ?> |
||||||
if (l[i].substring(0, 1) == '|') document.write("&#"+unescape(l[i].substring(1))+";"); |
|
||||||
else document.write(unescape(l[i]));} |
for (var i = l.length-1; i >= 0; i=i-1){ |
||||||
//]]> |
if |
||||||
</script><?php |
(l[i].substring(0, 1) == '|') document.write("&#"+unescape(l[i].substring(1))+";"); |
||||||
|
else |
||||||
$buffer = ob_get_contents(); |
document.write(unescape(l[i]));} |
||||||
ob_end_clean(); |
//]]> |
||||||
return $buffer; |
</script><?php |
||||||
|
|
||||||
|
$buffer = ob_get_contents(); |
||||||
|
ob_end_clean(); |
||||||
|
return $buffer; |
||||||
|
} |
||||||
} |
} |
||||||
} |
|
||||||
|
|
||||||
?> |
?> |
@ -1,71 +1,72 @@ |
|||||||
<?php |
<?php |
||||||
|
|
||||||
/** |
/** |
||||||
* AVE.cms |
* AVE.cms |
||||||
* |
* |
||||||
* @package AVE.cms |
* @package AVE.cms |
||||||
* @version 3.x |
* @version 3.x |
||||||
* @filesource |
* @filesource |
||||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
||||||
* |
* |
||||||
* @license GPL v.2 |
* @license GPL v.2 |
||||||
*/ |
*/ |
||||||
|
|
||||||
/** |
/** |
||||||
* Функция формирует глобальный массив $mod с элементами: |
* Функция формирует глобальный массив $mod с элементами: |
||||||
* <pre> |
* <pre> |
||||||
* tpl_dir путь к папке с шаблонами модуля |
* tpl_dir путь к папке с шаблонами модуля |
||||||
* theme_folder имя папки с файлами дизайна |
* theme_folder имя папки с файлами дизайна |
||||||
* config_vars массив с языковыми переменными модуля |
* config_vars массив с языковыми переменными модуля |
||||||
* </pre> |
* </pre> |
||||||
* Формирует и передаёт в шаблонизатор: |
* Формирует и передаёт в шаблонизатор: |
||||||
* <pre> |
* <pre> |
||||||
* $tpl_dir путь к папке с шаблонами модуля |
* $tpl_dir путь к папке с шаблонами модуля |
||||||
* $mod_dir имя папки с модулями |
* $mod_dir имя папки с модулями |
||||||
* $config_vars массив с языковыми переменными модуля |
* $config_vars массив с языковыми переменными модуля |
||||||
* </pre> |
* </pre> |
||||||
* Регистрирует в шаблонизаторе функцию in_array |
* Регистрирует в шаблонизаторе функцию in_array |
||||||
* |
* |
||||||
* @param string $modulepath имя папки модуля |
* @param string $modulepath имя папки модуля |
||||||
* @param string $lang_section секция языкового файла |
* @param string $lang_section секция языкового файла |
||||||
*/ |
*/ |
||||||
function set_module_globals($modulepath, $lang_section = false) |
function set_module_globals($modulepath, $lang_section = false) |
||||||
{ |
{ |
||||||
global $mod, $AVE_Template; |
global $mod, $AVE_Template; |
||||||
|
|
||||||
$tpl_dir = BASE_DIR . '/modules/' . $modulepath . '/templates/'; |
$tpl_dir = BASE_DIR . '/modules/' . $modulepath . '/templates/'; |
||||||
$lang_file = BASE_DIR . '/modules/' . $modulepath . '/lang/' . $_SESSION['user_language'] . '.txt'; |
$lang_file = BASE_DIR . '/modules/' . $modulepath . '/lang/' . $_SESSION['user_language'] . '.txt'; |
||||||
|
|
||||||
if (!file_exists($lang_file)) |
if (!file_exists($lang_file)) |
||||||
{ |
{ |
||||||
$lang_file = BASE_DIR . '/modules/' . $modulepath . '/lang/ru.txt'; |
$lang_file = BASE_DIR . '/modules/' . $modulepath . '/lang/ru.txt'; |
||||||
} |
} |
||||||
|
|
||||||
if (!file_exists($lang_file)) |
if (!file_exists($lang_file)) |
||||||
{ |
{ |
||||||
display_notice('Ошибка! Отсутствует языковой файл. Пожалуйста, проверьте язык, установленный по умолчанию, в файле '.ABS_PATH.'inc/config.php'); |
display_notice('Ошибка! Отсутствует языковой файл. Пожалуйста, проверьте язык, установленный по умолчанию, в файле '.ABS_PATH.'inc/config.php'); |
||||||
exit; |
exit; |
||||||
} |
} |
||||||
|
|
||||||
if ($lang_section === false) |
if ($lang_section === false) |
||||||
{ |
{ |
||||||
$AVE_Template->config_load($lang_file); |
$AVE_Template->config_load($lang_file); |
||||||
} |
} |
||||||
else |
else |
||||||
{ |
{ |
||||||
$AVE_Template->config_load($lang_file, $lang_section); |
$AVE_Template->config_load($lang_file, $lang_section); |
||||||
} |
} |
||||||
$config_vars = $AVE_Template->get_config_vars(); |
|
||||||
|
|
||||||
$AVE_Template->assign('tpl_dir', $tpl_dir); |
$config_vars = $AVE_Template->get_config_vars(); |
||||||
$AVE_Template->assign('mod_dir', BASE_DIR . '/modules'); |
|
||||||
$AVE_Template->assign('config_vars', $config_vars); |
|
||||||
|
|
||||||
$mod['tpl_dir'] = $tpl_dir; |
$AVE_Template->assign('tpl_dir', $tpl_dir); |
||||||
$mod['theme_folder'] = defined('THEME_FOLDER') ? THEME_FOLDER : DEFAULT_THEME_FOLDER; |
$AVE_Template->assign('mod_dir', BASE_DIR . '/modules'); |
||||||
$mod['config_vars'] = $config_vars; |
$AVE_Template->assign('config_vars', $config_vars); |
||||||
|
|
||||||
$AVE_Template->register_function('in_array', 'in_array'); |
$mod['tpl_dir'] = $tpl_dir; |
||||||
} |
$mod['theme_folder'] = defined('THEME_FOLDER') ? THEME_FOLDER : DEFAULT_THEME_FOLDER; |
||||||
|
$mod['config_vars'] = $config_vars; |
||||||
|
|
||||||
|
$AVE_Template->register_function('in_array', 'in_array'); |
||||||
|
} |
||||||
|
|
||||||
?> |
?> |
@ -1,141 +1,141 @@ |
|||||||
<?php |
<?php |
||||||
|
|
||||||
/** |
/** |
||||||
* AVE.cms |
* AVE.cms |
||||||
* |
* |
||||||
* @package AVE.cms |
* @package AVE.cms |
||||||
* @version 3.x |
* @version 3.x |
||||||
* @filesource |
* @filesource |
||||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
||||||
* |
* |
||||||
* @license GPL v.2 |
* @license GPL v.2 |
||||||
*/ |
*/ |
||||||
|
|
||||||
/** |
/** |
||||||
* Текущая страница |
* Текущая страница |
||||||
* |
* |
||||||
* @param string $type тип постраничной навигации, |
* @param string $type тип постраничной навигации, |
||||||
* допустимые значения: page, apage, artpage |
* допустимые значения: page, apage, artpage |
||||||
* @return int номер текущей страницы |
* @return int номер текущей страницы |
||||||
*/ |
*/ |
||||||
function get_current_page($type = 'page') |
function get_current_page($type = 'page') |
||||||
{ |
|
||||||
if (!in_array($type, array('page', 'apage', 'artpage'))) return 1; |
|
||||||
|
|
||||||
$page = (isset($_REQUEST[$type]) && is_numeric($_REQUEST[$type])) ? $_REQUEST[$type] : 1; |
|
||||||
|
|
||||||
return (int)$page; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Постраничная навигация для запросов и модулей |
|
||||||
* |
|
||||||
* @param int $total_pages количество страниц в документе |
|
||||||
* @param string $type тип постраничной навигации, |
|
||||||
* допустимые значения: page, apage, artpage |
|
||||||
* @param string $template_label шаблон метки навигации |
|
||||||
* @param string $navi_box контейнер постраничной навигации %s |
|
||||||
* @return string HTML-код постраничной навигации |
|
||||||
*/ |
|
||||||
|
|
||||||
function get_pagination($total_pages, $type, $template_label, $navi_box = '') |
|
||||||
{ |
|
||||||
$nav = ''; |
|
||||||
|
|
||||||
if (!in_array($type, array('page', 'apage', 'artpage'))) $type = 'page'; |
|
||||||
|
|
||||||
$curent_page = get_current_page($type); |
|
||||||
|
|
||||||
if ($curent_page == 1) $pages = array ($curent_page, $curent_page+1, $curent_page+2, $curent_page+3, $curent_page+4); |
|
||||||
elseif ($curent_page == 2) $pages = array ($curent_page-1, $curent_page, $curent_page+1, $curent_page+2, $curent_page+3); |
|
||||||
elseif ($curent_page+1 == $total_pages) $pages = array ($curent_page-3, $curent_page-2, $curent_page-1, $curent_page, $curent_page+1); |
|
||||||
elseif ($curent_page == $total_pages) $pages = array ($curent_page-4, $curent_page-3, $curent_page-2, $curent_page-1, $curent_page); |
|
||||||
else $pages = array ($curent_page-2, $curent_page-1, $curent_page, $curent_page+1, $curent_page+2); |
|
||||||
|
|
||||||
$pages = array_unique($pages); |
|
||||||
|
|
||||||
$link_box = trim(get_settings('link_box')); // Контенйнер для ссылок %s |
|
||||||
$separator_box = trim(get_settings('separator_box')); // Контенйнер для метки о наличии страниц кроме видимых %s |
|
||||||
$total_box = trim(get_settings('total_box')); // Контенйнер для Страница ХХХ из ХХХ %s |
|
||||||
$active_box = trim(get_settings('active_box')); // Контенйнер для активного элемента %s |
|
||||||
$total_label = trim(get_settings('total_label')); // Текст перед номерами страниц %d |
|
||||||
$start_label = trim(get_settings('start_label')); // Текст ссылки "Первая" |
|
||||||
$end_label = trim(get_settings('end_label')); // Текст ссылки "Последняя" |
|
||||||
$separator_label = trim(get_settings('separator_label')); // Текст метки о наличии страниц кроме видимых |
|
||||||
$next_label = trim(get_settings('next_label')); // Текст ссылки "Следующая" |
|
||||||
$prev_label = trim(get_settings('prev_label')); // Текст ссылки "Предыдущая" |
|
||||||
|
|
||||||
// Первая |
|
||||||
if ($total_pages > 5 && $curent_page > 3) |
|
||||||
{ |
{ |
||||||
$first = str_replace('data-pagination="{s}"', 'data-pagination="1"', $template_label); |
if (!in_array($type, array('page', 'apage', 'artpage'))) return 1; |
||||||
|
|
||||||
$nav .= sprintf($link_box, str_replace(array('{s}', '{t}'), $start_label, str_replace(array('&'. $type .'={s}', '&' . $type .'={s}', '/' . $type . '-{s}'), '', $first))); |
$page = (isset($_REQUEST[$type]) && is_numeric($_REQUEST[$type])) ? $_REQUEST[$type] : 1; |
||||||
if ($separator_label != '') |
|
||||||
$nav .= sprintf($separator_box, $separator_label); |
|
||||||
} |
|
||||||
|
|
||||||
// Предыдущая |
return (int)$page; |
||||||
if ($curent_page > 1) |
|
||||||
{ |
|
||||||
if ($curent_page - 1 == 1) |
|
||||||
$nav .= sprintf($link_box, str_replace(array('{s}', '{t}'), $prev_label, str_replace(array('&'. $type .'={s}', '&' . $type .'={s}', '/' . $type . '-{s}'), '', $template_label))); |
|
||||||
else |
|
||||||
$nav .= sprintf($link_box, str_replace('{t}', $prev_label, str_replace('{s}', ($curent_page - 1), $template_label))); |
|
||||||
} |
} |
||||||
|
|
||||||
foreach($pages as $val) |
/** |
||||||
|
* Постраничная навигация для запросов и модулей |
||||||
|
* |
||||||
|
* @param int $total_pages количество страниц в документе |
||||||
|
* @param string $type тип постраничной навигации, |
||||||
|
* допустимые значения: page, apage, artpage |
||||||
|
* @param string $template_label шаблон метки навигации |
||||||
|
* @param string $navi_box контейнер постраничной навигации %s |
||||||
|
* @return string HTML-код постраничной навигации |
||||||
|
*/ |
||||||
|
|
||||||
|
function get_pagination($total_pages, $type, $template_label, $navi_box = '') |
||||||
{ |
{ |
||||||
if ($val >= 1 && $val <= $total_pages) |
$nav = ''; |
||||||
|
|
||||||
|
if (!in_array($type, array('page', 'apage', 'artpage'))) $type = 'page'; |
||||||
|
|
||||||
|
$curent_page = get_current_page($type); |
||||||
|
|
||||||
|
if ($curent_page == 1) $pages = array ($curent_page, $curent_page+1, $curent_page+2, $curent_page+3, $curent_page+4); |
||||||
|
elseif ($curent_page == 2) $pages = array ($curent_page-1, $curent_page, $curent_page+1, $curent_page+2, $curent_page+3); |
||||||
|
elseif ($curent_page+1 == $total_pages) $pages = array ($curent_page-3, $curent_page-2, $curent_page-1, $curent_page, $curent_page+1); |
||||||
|
elseif ($curent_page == $total_pages) $pages = array ($curent_page-4, $curent_page-3, $curent_page-2, $curent_page-1, $curent_page); |
||||||
|
else $pages = array ($curent_page-2, $curent_page-1, $curent_page, $curent_page+1, $curent_page+2); |
||||||
|
|
||||||
|
$pages = array_unique($pages); |
||||||
|
|
||||||
|
$link_box = trim(get_settings('link_box')); // Контенйнер для ссылок %s |
||||||
|
$separator_box = trim(get_settings('separator_box')); // Контенйнер для метки о наличии страниц кроме видимых %s |
||||||
|
$total_box = trim(get_settings('total_box')); // Контенйнер для Страница ХХХ из ХХХ %s |
||||||
|
$active_box = trim(get_settings('active_box')); // Контенйнер для активного элемента %s |
||||||
|
$total_label = trim(get_settings('total_label')); // Текст перед номерами страниц %d |
||||||
|
$start_label = trim(get_settings('start_label')); // Текст ссылки "Первая" |
||||||
|
$end_label = trim(get_settings('end_label')); // Текст ссылки "Последняя" |
||||||
|
$separator_label = trim(get_settings('separator_label')); // Текст метки о наличии страниц кроме видимых |
||||||
|
$next_label = trim(get_settings('next_label')); // Текст ссылки "Следующая" |
||||||
|
$prev_label = trim(get_settings('prev_label')); // Текст ссылки "Предыдущая" |
||||||
|
|
||||||
|
// Первая |
||||||
|
if ($total_pages > 5 && $curent_page > 3) |
||||||
{ |
{ |
||||||
if ($curent_page == $val) |
$first = str_replace('data-pagination="{s}"', 'data-pagination="1"', $template_label); |
||||||
{ |
|
||||||
// Текущий номер страницы (активная страница) |
$nav .= sprintf($link_box, str_replace(array('{s}', '{t}'), $start_label, str_replace(array('&'. $type .'={s}', '&' . $type .'={s}', '/' . $type . '-{s}'), '', $first))); |
||||||
$nav .= sprintf($link_box, sprintf($active_box, str_replace(array('{s}', '{t}'), $val, $curent_page))); |
if ($separator_label != '') |
||||||
} |
$nav .= sprintf($separator_box, $separator_label); |
||||||
|
} |
||||||
|
|
||||||
|
// Предыдущая |
||||||
|
if ($curent_page > 1) |
||||||
|
{ |
||||||
|
if ($curent_page - 1 == 1) |
||||||
|
$nav .= sprintf($link_box, str_replace(array('{s}', '{t}'), $prev_label, str_replace(array('&'. $type .'={s}', '&' . $type .'={s}', '/' . $type . '-{s}'), '', $template_label))); |
||||||
else |
else |
||||||
|
$nav .= sprintf($link_box, str_replace('{t}', $prev_label, str_replace('{s}', ($curent_page - 1), $template_label))); |
||||||
|
} |
||||||
|
|
||||||
|
foreach($pages as $val) |
||||||
|
{ |
||||||
|
if ($val >= 1 && $val <= $total_pages) |
||||||
{ |
{ |
||||||
if ($val == 1) |
if ($curent_page == $val) |
||||||
{ |
{ |
||||||
// Страница номер 1 |
// Текущий номер страницы (активная страница) |
||||||
$nav .= sprintf($link_box, str_replace(array('{s}', '{t}'), $val, str_replace(array('&'.$type.'={s}','&'.$type.'={s}','/'.$type.'-{s}'), '', $template_label))); |
$nav .= sprintf($link_box, sprintf($active_box, str_replace(array('{s}', '{t}'), $val, $curent_page))); |
||||||
} |
} |
||||||
else |
else |
||||||
{ |
{ |
||||||
// Остальные неактивные номера страниц |
if ($val == 1) |
||||||
$nav .= sprintf($link_box, str_replace(array('{s}', '{t}'), $val, $template_label)); |
{ |
||||||
|
// Страница номер 1 |
||||||
|
$nav .= sprintf($link_box, str_replace(array('{s}', '{t}'), $val, str_replace(array('&'.$type.'={s}','&'.$type.'={s}','/'.$type.'-{s}'), '', $template_label))); |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
// Остальные неактивные номера страниц |
||||||
|
$nav .= sprintf($link_box, str_replace(array('{s}', '{t}'), $val, $template_label)); |
||||||
|
} |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
} |
|
||||||
|
|
||||||
// Следующая |
// Следующая |
||||||
if ($curent_page < $total_pages) |
if ($curent_page < $total_pages) |
||||||
{ |
{ |
||||||
$nav .= sprintf($link_box, str_replace('{t}', $next_label, str_replace('{s}', ($curent_page + 1), $template_label))); |
$nav .= sprintf($link_box, str_replace('{t}', $next_label, str_replace('{s}', ($curent_page + 1), $template_label))); |
||||||
} |
} |
||||||
|
|
||||||
// Последняя |
// Последняя |
||||||
if ($total_pages > 5 && ($curent_page < $total_pages-2)) |
if ($total_pages > 5 && ($curent_page < $total_pages-2)) |
||||||
{ |
{ |
||||||
if ($separator_label != '') |
if ($separator_label != '') |
||||||
$nav .= sprintf($separator_box, $separator_label); |
$nav .= sprintf($separator_box, $separator_label); |
||||||
|
|
||||||
$nav .= sprintf($link_box, str_replace('{t}', $end_label, str_replace('{s}', $total_pages, $template_label))); |
$nav .= sprintf($link_box, str_replace('{t}', $end_label, str_replace('{s}', $total_pages, $template_label))); |
||||||
} |
} |
||||||
|
|
||||||
// Страница ХХХ из ХХХ |
// Страница ХХХ из ХХХ |
||||||
if ($nav != '') |
if ($nav != '') |
||||||
{ |
{ |
||||||
if ($total_label != '') |
if ($total_label != '') |
||||||
$nav = sprintf($total_box, sprintf($total_label, $curent_page, $total_pages)) . $nav; |
$nav = sprintf($total_box, sprintf($total_label, $curent_page, $total_pages)) . $nav; |
||||||
|
|
||||||
// Оборачиваем в общий контейнер |
// Оборачиваем в общий контейнер |
||||||
if ($navi_box != '') |
if ($navi_box != '') |
||||||
$nav = sprintf($navi_box, $nav); |
$nav = sprintf($navi_box, $nav); |
||||||
} |
} |
||||||
|
|
||||||
return $nav; |
return $nav; |
||||||
} |
} |
||||||
|
|
||||||
?> |
?> |
@ -1,240 +1,246 @@ |
|||||||
<?php |
<?php |
||||||
|
|
||||||
/** |
/** |
||||||
* AVE.cms |
* AVE.cms |
||||||
* |
* |
||||||
* @package AVE.cms |
* @package AVE.cms |
||||||
* @version 3.x |
* @version 3.x |
||||||
* @filesource |
* @filesource |
||||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
||||||
* |
* |
||||||
* @license GPL v.2 |
* @license GPL v.2 |
||||||
*/ |
*/ |
||||||
|
|
||||||
|
|
||||||
/** |
/** |
||||||
* Возвращаем аватар по пользователю |
* Возвращаем аватар по пользователю |
||||||
* |
* |
||||||
* @param int $id Ид пользователя- если не придет то текущий пользователь |
* @param int $id Ид пользователя- если не придет то текущий пользователь |
||||||
* @param int $size размер картинки по краю |
* @param int $size размер картинки по краю |
||||||
* @param string $prefix |
* @param string $prefix |
||||||
* @return string путь до файла с превью |
* @return string путь до файла с превью |
||||||
*/ |
*/ |
||||||
function getAvatar($id = null, $size = 58, $prefix = "") |
function getAvatar($id = null, $size = 58, $prefix = '') |
||||||
{ |
{ |
||||||
global $AVE_DB; |
global $AVE_DB; |
||||||
static $result=array(); |
|
||||||
|
static $result = array(); |
||||||
if ($id === null) $id = $_SESSION['user_id']; |
|
||||||
|
if ($id === null) |
||||||
if(!isset($result[$id])){ |
$id = $_SESSION['user_id']; |
||||||
$user=get_user_rec_by_id($id); |
|
||||||
$ava = ABS_PATH. UPLOAD_DIR .'/avatars/'.(($prefix==="")?"":$prefix).md5($user->user_name); |
if (! isset($result[$id])) |
||||||
$ava = (file_exists(BASE_DIR.$ava.'.jpg') ? $ava.'.jpg' : (file_exists(BASE_DIR.$ava.'.png') ? $ava.'.png' : (file_exists(BASE_DIR.$ava.'.gif') ? $ava.'.gif' : ''))); |
{ |
||||||
$result[$id]=$ava; |
$user = get_user_rec_by_id($id); |
||||||
|
$ava = ABS_PATH . UPLOAD_DIR . '/avatars/' . (($prefix === '') ? '' : $prefix) . md5($user->user_name); |
||||||
|
$ava = (file_exists(BASE_DIR.$ava.'.jpg') ? $ava.'.jpg' : (file_exists(BASE_DIR . $ava . '.png') ? $ava . '.png' : (file_exists(BASE_DIR.$ava.'.gif') ? $ava.'.gif' : ''))); |
||||||
|
$result[$id] = $ava; |
||||||
|
} |
||||||
|
|
||||||
|
$ava = $result[$id]; |
||||||
|
|
||||||
|
$src = (file_exists(BASE_DIR . $ava) |
||||||
|
? make_thumbnail(array('link' => $ava,'size' => 'c' . $size . 'x' . $size)) |
||||||
|
: make_thumbnail(array('link' => $AVE_DB->Query("SELECT default_avatar FROM " . PREFIX . "_user_groups WHERE user_group=" . (int)$user->user_group)->GetCell(), 'size' => 'c' . $size . 'x' . $size)) |
||||||
|
); |
||||||
|
|
||||||
|
return $src; |
||||||
} |
} |
||||||
|
|
||||||
$ava=$result[$id]; |
|
||||||
|
|
||||||
$src = (file_exists(BASE_DIR.$ava) ? |
/** |
||||||
make_thumbnail(array('link' => $ava,'size' => 'c' . $size . 'x' . $size)): |
* Устанавливаем аватар пользователю |
||||||
make_thumbnail(array('link' => $AVE_DB->Query("SELECT default_avatar FROM " . PREFIX . "_user_groups WHERE user_group=" . (int)$user->user_group)->GetCell(), 'size' => 'c' . $size . 'x' . $size)) |
* |
||||||
); |
* @param int $id Ид пользователя |
||||||
|
* @param string $avatar путь до картинки которая будет аватаром |
||||||
|
* @return bool установился аватар или нет |
||||||
|
*/ |
||||||
|
function SetAvatar($id, $avatar) |
||||||
|
{ |
||||||
|
if ($id === null) $id = $_SESSION['user_id']; |
||||||
|
|
||||||
return $src; |
$user = get_user_rec_by_id($id); |
||||||
} |
|
||||||
|
|
||||||
|
$file_ext = pathinfo($avatar, PATHINFO_EXTENSION); |
||||||
|
|
||||||
/** |
if (! file_exists($avatar)) |
||||||
* Устанавливаем аватар пользователю |
return false; |
||||||
* |
|
||||||
* @param int $id Ид пользователя |
|
||||||
* @param string $avatar путь до картинки которая будет аватаром |
|
||||||
* @return bool установился аватар или нет |
|
||||||
*/ |
|
||||||
function SetAvatar($id, $avatar) |
|
||||||
{ |
|
||||||
if ($id === null) $id = $_SESSION['user_id']; |
|
||||||
|
|
||||||
$user = get_user_rec_by_id($id); |
$new_ava = BASE_DIR . '/' . UPLOAD_DIR . '/avatars/' . md5($user->user_name) . '.' . strtolower($file_ext); |
||||||
|
|
||||||
$file_ext = pathinfo($avatar, PATHINFO_EXTENSION); |
foreach (glob(BASE_DIR . '/' . UPLOAD_DIR . '/avatars/' . md5($user->user_name) . '.*') AS $filename) |
||||||
|
@unlink($filename); |
||||||
|
|
||||||
if (! file_exists($avatar)) |
//Чистим превьюшки |
||||||
return false; |
foreach (glob(BASE_DIR . '/' . UPLOAD_DIR . '/avatars/' . THUMBNAIL_DIR . '/' . md5($user->user_name) . '*.*') AS $filename) |
||||||
|
@unlink($filename); |
||||||
|
|
||||||
$new_ava = BASE_DIR . '/' . UPLOAD_DIR . '/avatars/' . md5($user->user_name) . '.' . strtolower($file_ext); |
@file_put_contents($new_ava, file_get_contents($avatar)); |
||||||
|
@unlink($avatar); |
||||||
|
|
||||||
foreach (glob(BASE_DIR . '/' . UPLOAD_DIR . '/avatars/' . md5($user->user_name) . '.*') as $filename) |
return true; |
||||||
{ |
|
||||||
@unlink($filename); |
|
||||||
} |
} |
||||||
|
|
||||||
//Чистим превьюшки |
|
||||||
foreach (glob(BASE_DIR . '/' . UPLOAD_DIR . '/avatars/' . THUMBNAIL_DIR . '/' . md5($user->user_name) . '*.*') as $filename) |
|
||||||
{ |
|
||||||
@unlink($filename); |
|
||||||
} |
|
||||||
|
|
||||||
@file_put_contents($new_ava, file_get_contents($avatar)); |
/** |
||||||
@unlink($avatar); |
* Формирование строки имени пользователя |
||||||
|
* При наличии всех параметров пытается сформировать строку <b>Имя Фамилия</b> |
||||||
return true; |
* Если задать $short=1 - формирует короткую форму <b>И. Фамилия</b> |
||||||
} |
* Когда отсутствует информация о Имени или Фамилии пытается сформировать |
||||||
|
* строку на основе имеющихся данных, а если данных нет вообще - выводит |
||||||
|
* имя анонимного пользователя которое задается в основных настройках системы. |
||||||
/** |
* |
||||||
* Формирование строки имени пользователя |
* @todo добавить параметр 'anonymous' в настройки |
||||||
* При наличии всех параметров пытается сформировать строку <b>Имя Фамилия</b> |
* |
||||||
* Если задать $short=1 - формирует короткую форму <b>И. Фамилия</b> |
* @param string $login логин пользователя |
||||||
* Когда отсутствует информация о Имени или Фамилии пытается сформировать |
* @param string $first_name имя пользователя |
||||||
* строку на основе имеющихся данных, а если данных нет вообще - выводит |
* @param string $last_name фамилия пользователя |
||||||
* имя анонимного пользователя которое задается в основных настройках системы. |
* @param int $short {0|1} признак формирования короткой формы |
||||||
* |
* @return string |
||||||
* @todo добавить параметр 'anonymous' в настройки |
*/ |
||||||
* |
function get_username($login = '', $first_name = '', $last_name = '', $short = 1) |
||||||
* @param string $login логин пользователя |
|
||||||
* @param string $first_name имя пользователя |
|
||||||
* @param string $last_name фамилия пользователя |
|
||||||
* @param int $short {0|1} признак формирования короткой формы |
|
||||||
* @return string |
|
||||||
*/ |
|
||||||
function get_username($login = '', $first_name = '', $last_name = '', $short = 1) |
|
||||||
{ |
|
||||||
if ($first_name != '' && $last_name != '') |
|
||||||
{ |
|
||||||
if ($short == 1) $first_name = mb_substr($first_name, 0, 1, 'utf-8') . '.'; |
|
||||||
return ucfirst_utf8(mb_strtolower($first_name)) . ' ' . ucfirst_utf8(mb_strtolower($last_name)); |
|
||||||
return ucfirst_utf8(mb_strtolower($login)); |
|
||||||
} |
|
||||||
elseif ($first_name != '' && $last_name == '') |
|
||||||
{ |
{ |
||||||
return ucfirst_utf8(mb_strtolower($first_name)); |
if ($first_name != '' && $last_name != '') |
||||||
|
{ |
||||||
|
if ($short == 1) |
||||||
|
$first_name = mb_substr($first_name, 0, 1, 'utf-8') . '.'; |
||||||
|
|
||||||
|
return ucfirst_utf8(mb_strtolower($first_name)) . ' ' . ucfirst_utf8(mb_strtolower($last_name)); |
||||||
|
} |
||||||
|
elseif ($first_name != '' && $last_name == '') |
||||||
|
{ |
||||||
|
return ucfirst_utf8(mb_strtolower($first_name)); |
||||||
|
} |
||||||
|
elseif ($first_name == '' && $last_name != '') |
||||||
|
{ |
||||||
|
return ucfirst_utf8(mb_strtolower($last_name)); |
||||||
|
} |
||||||
|
elseif ($login != '') |
||||||
|
{ |
||||||
|
return ucfirst_utf8(mb_strtolower($login)); |
||||||
|
} |
||||||
|
|
||||||
|
return 'Anonymous'; |
||||||
} |
} |
||||||
elseif ($first_name == '' && $last_name != '') |
|
||||||
|
|
||||||
|
/** |
||||||
|
* Возвращает запись для пользователя по идентификатору |
||||||
|
* не делает лишних запросов |
||||||
|
* |
||||||
|
* @param int $id - идентификатор пользователя |
||||||
|
* @return object |
||||||
|
*/ |
||||||
|
function get_user_rec_by_id($id) |
||||||
{ |
{ |
||||||
return ucfirst_utf8(mb_strtolower($last_name)); |
global $AVE_DB; |
||||||
|
|
||||||
|
static $users = array(); |
||||||
|
|
||||||
|
if (! isset($users[$id])) |
||||||
|
{ |
||||||
|
$row = $AVE_DB->Query(" |
||||||
|
SELECT |
||||||
|
* |
||||||
|
FROM " . PREFIX . "_users |
||||||
|
WHERE Id = '" . (int)$id . "' |
||||||
|
")->FetchRow(); |
||||||
|
|
||||||
|
$users[$id] = $row; |
||||||
|
} |
||||||
|
|
||||||
|
return $users[$id]; |
||||||
} |
} |
||||||
elseif ($login != '') |
|
||||||
|
|
||||||
|
/** |
||||||
|
* Возвращает параметры группы пользователей по идентификатору |
||||||
|
* не делает лишних запросов |
||||||
|
* |
||||||
|
* @param int $id - идентификатор группы |
||||||
|
* @return object |
||||||
|
*/ |
||||||
|
function get_usergroup_rec_by_id($id) |
||||||
{ |
{ |
||||||
return ucfirst_utf8(mb_strtolower($login)); |
global $AVE_DB; |
||||||
|
|
||||||
|
static $usergroups = array(); |
||||||
|
|
||||||
|
if (! isset($usergroups[$id])) |
||||||
|
{ |
||||||
|
$row = $AVE_DB->Query(" |
||||||
|
SELECT |
||||||
|
* |
||||||
|
FROM " . PREFIX . "_user_groups |
||||||
|
WHERE user_group = '" . (int)$id . "' |
||||||
|
")->FetchRow(); |
||||||
|
|
||||||
|
$usergroups[$id] = $row; |
||||||
|
} |
||||||
|
|
||||||
|
return $usergroups[$id]; |
||||||
|
|
||||||
} |
} |
||||||
|
|
||||||
return 'Anonymous'; |
|
||||||
} |
|
||||||
|
|
||||||
|
/** |
||||||
|
* Возвращает login пользователя по его идентификатору |
||||||
|
* |
||||||
|
* @param int $id - идентификатор пользователя |
||||||
|
* @return string |
||||||
|
*/ |
||||||
|
function get_userlogin_by_id($id) |
||||||
|
{ |
||||||
|
$rec = get_user_rec_by_id($id); |
||||||
|
|
||||||
/** |
return $rec->user_name; |
||||||
* Возвращает запись для пользователя по идентификатору |
} |
||||||
* не делает лишних запросов |
|
||||||
* |
|
||||||
* @param int $id - идентификатор пользователя |
|
||||||
* @return object |
|
||||||
*/ |
|
||||||
function get_user_rec_by_id($id){ |
|
||||||
global $AVE_DB; |
|
||||||
|
|
||||||
static $users = array(); |
|
||||||
|
|
||||||
if (!isset($users[$id])) |
/** |
||||||
|
* Возвращает имя группы пользователя по его идентификатору |
||||||
|
* |
||||||
|
* @param int $id - идентификатор группы пользователя |
||||||
|
* @return string |
||||||
|
*/ |
||||||
|
function get_usergroup_by_id($id) |
||||||
{ |
{ |
||||||
$row = $AVE_DB->Query(" |
$rec = get_usergroup_rec_by_id($id); |
||||||
SELECT |
|
||||||
* |
return $rec->user_group_name; |
||||||
FROM " . PREFIX . "_users |
|
||||||
WHERE Id = '" . (int)$id . "' |
|
||||||
")->FetchRow(); |
|
||||||
|
|
||||||
$users[$id] = $row; |
|
||||||
} |
} |
||||||
|
|
||||||
return $users[$id]; |
|
||||||
} |
|
||||||
|
|
||||||
|
/** |
||||||
|
* Возвращает email пользователя по его идентификатору |
||||||
|
* |
||||||
|
* @param int $id - идентификатор пользователя |
||||||
|
* @return string |
||||||
|
*/ |
||||||
|
function get_useremail_by_id($id) |
||||||
|
{ |
||||||
|
$rec = get_user_rec_by_id($id); |
||||||
|
|
||||||
/** |
return $rec->email; |
||||||
* Возвращает параметры группы пользователей по идентификатору |
} |
||||||
* не делает лишних запросов |
|
||||||
* |
|
||||||
* @param int $id - идентификатор группы |
|
||||||
* @return object |
|
||||||
*/ |
|
||||||
function get_usergroup_rec_by_id($id){ |
|
||||||
global $AVE_DB; |
|
||||||
|
|
||||||
static $usergroups = array(); |
|
||||||
|
|
||||||
if (!isset($usergroups[$id])) |
/** |
||||||
|
* Возвращает имя пользователя по его идентификатору |
||||||
|
* |
||||||
|
* @param int $id - идентификатор пользователя |
||||||
|
* @param int $param - Сокрашать имя (1 - да, 0 - нет) |
||||||
|
* |
||||||
|
* @return string |
||||||
|
*/ |
||||||
|
function get_username_by_id($id, $param = 1) |
||||||
{ |
{ |
||||||
$row = $AVE_DB->Query(" |
$row = get_user_rec_by_id($id); |
||||||
SELECT |
$row = (! empty($row)) |
||||||
* |
? get_username($row->user_name, $row->firstname, $row->lastname, $param) |
||||||
FROM " . PREFIX . "_user_groups |
: get_username(); |
||||||
WHERE user_group = '" . (int)$id . "' |
|
||||||
")->FetchRow(); |
return $row; |
||||||
|
|
||||||
$usergroups[$id] = $row; |
|
||||||
} |
} |
||||||
return $usergroups[$id]; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Возвращает login пользователя по его идентификатору |
|
||||||
* |
|
||||||
* @param int $id - идентификатор пользователя |
|
||||||
* @return string |
|
||||||
*/ |
|
||||||
function get_userlogin_by_id($id) |
|
||||||
{ |
|
||||||
$rec = get_user_rec_by_id($id); |
|
||||||
|
|
||||||
return $rec->user_name; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Возвращает имя группы пользователя по его идентификатору |
|
||||||
* |
|
||||||
* @param int $id - идентификатор группы пользователя |
|
||||||
* @return string |
|
||||||
*/ |
|
||||||
function get_usergroup_by_id($id) |
|
||||||
{ |
|
||||||
$rec = get_usergroup_rec_by_id($id); |
|
||||||
|
|
||||||
return $rec->user_group_name; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Возвращает email пользователя по его идентификатору |
|
||||||
* |
|
||||||
* @param int $id - идентификатор пользователя |
|
||||||
* @return string |
|
||||||
*/ |
|
||||||
function get_useremail_by_id($id) |
|
||||||
{ |
|
||||||
$rec = get_user_rec_by_id($id); |
|
||||||
|
|
||||||
return $rec->email; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Возвращает имя пользователя по его идентификатору |
|
||||||
* |
|
||||||
* @param int $id - идентификатор пользователя |
|
||||||
* @param int $param - Сокрашать имя (1 - да, 0 - нет) |
|
||||||
* |
|
||||||
* @return string |
|
||||||
*/ |
|
||||||
function get_username_by_id($id, $param = 1) |
|
||||||
{ |
|
||||||
$row = get_user_rec_by_id($id); |
|
||||||
$row = !empty($row) ? get_username($row->user_name, $row->firstname, $row->lastname, $param) : get_username(); |
|
||||||
return $row; |
|
||||||
} |
|
||||||
|
|
||||||
?> |
?> |
Loading…
Reference in new issue