Browse Source

Ver. 3.2

master
M@dD3n 7 years ago
commit
315d1fded7
  1. 1
      .gitignore
  2. 328
      .htaccess
  3. 78
      README.md
  4. 1
      admin/.htaccess
  5. BIN
      admin/admin.favicon.ico
  6. 97
      admin/admin.php
  7. 133
      admin/blocks.php
  8. 192
      admin/browser.php
  9. 70
      admin/dbsettings.php
  10. 298
      admin/docs.php
  11. 84
      admin/fields.php
  12. 24
      admin/finder.php
  13. 585
      admin/functions/func.admin.common.php
  14. 67
      admin/groups.php
  15. 135
      admin/index.php
  16. 43
      admin/init.php
  17. 0
      admin/lang/bg/.gitkeep
  18. 69
      admin/lang/bg/blocks.txt
  19. 49
      admin/lang/bg/dbactions.txt
  20. 286
      admin/lang/bg/docs.txt
  21. 121
      admin/lang/bg/groups.txt
  22. 55
      admin/lang/bg/logs.txt
  23. 305
      admin/lang/bg/main.txt
  24. 38
      admin/lang/bg/modules.txt
  25. 130
      admin/lang/bg/navigation.txt
  26. 191
      admin/lang/bg/request.txt
  27. 282
      admin/lang/bg/rubs.txt
  28. 62
      admin/lang/bg/scripts.js
  29. 116
      admin/lang/bg/settings.txt
  30. 76
      admin/lang/bg/sysblocks.txt
  31. 122
      admin/lang/bg/templates.txt
  32. 92
      admin/lang/bg/user.txt
  33. 49
      admin/lang/cz/dbactions.txt
  34. 260
      admin/lang/cz/docs.txt
  35. 121
      admin/lang/cz/groups.txt
  36. 55
      admin/lang/cz/logs.txt
  37. 302
      admin/lang/cz/main.txt
  38. 38
      admin/lang/cz/modules.txt
  39. 96
      admin/lang/cz/navigation.txt
  40. 177
      admin/lang/cz/request.txt
  41. 260
      admin/lang/cz/rubs.txt
  42. 65
      admin/lang/cz/scripts.js
  43. 111
      admin/lang/cz/settings.txt
  44. 69
      admin/lang/cz/sysblocks.txt
  45. 119
      admin/lang/cz/templates.txt
  46. 92
      admin/lang/cz/user.txt
  47. 68
      admin/lang/pl/blocks.txt
  48. 49
      admin/lang/pl/dbactions.txt
  49. 279
      admin/lang/pl/docs.txt
  50. 103
      admin/lang/pl/groups.txt
  51. 53
      admin/lang/pl/logs.txt
  52. 271
      admin/lang/pl/main.txt
  53. 38
      admin/lang/pl/modules.txt
  54. 128
      admin/lang/pl/navigation.txt
  55. 188
      admin/lang/pl/request.txt
  56. 267
      admin/lang/pl/rubs.txt
  57. 64
      admin/lang/pl/scripts.js
  58. 132
      admin/lang/pl/settings.txt
  59. 71
      admin/lang/pl/sysblocks.txt
  60. 108
      admin/lang/pl/templates.txt
  61. 92
      admin/lang/pl/user.txt
  62. 69
      admin/lang/ru/blocks.txt
  63. 47
      admin/lang/ru/dbactions.txt
  64. 300
      admin/lang/ru/docs.txt
  65. 123
      admin/lang/ru/groups.txt
  66. 53
      admin/lang/ru/logs.txt
  67. 303
      admin/lang/ru/main.txt
  68. 36
      admin/lang/ru/modules.txt
  69. 128
      admin/lang/ru/navigation.txt
  70. 196
      admin/lang/ru/request.txt
  71. 280
      admin/lang/ru/rubs.txt
  72. 62
      admin/lang/ru/scripts.js
  73. 140
      admin/lang/ru/settings.txt
  74. 76
      admin/lang/ru/sysblocks.txt
  75. 120
      admin/lang/ru/templates.txt
  76. 90
      admin/lang/ru/user.txt
  77. 68
      admin/lang/ua/blocks.txt
  78. 49
      admin/lang/ua/dbactions.txt
  79. 298
      admin/lang/ua/docs.txt
  80. 125
      admin/lang/ua/groups.txt
  81. 55
      admin/lang/ua/logs.txt
  82. 305
      admin/lang/ua/main.txt
  83. 38
      admin/lang/ua/modules.txt
  84. 131
      admin/lang/ua/navigation.txt
  85. 197
      admin/lang/ua/request.txt
  86. 280
      admin/lang/ua/rubs.txt
  87. 64
      admin/lang/ua/scripts.js
  88. 139
      admin/lang/ua/settings.txt
  89. 80
      admin/lang/ua/sysblocks.txt
  90. 119
      admin/lang/ua/templates.txt
  91. 92
      admin/lang/ua/user.txt
  92. 92
      admin/logs.php
  93. 99
      admin/modules.php
  94. 136
      admin/navigation.php
  95. 105
      admin/request.php
  96. 561
      admin/rubs.php
  97. 177
      admin/settings.php
  98. 35
      admin/start.php
  99. 130
      admin/sysblocks.php
  100. 91
      admin/templates.php
  101. Some files were not shown because too many files have changed in this diff Show More

1
.gitignore vendored

@ -0,0 +1 @@
*.DS_Store

328
.htaccess

