Разработка биллинговой системы SAAS-среды аренды сайтов

Выбор способа разработки системы контроля доступа. Обработка и хранение информации о клиентах и используемых ими услугах аренды сайтов. Методика натурного моделирования распределенных автоматизированных систем управления бизнес-процессами предприятий.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 02.09.2018
Размер файла 2,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

18. BILLmanager: Структура базы данных -- ISPWiki [Электронный ресурс]/ ISPWiki - документация на программное обеспечение для хостинга

19. PHPXMLDOMParser [Электронныйресурс] /W3Schools - ThePHPGroupCompany «СправочникPHP» [Электронныйресурс]

20. XML (ExtensibleMarkupLanguage) [Электронныйресурс] / SearchMicroservices - microservices architecture information, news and tips

21. XML DOM Tutorial

Приложение А

Техническое задание на разработку биллинговой системы

ПРАВИТЕЛЬСТВО РОССИЙСКОЙ ФЕДЕРАЦИИ

Пермский филиал федерального государственного автономного образовательного учреждения высшего образования «Национальный исследовательский университет «Высшая школа экономики»

Факультет экономики, менеджмента и бизнес-информатики

РАЗРАБОТКА БИЛЛИНГОВОЙ СИСТЕМЫ SAAS-СРЕДЫ АРЕНДЫ САЙТОВ

Техническое задание

Листов: 7

Разработал:

Студент группы БИ-14-1

Клейн А.Д.

Научный руководитель:

Кычкин А.В.

Пермь, 2017

Оглавление

  • 1.Общие сведения58
    • 1.1. Полное и краткое наименования информационной системы58
    • 1.2. Наименование предприятия Заказчика и его реквизиты58
    • 1.3. Основания разработки58
    • 1.4. Плановые сроки начала и окончания работ по созданию интернет-магазина58
  • 2. Назначение и цели создания биллинговой системы59
    • 2.1. Назначение биллинговой системы59
    • 2.2. Цель создания биллинговой системы59
    • 2.3. Целевая аудитория биллинговой системы59
    • 2.4. Основные функции биллинговой системы60
  • 3.Требования к биллинговой системе61
    • 3.1. Общие технические требования61
    • 3.2. Доменное имя биллинговой платформы61
    • 3.3. Требования к биллинговой платформе61
    • 3.4. Требования к системе контроля доступа61
    • 3.5. Программирование62
  • 4. Состав и структура биллинговой системы62
    • 4.1. Общая структура62
  • 5. Порядок сдачи-приемки работ63
  • 6. Перечень работ64
  • 1.Общие сведения

1.1. Полное и краткое наименования информационной системы

Полное наименование системы - «Биллинговая система аренды сайтов».

Краткое наименование системы - «биллинговая система».

1.2. Наименование предприятия Заказчика и его реквизиты

Заказчик - ООО «Инновационные Технологии Информационных Систем».

Адрес: 614000, г. Пермь, ул. Пермская, 70, офисы: 22,23.

Телефон: 8 (342) 240-39-33, 240-39-90

1.3.Основания разработки

Основанием для исполнения работ по созданию автоматизированной системы, предусмотренной в настоящем ТЗ, являются документы:

- Приказ директора

1.4. Плановые сроки начала и окончания работ по созданию интернет-магазина

Сроки исполнения:

Таблица А.1. Этапы и сроки выполнения работ

Этапы работ

Сроки

Ответственный

1

Проектирование биллинговой системы

1-7 апреля

Клейн А.Д.

2

Утверждение проекта биллинговой системы

8-11 апреля

Клейн А.Д.

3

Программирование биллинговой системы

11 - 27 апреля

Клейн А.Д.

4

Тестирование

28-29 апреля

Клейн А.Д.

5

Сдача проекта

30 апреля

Клейн А.Д.

3. Назначение и цели создания биллинговой системы

2.1. Назначение биллинговой системы

Главным назначением биллинговой системы аренды сайтов является учет, сбор и хранение информации об использовании услуг аренды сайтов клиентами. Кроме того, биллинговая система занимается тарификацией предоставляемых услуг, выставлением счетов и обработкой платежей клиентов. Также, функцией биллинговой системы аренды сайтов, является контроль доступа к арендуемому сайту. Внедрение онлайн оплаты и автоматический контроль доступа к арендуемым сайтам позволят автоматизировать бизнес-процесс предоставления услуг без участия работников компании. Внедрение биллинговой системы также позволит эффективнее удовлетворять потребностям клиентов, а также будет способствовать привлечению новых.

2.2. Цель создания биллинговой системы

Целью создания биллинговой системы является повышение эффективности работы компаниии снижение трудозатрат за счет автоматизациипроцесса аренды сайтов.

2.3. Целевая аудитория биллинговой системы

Целевая аудитория биллинговой системы состоит из двухгрупп пользователей:

- юридические лица (малый, средний и крупный бизнес, которым необходима аренда сайтов для перевода работы сайтов на аутсорсинг);

- муниципальные учреждение (школы, министерства, библиотеки и другие государственные организации, которым необходима аренда сайтов для снижения непрофильных издержек на обслуживание сайтов).

2.4. Основные функции биллинговой системы

Биллинговая система должна выполнять следующие функции:

1) Информационная:

Биллинговая система должна предоставлять пользователям доступ к информации:

- О состоянии услуги аренды сайтов;

- О ценах и тарифах на данную услугу.

2) Контролирующая:

Биллинговая система должна контролировать доступ пользователей к сайту в зависимости от наличия оплаты.

3) Оплаты:

Биллинговая система должна предоставлять пользователям возможность онлайн-оплаты услуг аренды сайтов

4) Маркетинговая:

