Серверная часть системы создания и управления сайтами

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

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

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

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

id: 2, draft_uid: default, temp_id: 2

Page Drafts

id: 1, draft_uid: Крольчатина, page_id: 1 published: 0

id: 3, draft_uid: default, page_id: 3 published: 1

id: 4, draft_uid: черновичок my, page_id: 1 published: 1

Resources

id: 2, resource_uid: 02.mid, isglobal: 0

id: 3, resource_uid: 2009-04-13-1239634885_1024x600_scrot.png, isglobal: 1

id: 4, resource_uid: aleaf.jpg, isglobal: 1

МЕНЮ

Содержимое 1

Содержимое 2

Копирайт обновлённый

Step 23

Кроликииии они такие ccccc….

@|@

Мех и мясо бла-бла

Step 24

О кроликах…@;@bunniesnew@;@Крольчатина@,@0@;@черновичок my@,@1@|@Заготовочка о пушистиках@;@shushpan@;@default@,@1

Step 25

Меню. Содержимое 1. Содежимое 2. Копирайт.@|@Содержимое и копирайт

Step 26

2@|@2@|@3

Step 27

2009-04-13-1239634885_1024x600_scrot.png@;@var/uploads/resources/2009-04-13-1239634885_1024x600_scrot.png@;@png@|@aleaf.jpg@;@var/uploads/resources/aleaf.jpg@;@jpg

Step 28

02.mid@;@var/uploads/resources/02.mid@;@midi

Step 29

3.2 Тестирование удаленного установщика

Автоматическое тестирование удаленного установщика представляет определенную сложность как по скорости работы подобного тестировщика, так и по трудозатратам на его реализацию. Поэтому тестирование проводилось вручную.

В качестве объекта тестирования был выбран Интернет-хостинг. Сам установщик находился на локальном сервере с выходом в Интернет.

На рисунке 4.1 представлена форма, которую заполняет пользователь. Далее он нажимает кнопку «Установить» и ожидает завершения установки.

Рисунок 4.1 - Система устанавливается

На рисунке 4.2 представлено успешное выполнение установки.

Рисунок 4.2 - Система установлена

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

Рисунок 4.3 - Схема базы данных после установки

Рисунок 4.4 - Содержимое файловой системы после установки

4 Руководство пользователя

4.1 Руководство по работе с интерфейсом для взаимодействия с клиентом

Клиент должен вызвать скрипт coordinator.php, передав ему список необходимых параметров и их значения методом POST. Взаимодействие между клиентом и сервером осуществляется путем передачи команд и считывания результата их выполнения. Поэтому клиент должен всегда дожидаться ответа от сервера. В списке параметров присутствует обязательный параметра типа «команды», который задает необходимое для клиента действие. Все возможные команды описаны ниже.

Формат описания: вначале идет понятное человека название параметра и дополнительное описание, эта части выделена символами « // »; далее идет необходимый список параметров, обрамленный « // ». До знака «=» идет название параметра, после знака «=» - описание его значения. В квадратных скобках может указываться сноска на примечание к конкретному параметру или его обязательность. После списка параметров возможно наличие дополнительного описания и примера использования.

 // Добавление шаблона

 // Служит для добавления новосозданного шаблона в базу

 //

cmd=template_add

template_uid=<uid нового шаблона>

draft_uid=<uid черновика> [1]

object_data=<html тэги взятые из body>

 //

 // Добавление страницы

 // Служит для добавления новосозданной страницы в базу

 //

cmd=page_add

page_uid=<uid новой страницы>

template_uid=<uid связанного шаблона>

draft_uid=<uid черновика страницы> [можно опустить для uid по-умолчанию]

page_url=<url-имя страницы для генерации>

object_data=<html тэги взятые из body>

published=<true/false - публиковать ли страницу или нет> [2]

 //

 // Добавление черновика

 // Служит для добавления новосозданного черновика в базу

 //

cmd=draft_add

page_uid=<uid страницы>

template_uid=<uid связанного шаблона>

draft_uid=<uid черновика страницы>

object_data=<html тэги взятые из body>

published=<true/false - публиковать ли страницу или нет> [2]

 //

 // Сохранить шаблон

 // Служит для сохранения существующего шаблона

 // Присутствуют необязательные параметры

 //

cmd=template_save

template_uid=<uid шаблона> [обязательный параметр]

draft_uid=<uid черновика> [1]

object_data=<html тэги взятые из body>

new_uid=<новый uid шаблона на смену старому>

 //

 // Сохранить черновик страницы

 // Сохраняет измененный черновик существующей страницы

 // Присутствуют необязательные параметры

 //

cmd=page_savedraft

page_uid=<uid новой страницы> [обязательный параметр]

template_uid=<uid связанного шаблона> [для черновика]

draft_uid=<uid черновика страницы> [для черновика обязательный]

page_url=<url-имя страницы для генерации>

object_data=<html тэги взятые из body> [для черновика]

published=<true/false - публиковать ли страницу или нет> [2] [для черновика]

new_draftuid=<новый uid для черновика> [для черновика]

new_pageuid=<новый uid для страницы>

 //

 // Удалить ресурс

 // Служит для удаления существующего ресурса

 // Удаляется сразу с диска

 //

cmd=resource_remove

resource_uid=<uid ресурса>

 //

 // Удалить страницу

 // Служит для удаления существующей страницы

 // Удаляется сразу с диска а также все ассоциированные черновики

 //

cmd=page_remove

page_uid=<uid страницы>

 //

 // Удалить черновик страницы

 // Служит для удаления существующего черновика страницы

 // Удаляется сразу с диска

 //

cmd=page_removedraft

page_uid=<uid страницы>

draft_uid=<uid черновика>

 //

 // Удалить шаблон

 // Служит для удаления существующего шаблона

 //

cmd=template_remove

template_uid=<uid шаблона>

 //

 // Получить шаблон

 // Отдает код шаблона

 //

cmd=template_get

template_uid=<uid шаблона>

 //

 // Получить черновик страницы

 // Отдает код черновика страницы

 //

cmd=page_getdraft

page_uid=<uid страницы>

draft_uid=<uid черновика>

 //

 // Получить данные о страницах для ЦУП

 //

cmd=mcc_get_pages

 // Возвращает:

 // Формат:

 // page_uid; page_url; draft1, published; draft2, published|page_uid; page_url; draft1, published

 // Пример:

 // О кроликах…; bunniesnew; Крольчатина, 0; черновичок my, 1; черновичок my2,0|Заготовочка о пушистиках; shushpan; default, 0|

 // где | - разделитель нормальный

 // ; - подразделитель

 // , - подподразделитель

 // Разделитель не обязательно имеет указанный вид, поэтому должен быть глобальной переменной!

 //

 // Получить данные о шаблонах для ЦУП

 //

cmd=mcc_get_templates

 // Возвращает:

 // Формат:

 // template_uid@|@template_uid@|@template_uid

 // Пример:

 // Меню. Содержимое 1. Содежимое 2. Копирайт.@|@Содержимое и копирайт

 // где @|@ - разделитель нормальный

 // Разделитель не обязательно имеет указанный вид, поэтому должен быть глобальной переменной!

 //

 // Получить общие данные для ЦУП

 //