@ -0,0 +1,328 @@
###################### AVE.CMS_HTACCESS_BEGIN ##########################
# Options:
# -MultiViews: Turns off multiviews so it doesn't interfer with our rewrite rules
# -Indexes: Stop directory listings
# +FollowSymlinks: Let out rewrite rules work
Options -Indexes +FollowSymLinks
# ------------------------------------------------------------------------------
# | PHP Configuration |
# ------------------------------------------------------------------------------
<ifModule mod_php5.c>
php_value default_charset utf-8
#Отлючаем вывод ошибок
#php_value error_reporting E_NONE
# Этот параметр устанавливает максимальное время в секундах, позволяющее скрипту запускаться прежде, чем он завершается синтаксическим анализатором.
#php_value max_execution_time 300
# Максимальное время загрузки данных для скрипта, в том числе и файлов из формы
#php_value max_input_time 300
# Ограничивает максимальный объем данных, получаемых от пользователя методом POST
#php_value post_max_size 512M
# Устанавливает максимальный размер файла, который может быть получен методом POST (меньше, чем post_max_size)
#php_value upload_max_filesize 128M
# Максимальное кол-во загружаемых файлов
#php_value max_file_uploads 50
# Включаем у PHP короткие <?
#php_value short_open_tag On
php_flag magic_quotes_gpc off
php_flag magic_quotes_runtime off
php_flag register_globals off
</ifModule>
<ifModule !mod_php5.c>
php_value default_charset utf-8
#Отлючаем вывод ошибок
#php_value error_reporting E_NONE
# Этот параметр устанавливает максимальное время в секундах, позволяющее скрипту запускаться прежде, чем он завершается синтаксическим анализатором.
#php_value max_execution_time 300
# Максимальное время загрузки данных для скрипта, в том числе и файлов из формы
#php_value max_input_time 300
# Ограничивает максимальный объем данных, получаемых от пользователя методом POST
#php_value post_max_size 32M
# Устанавливает максимальный размер файла, который может быть получен методом POST (меньше, чем post_max_size)
#php_value upload_max_filesize 32M
# Максимальное кол-во загружаемых файлов
#php_value max_file_uploads 50
# Включаем у PHP короткие <?
#php_value short_open_tag On
php_flag magic_quotes_gpc off
php_flag magic_quotes_runtime off
php_flag register_globals off
</ifModule>
# ------------------------------------------------------------------------------
# | CORS-enabled images |
# ------------------------------------------------------------------------------
# Send the CORS header for images when browsers request it.
# https://developer.mozilla.org/en-US/docs/HTML/CORS_Enabled_Image
# http://blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html
# http://hacks.mozilla.org/2011/11/using-cors-to-load-webgl-textures-from-cross-domain-images/
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
<FilesMatch "\.(cur|gif|ico|jpe?g|png|svgz?|webp)$">
SetEnvIf Origin ":" IS_CORS
Header set Access-Control-Allow-Origin "*" env=IS_CORS
</FilesMatch>
</IfModule>
</IfModule>
# ------------------------------------------------------------------------------
# | Web fonts access |
# ------------------------------------------------------------------------------
# Allow access to web fonts from all domains.
<IfModule mod_headers.c>
<FilesMatch "\.(eot|otf|tt[cf]|woff)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
</IfModule>
# ##############################################################################
# # INTERNET EXPLORER #
# ##############################################################################
# ------------------------------------------------------------------------------
# | Better website experience |
# ------------------------------------------------------------------------------
# Force Internet Explorer to render pages in the highest available mode
# in the various cases when it may not.
# http://hsivonen.iki.fi/doctype/ie-mode.pdf
<IfModule mod_headers.c>
Header set X-UA-Compatible "IE=edge"
# `mod_headers` cannot match based on the content-type, however, this
# header should be send only for HTML pages and not for the other resources
<FilesMatch "\.(appcache|atom|crx|css|cur|eot|f4[abpv]|flv|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|tt[cf]|vcf|vtt|webapp|web[mp]|woff|xml|xpi)$">
Header unset X-UA-Compatible
</FilesMatch>
</IfModule>
# ##############################################################################
# # MIME TYPES AND ENCODING #
# ##############################################################################
# ------------------------------------------------------------------------------
# | Proper MIME types for all files |
# ------------------------------------------------------------------------------
<IfModule mod_mime.c>
# Audio
AddType audio/mp4 m4a f4a f4b
AddType audio/ogg oga ogg opus
# Data interchange
AddType application/json json map
AddType application/ld+json jsonld
# JavaScript
# Normalize to standard type.
# http://tools.ietf.org/html/rfc4329#section-7.2
AddType application/javascript js
# Video
AddType video/mp4 f4v f4p m4v mp4
AddType video/ogg ogv
AddType video/webm webm
AddType video/x-flv flv
# Web fonts
AddType application/font-woff woff
AddType application/vnd.ms-fontobject eot
# Browsers usually ignore the font MIME types and simply sniff the bytes
# to figure out the font type.
# http://mimesniff.spec.whatwg.org/#matching-a-font-type-pattern
# Chrome however, shows a warning if any other MIME types are used for
# the following fonts.
AddType application/x-font-ttf ttc ttf
AddType font/opentype otf
# Make SVGZ fonts work on the iPad.
# https://twitter.com/FontSquirrel/status/14855840545
AddType image/svg+xml svgz
AddEncoding gzip svgz
# Other
AddType application/octet-stream safariextz
AddType application/x-chrome-extension crx
AddType application/x-opera-extension oex
AddType application/x-web-app-manifest+json webapp
AddType application/x-xpinstall xpi
AddType application/xml atom rdf rss xml
AddType image/webp webp
AddType image/x-icon cur
AddType text/cache-manifest appcache manifest
AddType text/vtt vtt
AddType text/x-component htc
AddType text/x-vcard vcf
</IfModule>
# ------------------------------------------------------------------------------
# | UTF-8 encoding |
# ------------------------------------------------------------------------------
# Use UTF-8 encoding for anything served as `text/html` or `text/plain`.
AddDefaultCharset utf-8
# Force UTF-8 for certain file formats.
<IfModule mod_mime.c>
AddCharset utf-8 .atom .css .js .json .jsonld .rss .vtt .webapp .xml
</IfModule>
# ------------------------------------------------------------------------------
# | Expires headers |
# ------------------------------------------------------------------------------
# The following expires headers are set pretty far in the future. If you
# don't control versioning with filename-based cache busting, consider
# lowering the cache time for resources such as style sheets and JavaScript
# files to something like one week.
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
# CSS
ExpiresByType text/css "access plus 1 year"
# Data interchange
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/ld+json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
# Favicon (cannot be renamed!) and cursor images
ExpiresByType image/x-icon "access plus 1 week"
# HTML components (HTCs)
ExpiresByType text/x-component "access plus 1 month"
# HTML
ExpiresByType text/html "access plus 0 seconds"
# JavaScript
ExpiresByType application/javascript "access plus 1 year"
# Manifest files
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
ExpiresByType text/cache-manifest "access plus 0 seconds"
# Media
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
# Web feeds
ExpiresByType application/atom+xml "access plus 1 hour"
ExpiresByType application/rss+xml "access plus 1 hour"
# Web fonts
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
</IfModule>
<FilesMatch "\.(backup|cache|class|fields|functions|inc|modules|lib|session|templates)$">
Order allow,deny
</FilesMatch>
<IfModule mod_security.c>
SecFilterScanPOST Off
</IfModule>
# ------------------------------------------------------------------------------
# | Rewrite engine |
# ------------------------------------------------------------------------------
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
# Заглушка для index.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://%{HTTP_HOST}/ [R=301,L]
# Убираем слеш в конце
# RewriteCond %{HTTP_HOST} (.*)
# RewriteCond %{REQUEST_URI} /$ [NC]
# RewriteRule ^(.*)(/)$ $1 [L,R=301]
# Редирект с www.domain.com на domain.com
# RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
# RewriteRule (.*) http://%1/$1 [R=permanent,L]
# Редирект с domain.com на www.domain.com
# RewriteCond %{HTTP_HOST} !^www\. [NC]
# RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [QSA,L]
# RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteCond %{REQUEST_URI} !^/(backup|cache|class|fields|functions|inc|modules|lib|session|templates)/
# Файл robots.txt
RewriteCond %{REQUEST_URI} !^/robots\.txt$ [NC]
# Файл sitemap.xml
RewriteRule ^sitemap.xml$ inc/sitemap.php [QSA,L]
#--start-ave-editor--#
#--end-ave-editor--#
# RSS
RewriteRule ^rss/rss-([0-9]+).xml$ inc/rss.php?id=$1 [QSA,L]
RewriteRule \.(ico)$ - [NC,L]
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
</IfModule>
####################### AVE.CMS_HTACCESS_END ###########################