Повышение удовлетворенности клиентов использованием услуг аренды сайтов за счет введения онлайн-оплаты и автоматизации контроля доступа.

3.Требования к биллинговой системе

3.1. Общие технические требования

Биллинговая система должна быть разработана и реализована, используя актуальные и распространенные Интернет-технологий. Должны быть использованы следующие языки программирования: HTML, CSS, PHP. Для разработки биллинговой системы должна использоваться готовая биллинговая платформа Billmanager.

3.2. Доменное имя биллинговой платформы

Доменное имя биллинговой платформы предоставляется Заказчиком. Используемое имя:

3.3. Требования к биллинговой платформе

Биллинговая платформа должна:

- Быть реализована на основе платформы Billmanager;

- предоставлять информацию об оплате услуг аренды сайтов;

- предоставлять пользователям возможность оплаты услуг аренды сайтов;

- обрабатывать полученные платежи пользователей и выставлять счета за использование услуг аренды сайтов.

3.4. Требования к системе контроля доступа

Система контроля доступа должна:

- Получать информацию об оплате услуг аренды сайтов от биллинговой платформы;

- Блокировать доступ пользователя на сайт при отсутствии оплаты.

3.5. Программирование

Биллинговая платформа Billmanager должна быть адаптирована для использования в биллинговой системе

Система контроля доступа биллинговой системы должна быть реализована на PHP5;

4. Состав и структура биллинговой системы

4.1. Общая структура

1. Биллинговая платформа:

- Включает модули автоматической обработки и тарификации услуг аренды сайтов, визуальный интерфейс управления платформой, личный кабинет пользователя. Интерфейс управления платформой включает в себя как вкладки настроек модулей автоматической обработки и тарификации услуг аренды сайтов, так и доступ к управлению услугами отдельных клиентов вручную. Личный кабинет пользователя позволяет получать информацию о состоянии счета и статусе купленных услуг,покупать и оплачивать доступные услуги аренды сайтов, изменять доступные настройки услуг, включать и отключать оплаченные услуги.

2. Система контроля доступа

- Включает в себя сервис проверки оплаты аренды сайтов, недоступный для просмотра арендаторов и страницу блокировки доступа, на которую перенаправляется пользователь сайта при отсутствии оплаты аренды сайта.

5. Порядок сдачи-приемки работ

Промежуточные и окончательные результаты разработки биллинговой системы принимаются Заказчиком в соответствии с планом работ. По результатам приемки работы составляется акт выполненных работ и подписывается сторонами в двух экземплярах. Для проверки качества работ Заказчик использует визуальный контроль и производится тестирование для проверки функциональной работы модулей биллинговой системы.

После подписания акта выполненных работ Исполнитель передает Заказчику все данные, которые необходимы для работы биллинговой платформы и инструкцию по интеграции платформы с существующей системой. Интеграцию и дальнейшую работу биллинговой системы Заказчик осуществляет своими силами.

6. Перечень работ

Таблица А.2. Перечень работ

№ п/п

Этап работы

Задача

Сроки исполнения, раб. дней

1

Проектирование биллинговой системы

- Определение требований к биллинговой системе

2

- Разработка структуры биллинговой системы

3

- Проектирование биллинговой платформы

3

- Проектирование системы контроля доступа

3

- Определение сроков выполнения работы

1

- Подписание договора и технического задания

1

Итого:

13

2

Программирование

Адаптация биллинговой системы

7

Разработка системы контроля доступа

9

Итого:

16

3

Тестирование

- Тестирование стабильности отказоустойчивости работы системы

1

4

Сдача работ

Сдача работ Заказчику, подписание акта выполненных работ

1

Итого

30

Приложение Б

Листинг кода программы проверки оплаты check.php

<?php

// Начальные переменные

//Задаются пользователем

$host = 'localhost'; // адрес сервера

$database = 'database'; // имя базы данных

$user = 'root'; // имя пользователя

$password = '1234567'; // пароль

// Кодпрограммы

connect_database();

get_data();

ask_billmanager();

search_in_DOM();

payment_check();

//Функции

//Подключение базы данных

function connect_database()

{

global $mysqli, $host, $database, $user, $password;

$mysqli = new mysqli($host, $user, $password, $database);

$mysqli->set_charset("utf8");

if (mysqli_connect_errno()) {

printf("Подключение к серверу MySQL невозможно. Кодошибки: %s\n", mysqli_connect_error());

exit;

}

};//endfunction

//Получение данных для запроса из базы данных

function get_data()

{

//Полязапроса

$table = 'billsystem';

$userlogin = 'userlogin';

global $acc = $mysqli->query('SELECT FIRST '.$userlogin.' FROM '.$table.'');

};//endfunction

//Запрос к биллинговой платформе

function ask_billmanager();

{

global $result = "";

try {

$billmanagerAuth = "https://my2017.wdepo.ru:1500/billmgr?authinfo=admin:5U1v0X8b&out=xml&func=rent";

$fh = fopen($billmanagerAuth, "r" );

while( $data = fread( $fh, 8192 ) )

{

$result.= $data;

}

fclose($fh);

}

catch (Exception $e) {

echo "<script>alert(\"Не удалось подключиться к биллинговой платформе\");</script>";

exit;

}

if ($result == "")

{

echo "<script>alert(\"не удалось получить XML файл от биллинговой платформы\");</script>";

exit;

}

};//endfunction

//Поиск статуса услуги в XML документе

function search_in_DOM()

{

global $st;

$doc = new DOMDocument();

if( $doc -> loadXML( $result ) )

{

$root = $doc->documentElement;

foreach ( $root->childNodes as $elem )

{

$st="";

foreach ($elem->childNodes as $node)

{

if( ($node->tagName == "account")&&($node->nodeValue == $acc) )

{

$check=true;

}

if($node->tagName == "status")

{

$st=$node->nodeValue;

}

}

if($check)

{

break;

}

}

}

else

{

echo "<script>alert(\"Неудалостьзагрузить XML файл\");</script>";

exit;

}

};//endfunction

