Серверная часть системы создания и управления сайтами
Анализ существующих систем создания и управления сайтами, их общая характеристика и оценка функциональности на современном этапе. Требования к серверной части, средства ее разработки. Тестирование интерфейса. Формирование руководства пользователя.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 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»;
Подобные документы
Средства разработки серверной части системы создания и управления сайтами в сети Интернет. Contester и STAGer - системы для проведения турниров и индивидуального решения задач по олимпиадному (спортивному) программированию. Архитектура "файл-сервер".
курсовая работа [1007,3 K], добавлен 21.05.2014Классификация современных web-технологий. Сравнительный анализ систем управления сайтами. Исследование методов разработки, оптимизации и продвижения Web-сайта. Изучение фреймворков, используемых при разработке сайтов. Обзор создания графического дизайна.
дипломная работа [3,8 M], добавлен 07.11.2013Анализ технического задания. Разработка интерфейса программы и ее алгоритмов. Кодирование и тестирование разработанного программного обеспечения, оценка его практической эффективности и функциональности. Формирование, содержание руководства пользователя.
курсовая работа [2,0 M], добавлен 31.07.2012Описания системы управления контентом сайта, предназначенной для создания, внедрения и управления коммерческими или некоммерческими веб-сайтами и порталами. Возможности системы DotNetNuke. Анализ функций управления контентом. Установка сайта на сервер.
курсовая работа [2,9 M], добавлен 11.01.2015Анализ существующих систем управления базами данных. Общая характеристика и основные требования, предъявляемые к проектируемой информационной системе, ее структура и функциональные возможности. Разработка интерфейса пользователя, отчетов и запросов.
контрольная работа [939,2 K], добавлен 25.04.2015Выбор программного средства для клиентской и серверной части. Требования к программному обеспечению. Анализ приложений "Gmote", "Remote for VLC", "Пульт MPC&VLC", "The Remote Control". Схема функционирования клиентской части. Тестирование окна управления.
дипломная работа [1,5 M], добавлен 31.03.2013Исследование особенностей систем управления сайтами. Обоснование выбора Joomla, функционала для создания многофункциональных сайтов. Цифровая обработка музыки на компьютере. Использование программного секвенсора. Создание и заполнение сайта информацией.
курсовая работа [2,9 M], добавлен 15.01.2015Исследование организационной структуры ООО "Трансэнергосервис". Обзор методологий проектирования интернет-представительства. Инструментальные средства разработки и реализации системы управления сайтом: разработка интерфейса пользователя и web-сайта.
дипломная работа [1,7 M], добавлен 10.08.2014Основные правила разработки интерфейса пользователя. Создание базы данных с использованием разработанных моделей. Кодирование модулей программной системы с целью создания прототипа. Первичное окно при запуске программы. Защита от потери информации.
лабораторная работа [857,8 K], добавлен 13.06.2014Выбор и обоснование архитектуры приложения, требования к его функциональности, описание возможностей и сфера практического применения. Технологические средства разработки и отладки. Проектирование и разработка программы, ее тестирование и листинг.
дипломная работа [2,2 M], добавлен 13.07.2015