cmd=mcc_get_status

 // Возвращает:

 // Формат:

 // templates_count@|@pages_count@|@resources_count

 // Пример:

 // 2@|@2@|@3

 // где @|@ - разделитель нормальный

 // Разделитель не обязательно имеет указанный вид, поэтому должен быть глобальной переменной!

 //

 // Получить данные о ресурсах для ЦУП или Редактора

 // Присутствуют необязательные параметры

 //

cmd=resources_get

usedin_type=<страница или шаблон (p/t)>

usedin_uid=<uid страницы или шаблона>

 // Два последних параметра необязательны. Если они не указаны, то извлекаются

 // все глобальные ресурсы. Если указаны, то только ресурсы специфицированной

 // страницы или шаблона.

 //

 // Возвращает:

 // Формат:

 // resource_uid@;@path@;@type@|@resource_uid@;@path@;@type

 // Пример:

 // 2009-04-13-1239634885_1024x600_scrot.png@;@/data/projects/projectx/svn/trunk/var/uploads/resources/2009-04-13-1239634885_1024x600_scrot.png@;@png@|@aleaf.jpg@;@/data/projects/projectx/svn/trunk/var/uploads/resources/aleaf.jpg@;@jpg

 // где @|@ - разделитель нормальный

 // @;@ - подразделитель

 // Разделитель не обязательно имеет указанный вид, поэтому должен быть глобальной переменной!

 //

[1] В данной версии шаблон имеет только один черновик с uid=default,

поэтому данный параметр можно опустить.

[2] В случае публикации страница сразу же сгенерируется.

Во всех случаях, если не оговорено иное, при успешном выполнении операции сервер возвращает сообщение «OK». Булевы параметры передаются в текстовом виде строчными латинскими буквами: «true» или «false»

Загрузка ресурсов осуществляется не напрямую через координатор, а через скрипт загрузки resource_uploader.php, который сам обращается к координатору. Ниже представлена минимальная html-форма для реализации загрузки ресурсов.

<form enctype= «multipart/form-data» action= «resource_uploader.php» method= «post»>

<input type= «hidden» name= «MAX_FILE_SIZE» value= «300000»>

<input type= «hidden» name= «type» value= «midi»>

<input type= «hidden» name= «isglobal» value= «false»>

<input type= «hidden» name= «usedin_type» value= «page»>

<input type= «hidden» name= «usedin_uid» value= «mynewpage01»>

Send this file: <input name= «resource» type= «file»>

<input type= «submit» value= «Send File»>

</form>

4.2 Руководство по работе с удаленным установщиком

Удаленный установщик следует разместить в той же папке, где находится система создания и управления сайтами. В папке установщика следует изменить файл files, указав в нем все копируемые на FTP файлы и папки. Пример:

config.php

server

server/coordinator.php

server/resource_uploader.php

server/install.php

server/dbm

server/dbm/dbm.php

Далее следует отредактировать файл permissions1, в котором выставить специальные права доступа на отдельные файлы или папки, присваиваемые до вызова установщика базы данных, в виде:

config.php 0640,

где 0640 - права доступа к файлу в восьмиричном виде.

В завершении надо отредактировать файл permissions2, выставив специальные права доступа на отдельные файлы или папки, присваиваемые после вызова установщика базы данных.

Также убедитесь, что папка tmp доступна для записи php-интерпретатору.

Запуск установщика производится через файл installer.html.

Заключение

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

· реализовано полное кэширование страниц в файловую систему, ускоряя доступ к ним;

· разработана понятная пользователю структура файловой системы, отражающая основные логические блоки системы создания и управления сайтами;

· создан интерфейс для простого и легкого соединения сервера с клиентом;

· реализована возможность быстрой адаптации системы под различные СУБД.

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

В будущем предполагается дальнейшее развитие и совершенствование системы создания и управления сайтами, и внедрение ее на рынок систем данного класса в сети Интернет.

Библиография

1 The CMS Matrix [Электронный ресурс] / Обзор и сравнение современных CMS. - Режим доступа: http://www.cmsmatrix.org/. - Загл. с экрана. - яз. англ.

2 GOOGLE [Электронный ресурс] / Мультиязыковой Интернет-поисковик. - Режим доступа: http://google.ru/. - Загл. с экрана. - яз. рус., англ.

3 Wikipedia, the free encyclopedia [Электронный ресурс]: Cвободная общедоступная многоязычная универсальная энциклопедия. - Режим доступа: http://en.wikipedia.org/wiki/Main_Page. - Загл. с экрана. - яз. англ.

4 HTMLBOOK.RU [Электронный ресурс] / Сайт посвященный языку HTML, CSS, веб-дизайну, графике и процессу создания сайтов. - Режим доступа: http://htmlbook.ru/. - Загл. с экрана. - яз. рус.

5 PHP Manual [Электронный ресурс] / Официальная документация PHP. - Режим доступа: http://www.php.net/manual/en/. - Загл. с экрана. - яз. англ.

6 W3Schools [Электронный ресурс] / Портал для веб-разработчиков. - Режим доступа: http://www.w3schools.com/. - Загл. с экрана. - яз. англ.

7 СанПиН 2.2.2/2.4.1340-03 [Электронный ресурс] / Санитарные правила и нормы. Режим доступа: http://www.niiot.ru/doc/doc055/doc_00.htm. - Загл. с экрана. - яз. рус.

Приложение

Исходный код координатора (coordinator.php)

<? php

require_once ('../config.php');

require_once ('stm/stm.php');

require_once ('lib/strbool.php');

$stm = new StorageManager ($config_storage_type, $config_db_host, $config_db_user,

$config_db_password, $config_db_name);

$cmd = $_POST['cmd'];

switch ($cmd)