//Проверка оплаты и пренаправление на заглушку

function payment_check()

{

// st = 2 - статусуслугиарендысайтов. 2 значит что услуга активна

if($st!=2)

{

header ("location: capform/cap.php");

}

}//endfunction

?>

Приложение В

Листинг кода класса framework и принадлежащего ему класса billsystem

<?php

/**

* Framework class

*

* @package Kernel

* @copyright 2006 FPIC

*/

class Framework {

/**

*

* @var billsystem

*/

var $billsystem = null;

/**

* Таблица с структурой сайта

*

* @var string

*/

var $_table = 'cms_structure';

/**

* Таблица с статичным текстом

* @var string

var $_tableProp = 'cms_page_properties';

/**

* Кореньсайта

* @var string

*/

var $_rootDir = '';

/**

* Кататол include

*

* @var string

*/

var $_incDir = '';

/**

* Каталог classes

* @var string

*/

var $_clsDir = '';

/**

* Каталог upload

* @var string

*/

var $_uplDir = '';

/**

* Каталог шаблонов

*

* @var string

*/

var $_tplDir = '';

/**

* массив страниц

*

* @var array

*/

var $_pages = array();

/**

*

* @var array

*/

var $_pagesByIndex = array();

/**

* Использованиебуфера

*

* @var boolean

*/

var $useBuffering = true;

/**

*

* @var int

*/

var $startTime = 0;

/**

*

* @var Url

*/

var $url = null;

/**

*

* @var Site

*/

var $site = null;

/**

*

* @var Version

*/

var $version = null;

/**

*

* @var Page

*/

var $page = null;

/**

*

* @var User

*/

var $user;

/**

*

* @var boolean

*/

var $notFound = false;

/**

* Заголовок страницы

*

* @var string

*/

var $title = '';

/**

* Массив мета тегов

*

* @var array

*/

var $meta = array();

/**

* Хлебныекрошки

*

* @var boolean

*/

var $BroadCrambs = false;

/**

* Имякласса

*

* @var string

*/

var $innclass = 'text-inn';

/**

* Имякласса

*

* @var string

*/

var $rclass = 'archive';

/**

*

* @var boolean

*/

var $czipped = false; // always false

/**

* Массив CSS файлов

*

* @var array

*/

var $css = array();

/**

* Массив js файлов

*

* @var array

*/

var $script = array();

/**

*

* @var array

*/

var $sBody = array();

/**

*

* @var array

*/

var $ssBody = array();

/**

*

* @var array

*/

var $bcss = array();

/**

*

* @var int

*/

var $inerface = 0;

/**

*

* @var string

*/

var $inerfaceCode = '';

/**

*

* @var boolean

*/

var $cacheFragment = false;

/**

* Проверка доступа по IP

*

* @global db $db

* @global user $user

* @param string $TableAllowed Имятаблицы

* @return boolean Результатпроверки (TRUE или FALSE)

*/

function ChekIP($TableAllowed) {

global $db, $user;

return !0 == $db->qff("SELECT COUNT(*) FROM `$TableAllowed` WHERE `published`='y' AND `ip`='". mysql_real_escape_string($user->ip). "'");

}

/**

* Подключает js в HEAD

*

* @param string $s путьк js

* @param boolean $b TRUE - добавитьскриптвначало

*/

function addScript($s, $b = false) {

if ($b)

array_unshift($this->script, $s);

else

$this->script[] = $s;

}

/**

* Добавляет js кодвначало

*

* @param string $s Код js

*/

function addStartScriptBody($s) {

$this->ssBody[] = $s;

}

/**

* Добавляет js код

*

* @param string $s Код js

*/

function addScriptBody($s) {

$this->sBody[] = $s;

}

/**

* Добавляет css код в начало

*

* @param string $s Код js

*/

function addCSSBody($c) {

$this->bcss[] = $c;

}

/**

* Подключает CSS файл в HEAD

*

* @param type $c

*/

function addCSS($c) {

$this->css[] = $c;

}

/**

* Возвращает все подключенные js файлы в виде HTML

*

* @return string HTML код

*/

function getScripts() {

$r = '';

if (count($this->script))

foreach ($this->script as $s) {

$r.="<scripttype=\"text/javascript\" src=\"$s\"></script>";

}

return $r;

}

/**

* Возвращает все подключенные CSS файлы в виде HTML

*

* @return string HTML код

*/

function getCSSD() {

$r = '';

if (count($this->css))

foreach ($this->css as $c) {

$r.="<link type=\"text/css\" href=\"$c\" rel=\"stylesheet\" />";

}

return $r;

}

/**

* Возвращает все подключенные CSS файлы в виде HTML и кеширует их

*

* @return string HTML код

*/

function getCSS() {

//$r='';

if (1 || is_my_ip())

return $this->getCSSD();

$z = array();

if (count($this->css)) {

$gz = '';

$hash = hash('crc32b', serialize($this->css));

$fp = correct_path(ROOT. '/upload/min/');

$fn = 'css'. $hash. '.css';

if (is_file($fp. $fn)) {

} else {

foreach ($this->css as $c) {

$z[] = strpos($c, 'http://') === 0 ? $c: (correct_path(ROOT. $c));

}

include_once ROOT. "/include/min/compress.php";

file_compress($fn, $z);

}

return "<link type=\"text/css\" rel=\"stylesheet\" href=\"/upload/min/{$fn}{$gz}\" />";

}

return '';

}

/**

* Возвращает строку с js кодом в виде HTML

*

* @return string HTML код

*/

function getStartScriptBody() {

$r = '';

if (count($this->ssBody))

foreach ($this->ssBody as $s) {

$r.="$s\n";

}return $r;

}

/**

* Возвращает строку с js кодом в виде HTML

*

* @return string HTML код

*/

function getScriptBody() {

$r = '';

if (count($this->sBody))

foreach ($this->sBody as $s) {

$r.="$s\n";

}return $r;

}

/**

* Возвращает строку с CSS кодом в виде HTML

*

* @return string HTML код

*/

function getCSSBody() {

$r = '';

if (count($this->bcss)) {

$r.='<style type="text/css">';

foreach ($this->bcss as $s) {

$r.="$s\n";

}$r.='</style>';

}return $r;

}

/**

* Выводит JQuery кодвметоде ready() ввиде HTML

*/

function renderAllScripts() {

print $this->getScripts();

print "<script type=\"text/javascript\">";

print $this->getScriptBody();

if (count($this->ssBody)) {

print "$(document).ready(function()\n";

print "{\n";

print $this->getStartScriptBody();

print "});\n";

}

print "</script>";

}

/**

* Возвращает мета-теги в виде HTML

*

* @global db $db

* @return string HTML код

*/

function getMeta() {

global $db;

$t = '';

$rez = $db->query("SELECT * FROM `cms_meta` WHERE `version_id`={$this->version->adminId}");

while ($row = $db->fa($rez)) {

$t.= "<meta name='{$row['name']}' content='{$row['content']}' />\n";

}

return $t;

}

/**

* Конструктор

*

* @global db $db

*/

function Framework() {

global $db;

$GLOBALS['framework'] = &$this;

$GLOBALS['SETTINGS'] = array();

$this->startTime = $this->getTime();

$this->_rootDir = $_SERVER['DOCUMENT_ROOT'];

$this->_incDir = $this->_rootDir. "/include/";

$this->_clsDir = $this->_rootDir. "/classes/";

$this->_uplDir = $this->_rootDir. "/upload/";

$this->_tplDir = $this->_rootDir. "/classes/Templates/";

$this->loadCache();

$this->url = new Url();

$this->billsystem = new Billsystem();

$this->site = new Site();

$this->version = new Version($this->site, $this->url);

$this->page = new Page($this->version->id, $this->url, $this->version->adminId, $this->version->translateId);

if ($this->page->unique == 'main') {

$this->relocate($this->getFullUrl($this->version->id));

}

if ($this->version->id == $this->page->id && $this->version->source != 'admin') {

if ($mainPage = $this->getPageByUnique('main', $this->version->translateId)) {

$mpr = $db->qfa("SELECT parent_id, url FROM `{$this->_table}` WHERE id={$mainPage}");

$this->page = new Node(0, $mpr['parent_id'], $mpr['url'], $this->version->adminId, $this->version->translateId);

$this->loadNodeSettings($mainPage);

}

}

$ap_filename = ROOT. '/cache/personal/'. $this->version->site. '.ser';

if (is_file($ap_filename)) {

$addParam = unserialize(implode('', file($ap_filename)));

} else {

$addParam = $db->qfa("SELECT `logo`, `icon`, `template_settings` FROM {$this->_table} WHERE id={$this->version->site}");

if (!$addParam['logo'] || !is_file(getStorage(17). $addParam['logo'])) {

// ищем лого родительского сайта, если есть

if ($this->version->url) {

if ($mainLogo = $db->qff("SELECT `logo` FROM `{$this->_table}` WHERE `url`='' AND parent_id=". $db->qff("SELECT parent_id FROM `{$this->_table}` WHERE id={$this->version->site}"))) {

$addParam['logo'] = $mainLogo;

}

}

if (!$addParam['template_settings']) {

// ищем иконку родительского сайта, если есть

if ($this->version->url) {

if ($template_settings = $db->qff("SELECT `template_settings` FROM `{$this->_table}` WHERE `url`='' AND parent_id=". $db->qff("SELECT parent_id FROM `{$this->_table}` WHERE id={$this->version->site}"))) {

$addParam['template_settings'] = $template_settings;

}

}

}

}

if (!$addParam['icon'] || !is_file(getStorage(17). $addParam['icon'])) {

// ищем иконку родительского сайта, если есть

if ($this->version->url) {

if ($mainLogo = $db->qff("SELECT `icon` FROM `{$this->_table}` WHERE `url`='' AND parent_id=". $db->qff("SELECT parent_id FROM `{$this->_table}` WHERE id={$this->version->site}"))) {

$addParam['icon'] = $mainLogo;

}

}

}

create_file($ap_filename, serialize($addParam));

}

$this->version->logo = getRStorage(17). $addParam['logo'];

$this->version->icon = getRStorage(17). $addParam['icon'];

$this->version->template_settings = $addParam['template_settings'];

if (1 || strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6') === false) {

$this->version->inerface = $db->qff("SELECT `inerface` FROM {$this->_table} WHERE id={$this->version->site}");

if ($this->version->inerface) {

if ($this->version->inerfaceCode = $db->qff("SELECT `name` FROM `cms_interfaces` WHERE id={$this->version->inerface}"))

$this->page->stencil = $this->version->inerfaceCode. '.'. $this->page->stencil;

}

else

$this->version->inerfaceCode = '';

}else {

$this->version->inerface = 0;

$this->version->inerfaceCode = '';

}

$this->initLoadedPages();

$this->loadSettings();

if (!$this->page->id) {

$this->Show404();

}

$this->initBroadCrambs();

}

/**

* Заносит настройки страницы из базы данных в глобальную переменную

*

* @global db $db

* @param int $nodeId ID страницы

*/

function loadNodeSettings($nodeId) {

global $db;

$settingsResult = $db->query("SELECT `name`, `value` FROM `cms_settings` WHERE `page_id`='$nodeId' AND `version_id`='{$this->version->adminId}'");

while ($settingRow = $db->fa($settingsResult))

$GLOBALS['SETTINGS'][$settingRow['name']] = stripSlashes($settingRow['value']);

}

/**

* Загрузка настроек всех страниц

*/

function loadSettings() {

foreach ($this->_pages as $nodeIndex => $node) {

$this->loadNodeSettings($node->id);

}

}

/**

* Загружает информацию о кеше в глобальную переменную CACHE

*/

function loadCache() {

if ($GLOBALS['CACHE_ENABLED']) {

// Init

$GLOBALS['CACHE'] = array();

// Load uniques -> ids

$GLOBALS['CACHE']['UNIQUE'] = $this->loadCacheFile($GLOBALS['CACHE_UNIQUE_FILE']);

// Load ids -> urls

$GLOBALS['CACHE']['URL'] = $this->loadCacheFile($GLOBALS['CACHE_URL_FILE']);

}

}

/**

* Загружаетодинкеш-файл

*

* @param string $cacheFile Путькфайлу

* @return array

*/

function loadCacheFile($cacheFile) {

$cache = array();

if (is_file($this->_rootDir. $cacheFile)) {

if ($fileHandler = fopen($this->_rootDir. $cacheFile, 'r')) {

while (!feof($fileHandler))

if ($str = fgets($fileHandler)) {

list($key, $value) = explode('=', $str);

$cache[trim($key)] = trim($value);

}

fclose($fileHandler);

}

}

return $cache;

}

/**

* Load snippet file

*

* @param string $fileName file name

*/

function loadSnippet($fileName) {

if (is_file($this->version->adirs['snp']. $fileName))

require_once $this->version->adirs['snp']. $fileName;

}

/**

* Add value to cache file

*/

function addCacheValue($cacheFile, $arrayName, $key, $value) {

if (!isset($GLOBALS['CACHE'][$arrayName][$key])) {

if ($fileHandler = fopen($this->_rootDir. $cacheFile, 'a')) {

$GLOBALS['CACHE'][$arrayName][$key] = $value;

fwrite($fileHandler, "$key=$value\n");

fclose($fileHandler);

}

}

}

/**

* Get title

*/

function getTitle() {

if (!$this->title) {

$title = '';

foreach ($this->info as $item) {

if ($title != '')

$title.= ' | ';

$title.= $item[2];

}

return $title;

}

else

return $this->title;

}

/**

* Set page title

*

* @param string $title Title

*/

function setTitle($title) {

$this->title = $title;

}

/**

* Включение буферизации вывода

*/

function initBuffer() {

if ($this->useBuffering)

ob_start();

}

/**

* Сброс (отправка) буфера вывода и отключение буферизации вывода

*/

function processBuffer() {

if ($this->useBuffering)

@ob_end_flush();

}

/**

* Возвращает текущее время

*

* @return float

*/

function getTime() {

list($usec, $sec) = explode(" ", microtime());

return ((float) $usec + (float) $sec);

}

/**

* Возвращает время выполнения

*

* @return type

*/

function getExecutedTime() {

return round(($this->getTime() - $this->startTime) * 1000) / 1000;

}

/**

* Инициализируетстраницысайта

*/

function initLoadedPages() {

$this->_pages[$this->site->id] = $this->site;

$this->_pages[$this->version->id] = $this->version;

$parent_id = $this->version->id;

for ($i = 0; $i < $this->url->path->count(); $i++) {

$page = new Node(0, $parent_id, $this->url->path->item($i), $this->version->adminId, $this->version->translateId);

if (!$page->_isErrors) {

$this->_pages[$page->id] = $page;

$this->_pagesByIndex[$i] = $page->id;

$parent_id = $page->id;

} else {

$this->_isErrors = true;

break;

}

}

}

/**

* Возвращает данные о странице с указанным ID

*

* @param int $id ID страницы

* @return object

*/

function getLoadedPage($id) {

return @$this->_pages[$id];

}

/**

* Возвращает id страницы указанного уровня

*

* @param int $level Уровень структуры сайта

* @return int Возвращает ID страницы в случае успеха, иначе - FALSE

*/

function getLoadedPageByLevel($level) {

$curLev = 0;

foreach ($this->_pages as $page) {

if ($curLev == $level)

return $page->id;

$curLev++;

}

return false;

}

/**

* Проверяет, существует ли страница с указанным ID

*

* @param int $id ID страницы

* @return int Возвращает текущую страницу в случае успеха, иначе - NULL

*/

function isPageLoaded($id) {

return isset($this->_pages[$id]) ? $this->_pages[$id]: null;

}

/**

* Переадресует на указанный в параметре URL

*

* @param string $url URL-адрес

*/

function relocate($url) {

$url = urldecode($url);

if ($url != $_SERVER['REQUEST_URI'] || !@eregi("htdig", $_SERVER['HTTP_USER_AGENT'])) {

@header("HTTP/1.1 301 Moved Permanently");

@header("location: $url");

print '

<script language="JavaScript">

window.location.href = "'. $url. '"

</script>

';

$this->stop();

}

}

/**

* Возвращает полный URL-адрес страницы с указанным ID.

*

* @global db $db

* @param int $strId ID страницы

* @param boolean $fullUrl добавить протокол http:// и DNS

* @param boolean $external для пользовательского интерфейса - false

* @return string URL-адрес

*/

function getFullUrl($strId, $fullUrl = false, $external = false) {

global $db;

$sourceId = ($strId == -1) ? $this->page->id: $strId;

if ($GLOBALS['CACHE_ENABLED'] && isset($GLOBALS['CACHE']['URL'][$strId])) {

$url = $GLOBALS['CACHE']['URL'][$strId];

} else {

$srcId = $sourceId;

$url = "/";

while ($strId != 0) {

$row = $db->qfa("SELECT `url`, `parent_id`, `level`, `target_id` FROM `$this->_table` WHERE `id`='$strId'");

if (!$external) {

// у версии пользовательского интерейса нужно подменить урл

if ($row['level'] == 2 && $row['target_id'] == 0)

$row['url'] = $this->version->url;

}

if ($row['url'] && $row['parent_id'] != '0')

$url = "/". $row['url']. $url;

$strId = $row['parent_id'];

}

if ($GLOBALS['CACHE_ENABLED'])

$this->addCacheValue($GLOBALS['CACHE_URL_FILE'], 'URL', $sourceId, $url);

}

if ($fullUrl) {

$DNS = explode('|', $row['url']);

$url = 'http://'. $DNS[0]. ($url == '/' ? '': $url);

}

return $url;

}

/**

* Возвращает полное наименование пути указанной страницы до указанного уровня

*

* @global db $db

* @param int $strId ID страницы

* @param string $comma Разделитель

* @param int $topLevel Верхнийуровень

* @return string Имяпути

*/

function getFullName($strId, $comma = '/', $topLevel = 0) {

global $db;

$strId = ($strId == -1) ? $this->page->id: $strId;

$name = '';

$level = $this->getLevel($strId);

while ($strId != 0) {

if ($row = $db->get($this->_table, $strId)) {

$name = $comma. stripslashes($row['alias']). $name;

$strId = $row['parent_id'];

$level--;

}

else

$strId = 0;

if ($level < $topLevel)

break;

}

return trim(subStr($name, strLen($comma)));

}

/**

* Возвращает текущий уровень страницы

*

* @global db $db

* @param int $nodeId ID страницы

* @return int уровень искомой страницы

*/

function getLevel($nodeId) {

global $db;

$level = 0;

while ($nodeId != 0) {

$level++;

$nodeId = ($nodeRow = $db->get($this->_table, $nodeId)) ? $nodeRow['parent_id']: 0;

}

return $level;

}

/**

* Проверяет, является ли указанная страница сайтом (корневой)

*

* @param int $nodeId ID страницы

* @return boolean Возвращает TRUE в случае успеха, иначе - FALSE

*/

function isSite($nodeId) {

return $this->getLevel($nodeId) == 1;

}

/**

* Проверяет, является ли указанная страница версией сайта

*

* @param int $nodeId ID страницы

* @return boolean Возвращает TRUE в случае успеха, иначе - FALSE

*/

function isVersion($nodeId) {

return $this->getLevel($nodeId) == 2;

}

/**

* Возвращает ID страницы по ее уникальному имени

*

* @global db $db

* @param string $uniqueIdentifier Уникльноеимя

* @param int $version Версия сайта

* @return int Возвращает ID страницы в случае успеха, иначе возвращает -1

*/

function getPageByUnique($uniqueIdentifier, $version = 0) {

global $db;

if ($version === 0) {

$version = $this->version->id;

$oVersion = $this->version->adminId;

} else {

$oVersion = $this->version->adminId;

}

if ($GLOBALS['CACHE_ENABLED'] && isset($GLOBALS['CACHE']['UNIQUE'][$uniqueIdentifier]))

return $GLOBALS['CACHE']['UNIQUE'][$uniqueIdentifier];

$pageRow = $db->qfa("SELECT `id` FROM `cms_structure` WHERE `unique`='$uniqueIdentifier' AND `published`='y'". ($version ? (' AND (`version_id`='. intval($version). ' OR `version_id`='. intval($oVersion). ')'): ''). " ORDER BY `id` DESC");

if (!$pageRow) {

$pageRow = $db->qfa("SELECT `id` FROM `cms_structure` WHERE `unique`='$uniqueIdentifier' AND `published`='y' AND `version_id`={$this->version->adminId}");

}

if ($pageRow) {

if ($GLOBALS['CACHE_ENABLED'] && !isset($GLOBALS['CACHE']['UNIQUE'][$uniqueIdentifier]))

$this->addCacheValue($GLOBALS['CACHE_UNIQUE_FILE'], 'UNIQUE', $uniqueIdentifier, $pageRow['id']);

return $pageRow['id'];

}

return -1;

}

/**

* Возвращает URL адрес страницы с указанным уникальным именем

*

* @param string $uniqueIdentifier Уникльноеимя

* @param int $version Версиясайта

* @return string URL-адрес страницы

*/

function getPageUrlByUnique($uniqueIdentifier, $version = 0) {

return $this->getFullUrl($this->getPageByUnique($uniqueIdentifier, $version));

}

/**

* Инициализирует "хлебныекрошки"

*/

function initBroadCrambs() {

foreach ($this->_pages as $page) {

$this->crambs[] = array($page->name, $page->url);

}

}

/**

* Добавляет URL-адрес в "шлебные крошки"

*

* @param string $name Имяссылки

* @param string $url ссылка

*/

function addBroadCramb($name, $url) {

$this->crambs[] = array($name, $url);

}

/**

* Останавливает работу фреймворка и выдает сообщение на экран, если оно передано

*

* @global db $db

* @param string $text Текстсообщения

*/

function stop($text = '') {

global $db;

$this->processBuffer();

$db->close();

die($text);

}

/**

* Выводит ошибку сервера, соответствующую коду состояния

*

* @param int $number Код состояния

*/

function showError($number) {

$this->Show404($number);

}

/**

* Возвращает транслит имени, переданного в параметре

*

* @global type $framework

* @global db $db

* @param string $alias Имя

* @return string транслит

*/

function getUrlByAlias($alias) {

global $framework, $db;

$trans = array(

' ' => '-',

//'/'=>'-',

'\\' => '-',

'&' => '',

'+' => '',

);

$allowed = array('-', '_', '.', '/');

$url = ToTranslit($alias);

$url = strtr($url, $trans);

$url2 = '';

$i = 0;

while ($i < strlen($url)) {

if (containsLatin($url[$i]) || is_digit($url[$i]) || in_array($url[$i], $allowed))

$url2.=$url[$i];

$i++;

}

$url = mysql_real_escape_string(stripcslashes($url2));

return $url;

}

/**

* Выводит ошибку сервера

*

* @param int $error Кодошибки

*/

function Show404($error = 404) {

if ($error == 404) {

$u = urldecode($_SERVER['REQUEST_URI']);

$u = explode('?', $u);

if (containsCirillic($u[0])) {

$newUrl = $this->getUrlByAlias($u[0]);

$i = 1;

while (isset($u[$i])) {

$newUrl.= '?'. $u[$i];

$i++;

}

$this->relocate($newUrl);

}

}

$e = array(

400 => 'Bad Request',

401 => 'Unauthorized',

402 => 'Payment Required',

403 => 'Forbidden',

404 => 'Not Found',

405 => 'Method Not Allowed',

406 => 'Not Acceptable',

407 => 'Proxy Authentication Required',

408 => 'Request Timeout',

409 => 'Conflict',

410 => 'Gone',

500 => 'Internal Server Error',

501 => 'Not Implemented',

502 => 'Bad Gateway',

503 => 'Service Unavailable',

504 => 'Gateway Timeout',

505 => 'HTTP Version Not Supported',

506 => 'Variant Also Negotiates',

507 => 'Insufficient Storage',

509 => 'Bandwidth Limit Exceeded',

510 => 'Not Extended',

);

$t = @$e[intval($error)];

header("HTTP/1.1 {$error} ". $t);

$heading = $t;

$message = $t;

include($_SERVER['DOCUMENT_ROOT']. "/vs/common/errors/error_404.php");

$this->stop();

}

/**

* Возвращает имя страницы с указанным ID

*

* @global db $db

* @param int $strId ID страницы

* @return boolean Возвращает ID страницы в случае успеха, иначе - FALSE

*/

function getName($strId) {

global $db;

if ($row = $db->get($this->_table, $strId))

return stripslashes($row['alias']);

return false;

}

/**

* Переадресует на предыдущую страницу, которая привела пользователя на текущую. В случае неудачи переадресует его на адрес сайта.

*/

function back() {

$this->relocate(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER']: (isset($_SERVER['CHARSET_REFERER']) ? $_SERVER['CHARSET_REFERER']: $this->getFullUrl($this->version->id)));

}

function getAdminsId($pageId = 0) {

global $db;

if (!$pageId)

$versionId = $this->version->id;

else

$versionId = $db->qff("SELECT `version_id` FROM `$this->_table` WHERE `id`=". intval($pageId));

if ($versionId) {

$rez = $db->query("SELECT id FROM `$this->_table` WHERE `target_id`=$versionId");

if ($db->nr($rez)) {

$a = array();

while ($row = $db->fa($rez))

$a[] = $row['id'];

return $a;

}

else

return false;

}

else

return false;

}

/**

* Возвращает содержимое буфера вывода и очищает его, если он имеется

*

* @return boolean Возвращает FALSE в случае, если буфер пуст

*/

function StartCacheFragment() {

if (!$this->cacheFragment) {

$this->cacheFragment = true;

$this->contents = ob_get_contents();

ob_clean();

} else {

return false;

}

}

/**

* Выводит содержимое буфера вывода и очищает его, если он имеется

*

* @return boolean Возвращает FALSE в случае, если буфер пуст

*/

function getCacheTextFragment() {

if ($this->cacheFragment) {

$this->cacheFragment = false;

$this->cacheFragmentText = ob_get_contents();

ob_clean();

print $this->contents;

print $this->cacheFragmentText;

return $this->cacheFragmentText;

} else {

return false;

}

}

/**

* Удаляет файл по указанной дирректории

*

* @param string $path Путькфайлу

*/

function _____clearDir($path) {

if (is_dir($path)) {

$dir = opendir($path);

while ($file = readdir($dir)) {

if ($file[0] != '.')

if (is_dir($path. '/'. $file))

$this->_____clearDir($path. '/'. $file);

else

unlink($path. '/'. $file);

}

}

}

/**

* Очищает кэш группы (Каталога)

*

* @param string $group группакэша

* @param int $version Версиясайта

*/

function clearCacheGroup($group = 'other', $version = 0) {

if ($version == 'all') {

$path = ROOT. '/cache/'. $group;

} else {

if (!$version)

$version = $this->version->id;

$path = ROOT. '/cache/'. $group. '/'. $version;

}

$this->_____clearDir($path);

}

}

new Framework();

/**

* billsystem class

*

* @package Kernel

* @copyright 2006 FPIC

*/

class billsystem {

/**

*

* @var string

*/

var $userlogin = '';

/**

*

* @var string

*/

var $billurl = '';

/**

* Конструктор

*

* @global db $db

*/

function Billsystem() {

global $db;

$this->userlogin = $db->get($this->billtable, 'userlogin')

$this->billurl = $db->get($this->billtable, 'billurl')

}

} // endclass billsystem

?>

Размещено на Allbest.ru

...

Подобные документы

