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 |
||||
|
||||
/** |
||||
* 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 |
||||
*/ |
||||
protected $db_host; |
||||
|
||||
/** |
||||
* Имя пользователя |
||||
* @package AVE.cms |
||||
* @version 3.x |
||||
* @filesource |
||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
||||
* |
||||
* @var string |
||||
* @license GPL v.2 |
||||
*/ |
||||
protected $db_user; |
||||
|
||||
/** |
||||
* Пароль |
||||
* |
||||
* @var string |
||||
*/ |
||||
protected $db_pass; |
||||
class AVE_Session_DB |
||||
{ |
||||
|
||||
/** |
||||
* Имя текущей БД. |
||||
* |
||||
* @var string |
||||
*/ |
||||
protected $db_dbase; |
||||
public $sess_lifetime; |
||||
|
||||
/** |
||||
* Хост |
||||
* |
||||
* @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'); |
||||
|
||||
/** |
||||
* Префикс БД. |
||||
* |
||||
* @var string |
||||
*/ |
||||
protected $db_prefix; |
||||
$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']; |
||||
|
||||
private $mysql_connect = null; |
||||
private $mysql_db = null; |
||||
$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")); |
||||
|
||||
/* 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']; |
||||
$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_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)) |
||||
{ |
||||
$this->error(); |
||||
} |
||||
if (! $this->mysql_db = mysqli_select_db ($this->mysql_connect, $this->db_dbase)) |
||||
$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 */ |
||||
function _close() |
||||
{ |
||||
@mysqli_query($this->mysql_connect, "DELETE FROM " . PREFIX . "_sessions WHERE expiry < '" . time() . "'"); |
||||
/* Open session */ |
||||
function _open($path, $name) |
||||
{ |
||||
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 */ |
||||
function _read($ses_id) |
||||
{ |
||||
$qid = @mysqli_query($this->mysql_connect, "SELECT value, Ip FROM " . PREFIX . "_sessions WHERE sesskey = '" . $ses_id . "' AND expiry > '" . time() . "'"); |
||||
if ($this->mysql_connect !== null) |
||||
@mysqli_close($this->mysql_connect); |
||||
|
||||
if ((list($value, $ip) = @mysqli_fetch_row($qid)) && $ip == $_SERVER['REMOTE_ADDR']) |
||||
{ |
||||
return $value; |
||||
return true; |
||||
} |
||||
|
||||
return ''; |
||||
} |
||||
|
||||
/* Write new data */ |
||||
function _write($ses_id, $data) |
||||
{ |
||||
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'))")) |
||||
/* Read session */ |
||||
function _read($ses_id) |
||||
{ |
||||
$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 */ |
||||
function _destroy($ses_id) |
||||
{ |
||||
return @mysqli_query($this->mysql_connect, "DELETE FROM ".PREFIX."_sessions WHERE sesskey = '".$ses_id."'"); |
||||
} |
||||
/* Write new data */ |
||||
function _write($ses_id, $data) |
||||
{ |
||||
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 */ |
||||
function _gc($maxlifetime) |
||||
{ |
||||
$session_res = @mysqli_query($this->mysql_connect, "DELETE FROM ".PREFIX."_sessions WHERE expire < (UNIX_TIMESTAMP(NOW()) - " . (int)$maxlifetime . ")"); |
||||
return $qid; |
||||
} |
||||
|
||||
if (!$session_res) { |
||||
return false; |
||||
/* Destroy session */ |
||||
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() { |
||||
ob_start(); |
||||
header('HTTP/1.1 503 Service Temporarily Unavailable'); |
||||
header('Status: 503 Service Temporarily Unavailable'); |
||||
header('Retry-After: 3600'); |
||||
header('X-Powered-By:'); |
||||
display_notice("Error connect to MySQL."); |
||||
die; |
||||
function error() { |
||||
ob_start(); |
||||
header('HTTP/1.1 503 Service Temporarily Unavailable'); |
||||
header('Status: 503 Service Temporarily Unavailable'); |
||||
header('Retry-After: 3600'); |
||||
header('X-Powered-By:'); |
||||
display_notice("Error connect to MySQL."); |
||||
die; |
||||
} |
||||
} |
||||
} |
||||
?> |
@ -1,121 +1,119 @@
|
||||
<?php |
||||
/* |
||||
|
||||
Версия от 06.03.2018г. |
||||
|
||||
Как это работает: |
||||
1) Пользователь зашел на сайт первый раз. |
||||
2) Если есть хотя бы один параметр - сохраняет cookies |
||||
3) Если utm_history уже есть, то сохраняет данные в utm_last |
||||
4) utm_last перезаписывается при каждом новом значении, а utm_history всегда остаётся неизменной (если был передан хотя бы один параметр) |
||||
5) utm_source сохраняется всегда до закрытия браузера |
||||
|
||||
*/ |
||||
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() |
||||
/* |
||||
Версия от 06.03.2018г. |
||||
|
||||
Как это работает: |
||||
1) Пользователь зашел на сайт первый раз. |
||||
2) Если есть хотя бы один параметр - сохраняет cookies |
||||
3) Если utm_history уже есть, то сохраняет данные в utm_last |
||||
4) utm_last перезаписывается при каждом новом значении, а utm_history всегда остаётся неизменной (если был передан хотя бы один параметр) |
||||
5) utm_source сохраняется всегда до закрытия браузера |
||||
*/ |
||||
class UTMCookie |
||||
{ |
||||
//return true; //Сохранять всегда! |
||||
|
||||
$return = false; |
||||
private $parameters = array('utm_source', 'utm_medium', 'utm_campaign'); |
||||
|
||||
foreach ($this->parameters as $param) |
||||
if (isset($_GET[$param]) && $_GET[$param] != '') |
||||
$return = true; |
||||
private $utm_history = ''; |
||||
private $utm_last = ''; |
||||
private $utm_source = ''; |
||||
|
||||
return $return; |
||||
} |
||||
//Проверка параметров: Если все присутствуют - true, иначе false |
||||
private function check_parameters() |
||||
{ |
||||
//return true; //Сохранять всегда! |
||||
|
||||
//Создаёт строку с параметрами вот такого вида: utm_source=test; utm_medium=none; utm_campaign=kompaniya1; |
||||
private function create_parameters() |
||||
{ |
||||
$content = ''; |
||||
foreach($this->parameters as $param){ |
||||
$return = false; |
||||
|
||||
if (isset($_GET[$param]) && $_GET[$param] != '') |
||||
{ |
||||
$content .= $param.'='.$_GET[$param].'; '; |
||||
foreach ($this->parameters as $param) |
||||
if (isset($_GET[$param]) && $_GET[$param] != '') |
||||
$return = true; |
||||
|
||||
} |
||||
else |
||||
{ |
||||
$content .= $param.'=none; '; |
||||
} |
||||
return $return; |
||||
} |
||||
|
||||
return $content; |
||||
} |
||||
|
||||
//Сохраняет переданные параметры, если требуется |
||||
//Если utm_history присутствует, то сохраняет utm_last |
||||
public function save_parameters() |
||||
{ |
||||
if (isset($_GET['utm_source']) && trim($_GET['utm_source']) != '') |
||||
//Создаёт строку с параметрами вот такого вида: utm_source=test; utm_medium=none; utm_campaign=kompaniya1; |
||||
private function create_parameters() |
||||
{ |
||||
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 = ''; |
||||
|
||||
if (! isset($_COOKIE['utm_history']) || $_COOKIE['utm_history'] == '') |
||||
//Сохраняет переданные параметры, если требуется |
||||
//Если utm_history присутствует, то сохраняет utm_last |
||||
public function save_parameters() |
||||
{ |
||||
//Отсутствует utm_history |
||||
if($this->check_parameters() == true) |
||||
if (isset($_GET['utm_source']) && trim($_GET['utm_source']) != '') |
||||
{ |
||||
setcookie('utm_source', $_GET['utm_source']); |
||||
|
||||
$utm_history = $this->create_parameters(); |
||||
setcookie('utm_history', $utm_history, time()+15552000); //На 6 месяцев |
||||
setcookie('utm_last', ''); |
||||
$this->utm_source = $_GET['utm_source']; |
||||
} |
||||
|
||||
//$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 присутствует |
||||
|
||||
} |
||||
else |
||||
{ |
||||
//utm_history присутствует |
||||
$this->utm_history = $_COOKIE['utm_history']; |
||||
|
||||
$this->utm_history = $_COOKIE['utm_history']; |
||||
//Перезапишем utm_last, если есть данные для этого |
||||
if($this->check_parameters() == true){ |
||||
|
||||
//Перезапишем utm_last, если есть данные для этого |
||||
if($this->check_parameters() == true){ |
||||
$utm_last = $this->create_parameters(); |
||||
|
||||
$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']) |
||||
setcookie('utm_last', $utm_last, time()+15552000); //На 6 месяцев |
||||
$this->utm_last = $utm_last; |
||||
|
||||
$this->utm_last = $utm_last; |
||||
} |
||||
|
||||
} |
||||
|
||||
return true; |
||||
} |
||||
|
||||
return true; |
||||
} |
||||
|
||||
//Возвращает значение cookies |
||||
public function get_value($name = '') |
||||
{ |
||||
$name = trim($name); |
||||
//Возвращает значение cookies |
||||
public function get_value($name = '') |
||||
{ |
||||
$name = trim($name); |
||||
|
||||
if ($name == '' || ! in_array($name, array('utm_history', 'utm_last', 'utm_source'))) |
||||
$name = 'utm_history'; |
||||
if ($name == '' || ! in_array($name, array('utm_history', 'utm_last', 'utm_source'))) |
||||
$name = 'utm_history'; |
||||
|
||||
if (isset($this->$name) && $this->$name != '') |
||||
return $this->$name; |
||||
if (isset($this->$name) && $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,234 +1,231 @@
|
||||
<?php |
||||
|
||||
/** |
||||
* AVE.cms |
||||
* |
||||
* @package AVE.cms |
||||
* @version 3.x |
||||
* @filesource |
||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
||||
* |
||||
* @license GPL v.2 |
||||
*/ |
||||
|
||||
// Tags |
||||
function get_field_tags ($field_value, $action, $field_id = 0, $tpl = '', $tpl_empty = 0, &$maxlength = null, $document_fields = array(), $rubric_id = 0, $default = null, $_tpl = null) |
||||
{ |
||||
global $AVE_DB, $AVE_Template; |
||||
|
||||
$fld_dir = dirname(__FILE__) . '/'; |
||||
$tpl_dir = $fld_dir . 'tpl/'; |
||||
$fld_name = basename($fld_dir); |
||||
|
||||
$rubric_id = $rubric_id > 0 |
||||
? $rubric_id |
||||
: $_REQUEST['rubric_id'] |
||||
? (int)$_REQUEST['rubric_id'] |
||||
: $AVE_DB->Query("SELECT rubric_id FROM ".PREFIX."_documents WHERE Id = '".$_REQUEST['Id']."'")->GetCell(); |
||||
|
||||
$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'); |
||||
|
||||
switch ($action) |
||||
{ |
||||
case 'edit': |
||||
$sql = " |
||||
SELECT DISTINCT |
||||
tag |
||||
FROM |
||||
".PREFIX."_document_tags |
||||
WHERE |
||||
rubric_id = '".$rubric_id."' |
||||
ORDER BY tag ASC |
||||
"; |
||||
|
||||
$query = $AVE_DB->Query($sql); |
||||
|
||||
$field_tags = array(); |
||||
|
||||
while ($row = $query->GetCell()) |
||||
array_push($field_tags, $row); |
||||
|
||||
$field_value = explode('|', $field_value); |
||||
$field_value = array_diff($field_value, array('')); |
||||
|
||||
$total = count($field_tags); |
||||
|
||||
$field_points = array(ceil($total/4), 2*ceil($total/4), 3*ceil($total/4)); |
||||
|
||||
$AVE_Template->assign('field_points', $field_points); |
||||
$AVE_Template->assign('field_tags', $field_tags); |
||||
$AVE_Template->assign('field_dir', $fld_name); |
||||
$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': |
||||
|
||||
$AVE_Template->config_load($lang_file, 'public'); |
||||
|
||||
if ($tpl_empty) |
||||
{ |
||||
$field_value = explode('|', $field_value); |
||||
$field_value = array_diff($field_value, array('')); |
||||
$field_value = array_values($field_value); |
||||
} |
||||
else |
||||
{ |
||||
$field_param = explode('|', $field_value); |
||||
$field_param = array_diff($field_param, array('')); |
||||
$field_param = array_values($field_param); |
||||
$field_value = preg_replace_callback( |
||||
'/\[tag:parametr:(\d+)\]/i', |
||||
function ($data) use ($field_param) |
||||
{ |
||||
return $field_param[(int)$data[1]]; |
||||
}, |
||||
$tpl |
||||
); |
||||
} |
||||
|
||||
$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_default', $default); |
||||
$AVE_Template->assign('field_value', $field_value); |
||||
|
||||
return $AVE_Template->fetch($tpl_file); |
||||
} |
||||
|
||||
return $field_value; |
||||
break; |
||||
|
||||
case 'req': |
||||
|
||||
$AVE_Template->config_load($lang_file, 'public'); |
||||
|
||||
if ($tpl_empty) |
||||
{ |
||||
$field_value = explode('|', $field_value); |
||||
$field_value = array_diff($field_value, array('')); |
||||
$field_value = array_values($field_value); |
||||
} |
||||
else |
||||
{ |
||||
$field_param = explode('|', $field_value); |
||||
$field_param = array_diff($field_param, array('')); |
||||
$field_param = array_values($field_param); |
||||
$field_value = preg_replace_callback( |
||||
'/\[tag:parametr:(\d+)\]/i', |
||||
function($data) use($field_param) |
||||
{ |
||||
return $field_param[(int)$data[1]]; |
||||
}, |
||||
$tpl |
||||
); |
||||
} |
||||
|
||||
$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_default', $default); |
||||
$AVE_Template->assign('field_value', $field_value); |
||||
|
||||
return $AVE_Template->fetch($tpl_file); |
||||
} |
||||
|
||||
return $field_value; |
||||
break; |
||||
|
||||
case 'save': |
||||
// Регистрируем хук |
||||
Hooks::register('DocumentAfterSave', 'afterTagsSave', 10); |
||||
|
||||
$field_value = tagsValue($field_value); |
||||
|
||||
if (! empty($field_value)) |
||||
$field_value = '|' . implode('|', $field_value) . '|'; |
||||
|
||||
return $field_value; |
||||
|
||||
case 'name': |
||||
return $AVE_Template->get_config_vars('name'); |
||||
|
||||
default: |
||||
return $field_value; |
||||
} |
||||
} |
||||
|
||||
if (! function_exists('tagsValue')) |
||||
{ |
||||
function tagsValue ($field_value) |
||||
{ |
||||
// Если есть выделенные теги |
||||
if (! empty($field_value['tags'])) |
||||
$tags = $field_value['tags']; |
||||
else |
||||
$tags = array(); |
||||
|
||||
unset ($tags['other']); |
||||
|
||||
// Если есть теги через зяпятую |
||||
if (! empty($field_value['tags']['other'])) |
||||
{ |
||||
$tags_new = explode(',', $field_value['tags']['other']); |
||||
$tags_new = array_map('trim', $tags_new); |
||||
} |
||||
else |
||||
$tags_new = array(); |
||||
|
||||
// Совмещаем массивы |
||||
$tags = array_merge($tags, $tags_new); |
||||
|
||||
// Делаем уникальные значения |
||||
$field_value = array_unique($tags); |
||||
|
||||
if (empty($field_value)) |
||||
$field_value = ''; |
||||
|
||||
return $field_value; |
||||
} |
||||
} |
||||
|
||||
if (! function_exists('afterTagsSave')) |
||||
{ |
||||
function afterTagsSave ($data) |
||||
{ |
||||
global $AVE_Document; |
||||
|
||||
if (! $AVE_Document) |
||||
{ |
||||
require_once BASE_DIR . '/class/class.docs.php'; |
||||
|
||||
$AVE_Document = new AVE_Document(); |
||||
} |
||||
|
||||
foreach ($data['data']['feld'] AS $_k => $_v) |
||||
{ |
||||
if (array_key_exists('tags', $_v)) |
||||
{ |
||||
$tags = tagsValue($_v); |
||||
|
||||
if (! empty($tags)) |
||||
{ |
||||
$tags = implode(',', $tags); |
||||
$AVE_Document->saveTags($data['document_id'], $data['rubric_id'], $tags); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
<?php |
||||
|
||||
/** |
||||
* AVE.cms |
||||
* |
||||
* @package AVE.cms |
||||
* @version 3.x |
||||
* @filesource |
||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
||||
* |
||||
* @license GPL v.2 |
||||
*/ |
||||
|
||||
// Tags |
||||
function get_field_tags ($field_value, $action, $field_id = 0, $tpl = '', $tpl_empty = 0, &$maxlength = null, $document_fields = array(), $rubric_id = 0, $default = null, $_tpl = null) |
||||
{ |
||||
global $AVE_DB, $AVE_Template; |
||||
|
||||
$fld_dir = dirname(__FILE__) . '/'; |
||||
$tpl_dir = $fld_dir . 'tpl/'; |
||||
$fld_name = basename($fld_dir); |
||||
|
||||
$rubric_id = $rubric_id > 0 |
||||
? $rubric_id |
||||
: $_REQUEST['rubric_id'] |
||||
? (int)$_REQUEST['rubric_id'] |
||||
: $AVE_DB->Query("SELECT rubric_id FROM ".PREFIX."_documents WHERE Id = '".$_REQUEST['Id']."'")->GetCell(); |
||||
|
||||
$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'); |
||||
|
||||
switch ($action) |
||||
{ |
||||
case 'edit': |
||||
$sql = " |
||||
SELECT DISTINCT |
||||
tag |
||||
FROM |
||||
".PREFIX."_document_tags |
||||
WHERE |
||||
rubric_id = '".$rubric_id."' |
||||
ORDER BY tag ASC |
||||
"; |
||||
|
||||
$query = $AVE_DB->Query($sql); |
||||
|
||||
$field_tags = array(); |
||||
|
||||
while ($row = $query->GetCell()) |
||||
array_push($field_tags, $row); |
||||
|
||||
$field_value = explode('|', $field_value); |
||||
$field_value = array_diff($field_value, array('')); |
||||
|
||||
$total = count($field_tags); |
||||
|
||||
$field_points = array(ceil($total/4), 2*ceil($total/4), 3*ceil($total/4)); |
||||
|
||||
$AVE_Template->assign('field_points', $field_points); |
||||
$AVE_Template->assign('field_tags', $field_tags); |
||||
$AVE_Template->assign('field_dir', $fld_name); |
||||
$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': |
||||
|
||||
$AVE_Template->config_load($lang_file, 'public'); |
||||
|
||||
if ($tpl_empty) |
||||
{ |
||||
$field_value = explode('|', $field_value); |
||||
$field_value = array_diff($field_value, array('')); |
||||
$field_value = array_values($field_value); |
||||
} |
||||
else |
||||
{ |
||||
$field_param = explode('|', $field_value); |
||||
$field_param = array_diff($field_param, array('')); |
||||
$field_param = array_values($field_param); |
||||
$field_value = preg_replace_callback( |
||||
'/\[tag:parametr:(\d+)\]/i', |
||||
function ($data) use ($field_param) |
||||
{ |
||||
return $field_param[(int)$data[1]]; |
||||
}, |
||||
$tpl |
||||
); |
||||
} |
||||
|
||||
$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_default', $default); |
||||
$AVE_Template->assign('field_value', $field_value); |
||||
|
||||
return $AVE_Template->fetch($tpl_file); |
||||
} |
||||
|
||||
return $field_value; |
||||
break; |
||||
|
||||
case 'req': |
||||
|
||||
$AVE_Template->config_load($lang_file, 'public'); |
||||
|
||||
if ($tpl_empty) |
||||
{ |
||||
$field_value = explode('|', $field_value); |
||||
$field_value = array_diff($field_value, array('')); |
||||
$field_value = array_values($field_value); |
||||
} |
||||
else |
||||
{ |
||||
$field_param = explode('|', $field_value); |
||||
$field_param = array_diff($field_param, array('')); |
||||
$field_param = array_values($field_param); |
||||
$field_value = preg_replace_callback( |
||||
'/\[tag:parametr:(\d+)\]/i', |
||||
function($data) use($field_param) |
||||
{ |
||||
return $field_param[(int)$data[1]]; |
||||
}, |
||||
$tpl |
||||
); |
||||
} |
||||
|
||||
$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_default', $default); |
||||
$AVE_Template->assign('field_value', $field_value); |
||||
|
||||
return $AVE_Template->fetch($tpl_file); |
||||
} |
||||
|
||||
return $field_value; |
||||
break; |
||||
|
||||
case 'save': |
||||
// Регистрируем хук |
||||
Hooks::register('DocumentAfterSave', 'afterTagsSave', 10); |
||||
|
||||
$field_value = tagsValue($field_value); |
||||
|
||||
if (! empty($field_value)) |
||||
$field_value = '|' . implode('|', $field_value) . '|'; |
||||
|
||||
return $field_value; |
||||
|
||||
case 'name': |
||||
return $AVE_Template->get_config_vars('name'); |
||||
|
||||
default: |
||||
return $field_value; |
||||
} |
||||
} |
||||
|
||||
if (! function_exists('tagsValue')) |
||||
{ |
||||
function tagsValue ($field_value) |
||||
{ |
||||
// Если есть выделенные теги |
||||
if (! empty($field_value['tags'])) |
||||
$tags = $field_value['tags']; |
||||
else |
||||
$tags = array(); |
||||
|
||||
unset ($tags['other']); |
||||
|
||||
// Если есть теги через зяпятую |
||||
if (! empty($field_value['tags']['other'])) |
||||
{ |
||||
$tags_new = explode(',', $field_value['tags']['other']); |
||||
$tags_new = array_map('trim', $tags_new); |
||||
} |
||||
else |
||||
$tags_new = array(); |
||||
|
||||
// Совмещаем массивы |
||||
$tags = array_merge($tags, $tags_new); |
||||
|
||||
// Делаем уникальные значения |
||||
$field_value = array_unique($tags); |
||||
|
||||
return $field_value; |
||||
} |
||||
} |
||||
|
||||
if (! function_exists('afterTagsSave')) |
||||
{ |
||||
function afterTagsSave ($data) |
||||
{ |
||||
global $AVE_Document; |
||||
|
||||
if (! $AVE_Document) |
||||
{ |
||||
require_once BASE_DIR . '/class/class.docs.php'; |
||||
|
||||
$AVE_Document = new AVE_Document(); |
||||
} |
||||
|
||||
foreach ($data['data']['feld'] AS $_k => $_v) |
||||
{ |
||||
if (array_key_exists('tags', $_v)) |
||||
{ |
||||
$tags = tagsValue($_v); |
||||
|
||||
if (! empty($tags)) |
||||
{ |
||||
$tags = implode(',', $tags); |
||||
$AVE_Document->saveTags($data['document_id'], $data['rubric_id'], $tags); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
?> |
@ -1,250 +1,252 @@
|
||||
<?php |
||||
|
||||
/** |
||||
* AVE.cms |
||||
* |
||||
* @package AVE.cms |
||||
* @version 3.x |
||||
* @filesource |
||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
||||
* |
||||
* @license GPL v.2 |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Отправка e-Mail |
||||
* |
||||
* @param string $to - email получателя |
||||
* @param string $body - текст сообщения |
||||
* @param string $subject - тема сообщения |
||||
* @param string $from_email - e-mail отправителя |
||||
* @param string $from_name - имя отправителя |
||||
* @param string $type - содержимое (html или text) |
||||
* @param array $attach - пути файлов вложений |
||||
* @param bool $saveattach - сохранять вложения после отправки в ATTACH_DIR? |
||||
* @param bool $signature - добавлять подпись из общих настроек? |
||||
*/ |
||||
if ( ! function_exists('send_mail')) |
||||
{ |
||||
function send_mail($to='', $body='', $subject='', $from_email='', $from_name='', $type='text', $attach=array(), $saveattach=true, $signature=true) |
||||
/** |
||||
* AVE.cms |
||||
* |
||||
* @package AVE.cms |
||||
* @version 3.x |
||||
* @filesource |
||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
||||
* |
||||
* @license GPL v.2 |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Отправка e-Mail |
||||
* |
||||
* @param string $to - email получателя |
||||
* @param string $body - текст сообщения |
||||
* @param string $subject - тема сообщения |
||||
* @param string $from_email - e-mail отправителя |
||||
* @param string $from_name - имя отправителя |
||||
* @param string $type - содержимое (html или text) |
||||
* @param array $attach - пути файлов вложений |
||||
* @param bool $saveattach - сохранять вложения после отправки в ATTACH_DIR? |
||||
* @param bool $signature - добавлять подпись из общих настроек? |
||||
*/ |
||||
if (! function_exists('send_mail')) |
||||
{ |
||||
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 ($type == 'text/html') |
||||
{ |
||||
$signature = '<br><br>' . nl2br(get_settings('mail_signature')); |
||||
} |
||||
else |
||||
// Добавляем подпись, если просили |
||||
if ($signature) |
||||
{ |
||||
$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') |
||||
{ |
||||
$body = str_replace(array("\t","\r","\n"),'',$body); |
||||
$body = str_replace(array(' ','> <'),array(' ','><'),$body); |
||||
} |
||||
if ($type == 'text/html') |
||||
{ |
||||
$body = str_replace(array("\t","\r","\n"),'',$body); |
||||
$body = str_replace(array(' ','> <'),array(' ','><'),$body); |
||||
} |
||||
|
||||
// Формируем письмо |
||||
$message = Swift_Message::newInstance($subject) |
||||
-> setFrom(array($from_email => $from_name)) |
||||
-> setTo($to) |
||||
-> setContentType($type) |
||||
-> setBody($body) |
||||
-> setMaxLineLength((int)get_settings('mail_word_wrap')); |
||||
// Формируем письмо |
||||
$message = Swift_Message::newInstance($subject) |
||||
-> setFrom(array($from_email => $from_name)) |
||||
-> setTo($to) |
||||
-> setContentType($type) |
||||
-> setBody($body) |
||||
-> setMaxLineLength((int)get_settings('mail_word_wrap')); |
||||
|
||||
// Прикрепляем вложения |
||||
if ($attach) |
||||
{ |
||||
foreach ($attach as $attach_file) |
||||
// Прикрепляем вложения |
||||
if ($attach) |
||||
{ |
||||
$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')) |
||||
{ |
||||
default: |
||||
case 'mail': |
||||
$transport = Swift_MailTransport::newInstance(); |
||||
break; |
||||
|
||||
case 'smtp': |
||||
$transport = Swift_SmtpTransport::newInstance(stripslashes(get_settings('mail_host')), (int)get_settings('mail_port')); |
||||
|
||||
// Добавляем шифрование |
||||
$smtp_encrypt = get_settings('mail_smtp_encrypt'); |
||||
if($smtp_encrypt) |
||||
$transport |
||||
->setEncryption(strtolower(stripslashes($smtp_encrypt))); |
||||
|
||||
// Имя пользователя/пароль |
||||
$smtp_user = get_settings('mail_smtp_login'); |
||||
$smtp_pass = get_settings('mail_smtp_pass'); |
||||
if($smtp_user) |
||||
$transport |
||||
->setUsername(stripslashes($smtp_user)) |
||||
->setPassword(stripslashes($smtp_pass)); |
||||
break; |
||||
|
||||
case 'sendmail': |
||||
$transport = Swift_SendmailTransport::newInstance(get_settings('mail_sendmail_path')); |
||||
break; |
||||
} |
||||
// Выбираем метод отправки и формируем транспорт |
||||
switch (get_settings('mail_type')) |
||||
{ |
||||
default: |
||||
case 'mail': |
||||
$transport = Swift_MailTransport::newInstance(); |
||||
break; |
||||
|
||||
case 'smtp': |
||||
$transport = Swift_SmtpTransport::newInstance(stripslashes(get_settings('mail_host')), (int)get_settings('mail_port')); |
||||
|
||||
// Добавляем шифрование |
||||
$smtp_encrypt = get_settings('mail_smtp_encrypt'); |
||||
if($smtp_encrypt) |
||||
$transport |
||||
->setEncryption(strtolower(stripslashes($smtp_encrypt))); |
||||
|
||||
// Имя пользователя/пароль |
||||
$smtp_user = get_settings('mail_smtp_login'); |
||||
$smtp_pass = get_settings('mail_smtp_pass'); |
||||
if($smtp_user) |
||||
$transport |
||||
->setUsername(stripslashes($smtp_user)) |
||||
->setPassword(stripslashes($smtp_pass)); |
||||
break; |
||||
|
||||
case 'sendmail': |
||||
$transport = Swift_SendmailTransport::newInstance(get_settings('mail_sendmail_path')); |
||||
break; |
||||
} |
||||
|
||||
// Сохраняем вложения в ATTACH_DIR, если просили |
||||
if ($attach && $saveattach) |
||||
{ |
||||
$attach_dir = BASE_DIR . '/tmp/' . ATTACH_DIR . '/'; |
||||
foreach ($attach as $file_path) |
||||
// Сохраняем вложения в ATTACH_DIR, если просили |
||||
if ($attach && $saveattach) |
||||
{ |
||||
if ($file_path && file_exists($file_path)) |
||||
$attach_dir = BASE_DIR . '/tmp/' . ATTACH_DIR . '/'; |
||||
foreach ($attach as $file_path) |
||||
{ |
||||
$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)) |
||||
if ($file_path && file_exists($file_path)) |
||||
{ |
||||
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 */ |
||||
$mailer = Swift_Mailer::newInstance($transport); |
||||
// Отправляем письмо |
||||
/** @var $transport TYPE_NAME */ |
||||
$mailer = Swift_Mailer::newInstance($transport); |
||||
|
||||
if (!@$mailer -> send($message, $failures)) |
||||
{ |
||||
reportLog('Не удалось отправить письма следующим адресатам: ' . implode(',',$failures)); |
||||
return $failures; |
||||
} |
||||
if (!@$mailer -> send($message, $failures)) |
||||
{ |
||||
reportLog('Не удалось отправить письма следующим адресатам: ' . implode(',',$failures)); |
||||
return $failures; |
||||
} |
||||
|
||||
} |
||||
} |
||||
} |
||||
|
||||
if ( ! function_exists('safe_mailto')) |
||||
{ |
||||
function safe_mailto($email, $title = '', $attributes = '') |
||||
if ( ! function_exists('safe_mailto')) |
||||
{ |
||||
$title = (string) $title; |
||||
|
||||
if ($title == "") |
||||
function safe_mailto($email, $title = '', $attributes = '') |
||||
{ |
||||
$title = $email; |
||||
} |
||||
$title = (string) $title; |
||||
|
||||
for ($i = 0; $i < 16; $i++) |
||||
{ |
||||
$x[] = substr('<a href="mailto:', $i, 1); |
||||
} |
||||
if ($title == "") |
||||
{ |
||||
$title = $email; |
||||
} |
||||
|
||||
for ($i = 0; $i < strlen($email); $i++) |
||||
{ |
||||
$x[] = "|".ord(substr($email, $i, 1)); |
||||
} |
||||
for ($i = 0; $i < 16; $i++) |
||||
{ |
||||
$x[] = substr('<a href="mailto:', $i, 1); |
||||
} |
||||
|
||||
$x[] = '"'; |
||||
for ($i = 0; $i < strlen($email); $i++) |
||||
{ |
||||
$x[] = "|".ord(substr($email, $i, 1)); |
||||
} |
||||
|
||||
if ($attributes != '') |
||||
{ |
||||
if (is_array($attributes)) |
||||
$x[] = '"'; |
||||
|
||||
if ($attributes != '') |
||||
{ |
||||
foreach ($attributes as $key => $val) |
||||
if (is_array($attributes)) |
||||
{ |
||||
$x[] = ' '.$key.'="'; |
||||
for ($i = 0; $i < strlen($val); $i++) |
||||
foreach ($attributes as $key => $val) |
||||
{ |
||||
$x[] = "|".ord(substr($val, $i, 1)); |
||||
$x[] = ' '.$key.'="'; |
||||
for ($i = 0; $i < strlen($val); $i++) |
||||
{ |
||||
$x[] = "|".ord(substr($val, $i, 1)); |
||||
} |
||||
$x[] = '"'; |
||||
} |
||||
$x[] = '"'; |
||||
} |
||||
} |
||||
else |
||||
{ |
||||
for ($i = 0; $i < strlen($attributes); $i++) |
||||
else |
||||
{ |
||||
$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++) |
||||
{ |
||||
$ordinal = ord($title[$i]); |
||||
|
||||
if ($ordinal < 128) |
||||
for ($i = 0; $i < strlen($title); $i++) |
||||
{ |
||||
$x[] = "|".$ordinal; |
||||
} |
||||
else |
||||
{ |
||||
if (count($temp) == 0) |
||||
$ordinal = ord($title[$i]); |
||||
|
||||
if ($ordinal < 128) |
||||
{ |
||||
$count = ($ordinal < 224) ? 2 : 3; |
||||
$x[] = "|".$ordinal; |
||||
} |
||||
|
||||
$temp[] = $ordinal; |
||||
if (count($temp) == $count) |
||||
else |
||||
{ |
||||
$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(); |
||||
if (count($temp) == 0) |
||||
{ |
||||
$count = ($ordinal < 224) ? 2 : 3; |
||||
} |
||||
|
||||
$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); |
||||
ob_start(); |
||||
|
||||
?><script type="text/javascript"> |
||||
//<![CDATA[ |
||||
var l=new Array(); |
||||
<?php |
||||
$i = 0; |
||||
foreach ($x as $val){ ?>l[<?php echo $i++; ?>]='<?php echo $val; ?>';<?php } ?> |
||||
|
||||
for (var i = l.length-1; i >= 0; i=i-1){ |
||||
if (l[i].substring(0, 1) == '|') document.write("&#"+unescape(l[i].substring(1))+";"); |
||||
else document.write(unescape(l[i]));} |
||||
//]]> |
||||
</script><?php |
||||
|
||||
$buffer = ob_get_contents(); |
||||
ob_end_clean(); |
||||
return $buffer; |
||||
$x[] = '<'; $x[] = '/'; $x[] = 'a'; $x[] = '>'; |
||||
|
||||
$x = array_reverse($x); |
||||
ob_start(); |
||||
|
||||
?><script type="text/javascript"> |
||||
//<![CDATA[ |
||||
var l=new Array(); |
||||
<?php |
||||
$i = 0; |
||||
foreach ($x as $val){ ?>l[<?php echo $i++; ?>]='<?php echo $val; ?>';<?php } ?> |
||||
|
||||
for (var i = l.length-1; i >= 0; i=i-1){ |
||||
if |
||||
(l[i].substring(0, 1) == '|') document.write("&#"+unescape(l[i].substring(1))+";"); |
||||
else |
||||
document.write(unescape(l[i]));} |
||||
//]]> |
||||
</script><?php |
||||
|
||||
$buffer = ob_get_contents(); |
||||
ob_end_clean(); |
||||
return $buffer; |
||||
} |
||||
} |
||||
} |
||||
|
||||
?> |
@ -1,71 +1,72 @@
|
||||
<?php |
||||
|
||||
/** |
||||
* AVE.cms |
||||
* |
||||
* @package AVE.cms |
||||
* @version 3.x |
||||
* @filesource |
||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
||||
* |
||||
* @license GPL v.2 |
||||
*/ |
||||
/** |
||||
* AVE.cms |
||||
* |
||||
* @package AVE.cms |
||||
* @version 3.x |
||||
* @filesource |
||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
||||
* |
||||
* @license GPL v.2 |
||||
*/ |
||||
|
||||
/** |
||||
* Функция формирует глобальный массив $mod с элементами: |
||||
* <pre> |
||||
* tpl_dir путь к папке с шаблонами модуля |
||||
* theme_folder имя папки с файлами дизайна |
||||
* config_vars массив с языковыми переменными модуля |
||||
* </pre> |
||||
* Формирует и передаёт в шаблонизатор: |
||||
* <pre> |
||||
* $tpl_dir путь к папке с шаблонами модуля |
||||
* $mod_dir имя папки с модулями |
||||
* $config_vars массив с языковыми переменными модуля |
||||
* </pre> |
||||
* Регистрирует в шаблонизаторе функцию in_array |
||||
* |
||||
* @param string $modulepath имя папки модуля |
||||
* @param string $lang_section секция языкового файла |
||||
*/ |
||||
function set_module_globals($modulepath, $lang_section = false) |
||||
{ |
||||
global $mod, $AVE_Template; |
||||
/** |
||||
* Функция формирует глобальный массив $mod с элементами: |
||||
* <pre> |
||||
* tpl_dir путь к папке с шаблонами модуля |
||||
* theme_folder имя папки с файлами дизайна |
||||
* config_vars массив с языковыми переменными модуля |
||||
* </pre> |
||||
* Формирует и передаёт в шаблонизатор: |
||||
* <pre> |
||||
* $tpl_dir путь к папке с шаблонами модуля |
||||
* $mod_dir имя папки с модулями |
||||
* $config_vars массив с языковыми переменными модуля |
||||
* </pre> |
||||
* Регистрирует в шаблонизаторе функцию in_array |
||||
* |
||||
* @param string $modulepath имя папки модуля |
||||
* @param string $lang_section секция языкового файла |
||||
*/ |
||||
function set_module_globals($modulepath, $lang_section = false) |
||||
{ |
||||
global $mod, $AVE_Template; |
||||
|
||||
$tpl_dir = BASE_DIR . '/modules/' . $modulepath . '/templates/'; |
||||
$lang_file = BASE_DIR . '/modules/' . $modulepath . '/lang/' . $_SESSION['user_language'] . '.txt'; |
||||
$tpl_dir = BASE_DIR . '/modules/' . $modulepath . '/templates/'; |
||||
$lang_file = BASE_DIR . '/modules/' . $modulepath . '/lang/' . $_SESSION['user_language'] . '.txt'; |
||||
|
||||
if (!file_exists($lang_file)) |
||||
{ |
||||
$lang_file = BASE_DIR . '/modules/' . $modulepath . '/lang/ru.txt'; |
||||
} |
||||
if (!file_exists($lang_file)) |
||||
{ |
||||
$lang_file = BASE_DIR . '/modules/' . $modulepath . '/lang/ru.txt'; |
||||
} |
||||
|
||||
if (!file_exists($lang_file)) |
||||
{ |
||||
display_notice('Ошибка! Отсутствует языковой файл. Пожалуйста, проверьте язык, установленный по умолчанию, в файле '.ABS_PATH.'inc/config.php'); |
||||
exit; |
||||
} |
||||
if (!file_exists($lang_file)) |
||||
{ |
||||
display_notice('Ошибка! Отсутствует языковой файл. Пожалуйста, проверьте язык, установленный по умолчанию, в файле '.ABS_PATH.'inc/config.php'); |
||||
exit; |
||||
} |
||||
|
||||
if ($lang_section === false) |
||||
{ |
||||
$AVE_Template->config_load($lang_file); |
||||
} |
||||
else |
||||
{ |
||||
$AVE_Template->config_load($lang_file, $lang_section); |
||||
} |
||||
$config_vars = $AVE_Template->get_config_vars(); |
||||
if ($lang_section === false) |
||||
{ |
||||
$AVE_Template->config_load($lang_file); |
||||
} |
||||
else |
||||
{ |
||||
$AVE_Template->config_load($lang_file, $lang_section); |
||||
} |
||||
|
||||
$AVE_Template->assign('tpl_dir', $tpl_dir); |
||||
$AVE_Template->assign('mod_dir', BASE_DIR . '/modules'); |
||||
$AVE_Template->assign('config_vars', $config_vars); |
||||
$config_vars = $AVE_Template->get_config_vars(); |
||||
|
||||
$mod['tpl_dir'] = $tpl_dir; |
||||
$mod['theme_folder'] = defined('THEME_FOLDER') ? THEME_FOLDER : DEFAULT_THEME_FOLDER; |
||||
$mod['config_vars'] = $config_vars; |
||||
$AVE_Template->assign('tpl_dir', $tpl_dir); |
||||
$AVE_Template->assign('mod_dir', BASE_DIR . '/modules'); |
||||
$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 |
||||
|
||||
/** |
||||
* AVE.cms |
||||
* |
||||
* @package AVE.cms |
||||
* @version 3.x |
||||
* @filesource |
||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
||||
* |
||||
* @license GPL v.2 |
||||
*/ |
||||
|
||||
/** |
||||
* Текущая страница |
||||
* |
||||
* @param string $type тип постраничной навигации, |
||||
* допустимые значения: page, apage, artpage |
||||
* @return int номер текущей страницы |
||||
*/ |
||||
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) |
||||
/** |
||||
* AVE.cms |
||||
* |
||||
* @package AVE.cms |
||||
* @version 3.x |
||||
* @filesource |
||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
||||
* |
||||
* @license GPL v.2 |
||||
*/ |
||||
|
||||
/** |
||||
* Текущая страница |
||||
* |
||||
* @param string $type тип постраничной навигации, |
||||
* допустимые значения: page, apage, artpage |
||||
* @return int номер текущей страницы |
||||
*/ |
||||
function get_current_page($type = 'page') |
||||
{ |
||||
$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))); |
||||
if ($separator_label != '') |
||||
$nav .= sprintf($separator_box, $separator_label); |
||||
} |
||||
$page = (isset($_REQUEST[$type]) && is_numeric($_REQUEST[$type])) ? $_REQUEST[$type] : 1; |
||||
|
||||
// Предыдущая |
||||
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))); |
||||
return (int)$page; |
||||
} |
||||
|
||||
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) |
||||
{ |
||||
// Текущий номер страницы (активная страница) |
||||
$nav .= sprintf($link_box, sprintf($active_box, str_replace(array('{s}', '{t}'), $val, $curent_page))); |
||||
} |
||||
$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))); |
||||
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 |
||||
$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 |
||||
{ |
||||
// Остальные неактивные номера страниц |
||||
$nav .= sprintf($link_box, str_replace(array('{s}', '{t}'), $val, $template_label)); |
||||
if ($val == 1) |
||||
{ |
||||
// Страница номер 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) |
||||
{ |
||||
$nav .= sprintf($link_box, str_replace('{t}', $next_label, str_replace('{s}', ($curent_page + 1), $template_label))); |
||||
} |
||||
// Следующая |
||||
if ($curent_page < $total_pages) |
||||
{ |
||||
$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 ($separator_label != '') |
||||
$nav .= sprintf($separator_box, $separator_label); |
||||
// Последняя |
||||
if ($total_pages > 5 && ($curent_page < $total_pages-2)) |
||||
{ |
||||
if ($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 ($total_label != '') |
||||
$nav = sprintf($total_box, sprintf($total_label, $curent_page, $total_pages)) . $nav; |
||||
// Страница ХХХ из ХХХ |
||||
if ($nav != '') |
||||
{ |
||||
if ($total_label != '') |
||||
$nav = sprintf($total_box, sprintf($total_label, $curent_page, $total_pages)) . $nav; |
||||
|
||||
// Оборачиваем в общий контейнер |
||||
if ($navi_box != '') |
||||
$nav = sprintf($navi_box, $nav); |
||||
} |
||||
// Оборачиваем в общий контейнер |
||||
if ($navi_box != '') |
||||
$nav = sprintf($navi_box, $nav); |
||||
} |
||||
|
||||
return $nav; |
||||
} |
||||
return $nav; |
||||
} |
||||
|
||||
?> |
@ -1,240 +1,246 @@
|
||||
<?php |
||||
|
||||
/** |
||||
* AVE.cms |
||||
* |
||||
* @package AVE.cms |
||||
* @version 3.x |
||||
* @filesource |
||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
||||
* |
||||
* @license GPL v.2 |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Возвращаем аватар по пользователю |
||||
* |
||||
* @param int $id Ид пользователя- если не придет то текущий пользователь |
||||
* @param int $size размер картинки по краю |
||||
* @param string $prefix |
||||
* @return string путь до файла с превью |
||||
*/ |
||||
function getAvatar($id = null, $size = 58, $prefix = "") |
||||
{ |
||||
global $AVE_DB; |
||||
static $result=array(); |
||||
|
||||
if ($id === null) $id = $_SESSION['user_id']; |
||||
|
||||
if(!isset($result[$id])){ |
||||
$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; |
||||
/** |
||||
* AVE.cms |
||||
* |
||||
* @package AVE.cms |
||||
* @version 3.x |
||||
* @filesource |
||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
||||
* |
||||
* @license GPL v.2 |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Возвращаем аватар по пользователю |
||||
* |
||||
* @param int $id Ид пользователя- если не придет то текущий пользователь |
||||
* @param int $size размер картинки по краю |
||||
* @param string $prefix |
||||
* @return string путь до файла с превью |
||||
*/ |
||||
function getAvatar($id = null, $size = 58, $prefix = '') |
||||
{ |
||||
global $AVE_DB; |
||||
|
||||
static $result = array(); |
||||
|
||||
if ($id === null) |
||||
$id = $_SESSION['user_id']; |
||||
|
||||
if (! isset($result[$id])) |
||||
{ |
||||
$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); |
||||
|
||||
/** |
||||
* Устанавливаем аватар пользователю |
||||
* |
||||
* @param int $id Ид пользователя |
||||
* @param string $avatar путь до картинки которая будет аватаром |
||||
* @return bool установился аватар или нет |
||||
*/ |
||||
function SetAvatar($id, $avatar) |
||||
{ |
||||
if ($id === null) $id = $_SESSION['user_id']; |
||||
if (! file_exists($avatar)) |
||||
return false; |
||||
|
||||
$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) |
||||
{ |
||||
@unlink($filename); |
||||
} |
||||
|
||||
//Чистим превьюшки |
||||
foreach (glob(BASE_DIR . '/' . UPLOAD_DIR . '/avatars/' . THUMBNAIL_DIR . '/' . md5($user->user_name) . '*.*') as $filename) |
||||
{ |
||||
@unlink($filename); |
||||
return true; |
||||
} |
||||
|
||||
@file_put_contents($new_ava, file_get_contents($avatar)); |
||||
@unlink($avatar); |
||||
|
||||
return true; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Формирование строки имени пользователя |
||||
* При наличии всех параметров пытается сформировать строку <b>Имя Фамилия</b> |
||||
* Если задать $short=1 - формирует короткую форму <b>И. Фамилия</b> |
||||
* Когда отсутствует информация о Имени или Фамилии пытается сформировать |
||||
* строку на основе имеющихся данных, а если данных нет вообще - выводит |
||||
* имя анонимного пользователя которое задается в основных настройках системы. |
||||
* |
||||
* @todo добавить параметр 'anonymous' в настройки |
||||
* |
||||
* @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 == '') |
||||
|
||||
/** |
||||
* Формирование строки имени пользователя |
||||
* При наличии всех параметров пытается сформировать строку <b>Имя Фамилия</b> |
||||
* Если задать $short=1 - формирует короткую форму <b>И. Фамилия</b> |
||||
* Когда отсутствует информация о Имени или Фамилии пытается сформировать |
||||
* строку на основе имеющихся данных, а если данных нет вообще - выводит |
||||
* имя анонимного пользователя которое задается в основных настройках системы. |
||||
* |
||||
* @todo добавить параметр 'anonymous' в настройки |
||||
* |
||||
* @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) |
||||
{ |
||||
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); |
||||
|
||||
/** |
||||
* Возвращает запись для пользователя по идентификатору |
||||
* не делает лишних запросов |
||||
* |
||||
* @param int $id - идентификатор пользователя |
||||
* @return object |
||||
*/ |
||||
function get_user_rec_by_id($id){ |
||||
global $AVE_DB; |
||||
return $rec->user_name; |
||||
} |
||||
|
||||
static $users = array(); |
||||
|
||||
if (!isset($users[$id])) |
||||
/** |
||||
* Возвращает имя группы пользователя по его идентификатору |
||||
* |
||||
* @param int $id - идентификатор группы пользователя |
||||
* @return string |
||||
*/ |
||||
function get_usergroup_by_id($id) |
||||
{ |
||||
$row = $AVE_DB->Query(" |
||||
SELECT |
||||
* |
||||
FROM " . PREFIX . "_users |
||||
WHERE Id = '" . (int)$id . "' |
||||
")->FetchRow(); |
||||
|
||||
$users[$id] = $row; |
||||
$rec = get_usergroup_rec_by_id($id); |
||||
|
||||
return $rec->user_group_name; |
||||
} |
||||
|
||||
return $users[$id]; |
||||
} |
||||
|
||||
/** |
||||
* Возвращает email пользователя по его идентификатору |
||||
* |
||||
* @param int $id - идентификатор пользователя |
||||
* @return string |
||||
*/ |
||||
function get_useremail_by_id($id) |
||||
{ |
||||
$rec = get_user_rec_by_id($id); |
||||
|
||||
/** |
||||
* Возвращает параметры группы пользователей по идентификатору |
||||
* не делает лишних запросов |
||||
* |
||||
* @param int $id - идентификатор группы |
||||
* @return object |
||||
*/ |
||||
function get_usergroup_rec_by_id($id){ |
||||
global $AVE_DB; |
||||
return $rec->email; |
||||
} |
||||
|
||||
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(" |
||||
SELECT |
||||
* |
||||
FROM " . PREFIX . "_user_groups |
||||
WHERE user_group = '" . (int)$id . "' |
||||
")->FetchRow(); |
||||
|
||||
$usergroups[$id] = $row; |
||||
$row = get_user_rec_by_id($id); |
||||
$row = (! empty($row)) |
||||
? get_username($row->user_name, $row->firstname, $row->lastname, $param) |
||||
: get_username(); |
||||
|
||||
return $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