{

 // Adding absolutely new project

case «project_add»:

{

if (! isset ($_POST['project_uid'])) $project_uid = «default»;

else $project_uid = $_POST ['project_uid'];

echo $stm->AddProject ($project_uid);

}

break;

 // Adding newly uploaded resource

case «resource_add»:

{

$uid = $_POST['uid'];

$isglobal = $_POST['isglobal'];

$path = $_POST['path'];

$type = $_POST['type'];

$usedin_type = $_POST ['usedin_type'];

$usedin_uid = $_POST ['usedin_uid'];

if (! isset ($_POST['project_uid'])) $project_uid = «default»;

else $project_uid = $_POST ['project_uid'];

 // If resource is global

if (strbool:istrue($isglobal))

{

echo $stm->AddResource ($uid, strbool:tobool($isglobal), $path,

$type, $project_uid);

}

else

{

echo $stm->AddResource ($uid, strbool:tobool($isglobal), $path,

$type, $project_uid, $usedin_uid, $usedin_type);

}

}

break;

 // Adding absolutely new template

case «template_add»:

{

$template_uid = $_POST ['template_uid'];

if (! isset ($_POST['draft_uid'])) $draft_uid = «default»;

else $draft_uid = $_POST ['draft_uid'];

if (! isset ($_POST['project_uid'])) $project_uid = «default»;

else $project_uid = $_POST ['project_uid'];

$creation_time = time();

$modification_time = $creation_time;

$object_data = stripslashes ($_POST['object_data']);

echo $stm->AddTemplate ($template_uid, $draft_uid, $creation_time,

$modification_time, $object_data, $project_uid);

}

break;

 // Adding absolutely new page

case «page_add»:

{

$page_uid = $_POST ['page_uid'];

if (! isset ($_POST['draft_uid'])) $draft_uid = «default»;

else $draft_uid = $_POST ['draft_uid'];

if (! isset ($_POST['project_uid'])) $project_uid = «default»;

else $project_uid = $_POST ['project_uid'];

$template_uid = $_POST ['template_uid'];

$creation_time = time();

$modification_time = $creation_time;

$page_url = $_POST ['page_url'];

$object_data = stripslashes ($_POST['object_data']);

$published = $_POST['published'];

$generated_modification_time = 0;

$generated_draft_uid = $draft_uid;

echo $stm->AddPage ($page_uid, $draft_uid, $template_uid, $creation_time,

$modification_time, $page_url,

$object_data, $published,

$generated_modification_time, $generated_draft_uid,

$project_uid);

}

break;

 // Saving template

case «template_save»:

{

if (! isset ($_POST['project_uid'])) $project_uid = «default»;

else $project_uid = $_POST ['project_uid'];

if (! isset ($_POST['template_uid'])) die («Not valid arguments»);

$template_uid = $_POST ['template_uid'];

if (! isset ($_POST['draft_uid'])) $draft_uid = «default»;

else $draft_uid = $_POST ['draft_uid'];

$modification_time = FALSE;

$object_data = FALSE;

$new_uid = FALSE;

$modification_time = time();

if (isset ($_POST['object_data'])) $object_data = stripslashes ($_POST['object_data']);

if (isset ($_POST['new_uid'])) $new_uid = $_POST ['new_uid'];

echo $stm->SaveTemplate ($project_uid, $template_uid, $draft_uid,

$modification_time, $object_data, $new_uid);

}

break;

 // Saving page draft

case «page_savedraft»:

{

if (! isset ($_POST['project_uid'])) $project_uid = «default»;

else $project_uid = $_POST ['project_uid'];

if (! isset ($_POST['page_uid'])) die («Not valid arguments»);

$page_uid = $_POST ['page_uid'];

$draft_uid = FALSE;

if (isset ($_POST['draft_uid'])) $draft_uid = $_POST ['draft_uid'];

$template_uid = FALSE;

$page_url = FALSE;

$object_data = FALSE;

$published = FALSE;

$modification_time = time();

$new_draftuid = FALSE;

$new_pageuid = FALSE;

if (isset ($_POST['template_uid'])) $template_uid = $_POST ['template_uid'];

if (isset ($_POST['page_url'])) $page_url = $_POST ['page_url'];

if (isset ($_POST['object_data'])) $object_data = stripslashes ($_POST['object_data']);

if (isset ($_POST['published'])) $published = $_POST['published'];

if (isset ($_POST['new_draftuid'])) $new_draftuid = $_POST ['new_draftuid'];

if (isset ($_POST['new_pageuid'])) $new_pageuid = $_POST ['new_pageuid'];

echo $stm->SavePageDraft ($project_uid, $page_uid, $draft_uid, $template_uid,

$modification_time, $page_url,

$object_data, $published,

$new_draftuid, $new_pageuid);

}

break;

 // Adding absolutely new draft

case «page_adddraft»:

{

if (! isset ($_POST['project_uid'])) $project_uid = «default»;

else $project_uid = $_POST ['project_uid'];

$page_uid = $_POST ['page_uid'];

$draft_uid = $_POST ['draft_uid'];

$template_uid = $_POST ['template_uid'];

$creation_time = time();

$modification_time = $creation_time;

 //TODO: make defaults for object_data

$object_data = stripslashes ($_POST['object_data']);

$published = $_POST['published'];

echo $stm->AddDraft ($project_uid, $page_uid, $draft_uid, $template_uid,

$creation_time, $modification_time,

$object_data, $published);

}

break;

 // Remove resource

case «resource_remove»:

{

if (! isset ($_POST['project_uid'])) $project_uid = «default»;

else $project_uid = $_POST ['project_uid'];

$resource_uid = $_POST ['resource_uid'];

echo $stm->RemoveResource ($project_uid, $resource_uid, TRUE);

}

break;

 // Remove page

case «page_remove»:

{

if (! isset ($_POST['project_uid'])) $project_uid = «default»;

else $project_uid = $_POST ['project_uid'];

$page_uid = $_POST ['page_uid'];

echo $stm->RemovePage ($project_uid, $page_uid, TRUE);

}

break;

 // Remove page draft

case «page_removedraft»:

{

if (! isset ($_POST['project_uid'])) $project_uid = «default»;

else $project_uid = $_POST ['project_uid'];

$page_uid = $_POST ['page_uid'];

$draft_uid = $_POST ['draft_uid'];

echo $stm->RemoveDraft ($project_uid, $page_uid, $draft_uid, TRUE);

}

break;

 // Remove template

case «template_remove»:

{

if (! isset ($_POST['project_uid'])) $project_uid = «default»;

else $project_uid = $_POST ['project_uid'];

$template_uid = $_POST ['template_uid'];

echo $stm->RemoveTemplate ($project_uid, $template_uid);

}

break;

 // Get template

case «template_get»:

{

if (! isset ($_POST['project_uid'])) $project_uid = «default»;

else $project_uid = $_POST ['project_uid'];

$template_uid = $_POST ['template_uid'];

if (! isset ($_POST['draft_uid'])) $draft_uid = «default»;

else $draft_uid = $_POST ['draft_uid'];

echo $stm->GetTemplate ($project_uid, $template_uid, $draft_uid);

}

break;

 // Get page draft

case «page_getdraft»:

{

if (! isset ($_POST['project_uid'])) $project_uid = «default»;

else $project_uid = $_POST ['project_uid'];

$page_uid = $_POST ['page_uid'];

if (! isset ($_POST['draft_uid'])) $draft_uid = «default»;

else $draft_uid = $_POST ['draft_uid'];

echo $stm->GetPageDraft ($project_uid, $page_uid, $draft_uid);

}

break;

 // Get pages info for MCC

case «mcc_get_pages»:

{

if (! isset ($_POST['project_uid'])) $project_uid = «default»;

else $project_uid = $_POST ['project_uid'];

echo $stm->MccGetPages ($project_uid);

}

break;

 // Get templates info for MCC

case «mcc_get_templates»:

{

if (! isset ($_POST['project_uid'])) $project_uid = «default»;

else $project_uid = $_POST ['project_uid'];

echo $stm->MccGetTemplates ($project_uid);

}

break;

 // Get common info for MCC

case «mcc_get_status»:

{

if (! isset ($_POST['project_uid'])) $project_uid = «default»;

else $project_uid = $_POST ['project_uid'];

echo $stm->MccGetStatus ($project_uid);

}

break;

 // Get resources info for MCC or Editor

case «resources_get»:

{

if (! isset ($_POST['project_uid'])) $project_uid = «default»;

else $project_uid = $_POST ['project_uid'];

$usedin_type = FALSE;

$usedin_uid = FALSE;

if (isset ($_POST['usedin_type'])) $usedin_type = $_POST ['usedin_type'];

if (isset ($_POST['usedin_uid'])) $usedin_uid = $_POST ['usedin_uid'];

echo $stm->GetResources ($project_uid, $usedin_type, $usedin_uid);

}

break;

default:

{

echo «Bad command.»;

}

}