  • Анализ аппаратных и программных средств предприятия ТОО "Alicesystems", занимающегося разработкой web-сайтов. Выбор структур, топологий и технологий разработки системы. Технологии создания сайтов и выбор площадки. Описание программно-аппаратных средств.

    отчет по практике [690,9 K], добавлен 29.05.2015

  • Современные тенденции разработки и принципы классификации web-сайтов. Сайт как средство развития бизнеса. Технологии, применяемые при разработке web-сайтов, системы управления контентом. Разработка web-сайта для ЗАО "Кондитерская фабрика "Саратовская".

    дипломная работа [4,1 M], добавлен 01.10.2012

  • Анализ видов обеспечения автоматизированных систем предприятия. Средства программирования распределенных систем обработки информации. Изучение особенностей использования технологии распределенных объектов. Эксплуатация программного обеспечения системы.

    отчет по практике [486,0 K], добавлен 23.11.2014

  • Разработка информационной системы, предназначенной для структурированного хранения данных и вывода информации об имеющихся моделях автомобилей и их технических характеристик, дополнительных услуг, стоимости аренды, клиентах, статистических данных за год.

    курсовая работа [1,0 M], добавлен 21.03.2015

  • Анализ средств информации консалтингового бизнеса: обзор языков программирования и программных средств для создания сайтов, информационных систем и сайтов консалтинговых фирм. Моделирование бизнес-процессов. Разработка интернет-представительства.