78
README.md

@ -0,0 +1,78 @@
# AVE.cms v3.2
###### Многофункциональная, система управления сайтом.
## Оглавление
* [Системные требования](#Системные-требования)
* [Модули](#Модули)
* [Установка](#Установка)
* [Ресурсы](#Ресурсы)
## Системные требования
* Операционная система:
* Unix
* Windows Server
* ПО WEB сервера:
* Apache >= 1.3
* Nginx >= 1.6.2
* IIS >= 5
* PHP >= 5.5
* PHP >= 5.5.x ... <= 5.6.x разрешить использовать короткие теги short_open_tag = On (zlib, cURL, mbString, JSON)
* PHP >= 7.x ... <= 7.1.x
## Модули
Описание и загрузка модулей
| Наименование | Описание |
|---------------------------------|-----------------------------|
| [Комментарии] | Система комментирования публикаций. |
| [Контактные формы] | Модуль предназначен для создания различных веб-форм для контактов.Поддержка различных типов полей. |
| [Публикатор документов] | Данный модуль предназначен для создания форм ввода и редактирования документов на сайте. |
| [Вопрос-Ответ (FAQ)] | Модуль создания раширенной справочной системы на основе тегов. |
| [Галерея] | Модуль для создания и управления галереями изображений. |
| [Авторизация] | Модуль поддержки Регистрации/Авторизации пользователей. |
| [Рассылки] | Модуль позволяет осуществлять рассылки новостей и другой информации пользователям. |
| [Похожие документы] | Модуль позволяет выводить список связанных документов *(Связующим элементом документов является первое слово из поля Ключевые слова.)* |
| [Быстрый переход] | Данный модуль является альтернативным способом организации меню навигации на сайте. Он представлен в виде выпадающего списка разделов и подразделов вашего сайта. |
| [RSS] | Данный модуль предзназначен для организации RSS потоков на вашем сайте. |
| [Поиск] | Организация поиска по сайту. |
| [Карта сайта] | Построение карты сайта на базе пунктов меню навигации. |
| [Корзина] | Модуль электронной комерции. |
| [Импорт] | Импорт документов в выбранную рубрику. |
| [Рейтинг документов] | Поддержка оценок для публикаций. |
| [Навигация по документам рубрики] | Данный модуль позволяет организовать навигацию по документам в пределах рубрики. |
И другие
## Установка
1. Распакуйте содержимое архива в новую папку на вашем локальном компьютере.
2. Загрузить эту папку целиком через FTP-клиент на ваш хост.
3. Вам также может потребоваться установить права доступа (CHMOD 777) рекурсивно, на папки /cache/, /session/ и /uploads/, если ваш хостинг не установливает это по умолчанию.
4. Также вам может потребоваться установить права доступа (CHMOD 777) рекурсивно, на файлы inc/db.config.php и inc/config.inc.php, если ваш хостинг не установливает это по умолчанию.
5. Наберите http://адрес вашего сайта/ в браузере.
6. Следуйте инструкциям.
7. После установки системы настоятельно рекомендуем устанавливать права доступа на папку uploads не выше CHMOD 755.
## Ресурсы
Сайт: [ave-cms.ru](https://ave-cms.ru/)
Форум: [forum.ave-cms.ru](https://forum.ave-cms.ru/)
E-mail: support@ave-cms.ru
Google+: [Google+](https://plus.google.com/106406255345948508717)
Вконтакте: [vk.com/ave_cms](http://vk.com/ave_cms)
---
Copyright © 2007-2017 [Ave-Cms.Ru](https://ave-cms.ru) | [AVE.cms 3.2](https://ave-cms.ru)

1
admin/.htaccess

@ -0,0 +1 @@
RewriteEngine off

BIN
admin/admin.favicon.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

97
admin/admin.php

@ -0,0 +1,97 @@
<?php
/**
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
*
* @license GPL v.2
*/
define('ACP', 1);
define('ACPL', 1);
define('BASE_DIR', str_replace("\\", "/", dirname(dirname(__FILE__))));
if (! @filesize(BASE_DIR . '/inc/db.config.php')) {
header('Location:/install/index.php');
exit;
}
require(BASE_DIR . '/admin/init.php');
unset ($captcha_ok);
if (isset($_REQUEST['do']) && $_REQUEST['do'] == 'logout')
{
// Завершение работы в админке
reportLog($AVE_Template->get_config_vars('EXIT_ADMIN'));
user_logout();
header('Location:admin.php');
}
if(auth_cookie())
{
header('Location:index.php');
exit;
}
if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'login')
{
// Авторизация
if (!empty($_POST['user_login']) && !empty($_POST['user_pass']))
{
if (ADMIN_CAPTCHA)
{
if (isset($_SESSION['captcha_keystring']) && isset($_POST['securecode']) && $_SESSION['captcha_keystring'] == $_POST['securecode']) $captcha_ok = 1;
else
{
unset($_SESSION['user_id'], $_SESSION['user_pass']);
unset($_SESSION['captcha_keystring']);
$error = $AVE_Template->get_config_vars('WRONG_CAPTCHA');
$AVE_Template->assign('error', $error);
}
}
else
$captcha_ok = 1;
if ($captcha_ok)
{
if (true === user_login($_POST['user_login'], $_POST['user_pass'], 1,(int)(isset($_POST['SaveLogin']) && $_POST['SaveLogin'] == '1')))
{
//_echo($_SESSION);
if (!empty($_SESSION['redirectlink']))
{
header('Location:' . $_SESSION['redirectlink']);
unset($_SESSION['redirectlink']);
exit;
}
reportLog($AVE_Template->get_config_vars('LOGIN_ADMIN'));
//Перенапрявляем пользователя
header('Location:'.get_referer_admin_link().'');
exit;
}
else
{
reportLog($AVE_Template->get_config_vars('ERROR_ADMIN') . ' - '
. stripslashes($_POST['user_login']) . ' / '
. stripslashes($_POST['user_pass']));
unset($_SESSION['user_id'], $_SESSION['user_pass']);
unset($_SESSION['captcha_keystring']);
$error = $AVE_Template->get_config_vars('WRONG_PASS');
$AVE_Template->assign('error', $error);
}
}
}
}
$AVE_Template->assign('captcha', ADMIN_CAPTCHA);
$AVE_Template->display('login.tpl');
?>

133
admin/blocks.php

@ -0,0 +1,133 @@
<?php
/**
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
* @copyright © 2007-2017 AVE.cms, http://www.ave-cms.ru
*
* @license GPL v.2
*/
if (! defined('ACP'))
{
header('Location:index.php');
exit;
}
global $AVE_DB, $AVE_Template;
require(BASE_DIR . '/class/class.blocks.php');
$AVE_Block = new AVE_Block;
$AVE_Template->config_load(BASE_DIR . '/admin/lang/' . $_SESSION['admin_language'] . '/blocks.txt', 'blocks');
switch ($_REQUEST['action'])
{
case '':
if (check_permission_acp('blocks_view'))
{
$AVE_Block->blockList();
}
break;
case 'new':
if (check_permission_acp('blocks_edit'))
{
$_SESSION['use_editor'] = get_settings('use_editor');
$AVE_Block->blockNew();
}
break;
case 'edit':
if (check_permission_acp('blocks_edit'))
{
$_SESSION['use_editor'] = get_settings('use_editor');
$AVE_Block->blockEdit(isset($_REQUEST['id']) ? $_REQUEST['id'] : null);
}
break;
case 'save':
if (check_permission_acp('blocks_edit'))
{
$AVE_Block->blockSave(isset($_REQUEST['id']) ? $_REQUEST['id'] : null);
}
break;
case 'del':
if (check_permission_acp('blocks_edit'))
{
$AVE_Block->blockDelete($_REQUEST['id']);
}
break;
case 'alias':
if (check_permission_acp('blocks_edit'))
{
echo $AVE_Block->blockValidate($_REQUEST['alias'], (int)$_REQUEST['id']);
}
exit;
case 'multi':
if (check_permission_acp('blocks_edit'))
{
$_REQUEST['sub'] = (!isset($_REQUEST['sub'])) ? '' : $_REQUEST['sub'];
$errors = array();
switch ($_REQUEST['sub'])
{
case 'save':
$ok = true;
$row = $AVE_DB->Query("
SELECT block_name
FROM " . PREFIX . "_blocks
WHERE block_name = '" . $_REQUEST['block_name'] . "'
")->FetchRow();
if (@$row->block_name != '')
{
array_push($errors, $AVE_Template->get_config_vars('BLOCK_EXIST'));
$AVE_Template->assign('errors', $errors);
$ok = false;
}
if ($_REQUEST['block_name'] == '')
{
array_push($errors, $AVE_Template->get_config_vars('BLOCK_COPY_TIP'));
$AVE_Template->assign('errors', $errors);
$ok = false;
}
if ($ok)
{
$row = $AVE_DB->Query("
SELECT block_text
FROM " . PREFIX . "_blocks
WHERE id = '" . (int)$_REQUEST['id'] . "'
")->FetchRow();
$AVE_DB->Query("
INSERT
INTO " . PREFIX . "_blocks
SET
Id = '',
block_name = '" . $_REQUEST['block_name'] . "',
block_text = '" . addslashes($row->block_text) . "',
block_author_id = '" . $_SESSION['user_id'] . "',
block_created = '" . time() . "'
");
reportLog($_SESSION['user_name'] . ' - создал копию блока (' . (int)$_REQUEST['id'] . ')', 2, 2);
header('Location:index.php?do=blocks'.'&cp=' . SESSION);
}
$AVE_Template->assign('content', $AVE_Template->fetch('blocks/multi.tpl'));
break;
}
}
}
?>

192
admin/browser.php

@ -0,0 +1,192 @@
<?php
/**
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
*
* @license GPL v.2
*/
if (!defined('ACP') || !check_permission('mediapool_int'))
{
header('Location:index.php');
exit;
}
global $AVE_DB, $AVE_Template;
ob_start();
ob_implicit_flush(0);
$_REQUEST['onlycontent'] = 1;
$max_size = 128; // максимальный размер миниатюры
$thumb_size = '-t' . $max_size . 'x' . $max_size; // формат миниатюр
$images_ext = array('jpg', 'jpeg', 'png', 'gif', 'JPG', 'JPEG', 'PNG', 'GIF');
$upload_path = BASE_DIR . '/' . UPLOAD_DIR;
$lang = empty($_SESSION['admin_language']) ? 'ru' : $_SESSION['admin_language'];
$AVE_Template = new AVE_Template(BASE_DIR . '/admin/templates/browser');
$AVE_Template->config_load(BASE_DIR . '/admin/lang/' . $lang . '/main.txt');
$AVE_Template->assign('tpl_dir', 'templates/');
$AVE_Template->assign('ABS_PATH', '../');
if (!isset($_REQUEST['action'])) $_REQUEST['action'] = '';
switch ($_REQUEST['action'])
{
case 'list':
$dir = (empty($_REQUEST['dir'])
|| strpos($_REQUEST['dir'], '..') !== false
|| strpos($_REQUEST['dir'], '//') !== false) ? '/' : $_REQUEST['dir'];
$path = $upload_path . (is_dir($upload_path . $dir) ? $dir : '/');
$new_dir = $path . (isset($_REQUEST['newdir']) ? $_REQUEST['newdir'] : '');
$new_dir_rezult = (!is_dir($new_dir) && !mkdir($new_dir, 0777));
$skip_entry = array(THUMBNAIL_DIR, 'recycled', 'index.php');
$dirs = array();
$files = array();
$d = @dir($path);
while (false !== ($entry = @$d->read()))
{
if (in_array($entry, $skip_entry) || $entry{0} === '.') continue;
if (is_dir($path . $entry))
{
$dirs[$entry] = 'index.php?do=browser&type=' . $_REQUEST['type']
. '&amp;action=list&amp;dir=' . $dir . $entry . '/';
}
else
{
$nameParts = explode('.', $entry);
$ext = strtolower(end($nameParts));
$file['icon'] = file_exists("templates/images/mediapool/{$ext}.gif") ? $ext : 'attach';
$file['filesize'] = @round(@filesize($path . $entry)/1024, 2);
$file['moddate'] = date("d.m.y, H:i", @filemtime($path . $entry));
if (in_array($ext, $images_ext))
{
$nameParts[count($nameParts)-2] .= $thumb_size;
$file['bild'] = '/' . UPLOAD_DIR . $dir . THUMBNAIL_DIR . '/' . implode('.', $nameParts);
}
else
{
$file['bild'] = 'templates/images/file.gif';
}
$files[$entry] = $file;
}
}
$d->close();
ksort($dirs);
ksort($files);
$AVE_Template->assign('new_dir_rezult', $new_dir_rezult);
$AVE_Template->assign('recycled', strpos($dir, '/recycled/') === 0);
$AVE_Template->assign('dirs', $dirs);
$AVE_Template->assign('files', $files);
$AVE_Template->assign('max_size', $max_size);
$AVE_Template->assign('dir', $dir);
$AVE_Template->assign('dirup', rtrim(dirname($dir), '\\/') . '/');
$AVE_Template->assign('mediapath', UPLOAD_DIR);
$AVE_Template->display('browser.tpl');
break;
case 'upload':
if (check_permission('mediapool_add'))
{
$AVE_Template->display('browser_upload.tpl');
}else{
echo '<script type="text/javascript">window.close();</script>';
}
break;
case 'upload2':
header('Location:index.php?do=browser&type=image&target=' . $_REQUEST['target'] . '&tval=/' . UPLOAD_DIR . $_REQUEST['tval']);
break;
case 'delfile':
if (check_permission('mediapool_del'))
{
if (empty($_REQUEST['file']) || empty($_REQUEST['dir'])) exit(0);
$file_name = basename($_REQUEST['file']);
$del_file = $upload_path . $_REQUEST['dir'] . $file_name;
if (strpos($del_file, '..') !== false || !is_file($del_file)) exit(0);
$recycled_path = $upload_path . '/recycled/';
if (!is_dir($recycled_path) && !mkdir($recycled_path)) exit(0);
do {$nameParts = explode('.', $file_name);
$nameParts[count($nameParts)-2] .= '-' . uniqid(rand());
$recycled_file_name = implode('.', $nameParts);
} while (file_exists($recycled_path . $recycled_file_name));
@copy($del_file, $recycled_path . $recycled_file_name);
if (@unlink($del_file))
{
$nameParts = explode('.', $file_name);
$ext = strtolower(end($nameParts));
if (in_array($ext, $images_ext))
{
$nameParts[count($nameParts)-2] .= $thumb_size;
@unlink($upload_path . $_REQUEST['dir'] . THUMBNAIL_DIR . '/' . implode('.', $nameParts));
}
reportLog($_SESSION['user_name'] . ' - удалил файл ('
. UPLOAD_DIR . $_REQUEST['dir'] . $file_name . ')');
}
}
echo '<script type="text/javascript">
parent.frames[\'zf\'].location.href="index.php?do=browser&type=', $_REQUEST['type'], '&action=list&dir=', $_REQUEST['dir'], '";
</script>';
break;
default:
@list($target, $target_id) = explode('__', $_REQUEST['target']);
$tval = '/';
if (!empty($_REQUEST['tval']) && 0 === strpos($_REQUEST['tval'], '/' . UPLOAD_DIR . '/'))
{
if (is_dir(BASE_DIR . '/' . $_REQUEST['tval'])) {
$tval = rtrim(substr($_REQUEST['tval'], strlen('/' . UPLOAD_DIR)), '\\/') . '/';
}
if (is_file(BASE_DIR . '/' . $_REQUEST['tval'])) {
$tval = rtrim(dirname(substr($_REQUEST['tval'], strlen('/' . UPLOAD_DIR))), '\\/') . '/';
}
}
$AVE_Template->assign('dir', $tval);
$AVE_Template->assign('target', $target);
$AVE_Template->assign('target_id', $target_id);
$AVE_Template->assign('cppath', substr($_SERVER['PHP_SELF'], 0, -18));
$AVE_Template->assign('mediapath', UPLOAD_DIR);
$AVE_Template->display('browser_2frames.tpl');
break;
}
$out = ob_get_clean();
echo $out;
?>

70
admin/dbsettings.php

@ -0,0 +1,70 @@
<?php
/**
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
*
* @license GPL v.2
*/
if (!defined('ACP'))
{
header('Location:index.php');
exit;
}
check_permission_acp('db_actions');
$AVE_Template->config_load(BASE_DIR . '/admin/lang/' . $_SESSION['admin_language'] . '/dbactions.txt', 'db');
require(BASE_DIR . '/class/class.dbdump.php');
$AVE_DB_Service = new AVE_DB_Service;
if (!empty($_REQUEST['action']))
{
switch ($_REQUEST['action'])
{
case 'optimize':
$AVE_DB_Service->databaseTableOptimize();
break;
case 'repair':
$AVE_DB_Service->databaseTableRepair();
break;
case 'dump_top':
$AVE_DB_Service->databaseDumpExport(1);
exit;
case 'dump':
$AVE_DB_Service->databaseDumpExport();
exit;
case 'restore':
$AVE_DB_Service->databaseDumpImport(BASE_DIR . "/" . ATTACH_DIR . "/");
break;
case 'download':
$AVE_DB_Service->databaseDumpFileSave($_REQUEST['file']);
break;
case 'restorefile':
$AVE_DB_Service->databaseDumpFileImport($_REQUEST['file']);
break;
case 'deletefile':
$AVE_DB_Service->databaseDumpFileDelete($_REQUEST['file']);
break;
}
}
$AVE_Template->assign('db_size', get_mysql_size());
$AVE_Template->assign('files', $AVE_DB_Service->databaseFilesGet());
$AVE_Template->assign('tables', $AVE_DB_Service->databaseTableGet());
$AVE_Template->assign('content', $AVE_Template->fetch('dbactions/actions.tpl'));
?>

298
admin/docs.php

@ -0,0 +1,298 @@
<?php
/**
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
*
* @license GPL v.2
*/
if (!defined('ACP'))
{
header('Location:index.php');
exit;
}
global $AVE_DB, $AVE_Template;
require(BASE_DIR . '/class/class.docs.php');
require(BASE_DIR . '/class/class.rubs.php');
require(BASE_DIR . '/class/class.navigation.php');
require(BASE_DIR . '/class/class.request.php');
$AVE_Document = new AVE_Document;
$AVE_Rubric = new AVE_Rubric;
$AVE_Navigation = new AVE_Navigation;
$AVE_Request = new AVE_Request;
$AVE_Document->documentTemplateTimeAssign();
$AVE_Rubric->rubricPermissionFetch();
$AVE_Template->config_load(BASE_DIR . '/admin/lang/' . $_SESSION['admin_language'] . '/docs.txt', 'docs');
$AVE_Template->assign("navi", $AVE_Template->fetch("navi/navi.tpl"));
switch($_REQUEST['action'])
{
case '' :
if (check_permission_acp('document_view'))
{
switch($_REQUEST['sub'])
{
case 'quicksave':
$_SESSION['use_editor'] = get_settings('use_editor');
$AVE_Document->quickSave();
break;
}
$AVE_Document->documentListGet();
}
$AVE_Template->assign('content', $AVE_Template->fetch('documents/docs.tpl'));
break;
case 'add_new':
if (check_permission_acp('document_view'))
{
$AVE_Request->requestListFetch();
$AVE_Template->assign('content', $AVE_Template->fetch('documents/docs_add_new.tpl'));
}
break;
case 'showsimple':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentListGet();
$AVE_Template->assign('content', $AVE_Template->fetch('documents/docs_simple.tpl'));
}
break;
case 'edit':
if (check_permission_acp('document_view'))
{
$_SESSION['use_editor'] = get_settings('use_editor');
$AVE_Navigation->navigationAllItemList();
$AVE_Request->requestListFetch();
$AVE_Document->documentEdit((int)$_REQUEST['Id']);
}
break;
case 'copy':
if (check_permission_acp('document_view'))
{
$_SESSION['use_editor'] = get_settings('use_editor');
$AVE_Navigation->navigationAllItemList();
$AVE_Request->requestListFetch();
$AVE_Document->documentCopy((int)$_REQUEST['Id']);
}
break;
case 'new':
if (check_permission_acp('document_view'))
{
$_SESSION['use_editor'] = get_settings('use_editor');
$AVE_Navigation->navigationAllItemList();
$AVE_Request->requestListFetch();
$AVE_Document->documentNew((int)$_REQUEST['rubric_id']);
}
break;
case 'innavi':
if (check_permission_acp('document_view') && check_permission_acp('navigation_new'))
{
$AVE_Document->documentInNavi();
}
break;
case 'after':
if (check_permission_acp('document_view'))
{
$AVE_Navigation->navigationAllItemList();
$AVE_Document->documentFormAfter();
}
break;
case 'open':
if (check_permission_acp('document_view'))
{
$AVE_Navigation->navigationItemStatusOn((int)$_REQUEST['Id']);
$AVE_Document->documentStatusSet((int)$_REQUEST['Id'], 1);
}
break;
case 'close':
if (check_permission_acp('document_view'))
{
$AVE_Navigation->navigationItemStatusOff((int)$_REQUEST['Id']);
$AVE_Document->documentStatusSet((int)$_REQUEST['Id'], 0);
}
break;
case 'delete':
if (check_permission_acp('document_view'))
{
$AVE_Navigation->navigationItemStatusOff((int)$_REQUEST['Id']);
$AVE_Document->documentMarkDelete((int)$_REQUEST['Id']);
}
break;
case 'redelete':
if (check_permission_acp('document_view'))
{
$AVE_Navigation->navigationItemStatusOn((int)$_REQUEST['Id']);
$AVE_Document->documentUnmarkDelete((int)$_REQUEST['Id']);
}
break;
case 'enddelete':
if (check_permission_acp('alles'))
{
$AVE_Navigation->navigationItemDeleteFromDoc((int)$_REQUEST['Id']);
$AVE_Document->documentDelete((int)$_REQUEST['Id']);
// Выполняем обновление страницы
header('Location:index.php?do=docs&cp=' . SESSION);
}
break;
case 'revision_recover':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentRevissionRestore((int)$_REQUEST['doc_id'], (int)$_REQUEST['revission'], (int)$_REQUEST['rubric_id']);
}
break;
case 'revision_delete':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentRevissionDelete((int)$_REQUEST['doc_id'], (int)$_REQUEST['revission'], (int)$_REQUEST['rubric_id']);
}
break;
case 'remark':
if (check_permission_acp('remark_view'))
{
$AVE_Document->documentRemarkNew((int)$_REQUEST['Id'], 0);
}
break;
case 'remark_reply':
if (check_permission_acp('remark_view'))
{
$AVE_Document->documentRemarkNew((int)$_REQUEST['Id'], 1);
}
break;
case 'remark_status':
if (check_permission_acp('remark_edit'))
{
$AVE_Document->documentRemarkStatus((int)$_REQUEST['Id'], (int)$_REQUEST['remark_status']);
}
break;
case 'remark_del':
if (check_permission_acp('remark_edit'))
{
$AVE_Document->documentRemarkDelete((int)$_REQUEST['Id'], (int)$_REQUEST['remark_first']);
}
break;
case 'change':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentRubricChange();
}
break;
case 'change_user':
if (check_permission_acp('document_view'))
{
switch($_REQUEST['sub'])
{
case 'save':
$AVE_Document->changeAutorSave();
break;
}
$AVE_Template->assign('content', $AVE_Template->fetch('documents/user.tpl'));
}
break;
case 'find_user':
if (check_permission_acp('document_view'))
{
findautor($_REQUEST['q'], 10);
}
exit;
case 'keywords':
if (check_permission_acp('document_view'))
{
searchKeywords($_REQUEST['q']);
}
exit;
case 'editstatus':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentEditStatus();
}
break;
case 'image_import':
echo json_encode(array("respons"=>image_multi_import($_REQUEST['path']), "status"=>"error", "action"=>"return"));
exit;
case 'translit':
echo($AVE_Document->documentAliasCreate());
exit;
case 'checkurl':
echo($AVE_Document->documentAliasCheck());
exit;
case 'aliases':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentAliasHistoryList();
}
break;
case 'aliases_doc':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentAliasListDoc((int)$_REQUEST['doc_id']);
}
break;
case 'aliases_new':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentAliasNew();
}
break;
case 'aliases_edit':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentAliasEdit();
}
break;
case 'aliases_save':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentAliasSave();
}
break;
case 'aliases_del':
if (check_permission_acp('document_view'))
{
$AVE_Document->documentAliasDel();
}
break;
}
?>

84
admin/fields.php

@ -0,0 +1,84 @@
<?php
/**
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
*
* @license GPL v.2
*/
if (!defined('ACP') || !check_permission('document_view'))
{
header('Location:index.php');
exit;
}
if (!(isset($_REQUEST['doc_id']) && isset($_REQUEST['type']) && isset($_REQUEST['field_id']))) exit;
/**
*(int)$_REQUEST['doc_id']
*(int)$_REQUEST['rubric_id']
*/
$show = true;
// Выполняем запрос к БД на получение данных о документе
$document = $AVE_DB->Query("
SELECT *
FROM " . PREFIX . "_documents
WHERE Id = '" . (int)$_REQUEST['doc_id'] . "'
")->FetchRow();
// запрещаем доступ,
// если автору документа не разрешено изменять свои документы в рубрике
// или пользователю не разрешено изменять все документы в рубрике
if (is_object($document)) {
$_REQUEST['rubric_id'] = (int)$document->rubric_id;
if (!
(
(
isset($_SESSION['user_id']) && $document->document_author_id == $_SESSION['user_id']
&& isset($_SESSION[$_REQUEST['rubric_id'] . '_editown']) && $_SESSION[$_REQUEST['rubric_id'] . '_editown'] == 1
)
|| (isset($_SESSION[$_REQUEST['rubric_id'] . '_editall']) && $_SESSION[$_REQUEST['rubric_id'] . '_editall'] == 1)
)
)
{
$show = false;
}
} else {
$_REQUEST['rubric_id'] = (isset($_REQUEST['rubric_id']) && !empty($_REQUEST['rubric_id'])) ? (int)$_REQUEST['rubric_id'] : 0;
$show = false;
}
// разрешаем доступ, если пользователь принадлежит группе Администраторов или имеет все права на рубрику
if ( (defined('UGROUP') && UGROUP == 1)
|| (isset($_SESSION[$_REQUEST['rubric_id'] . '_alles']) && $_SESSION[$_REQUEST['rubric_id'] . '_alles'] == 1) )
{
$show = true;
}
if ($show)
{
// Выполняем запрос к БД и получаем значение по умолчанию
$default = $AVE_DB->Query("
SELECT
rubric_field_default
FROM " . PREFIX . "_rubric_fields
WHERE Id = '" . (int)$_REQUEST['field_id'] . "' AND rubric_id = '" . (int)$_REQUEST['rubric_id'] . "'
")->GetCell();
$field_value = (isset($_REQUEST['field_value']) ? (string)$_REQUEST['field_value'] : '');
$field_function = 'get_field_' . (string)$_REQUEST['field'];
$field_function($field_value, $_REQUEST['type'], (int)$_REQUEST['field_id'], '', 0, $x, 0, 0, $default);
}
else
{
exit;
}
?>

24
admin/finder.php

@ -0,0 +1,24 @@
<?php
/**
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
*
* @license GPL v.2
*/
if (!defined('ACP'))
{
header('Location:index.php');
exit;
}
global $AVE_DB, $AVE_Template;
if(check_permission_acp('mediapool_finder'))
{
$AVE_Template->assign('content', $AVE_Template->fetch('finder/finder.tpl'));
}
?>

585
admin/functions/func.admin.common.php

@ -0,0 +1,585 @@
<?php
/**
* AVE.cms
*
* @package AVE.cms
* @subpackage admin
* @filesource
*/
/**
* Если был referer, то перенапрявляем на него
*
* @param
* @return $link
*/
function get_referer_admin_link()
{
static $link = null;
if ($link === null)
{
if (isset($_SERVER['HTTP_REFERER']))
{
$link = parse_url($_SERVER['HTTP_REFERER']);
$ok = (trim($link['host']) == $_SERVER['HTTP_HOST']) ? true : false;
$ok = (trim($link['path']) != '/admin/admin.php') ? true : false;
}
$link = ($ok === true ? $_SERVER['HTTP_REFERER'] : '/admin/index.php');
}
return $link;
}
/**
* Получаем кол-во записей в журналах событий
*
* @return Array массив из кол-ва записей
*/
function getLogRecords(){
global $AVE_DB, $AVE_Template;
$logs = array();
$logdata = array();
$log404 = array();
$logsql = array();
$_404dir = BASE_DIR . '/cache/404.php';
$_logdir = BASE_DIR . '/cache/log.php';
$_sqldir = BASE_DIR . '/cache/sql.php';
if(file_exists($_logdir))
@eval('?>' . file_get_contents($_logdir) . '<?');
$logs['logs'] = count($logdata);
if(file_exists($_404dir))
@eval('?>' . file_get_contents($_404dir) . '<?');
$logs['404'] = count($log404);
if(file_exists($_sqldir))
@eval('?>' . file_get_contents($_sqldir) . '<?');
$logs['sql'] = count($logsql);
unset($logdata);
unset($log404);
unset($logsql);
// Передаем данные в шаблон для вывода
$AVE_Template->assign('logs', $logs);
}
/**
* Список пользователей за последние $onlinetime секунд
*
* @param int $onlinetime количество секунд
* @return Array массив из пользователей отсортированный по последней активности
*/
function get_online_users($onlinetime=USERS_TIME_SHOW){
global $AVE_DB, $AVE_Template;
$time=(time()-intval($onlinetime));
$sql=@$AVE_DB->Query("SELECT * FROM ".PREFIX."_users WHERE last_visit>".$time." ORDER BY last_visit DESC");
$online_users=Array();
while ($row = $sql->FetchRow())
{
$row->user_name = get_username_by_id($row->Id);
$row->user_group_name = get_usergroup_by_id($row->user_group);
array_push($online_users,$row);
}
$AVE_Template->assign('online_users', $online_users);
}
/**
* Форматированный вывод размера
*
* @param int $file_size размер
* @return string нормированный размер с единицой измерения
*/
function format_size($file_size)
{
if ($file_size >= 1073741824)
{
$file_size = round($file_size / 1073741824 * 100) / 100 . ' Gb';
}
elseif ($file_size >= 1048576)
{
$file_size = round($file_size / 1048576 * 100) / 100 . ' Mb';
}
elseif ($file_size >= 1024)
{
$file_size = round($file_size / 1024 * 100) / 100 . ' Kb';
}
else
{
$file_size = $file_size . ' b';
}
return $file_size;
}
/**
* Извлечение из БД статистики по основным компонентам системы
*
*/
function get_ave_info()
{
global $AVE_DB, $AVE_Template;
$cnts = array();
$cnts['templates'] = $AVE_DB->Query("SELECT COUNT(*) FROM " . PREFIX . "_templates")->GetCell();
$cnts['documents'] = $AVE_DB->Query("SELECT COUNT(*) FROM " . PREFIX . "_documents")->GetCell();
$cnts['request'] = $AVE_DB->Query("SELECT COUNT(*) FROM " . PREFIX . "_request") ->GetCell();
$cnts['rubrics'] = $AVE_DB->Query("SELECT COUNT(*) FROM " . PREFIX . "_rubrics") ->GetCell();
$sql = $AVE_DB->Query("
SELECT
`ModuleStatus`,
COUNT(`ModuleStatus`) AS cntStatus
FROM " . PREFIX . "_module
GROUP BY `ModuleStatus`
");
while ($row = $sql->FetchRow())
{
$cnts['modules_' . $row->ModuleStatus] = $row->cntStatus;
}
$sql = $AVE_DB->Query("
SELECT
status,
COUNT(status) AS cntStatus
FROM " . PREFIX . "_users
GROUP BY status
");
while ($row = $sql->FetchRow())
{
$cnts['users_' . $row->status] = $row->cntStatus;
}
$AVE_Template->assign('cnts', $cnts);
}
/**
* Размер дириктории
*
* @param string $directory наименование директории
* @return int
*/
function get_dir_size($directory)
{
if (!is_dir($directory)) return -1;
$size = 0;
if ($DIR = opendir($directory))
{
while (($dirfile = readdir($DIR)) !== false)
{
if (@is_link($directory . '/' . $dirfile) || $dirfile == '.' || $dirfile == '..') continue;
if (@is_file($directory . '/' . $dirfile))
{
$size += filesize($directory . '/' . $dirfile);
}
elseif (@is_dir($directory . '/' . $dirfile))
{
$dirSize = get_dir_size($directory . '/' . $dirfile);
if ($dirSize >= 0)
{
$size += $dirSize;
}
else
{
return -1;
}
}
}
closedir($DIR);
}
return $size;
}
/**
* Размер базы данных
*
* @return int
*/
function get_mysql_size()
{
global $AVE_DB;
$mysql_size = 0;
$sql = $AVE_DB->Query("SHOW TABLE STATUS LIKE '" . PREFIX . "_%'");
while ($row = $sql->FetchAssocArray())
{
$mysql_size += $row['Data_length'] + $row['Index_length'];
}
return format_size($mysql_size);
}
function get_ave_tags($srcfile)
{
if (@include_once($srcfile))
{
reset ($vorlage);
$vl = array();
while (list($key, $value) = each($vorlage))
{
$tag = new stdClass;
$tag->cp_tag = $key;
$tag->cp_desc = $value;
array_push($vl, $tag);
unset($tag);
}
return $vl;
}
return null;
}
function get_all_templates()
{
global $AVE_DB;
static $templates = null;
if ($templates == null)
{
$templates = array();
$sql = $AVE_DB->Query("
SELECT
Id,
template_title
FROM " . PREFIX . "_templates
");
while ($row = $sql->FetchRow())
{
array_push($templates, $row);
}
}
return $templates;
}
function get_editable_module()
{
global $AVE_DB, $AVE_Template;
$modules = array();
$sql = $AVE_DB->Query("
SELECT
ModuleName,
ModuleSysName
FROM " . PREFIX . "_module
WHERE `ModuleStatus` = '1'
AND `ModuleAdminEdit` = '1'
ORDER BY ModuleName ASC
");
while ($row = $sql->FetchRow())
{