unset($stm);

$_POST = array();

?>

Приложение В

Исходный код автоматической системы тестирования (dummy.php)

<? php

require_once ('install.php');

require_once ('../config.php');

require_once ('lib/strbool.php');

$verbose = TRUE;

$step = 1;

function showdb()

{

global $verbose;

if (!$verbose) return;

require_once ('dbm/dbm.php');

global $config_db_host, $config_db_user, $config_db_password, $config_db_name;

$dbm = new MysqlDbm ($config_db_host, $config_db_user, $config_db_password);

$dbm->SelectDatabase ($config_db_name);

global $step;

echo «<br><b><u><i>Step».$step. «</i></u></b><br>»;

$res = $dbm->GetTable (array('pages'));

echo «<b><u>Pages</u></b><br>»;

while ($row = mysql_fetch_array ($res, MYSQL_NUM))

{

printf («<b>id:</b>%s, <b>page_uid:</b>%s, <b>page_url:</b>%s<br>», $row[0], $row[1], $row[4]);

}

$res = $dbm->GetTable (array('templates'));

echo «<b><u>Templates</u></b><br>»;

while ($row = mysql_fetch_array ($res, MYSQL_NUM))

{

printf («<b>id:</b>%s, <b>template_uid:</b>%s<br>», $row[0], $row[1]);

}

$res = $dbm->GetTable (array('template_drafts'));

echo «<b><u>Template Drafts</u></b><br>»;

while ($row = mysql_fetch_array ($res, MYSQL_NUM))

{

printf («<b>id:</b>%s, <b>draft_uid:</b>%s, <b>temp_id:</b>%s<br>», $row[0], $row[1], $row[2]);

}

$res = $dbm->GetTable (array('page_drafts'));

echo «<b><u>Page Drafts</u></b><br>»;

while ($row = mysql_fetch_array ($res, MYSQL_NUM))

{

printf («<b>id:</b>%s, <b>draft_uid:</b>%s, <b>page_id:</b>%s <b>published:</b>%s<br>», $row[0], $row[1], $row[7], $row[6]);

}

$res = $dbm->GetTable (array('resources'));

echo «<b><u>Resources</u></b><br>»;

while ($row = mysql_fetch_array ($res, MYSQL_NUM))

{

printf («<b>id:</b>%s, <b>resource_uid:</b>%s, <b>isglobal:</b>%s<br>», $row[0], $row[1], $row[2]);

}

unset($dbm);

echo «<br>»;

$step += 1;

}

function showsteponly()

{

global $verbose;

if (!$verbose) return;

global $step;

echo «<br><b><u><i>Step».$step. «</i></u></b><br>»;

echo «<br>»;

$step += 1;

}

showdb();

$_POST['cmd'] = «project_add»;

require ('coordinator.php');

showdb();

$_POST['cmd'] = «template_add»;

$_POST ['template_uid'] = «Меню, содержимое 1, содежимое 2, копирайт»;

$_POST ['draft_uid'] = «default»;

$_POST ['object_data'] = '<div id= «menu»>МЕНЮ</div><div id= «text1» editable= «true»>Содержимое 1</div><div id= «text2» editable= «true»>Содержимое 2</div><div id= «copy»>Копирайт</div>';

require ('coordinator.php');

showdb();

$_POST['cmd'] = «page_add»;

$_POST ['page_uid'] = «О кроликах»;

$_POST ['template_uid'] = «Меню, содержимое 1, содежимое 2, копирайт»;

 // $_POST ['draft_uid'] = «default»;

$_POST ['page_url'] = «bunnies»;

$_POST ['object_data'] = '<div id= «text1»>Кроликииии они такие….</div>'.$config_delim_normal.'<div id= «text2»>Мех и мясо бла-бла</div>';

$_POST['published'] = strbool:get_true();

require ('coordinator.php');

showdb();

$_POST['cmd'] = «template_save»;

$_POST ['template_uid'] = «Меню, содержимое 1, содежимое 2, копирайт»;

$_POST ['object_data'] = '<div id= «menu»>МЕНЮ</div><div id= «text1» editable= «true»>Содержимое 1</div><div id= «text2» editable= «true»>Содержимое 2</div><div id= «copy»>Копирайт обновлённый</div>';

require ('coordinator.php');

showdb();

$_POST['cmd'] = «page_savedraft»;

$_POST ['page_uid'] = «О кроликах»;

$_POST ['template_uid'] = «Меню, содержимое 1, содежимое 2, копирайт»;

$_POST ['draft_uid'] = «default»;

$_POST ['page_url'] = «bunniesnew»;

$_POST ['object_data'] = '<div id= «text1»>Кроликииии они такие….</div>'.$config_delim_normal.'<div id= «text2»>Мех и мясо бла-бла, обновлено</div>';

$_POST['published'] = strbool:get_true();

require ('coordinator.php');

showdb();

 ////////////////////////////////////////

$_POST['cmd'] = «template_add»;

$_POST ['template_uid'] = «Содержимое и копирайт»;

$_POST ['object_data'] = '<div id= «text» editable= «true»></div><div id= «copy»>Копирайт</div>';

require ('coordinator.php');

showdb();

$_POST['cmd'] = «page_add»;

$_POST ['page_uid'] = «О кошечках and dogs»;

$_POST ['template_uid'] = «Содержимое и копирайт»;

$_POST ['draft_uid'] = «default»;

$_POST ['page_url'] = «pets»;

$_POST ['object_data'] = '<div id= «text»>Some info about blah-blah</div>';

$_POST['published'] = strbool:get_true();

require ('coordinator.php');

showdb();

$_POST['cmd'] = «page_add»;

$_POST ['page_uid'] = «Заготовочка о пушистиках»;

$_POST ['template_uid'] = «Содержимое и копирайт»;

$_POST ['draft_uid'] = «default»;

$_POST ['page_url'] = «shushpan»;

$_POST ['object_data'] = '<div id= «text»>Шушпанчики…</div>';

$_POST['published'] = strbool:get_false();

require ('coordinator.php');

showdb();

 ////////////////////////////////////////

$_POST['cmd'] = «resource_add»;

$_POST['uid'] = «01.mid»;

$_POST['isglobal'] = strbool:get_false();

$_POST['path'] = «var/uploads/resources/01.mid»;

$_POST['type'] = «midi»;