    дипломная работа [2,9 M], добавлен 11.04.2012

  • Статические и динамические веб-сайты, их характеристика. Анализ возможностей применения языка PHP, системы управления базами данных (СУБД) MySQL, фреймворка CodeIgniter для разработки динамических веб-сайтов. Разработка шаблонов и главной страницы.

    курсовая работа [2,8 M], добавлен 19.09.2012

  • Приемы и правила методологии информационного моделирования IDEF1X. Особенности автоматизации управления бизнес-процессами. Компоненты системы предметной области "Спортивные соревнования", накопление и хранение информации, логика взаимосвязей данных.

    курсовая работа [2,3 M], добавлен 11.04.2012

  • Анализ средств формирования рейтинга Интернет-сайтов. Критерии оценки веб-сайтов при проведении Интернет-конкурса. Выбор браузера и разработка архитектуры плагина. Описание плагина средствами языка UML. Разработка и реализация программных модулей.

    дипломная работа [3,2 M], добавлен 12.08.2017

  • Обзор методов и средств по созданию и проектированию Web–сайтов. Языки программирования для создания Web–сайтов. Анализ достоинств и недостатков систем управления сайтом CMS. Разработка дизайна и макета сайта. Расчет затрат на разработку продукта.

    дипломная работа [1,1 M], добавлен 02.06.2016

