<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
* MaxSite CMS
* (c) https://max-3000.com/
*
*/
// получение нужного значения
function getinfo($info = '')
{
global $MSO;
static $ajax = false;
$out = '';
switch ($info):
case 'admin_url':
$out = $MSO->config['admin_url']; // [admin_url] => http://localhost/application/maxsite/admin/
break;
case 'admin_dir':
$out = $MSO->config['admin_dir'];
break;
case 'admin_plugins_dir':
$out = $MSO->config['admin_plugins_dir'];
break;
case 'ajax':
if ($ajax !== false) {
$out = $ajax;
} else {
if (isset($MSO->config['DecodePunycodeIDN'])) {
require_once $MSO->config['base_dir'] . 'common/idna.php';
$host = parse_url($MSO->config['site_url']);
$out = $ajax = '//' . mso_DecodePunycodeIDN($host['host']) . '/ajax/';
} else {
$out = $ajax = '//' . str_replace(array('http://', 'https://'), '', $MSO->config['site_url']) . 'ajax/';
}
}
break;
case 'base_dir': // каталог /maxsite/
$out = $MSO->config['base_dir'];
break;
case 'cache_dir':
$out = $MSO->config['cache_dir'];
break;
case 'comments_rss2_url':
$out = $MSO->config['site_url'] . 'comments/feed';
break;
case 'common_dir':
$out = $MSO->config['common_dir'];
break;
case 'common_url':
$out = $MSO->config['common_url'];
break;
case 'comusers_id':
$out = $MSO->data['session']['comuser']['comusers_id'] ?? '';
break;
case 'comusers_nik':
$out = $MSO->data['session']['comuser']['comusers_nik'] ?? '';
break;
case 'description_site':
$out = mso_get_option('description_site', 'general');
break;
case 'description':
$out = htmlspecialchars(mso_get_option('description', 'general'));
break;
case 'feed':
case 'rss_url':
$out = $MSO->config['site_url'] . 'feed';
break;
case 'FCPATH':
$out = $MSO->config['FCPATH'];
break;
case 'keywords':
$out = htmlspecialchars(mso_get_option('keywords', 'general'));
break;
case 'name_site':
$out = htmlspecialchars(mso_get_option('name_site', 'general'));
break;
case 'plugins_url':
$out = '//' . str_replace(array('http://', 'https://'), '', $MSO->config['plugins_url']);
break;
case 'plugins_dir':
$out = $MSO->config['plugins_dir'];
break;
case 'require-maxsite':
$out = $MSO->config['site_url'] . 'require-maxsite/';
break;
case 'rss_comments_url':
$out = $MSO->config['site_url'] . 'comments/feed';
break;
case 'remote_key':
$out = $MSO->config['remote_key'];
break;
case 'site_url':
case 'siteurl':
$out = $MSO->config['site_url'];
break;
case 'stylesheet_url':
case 'template_url':
$out = $MSO->config['templates_url'] . $MSO->config['template'] . '/';
break;
case 'site_admin_url':
$out = $MSO->config['site_admin_url']; // [site_admin_url] => http://localhost/admin/
break;
case 'shared_dir':
$out = $MSO->config['base_dir'] . 'shared/';
break;
case 'shared_url':
$out = $MSO->config['base_url'] . 'shared/';
break;
case 'site_protocol': // по какому протоколу работает сайт http://
$out = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != "off") ? "https://" : "http://";
break;
case 'session_id': // текущая сессия
$out = $MSO->data['session']['session_id'];
break;
case 'session_users_password':
if (isset($MSO->data['session']['users_password']))
$out = mso_de_code($MSO->data['session']['users_password'], 'decode');
else
$out = '';
break;
case 'session_users_login':
if (isset($MSO->data['session']['users_login']))
$out = mso_de_code($MSO->data['session']['users_login'], 'decode');
else
$out = '';
break;
case 'session':
$out = $MSO->data['session'];
break;
case 'title':
$out = mso_get_option('title', 'general');
break;
case 'title_current': // текущий титул
$out = $MSO->title;
break;
case 'time_zone':
$out = (string) mso_get_option('time_zone', 'general', '0');
break;
case 'template':
$out = $MSO->config['template'];
break;
case 'template_dir':
$out = $MSO->config['templates_dir'] . $MSO->config['template'] . '/';
break;
case 'template_name':
$fn_info = $MSO->config['templates_dir'] . $MSO->config['template'] . '/info.php';
if (file_exists($fn_info)) {
require $fn_info;
$out = $info['name'];
} else {
$out = '';
}
break;
case 'templates_dir':
$out = $MSO->config['templates_dir'];
break;
case 'templates_url':
$out = $MSO->config['templates_url'];
break;
case 'type':
$out = $MSO->data['type'];
break;
case 'type_foreach_file':
$out = $MSO->data['type_foreach_file'] ?? '';
break;
case 'url_new_comment':
$out = $MSO->config['site_url'] . 'newcomment';
break;
case 'uploads_url':
$out = $MSO->config['uploads_url'];
break;
case 'uploads_dir':
$out = $MSO->config['uploads_dir'];
break;
case 'users_nik':
$out = $MSO->data['session']['users_nik'] ?? '';
break;
case 'users_id':
$out = $MSO->data['session']['users_id'] ?? '';
break;
case 'uri_get':
$out = $MSO->data['uri_get'];
break;
case 'version':
$out = $MSO->version;
break;
case 'storage_dir':
$out = $MSO->config['application_dir'] . 'storage/';
break;
endswitch;
return $out;
}
// проверка залогиннености юзера
function is_login()
{
global $MSO;
return ($MSO->data['session']['userlogged'] == 1) ? true : false;
}
// проверка залогиннености комюзера
// если есть, то возвращает массив данных
function is_login_comuser()
{
global $MSO;
if (isset($MSO->data['session']['comuser']) and ($comuser = $MSO->data['session']['comuser']))
return $comuser;
else
return false;
}
// проверка типа страницы, который определился в контролере
function is_type($type)
{
global $MSO;
return ($MSO->data['type'] == $type) ? true : false;
}
// возвращает true или false при проверке $MSO->data['uri_segment'], то есть по сегментам URL
// где например [1] => page [2] => about
// что означает type = page slug=about
// http://localhost/page/about
// можно указать только тип или только slug
// тогда неуказанный параметр не учитывается (всегда true)
function is_type_slug($type = '', $slug = '')
{
global $MSO;
$rt = $rs = '';
$type = urlencode($type);
$slug = urlencode($slug);
// тип
if ($type and isset($MSO->data['uri_segment'][1])) $rt = $MSO->data['uri_segment'][1];
// slug
if ($slug and isset($MSO->data['uri_segment'][2])) $rs = $MSO->data['uri_segment'][2];
return ($rt == $type and $rs == $slug);
}
// проверяем рубрику у страницы
// если это page и есть указанная рубрика, то возвращаем true
// если это не page или нет указанной рубрики, то возвращаем false
// если $and_id = true , то ищем и по id
// если $and_name = true , то ищем и по category_name
function is_page_cat($slug = '', $and_id = true, $and_name = true)
{
global $page;
if (!$slug) return false; // slug не указан
if (!is_type('page')) return false; // тип не page
if (!isset($page['page_categories_detail'])) return false; // нет информации о рубриках
$result = false;
// информация о slug, id и name в массиве $page['page_categories_detail']
foreach ($page['page_categories_detail'] as $id => $val) {
if ($val['category_slug'] == $slug) $result = true; // slug совпал
if (!$result and $and_id and $id == $slug) $result = true; // можно искать по $id
if (!$result and $and_name and $val['category_name'] == $slug) $result = true; // category_name совпал
if ($result) break;
}
return $result;
}
// проверка если feed
function is_feed()
{
global $MSO;
return $MSO->data['is_feed'] ? true : false;
}
// получаем данные юзера по его логину/паролю
function mso_get_user_data($login = false, $password = false)
{
if (!$login or !$password) return false;
$CI = &get_instance();
$CI->db->select('*');
$CI->db->limit(1); // одно значение
$CI->db->where('users_login', $login); // where 'users_login' = $login
$CI->db->where('users_password', $password); // where 'users_password' = $password
$query = $CI->db->get('users');
if ($query->num_rows() > 0) {
// есть такой юзер
$r = $query->result_array();
return $r[0];
} else {
return false;
}
}
// получение информации об авторе по его номеру из url http://localhost/author/1
// или явно указанному номеру
function mso_get_author_info($id = 0)
{
if (!$id) $id = mso_segment(2);
if (!$id or !is_numeric($id)) return []; // неверный id
$key_cache = 'mso_get_author_info_' . $id;
if ($k = mso_get_cache($key_cache)) return $k; // да есть в кэше
$out = [];
$CI = &get_instance();
$CI->db->select('*');
$CI->db->where('users_id', $id);
$query = $CI->db->get('users');
if ($query->num_rows() > 0) {
// есть такой юзер
$out = $query->result_array();
$out = $out[0];
}
mso_add_cache($key_cache, $out);
return $out;
}
# end of file