$_POST ['usedin_type'] = «page»;

$_POST ['usedin_uid'] = «Заготовочка о пушистиках»;

require ('coordinator.php');

showdb();

$_POST['cmd'] = «resource_remove»;

$_POST ['resource_uid'] = «01.mid»;

require ('coordinator.php');

showdb();

$_POST['cmd'] = «resource_add»;

$_POST['uid'] = «02.mid»;

$_POST['isglobal'] = strbool:get_false();

$_POST['path'] = «var/uploads/resources/02.mid»;

$_POST['type'] = «midi»;

$_POST ['usedin_type'] = «page»;

$_POST ['usedin_uid'] = «Заготовочка о пушистиках»;

require ('coordinator.php');

showdb();

 //////////////////////////////////

$_POST['cmd'] = «template_save»;

$_POST ['template_uid'] = «Меню, содержимое 1, содежимое 2, копирайт»;

$_POST ['object_data'] = '<div id= «menu»>МЕНЮ</div><div id= «text1» editable= «true»>Содержимое 1</div><div id= «text2» editable= «true»>Содержимое 2</div><div id= «copy»>Копирайт обновлённый</div>';

$_POST ['new_uid'] = «Меню. Содержимое 1. Содежимое 2. Копирайт.»;

require ('coordinator.php');

showdb();

$_POST['cmd'] = «page_savedraft»;

$_POST ['page_uid'] = «О кроликах»;

$_POST ['template_uid'] = «Меню. Содержимое 1. Содежимое 2. Копирайт.»;

$_POST ['draft_uid'] = «default»;

$_POST ['page_url'] = «bunniesnew»;

$_POST ['object_data'] = '<div id= «text1»>Кроликииии они такие….</div>'.$config_delim_normal.'<div id= «text2»>Мех и мясо бла-бла, обновлено</div>';

$_POST['published'] = strbool:get_true();

$_POST ['new_draftuid'] = «Крольчатина»;

$_POST ['new_pageuid'] = «О кроликах…»;

require ('coordinator.php');

showdb();

$_POST['cmd'] = «page_remove»;

$_POST ['page_uid'] = «О кошечках and dogs»;

require ('coordinator.php');

showdb();

$_POST['cmd'] = «template_remove»;

$_POST ['template_uid'] = «О кошечках and dogs»;

require ('coordinator.php');

showdb();

$_POST['cmd'] = «page_adddraft»;

$_POST ['page_uid'] = «О кроликах…»;

$_POST ['template_uid'] = «Меню. Содержимое 1. Содежимое 2. Копирайт.»;

$_POST ['draft_uid'] = «черновичок my»;

$_POST ['object_data'] = '<div id= «text1»>Кроликииии они такие ccccc….</div>'.$config_delim_normal.'<div id= «text2»>Мех и мясо бла-бла</div>';

$_POST['published'] = strbool:get_true();

require ('coordinator.php');

showdb();

$_POST['cmd'] = «page_adddraft»;

$_POST ['page_uid'] = «О кроликах…»;

$_POST ['template_uid'] = «Меню. Содержимое 1. Содежимое 2. Копирайт.»;

$_POST ['draft_uid'] = «черновичок my2»;

$_POST ['object_data'] = '<div id= «text1»>Кроликииии они такие бдя….</div>'.$config_delim_normal.'<div id= «text2»>Мех и мясо бла-бла</div>';

$_POST['published'] = strbool:get_false();

require ('coordinator.php');

showdb();

$_POST['cmd'] = «page_removedraft»;

$_POST ['page_uid'] = «О кроликах…»;

$_POST ['draft_uid'] = «черновичок my2»;

require ('coordinator.php');

showdb();

$_POST['cmd'] = «resource_add»;

$_POST['uid'] = «2009-04-13-1239634885_1024x600_scrot.png»;

$_POST['isglobal'] = strbool:get_true();

$_POST['path'] = «var/uploads/resources/2009-04-13-1239634885_1024x600_scrot.png»;

$_POST['type'] = «png»;

require ('coordinator.php');

showdb();

$_POST['cmd'] = «resource_add»;

$_POST['uid'] = «aleaf.jpg»;

$_POST['isglobal'] = strbool:get_true();

$_POST['path'] = «var/uploads/resources/aleaf.jpg»;

$_POST['type'] = «jpg»;

require ('coordinator.php');

showdb();

$_POST['cmd'] = «page_savedraft»;

$_POST ['page_uid'] = «Заготовочка о пушистиках»;

$_POST ['draft_uid'] = «default»;

$_POST['published'] = strbool:get_true();

require ('coordinator.php');

showdb();

$_POST['cmd'] = «template_get»;

$_POST ['template_uid'] = «Меню. Содержимое 1. Содежимое 2. Копирайт.»;

$_POST ['draft_uid'] = «default»;

require ('coordinator.php');

showsteponly();

$_POST['cmd'] = «page_getdraft»;

$_POST ['page_uid'] = «О кроликах…»;

$_POST ['draft_uid'] = «черновичок my»;

require ('coordinator.php');

showsteponly();

$_POST['cmd'] = «mcc_get_pages»;

require ('coordinator.php');

showsteponly();

echo «<br>»;

$_POST['cmd'] = «mcc_get_templates»;

require ('coordinator.php');

showsteponly();

echo «<br>»;

$_POST['cmd'] = «mcc_get_status»;

require ('coordinator.php');

showsteponly();

echo «<br>»;

$_POST['cmd'] = «resources_get»;

require ('coordinator.php');

showsteponly();

echo «<br>»;

$_POST['cmd'] = «resources_get»;

$_POST ['usedin_type'] = 'p';

$_POST ['usedin_uid'] = 'Заготовочка о пушистиках';

require ('coordinator.php');

showsteponly();

?>

Приложение

Исходный код менеджера хранилища (stm.php)

<? php

require_once ('lib/valcheck.php');

require_once ('dbm/dbm.php');

require_once ('generator/generator.php');

require_once ('../config.php');

 // Interface between actual database and coordinator

 // AddResource, AddTemplate, AddPage, SaveTemplate, SavePageDraft,

class StorageManager

{

private $dbm = NULL;

private $db_tables_projects = «projects»;

private $db_tables_resources = «resources»;

private $db_tables_resource_usedin = «resource_usedin»;

private $db_tables_templates = «templates»;

private $db_tables_template_drafts = «template_drafts»;

private $db_tables_pages = «pages»;

private $db_tables_page_drafts = «page_drafts»;

private $db_name = «»;

function __construct ($storage_type, $db_host, $db_user, $db_password, $db_name)

{

$this->db_name = $db_name;

 // Creating appropriate db connector

switch ($storage_type)

{

case «mysql»:

{

$this->dbm = new MysqlDbm ($db_host, $db_user, $db_password);

}

break;

default:

{

die («Cannot create storage.»);

}

}

}

 // Adding new project

function AddProject ($project_uid)

{

 // Checking if input is correct

if (! valcheck:isuid ($project_uid))

{

return «Bad input»;

}

$this->dbm->SelectDatabase ($this->db_name);

 // Adding project

$vals = array ('project_uid'=>$project_uid);

$this->dbm->AddData ($this->db_tables_projects, $vals);

return «OK»;

}