  • Организационно-штатная структура телекоммуникационной компании. Разработка плана автоматизации управления бизнес-процессами (БП), ее основные этапы. Формализация БП с помощью методик моделирования IDEF0, IDEF3 и DFD. Требования к системе автоматизации.

    курсовая работа [969,3 K], добавлен 24.01.2014

  • Разработка программного обеспечения для автоматизации доступа, обработки, вывода информации об услугах автосервиса и его клиентах с использованием языка программирования С# и MySQL. Проектирование интерфейсов системы. Схема алгоритма работы программы.

    курсовая работа [665,6 K], добавлен 02.04.2015

  • Виды обеспечения автоматизированных информационных систем. Составление технического задания, разработка информационной системы, составление руководства пользователя к программе. Средства программирования распределенных систем обработки информации.

    отчет по практике [1,1 M], добавлен 16.04.2017

  • Основные технологии разработки ресурсов Интернет. Процесс разработки веб-сайта. Понятие Web-сайта и классификация Web-сайтов. Основные этапы разработки Web-сайта. Использование HTML, CSS, JavaScript, FLASH, PHP и реляционной базы данных MySQL.

    презентация [1,3 M], добавлен 28.11.2015

  • Стандартизация подходов к управлению бизнес-процессами. Модель BMM для исследования взаимодействий и управления бизнес-процессами предприятия. Методологии моделирования и управления бизнес-процессами. Способы реализации поставленных перед системой задач.