 // Adding new resource

function AddResource ($uid, $isglobal, $path, $type, $project_uid,

$usedin_uid = NULL, $usedin_type = NULL)

{

 // Checking if input is correct

if (! valcheck:isuid($uid) ||! is_bool($isglobal) ||

! valcheck:issystempath($path) ||! valcheck:isalpha($type) ||

! valcheck:isuid ($project_uid))

{

return «Bad input 1»;

}

if (!$isglobal && (! valcheck:isuid ($usedin_uid) ||

! valcheck:isalpha ($usedin_type)))

{

return «Bad input 2»;

}

$this->dbm->SelectDatabase ($this->db_name);

$project_id = $this->getIdByUid ($this->db_tables_projects, 'project_uid', $project_uid);

$vals = array ('resource_uid'=>$uid,

'isglobal'=>$isglobal,

'path'=>$path,

'data_type'=>$type,

'project_id'=>$project_id);

$this->dbm->AddData ($this->db_tables_resources, $vals);

if (!$isglobal)

{

 // Getting resource id from uid

$id = $this->getIdByUidCond ($this->db_tables_resources, 'resource_uid', $uid, 'project_id', $project_id);

 // Getting usedin id from uid

if ($usedin_type == «page»)

{

$usedin_id = $this->getIdByUidCond ($this->db_tables_pages, 'page_uid', $usedin_uid, 'project_id', $project_id);

}

else

{

$usedin_id = $this->getIdByUidCond ($this->db_tables_templates, 'template_uid', $usedin_uid, 'project_id', $project_id);

}

 // Adding links

$vals = array ('resource_id'=>$id,

'usedin_id'=>$usedin_id,

'usedin_type'=>$usedin_type);

$this->dbm->AddData ($this->db_tables_resource_usedin, $vals);

}

return «OK»;

}

 // Adding new template

function AddTemplate ($template_uid, $draft_uid, $creation_time,

$modification_time, $object_data, $project_uid)

{

 // Checking if input is correct

if (! valcheck:isuid ($template_uid) ||! valcheck:isuid ($draft_uid) ||

! valcheck:isunixtime ($creation_time) ||

! valcheck:isunixtime ($modification_time) ||

! valcheck:isobjectdata ($object_data) ||

! valcheck:isuid ($project_uid))

{

return «Bad input»;

}

$this->dbm->SelectDatabase ($this->db_name);

$project_id = $this->getIdByUid ($this->db_tables_projects, 'project_uid', $project_uid);

 // Adding template

$vals = array ('template_uid'=>$template_uid,

'project_id'=>$project_id);

$this->dbm->AddData ($this->db_tables_templates, $vals);

 // Getting template id from uid

$template_id = $this->getIdByUidCond ($this->db_tables_templates, 'template_uid', $template_uid, 'project_id', $project_id);

 // Adding template draft

$vals = array ('draft_uid'=>$draft_uid,

'template_id'=>$template_id,

'creation_time'=>$creation_time,

'modification_time'=>$modification_time,

'object_data'=>$object_data);

$this->dbm->AddData ($this->db_tables_template_drafts, $vals);

return «OK»;

}

 // Adding new page

function AddPage ($page_uid, $draft_uid, $template_uid, $creation_time,

$modification_time, $page_url, $object_data, $published,

$generated_modification_time, $generated_draft_uid,

$project_uid)

{

 // Checking if input is correct

if (! valcheck:isuid ($page_uid) ||! valcheck:isuid ($draft_uid) ||

! valcheck:isuid ($template_uid) ||! valcheck:isurl ($page_url) ||

! valcheck:isunixtime ($creation_time) ||

! valcheck:isunixtime ($modification_time) ||

! valcheck:isobjectdata ($object_data) ||! is_bool (strbool:tobool($published)) ||

! valcheck:isunixtime ($generated_modification_time) ||

! valcheck:isuid ($generated_draft_uid) ||

! valcheck:isuid ($project_uid))

{

return «Bad input»;

}

 // Adding page

$this->dbm->SelectDatabase ($this->db_name);

$project_id = $this->getIdByUid ($this->db_tables_projects, 'project_uid', $project_uid);

$vals = array ('page_uid'=>$page_uid,

'generated_modification_time'=>$generated_modification_time,

'generated_draft_uid'=>$generated_draft_uid,

'page_url'=>$page_url,

'project_id'=>$project_id);

$this->dbm->AddData ($this->db_tables_pages, $vals);

 // Getting template id from uid

$template_id = $this->getIdByUidCond ($this->db_tables_templates, 'template_uid', $template_uid, 'project_id', $project_id);

 // Getting page id from uid

$page_id = $this->getIdByUidCond ($this->db_tables_pages, 'page_uid', $page_uid, 'project_id', $project_id);

 // Adding page draft

$vals = array ('draft_uid'=>$draft_uid,

'template_id'=>$template_id,

'creation_time'=>$creation_time,

'modification_time'=>$modification_time,

'object_data'=>$object_data,

'published'=>strbool:tobool($published),

'page_id'=>$page_id);

$this->dbm->AddData ($this->db_tables_page_drafts, $vals);

$this->PublishPage ($project_id, $page_uid);

return «OK»;

}

 // Adding new draft

function AddDraft ($project_uid, $page_uid, $draft_uid, $template_uid,

$creation_time, $modification_time, $object_data, $published)

{

 // Checking if input is correct

if (! valcheck:isuid ($project_uid) ||

! valcheck:isuid ($page_uid) ||! valcheck:isuid ($draft_uid) ||

! valcheck:isuid ($template_uid) ||

! valcheck:isunixtime ($creation_time) ||

! valcheck:isunixtime ($modification_time) ||

! valcheck:isobjectdata ($object_data) ||

! is_bool (strbool:tobool($published)))

{

return «Bad input»;

}

$this->dbm->SelectDatabase ($this->db_name);

$project_id = $this->getIdByUid ($this->db_tables_projects, 'project_uid', $project_uid);

 // Getting template id from uid

$template_id = $this->getIdByUidCond ($this->db_tables_templates, 'template_uid', $template_uid, 'project_id', $project_id);

if ($template_id == 0) return «Bad template uid»;

 // Getting page id from uid

$page_id = $this->getIdByUidCond ($this->db_tables_pages, 'page_uid', $page_uid, 'project_id', $project_id);

if ($page_id == 0) return «Bad page uid»;

if (strbool:istrue($published))

{

 // Unpublish all drafts

$table_name = $this->db_tables_page_drafts;

$new_data = array ('published'=>FALSE);

$condition = array ('page_id'=>$page_id);

$this->dbm->UpdateData ($table_name, $new_data, $condition);

}

 // Adding page draft

$vals = array ('draft_uid'=>$draft_uid,

'template_id'=>$template_id,

'creation_time'=>$creation_time,

'modification_time'=>$modification_time,

'object_data'=>$object_data,

'published'=>strbool:tobool($published),

'page_id'=>$page_id);

$this->dbm->AddData ($this->db_tables_page_drafts, $vals);

$this->PublishPage ($project_id, $page_uid);

return «OK»;

}

 // Save template

function SaveTemplate ($project_uid, $template_uid, $draft_uid,

$modification_time = FALSE,

$object_data = FALSE,

$new_uid = FALSE)

{

 // Checking if input is correct

if (! valcheck:isuid ($template_uid) ||! valcheck:isuid ($draft_uid) ||

! valcheck:isuid ($project_uid))

{

return «Bad input 1»;

}

if (($modification_time &&! valcheck:isunixtime ($modification_time)) ||

($object_data &&! valcheck:isobjectdata ($object_data)) ||

($new_uid &&! valcheck:isuid ($new_uid)))

{

return «Bad input 2»;

}

$this->dbm->SelectDatabase ($this->db_name);

$project_id = $this->getIdByUid ($this->db_tables_projects, 'project_uid', $project_uid);

 // Getting template id from uid

$template_id = $this->getIdByUidCond ($this->db_tables_templates, 'template_uid', $template_uid, 'project_id', $project_id);

 // Update template draft

$table_name = $this->db_tables_template_drafts;

$new_data = array();

if ($modification_time) $new_data ['modification_time'] = $modification_time;

if ($object_data) $new_data ['object_data'] = $object_data;

$condition = array ('template_id'=>$template_id,

'draft_uid'=>$draft_uid);

$this->dbm->UpdateData ($table_name, $new_data, $condition);

 // Change uid of template

if ($new_uid)

{

$table_name = $this->db_tables_templates;

$new_data = array ('template_uid'=>$new_uid);

$condition = array ('id'=>$template_id);

$this->dbm->UpdateData ($table_name, $new_data, $condition);

}

return «OK»;

}

 // Saving page draft

function SavePageDraft ($project_uid, $page_uid, $draft_uid,

$template_uid = FALSE,

$modification_time = FALSE,

$page_url = FALSE,

$object_data = FALSE,

$published = FALSE,

$new_draftuid = FALSE,

$new_pageuid = FALSE)

{

 // Checking if input is correct

if (! valcheck:isuid ($project_uid) ||! valcheck:isuid ($page_uid))

{

return «Bad input 1»;

}

if (($draft_uid &&! valcheck:isuid ($draft_uid)) ||

($template_uid &&! valcheck:isuid ($template_uid)) ||

($page_url &&! valcheck:isurl ($page_url)) ||

($modification_time &&! valcheck:isunixtime ($modification_time)) ||

($object_data &&! valcheck:isobjectdata ($object_data)) ||

($published &&! is_bool (strbool:tobool($published))) ||

($new_draftuid &&! valcheck:isuid ($new_draftuid)) ||

($new_pageuid &&! valcheck:isuid ($new_pageuid)))

{

return «Bad input 2»;

}

$this->dbm->SelectDatabase ($this->db_name);

$project_id = $this->getIdByUid ($this->db_tables_projects, 'project_uid', $project_uid);

 // Assume url won't change

$old_page_url = FALSE;

if ($page_url)

{

 // Getting old url to delete old data

$what = array ('page_url');

$from = array ($this->db_tables_pages);

$condition = array ('page_uid'=>$page_uid);

$row = $this->dbm->GetData ($what, $from, $condition);

$old_page_url = $row[0];

 // Updating url

$table_name = $this->db_tables_pages;

$new_data = array ('page_url'=>$page_url);

$condition = array ('page_uid'=>$page_uid);

$this->dbm->UpdateData ($table_name, $new_data, $condition);

}

if ($draft_uid)

{

$page_id = $this->getIdByUidCond ($this->db_tables_pages, 'page_uid', $page_uid, 'project_id', $project_id);

$draft_id = $this->getIdByUidCond ($this->db_tables_page_drafts, 'draft_uid', $draft_uid, 'page_id', $page_id);

 // Updating draft

$table_name = $this->db_tables_page_drafts;

$new_data = array();

if ($modification_time) $new_data ['modification_time'] = $modification_time;

if ($object_data) $new_data ['object_data'] = $object_data;

if ($published)

{

if (strbool:istrue($published))

{

 // Unpublish all drafts

$table_name = $this->db_tables_page_drafts;

$new_data = array ('published'=>FALSE);

$condition = array ('page_id'=>$page_id);

$this->dbm->UpdateData ($table_name, $new_data, $condition);

}

$new_data['published'] = strbool:tobool($published);

}

if ($template_uid)

{

$template_id = $this->getIdByUidCond ($this->db_tables_templates, 'template_uid', $template_uid, 'project_id', $project_id);

if ($template_id == 0)

return «Error. No such template.»;

$new_data ['template_id'] = $template_id;

}

if ($new_draftuid)

{

$new_data ['draft_uid'] = $new_draftuid;

$draft_uid = $new_draftuid;

}

$condition = array ('id'=>$draft_id);

$this->dbm->UpdateData ($table_name, $new_data, $condition);

 // Change uid of page

if ($new_pageuid)

{

$table_name = $this->db_tables_pages;

$new_data = array ('page_uid'=>$new_pageuid);

$condition = array ('id'=>$page_id);

$this->dbm->UpdateData ($table_name, $new_data, $condition);

$page_uid = $new_pageuid;

}

}

$this->PublishPage ($project_id, $page_uid, $old_page_url);

return «OK»;

}

private function PublishPage ($project_id, $page_uid, $old_page_url = FALSE)

{

 // Getting page id from uid

$page_id = $this->getIdByUidCond ($this->db_tables_pages, 'page_uid', $page_uid, 'project_id', $project_id);

 // Getting page url

$what = array ('page_url');

$from = array ($this->db_tables_pages);

$condition = array ('id'=>$page_id);

$row = $this->dbm->GetData ($what, $from, $condition);

$page_url = $row[0];

 // Getting draft uid

$what = array ('draft_uid');

$from = array ($this->db_tables_page_drafts);

$condition = array ('page_id'=>$page_id,

'published'=>TRUE);

$row = $this->dbm->GetData ($what, $from, $condition);

$draft_uid = $row[0];

 // If no drafts to publish, remove previous from disk

if (empty ($draft_uid))

{

$gen = new Generator();

$gen->RemovePage ($page_url);

return FALSE;

}

$draft_id = $this->getIdByUidCond ($this->db_tables_page_drafts, 'draft_uid', $draft_uid, 'page_id', $page_id);

 // Getting page draft data

$what = array ('object_data', 'template_id', 'modification_time');

$from = array ($this->db_tables_page_drafts);

$condition = array ('id'=>$draft_id);

$row = $this->dbm->GetData ($what, $from, $condition);

$page_data = $row[0];

$template_id = $row[1];

$modification_time = $row[2];

 // Getting template data

$what = array ('object_data');

$from = array ($this->db_tables_template_drafts);

$condition = array ('template_id'=>$template_id);

$row = $this->dbm->GetData ($what, $from, $condition);

$template_data = $row[0];

 // Generate pae

$gen = new Generator();

$gen->GeneratePage ($page_url, $page_data, $template_data, $old_page_url);

 // Update generation time

$generated_modification_time = $modification_time;

$generated_draft_uid = $draft_uid;

$table_name = $this->db_tables_pages;

$new_data = array ('generated_modification_time'=>$generated_modification_time,

'generated_draft_uid'=>$generated_draft_uid);

$condition = array ('page_uid'=>$page_uid);

$this->dbm->UpdateData ($table_name, $new_data, $condition);

}