    курсовая работа [232,3 K], добавлен 12.05.2014

  • Порядок учета аренды земли и основные проблемы, связанные с ней. Порядок разработки и необходимость создания специального программного обеспечения для учета аренды земли, критерии эффективности. Требования к обработке и контролю экономической информации.

    курсовая работа [59,9 K], добавлен 29.07.2009

  • Классификация современных web-технологий. Сравнительный анализ систем управления сайтами. Исследование методов разработки, оптимизации и продвижения Web-сайта. Изучение фреймворков, используемых при разработке сайтов. Обзор создания графического дизайна.

    дипломная работа [3,8 M], добавлен 07.11.2013

  • Использование различных маркетинговых инструментов для продвижения веб-сайтов г. Архангельска. Проблема неразвитости рынка и отсутствия налаженной системы работы через Интернет в регионе. Поддержка сайтов предприятий для привлечения новых клиентов.

    контрольная работа [16,6 K], добавлен 28.02.2012

  • Цели и задачи информационных систем (ИС). Выбор, требования, оценка эффективности внедрения ИС. Оценка эффективности внедрения ИС. ERP-cистема управления бизнес-процессами промышленного предприятия. Сравнение ERP-системы LAWSON M3.

    реферат [518,9 K], добавлен 07.08.2007

  • Важнейшая задача компьютерных систем управления - хранение и обработка данных. Особенности применения в ОАО "ММК" системы управления реляционными базами данных "Oracle", предназначенной для одновременного доступа к большим объемам хранимой информации.

    курсовая работа [87,6 K], добавлен 04.12.2014

  • Анализ существующих сайтов образовательный учреждений учебных сайтов Астраханской области. Обзор среды реализации разработки веб-сайта. Требования к официальным сайтам образовательных учреждений. Разработка логической структуры веб-сайта колледжа.

    дипломная работа [6,1 M], добавлен 10.06.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.