 // Removes resource

function RemoveResource ($project_uid, $uid, $fromdisk = FALSE)

{

 // Checking if input is correct

if (! valcheck:isuid ($project_uid) ||! valcheck:isuid($uid))

{

return «Bad input»;

}

$this->dbm->SelectDatabase ($this->db_name);

$project_id = $this->getIdByUid ($this->db_tables_projects, 'project_uid', $project_uid);

if ($fromdisk)

{

 // Getting resource path

$what = array('path');

$from = array ($this->db_tables_resources);

$condition = array ('resource_uid'=>$uid,

'project_id'=>$project_id);

$row = $this->dbm->GetData ($what, $from, $condition);

$path = $row[0];

 // Removing resource

$gen = new Generator();

$gen->RemoveResourceFile($path);

}

 // Removing links to resource

$resource_id = $this->getIdByUidCond ($this->db_tables_resources, 'resource_uid', $uid, 'project_id', $project_id);

$table_name = $this->db_tables_resource_usedin;

$condition = array ('resource_id'=>$resource_id);

$this->dbm->RemoveData ($table_name, $condition);

 // Removing resource

$table_name = $this->db_tables_resources;

$condition = array ('resource_uid'=>$uid);

$this->dbm->RemoveData ($table_name, $condition);

return «OK»;

}

 // Removes page

function RemovePage ($project_uid, $uid, $fromdisk = FALSE)

{

 // Checking if input is correct

if (! valcheck:isuid ($project_uid) ||! valcheck:isuid($uid))

{

return «Bad input»;

}

$this->dbm->SelectDatabase ($this->db_name);

$project_id = $this->getIdByUid ($this->db_tables_projects, 'project_uid', $project_uid);

if ($fromdisk)

{

 // Getting page url

$what = array ('page_url');

$from = array ($this->db_tables_pages);

$condition = array ('page_uid'=>$uid,

'project_id'=>$project_id);

$row = $this->dbm->GetData ($what, $from, $condition);

$url = $row[0];

 // Removing page

$gen = new Generator();

$gen->RemovePage($url);

}

 // Removing drafts

$page_id = $this->getIdByUidCond ($this->db_tables_pages, 'page_uid', $uid, 'project_id', $project_id);

$table_name = $this->db_tables_page_drafts;

$condition = array ('page_id'=>$page_id);

$this->dbm->RemoveData ($table_name, $condition);

 // Removing page

$table_name = $this->db_tables_pages;

$condition = array ('page_uid'=>$uid);

$this->dbm->RemoveData ($table_name, $condition);

return «OK»;

}

 // Removes template

function RemoveTemplate ($project_uid, $uid)

{

 // Checking if input is correct

if (! valcheck:isuid ($project_uid) ||! valcheck:isuid($uid))

{

return «Bad input»;

}

$this->dbm->SelectDatabase ($this->db_name);

$project_id = $this->getIdByUid ($this->db_tables_projects, 'project_uid', $project_uid);

 // Removing template

$table_name = $this->db_tables_templates;

$condition = array ('template_uid'=>$uid,

'project_id'=>$project_id);

$this->dbm->RemoveData ($table_name, $condition);

return «OK»;

}

 // Removes page

function RemoveDraft ($project_uid, $page_uid, $draft_uid, $fromdisk = FALSE)

{

 // Checking if input is correct

if (! valcheck:isuid ($project_uid) ||

! valcheck:isuid ($page_uid) ||! valcheck:isuid ($draft_uid))

{

return «Bad input»;

}

$this->dbm->SelectDatabase ($this->db_name);

$project_id = $this->getIdByUid ($this->db_tables_projects, 'project_uid', $project_uid);

$page_id = $this->getIdByUidCond ($this->db_tables_pages, 'page_uid', $page_uid, 'project_id', $project_id);

$draft_id = $this->getIdByUidCond ($this->db_tables_page_drafts, 'draft_uid', $draft_uid, 'page_id', $page_id);

if ($fromdisk)

{

 // Getting draft published bool

$what = array('published');

$from = array ($this->db_tables_page_drafts);

$condition = array ('id'=>$draft_id);

$row = $this->dbm->GetData ($what, $from, $condition);

$published = $row[0];

if ($published)

{

 // Getting page url

$what = array ('page_url');

$from = array ($this->db_tables_pages);

$condition = array ('id'=>$page_id);

$row = $this->dbm->GetData ($what, $from, $condition);

$url = $row[0];

 // Removing page

$gen = new Generator();

$gen->RemovePage($url);

}

}

 // Removing draft

$table_name = $this->db_tables_page_drafts;

$condition = array ('id'=>$draft_id);

$this->dbm->RemoveData ($table_name, $condition);

return «OK»;

}

 // Gets id by uid

private function getIdByUid ($table_name, $uid_name, $uid_value)

{

 // Getting template id from uid

$what = array('id');

$from = array ($table_name);

$condition = array ($uid_name=>$uid_value);

$row = $this->dbm->GetData ($what, $from, $condition);

return (int)$row[0];

}

 // Gets id by uid with equality condition

private function getIdByUidCond ($table_name, $uid_name, $uid_value,

$cond_name, $cond_value)

{

 // Getting template id from uid

$what = array('id');

$from = array ($table_name);

$condition = array ($uid_name=>$uid_value,

$cond_name=>$cond_value);

$row = $this->dbm->GetData ($what, $from, $condition);

return (int)$row[0];

}

 // Returns template data

function GetTemplate ($project_uid, $template_uid, $draft_uid)

{

 // Checking if input is correct

if (! valcheck:isuid ($project_uid) ||

! valcheck:isuid ($template_uid) ||! valcheck:isuid ($draft_uid))

{

return «Bad input»;

}

$this->dbm->SelectDatabase ($this->db_name);

$project_id = $this->getIdByUid ($this->db_tables_projects, 'project_uid', $project_uid);

$template_id = $this->getIdByUidCond ($this->db_tables_templates, 'template_uid', $template_uid, 'project_id', $project_id);

$what = array ('object_data');

$from = array ($this->db_tables_template_drafts);

$condition = array ('draft_uid'=>$draft_uid,

'template_id'=>$template_id);

$row = $this->dbm->GetData ($what, $from, $condition);

return $row[0];

}

 // Returns page data

function GetPageDraft ($project_uid, $page_uid, $draft_uid)

{

 // Checking if input is correct

if (! valcheck:isuid ($project_uid) ||

! valcheck:isuid ($page_uid) ||! valcheck:isuid ($draft_uid))

{

return «Bad input»;


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

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