Система индивидуальных тематических блогов
Постановка задачи разработки web-системы индивидуальных блогов. Создание основных программных модулей и элементов базы данных. Алгоритм работы с записями и комментариями, добавления математических формул. Расчет экономических показателей проекта.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | отчет по практике |
Язык | русский |
Дата добавления | 06.07.2012 |
Размер файла | 3,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
В дисплее ПЭВМ высоковольтный блок строчной развертки и выходного строчного трансформатора вырабатывает высокое напряжение до 25кВ для второго анода электронно - лучевой трубки. А при напряжении от 5 до 300 кВ возникает рентгеновское излучение различной жесткости, которое является вредным фактором при работе с ПЭВМ (при 15 - 25 кВ возникает мягкое рентгеновское излучение).
85 Гц (кадровая развертка);
42 кГц (строчная развертка).
Следовательно, пользователь попадает в зону электромагнитного излучения низкой частоты, которое является вредным фактором.
Во время работы компьютера дисплей создает ультрафиолетовое излучение, при повышении плотности которого > 10 Вт/м2, оно становиться для человека вредным фактором. Его воздействие особенно сказывается при длительной работе с компьютером.
Любые электронно-лучевые устройства, в том числе и электронно-вычислительные машины во время работы компьютера вследствие явления статического электричества происходит электризация пыли и мелких частиц, которые притягивается к экрану. Собравшаяся на экране электризованная пыль ухудшает видимость, а при повышении подвижности воздуха, попадает на лицо и в легкие человека, вызывает заболевания кожи и дыхательных путей.
При эксплуатации перечисленных элементов вычислительной техники могут возникнуть следующие опасные и вредные факторы:
поражение электрическим током;
электромагнитное излучение;
ультрафиолетовое излучение;
статическое электричество.
6.2 Анализ условий труда разработчика
Специфика труда разработчика программного обеспечения включает следующие этапы работы:
анализ и поиск решения задачи,
программирование,
отладку и тестирование программных компонент,
выпуск документации.
Большинство этих операций производится на персональном компьютере (ПК). Работа связана с большими зрительными нагрузками в сочетании с малой двигательной активностью, монотонностью выполняемых операций, вынужденной рабочей позой. Наиболее существенные факторы, отрицательно влияющие на самочувствие и, в конечном счете, приводящие к профессиональным заболеваниям:
электромагнитное поле (ЭМП) мониторов;
свет, отраженный от экранов мониторов;
недостаточное освещение рабочего места;
вынужденная поза за рабочим местом.
Таким образом, зрительное утомление и малоподвижность оказывают негативное влияние на важнейшие процессы, составляющие деятельность разработчика-программиста. Следовательно, планирование мероприятий по предотвращению зрительного утомления и разработка такого режима труда и отдыха, который позволит устранить монотонность и малоподвижность, являются одной из основных задач при обеспечении оптимальных условий труда.
6.2.1 Проектирование оптимального рабочего места разработчика
Для эффективной работы разработчика большое значение имеет правильная организация рабочего места.
Конструкцией оптимального рабочего места должно быть обеспечено выполнение трудовых операций в пределах досягаемости моторного поля. При проектировании рабочего места следует учитывать антропометрические особенности человека.
Рабочий стул должен быть подъемно-поворотным и регулируемым по высоте и углам наклона сиденья и спинки, а также расстоянию спинки от переднего края сиденья. Высота сиденья должна быть изменяемой в пределах 400-550 мм. Глубина сиденья должна быть не менее 400 мм. Угол наклона спинки должен регулироваться в пределах 0 30 от вертикального положения. Этим достигается принятие пользователем оптимальной для него рабочей позы.
Согласно вышеизложенному выбрана высота сиденья, равной 550мм., глубина сиденья - 500мм, угол наклона - 10 градусов .
Расстояние от переднего края сиденья должно регулироваться в пределах от 260 до 400 мм. Высота рабочей поверхности при организации рабочего места выбирается в пределах 680 - 800 мм. Под высотой рабочей поверхности понимается расстояние по вертикали от пола до горизонтальной плоскости, в которой выполняются основные трудовые движения. Рабочая поверхность стола должна иметь следующие размеры: глубина 600 - 800 мм, ширина 1200 - 1600 мм.
Выбраны следующие параметры: высота рабочей поверхности - 770мм, глубина 800мм, ширина 1200мм.
Пространство для ног должно быть спроектировано так, чтобы оно удовлетворяло следующим требованиям: высота пространства для ног - не менее 500 мм, глубина на уровне колен - 450 мм и на уровне вытянутых ног - не менее 650 мм.
Высота пространства для ног выбрана равной 740мм. и глубина на уровне колен и ног равной 800мм.
На рабочем месте программиста располагается следующее оборудование: системный блок, клавиатура, монитор, манипулятор типа "мышь", телефон, принтер.
Основная трудовая деятельность разработчика - работа на персональном компьютере. В течение всего рабочего дня разработчик находится на своем рабочем месте и совершает минимум движений, что отрицательно влияет на здоровье.
Размещаем устройства ввода информации согласно частоте их использования:
клавиатуру, как наиболее важный орган управления, в оптимальную зону моторного поля (частота использования 90%). Клавиатура ПК должна иметь возможность свободного перемещения и располагаться на расстоянии 100 - 300 мм от переднего края поверхности стола, обращенного к пользователю системы, или на специальной рабочей поверхности, отделенной от основной столешницы. Клавиатура находится на расстоянии 150мм от переднего края поверхности стола;
манипулятор типа "мышь", как важный орган управления, в зону легкой досягаемости моторного поля - 130мм от края поверхности стола (частота использования 9,8%);
телефонный аппарат, как менее важный орган управления, в зону легкой досягаемости моторного поля 400мм. от края поверхности стола (частота использования 0,1%);
принтер, как редко используемый орган управления, в зону досягаемости моторного поля - 400мм. от края поверхности стола (частота использования 0,1%);
лицевую панель источника системного блока, как редко используемое устройство, располагаем в зоне досягаемости моторного поля 600мм. от края поверхности стол (частота использования 0,01%).
Средством отображения информации на рабочем месте является монитор. Расположение монитора в месте рабочей зоны должно обеспечивать удобство зрительного наблюдения в вертикальной плоскости под углом ±30_ от нормальной линии взгляда оператора.
Согласно санитарным нормам, уровень шума не должен превышать среднего значения 50 дБ. В целях уменьшения уровня шума можно предусмотреть использование звукопоглощающих покрытий пола, стен и потолка.
Микроклимат на рабочем месте определяется температурой, влажностью и скоростью движения воздуха. А также степенью загрязненности. Оптимальные климатические условия обусловлены следующими значениями параметров:
· температура воздуха на рабочем месте должна быть 22-24°С;
· относительная влажность воздуха должна быть в пределах 40-60%;
· скорость движения воздуха не должна превышать 0,1 м/с.
Соблюдение оптимальных параметров микроклимата обеспечивается за счет применения технических средств вентиляции, кондиционирования и отопления. Так как работа разработчика сопряжена с большой зрительной нагрузкой, следует установить оптимальный режим труда и отдыха в процессе работы.
Рисунок 27 - Организация рабочего места
6.2.2 Освещение рабочего места
Правильно спроектированное и выполненное освещение улучшает условия зрительной работы, снижает утомляемость, способствует повышению производительности труда, благотворно влияет на производственную среду, оказывая положительное психологическое воздействие на работника, повышает безопасность труда и снижает травматизм.
В процессе разработки программных продуктов инженеру-программисту приходится различать объекты на мониторе. Данный вид работ относится к подразряду "В" 3-го разряда зрительных работ: работа высокой точности с наименьшим размером объекта различения, лежащим в интервале от 0.3 до 0.5 мм (наименьший объект различения точка); контраст объекта различения с фоном - средний (белые буквы и голубой экран). Освещение должно быть общее и составлять не менее 150 лк.
Спроектируем освещенность на рабочем месте. Плоскость столов расположены на расстоянии 0,77 м от уровня пола. Разработчик работает в комнате с окном, следовательно, на рабочее место проникает дневной свет. Однако, дневного освещения недостаточно, поэтому используется искусственное освещение.
Расчет освещения производится для комнаты площадью 24 м , ширина которой 4 м, высота - 4.2 м. Воспользуемся методом светового потока.
Для определения количества светильников определим световой поток, падающий на поверхность по формуле:
, где
F - рассчитываемый световой поток, Лм;
Е - нормированная минимальная освещенность, Лк .
Работу программиста, в соответствии с этой таблицей, можно отнести к разряду точных работ, следовательно, минимальная освещенность будет Е = 300 Лк при газоразрядных лампах;
S - площадь освещаемого помещения (в нашем случае S = 24 м2);
Z - отношение средней освещенности к минимальной (обычно принимается равным 1Л -1.2 , пусть Z = 1Л);
К - коэффициент запаса, учитывающий уменьшение светового потока лампы в результате загрязнения светильников в процессе эксплуатации (его значение определяется по таблице коэффициентов запаса для различных помещений и в нашем случае К = 1.5);
n - коэффициент использования, выражается отношением светового потока, падающего на расчетную поверхность, к суммарному потоку всех ламп и исчисляется в долях единицы; зависит от характеристик светильника, размеров помещения, окраски стен и потолка, характеризуемых коэффициентами отражения от стен (Рс) и потолка (Рп), значение коэффициентов Рс и Рп определим по таблице зависимостей коэффициентов отражения от характера поверхности: Рс=30%, Рп=50%. Значение п определим по таблице коэффициентов использования различных светильников. Для этого вычислим индекс помещения по формуле:
, где
S - площадь помещения, S = 24 м ; h =3 м- расчетная высота подвеса;
А - ширина помещения, А = 4 м; В - длина помещения, В = 6 м.
Подставив значения, получим:
.
Зная индекс помещения I, коэффициент для светильника типа ОД,РсиРп, по таблице находим n = 0.28
Подставим все значения в формулу для определения светового потока F:
Лм .
Для освещения выбираем люминесцентные лампы типа ЛБ40-1, световой поток которых F = 4320 Лм.
Рассчитаем необходимое количество ламп по формуле:
, где
N - определяемое число ламп;
F - световой поток, F = 63642 Лм;
Fл,- световой поток лампы, Fл = 4320 Лм.
шт .
При выборе осветительных приборов используем светильники типа ОД. Каждый светильник комплектуется двумя лампами. Размещаются светильники двумя рядами, по четыре в каждом ряду.
Рассчитаем естественное освещение для комнаты 24 м, в которой находится два рабочих места. Естественное освещение в комнате является односторонним боковым.
6.2.3 Требования к уровням шума и вибрации
Повышенный уровень шума на рабочем месте влияет на работоспособность, вызывая усталость. Источником шума могут быть несколько типов приборов в общей системе. Шум представляет собой беспорядочное сочетание звуков разной интенсивности и частоты. Шум оказывает вредное влияние на весь организм, и в первую очередь на сердечно-сосудистую и нервную системы. Шум неблагоприятно воздействует на человека: ослабляет внимание, увеличивает расход энергии при одинаковой физической нагрузке, замедляет скорость психических реакций, что может привести к несчастному случаю.
Допустимые уровни звукового давления и уровня звука на рабочих местах должны соответствовать нормативам и не должны превышать предельно допустимых величин.
Нормативные параметры шума на рабочих местах являются обязательными для всех организаций и предприятий. Нормы допустимого шума на рабочих местах не должны превышать 50 дБ по шкале А для математиков, программистов и операторов видео-дисплейных терминалов.
Снизить уровень шума можно путем обивки стен шумопоглощающими материалами.
6.2.4 Предупреждение возможных чрезвычайных ситуаций (ч/с)
Для предупреждения возможных чрезвычайных ситуаций, таких как пожара, обязательно соблюдать всеми работающими единые требования, которые изложены в инструкции по обеспечению пожарной безопасности в зданиях и помещениях для электронно-вычислительных машин данного предприятия.
Основные требования пожарной безопасности:
звукопоглощающие облицовки стен и потолков этих помещений необходимо изготавливать из негорючих и трудногорючих материалов;
нельзя оставлять компьютер включенным при долгом отсутствии разработчика;
помещения, в которых размещаются персональные ЭВМ и дисплейные залы (где устройство систем автоматического пожаротушения не обязательно), необходимо оснащать переносными углекислотными огнетушителями из расчета 2 шт. на каждые 20 м2 площади помещения с учетом предельно допустимой концентрации огнетушащего вещества;
персональные компьютеры после окончания работы на них должны отключаться от сети;
не реже одного раза в квартал необходимо очищать от пыли агрегаты и узлы, кабельные каналы и пространства между полами;
оставлять без надзора включенную в сеть электронную аппаратуру, которая используется для испытания и контроля ЭВМ.
6.2.5 Экологичность
Бытовые отходы, образующиеся в процессе уборки помещения, при пользовании водопроводом, туалетом и т.п., сбрасываются в городскую канализацию и далее поступают в системы централизованной очистки на городских очистных сооружениях.
Устаревшее офисное оборудование передают специальным службам для сортировки, вторичного использования или складирования на городских мусорных полигонах.
Жидкие отходы - бытовые отходы, образующиеся в процессах влажной уборки помещений, при пользовании водопроводом, туалетом и т.п., сбрасываются в городскую канализацию и далее поступают в системы централизованной очистки на городских очистных сооружениях.
Твердые отходы: бытовой мусор (отходы бумаги, отработанные специальные ткани для протирки офисного оборудования и экранов мониторов, пищевые отходы); отработанные люминесцентные лампы; офисная техника, комплектующие и запчасти, утратившие в результате износа потребительские свойства.
6.2.6 Выводы
В ходе разработки раздела "БиЭП" были проведен анализ ОВПФ. Наиболее значимыми представляются следующие факторы производства:
электробезопасность
освещенность
шумовое воздействие
освещенность производственных помещений
пожаробезопасность
С целью безопасных комфортных условий труда были выполнены:
расчет естественной вентиляции
расчет искусственного освещения
В целом можно заключить, что проектируемый объект "Веб-система индивидуальных тематических блогов информационно-образовательного портала" и технологический процесс в целом соответствуют требованиям производственной и экологической безопасности
ЗАКЛЮЧЕНИЕ
В ходе прохождения дипломной практики была разработана система индивидуальных блогов. Были созданы основные программные модули и элементы базы данных.
Программное средство прошло этапы разработки, тестирования и устранения ошибок. По окончании работ программное средство внедрено в портал лаборатории мониторинга образовательного процесса ДГТУ.
Так же проведены расчеты основных экономических показателей и рассмотрены вопросы экологичности и безопасности проекта.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Информационная архитектура блогов[Электронный ресурс] - URL: http://www.komankh.ru
2. Кузнецов М.В. PHP 5 на примерах. -- СПб.:БХВ-Петербург, 2005.
3.Обзор современных CMS [Электронный ресурс] -URL: http://www.comasy.ru/
4. Скляр Д., Трахтенберг А. РНР, сборник рецептов. - СПб.:Символ-Плюс, 2005.
5. Уорсли Дж., Дрейк Дж. PostgreSQL для профессионалов. - СПб.: Питер, 2003.
6. Руководство по CodeIgniter на русском языке [Электронный ресурс] - URL: http://code-igniter.ru/
7. Официальный сайт CodeIgniter [Электронный ресурс] - URL: http://codeigniter.com/
ПРИЛОЖЕНИЕ А
ТЕХНИЧЕСКОЕ ЗАДАНИЕ НА ПРОГРАММНОЕ СРЕДСТВО
П.А.1 Введение
П.A 1.1 Наименование программы
Наименование программы - "Многопользовательский тематический блог".
П.A 1.2 Область применения
Областью применения данного программного продукта являются сайты учреждений сферы образования.
П.A 1.3 Объект внедрения
Данный программный продукт предназначен для внедрения в информационно-образовательный портал лаборатории мониторинга и автоматизации образовательного процесса учебно-методического управления Донского государственного технического университета.
П.А.2 Основания для разработки
Разработка проводится на основании задания на преддипломную практику факультета "Информатика и вычислительная техника" (И и ВТ) Донского Государственного Технического Университета (ДГТУ) по специальности "Программное обеспечение вычислительной техники и автоматизированных систем (ПОВТ и АС)". Задание утверждено заведующим кафедрой "ПОВТ и АС" Нейдорфом Р.А.
П.А.3 Назначение разработки
П.А.3.1 Функциональное назначение
Функциональное назначение программного средства заключается в реализации методов обмена информацией с использованием тематических блогов в локальных сетях учреждений образования.
П.А.3.2 Эксплуатационное назначение
Эксплуатационное назначение программного средства заключается в обеспечении обмена учебной информацией между участниками образовательного процесса на информационно-образовательном web-портале ДГТУ.
П.А.4 Требования к программе или программному изделию
П.А.4.1 Требования к функциональным характеристикам
Состав выполняемых функций программного средства:
· создание блога;
· создание записи в блоге;
· добавление комментариев к записям;
· возможность оценивания записей пользователями;
· возможность оценивания комментариев;
· возможность цитирования комментариев;
· возможность внесения изменений в комментарий;
· добавление видео из YouTube;
· добавление изображений со сторонних сайтов;
· добавление формул в записи;
· добавление формул в комментарии;
· добавление термов к записям;
· поиск записей по термам;
· возможность удаления записи;
· внесение изменений в запись;
· удаление комментария.
Входные данные: идентификатор пользователя и идентификатор записи.
Выходные данные: содержание всего блога или отдельной записи.
П.А.4.2 Требования к надежности
Обеспечение безопасной работы подсистемы блогов с базой данных для предотвращения возможных взломов и утечек информации. Обеспечение обработки ошибок и возможность восстановления после отказа.
П.А.4.3 Требования к условиям эксплуатации
Для функционирования программного продукта необходимо соблюдение всех требований и правил эксплуатации компьютерной техники и программного обеспечения. Высокой квалификации пользователя для работы с программным средством не требуется, необходимо лишь знание любой современной ОС на уровне пользователя и любого современного веб-браузера на уровне пользователя. Квалификация администратора - уверенное знание любой современной ОС и знание по администрированию веб-сайтов.
П.А.4.4 Требования к составу и параметрам технических средств
Требования к составу аппаратных средств компьютера клиента:
· процессор Intel Pentium 2 и выше;
· 128Мб оперативной памяти;
· клавиатура и мышь;
· доступ к сети Интернет.
Требования к составу аппаратных средств сервера:
· процессор Intel Сore 2 Duo с частотой 2.3 МГц;
· 3Гб оперативной памяти;
· жесткий диск объемом 500Гб.
Требования к составу программных средств клиента:
· любая ОС;
· браузер, соответствующий стандарту консорциума W3C.
Требования к составу программных средств на сервере:
· сервер семейства Linux;
· СУБД PostgreSQL версии 9.0 или выше;
· Web-сервер Apache версии 2.х или выше с настроенным расширениями;
· интерпретатор языка PHP 5.3 и выше;
· веб-фреймворк CodeIgniter 2.0 или выше.
П.А.4.5 Требования к информационной и программной совместимости
Программное средство функционирует под управлением ОС Windows 2000/XP/2008 Server/Seven или любой ОС семейства Linux. Язык разработки программного средства - РHP версии 5.3.
П.А.4.6 Требования к маркировке и упаковке
Требования к маркировке и упаковке отсутствуют.
П.А.4.7 Требования к транспортированию и хранению
Условия транспортирования, места хранения, условия складирования и сроки хранения в различных условиях должны соответствовать требованиям, предъявляемым к носителям информации на которых будет содержаться данное программное изделие. Сайт может храниться на жестком диске, на Flash-носителе, на компакт-дисках.
П.А.5 Требования к программной документации
В состав программной документации должно входить следующее:
· техническое задание на проект (ГОСТ 19.201-78 ЕСПД);
· руководство системного программиста по ГОСТ 19.503 -- 79;
· руководство программиста по ГОСТ 19.504 -- 79;
· руководство оператора по ГОСТ 19.505 -- 79.
П.А.6 Стадии и этапы разработки
Стадии и этапы разработки:
· изучение предметной области (с 19.03.2012г. по 25.02.2012г. ):
o определение функционала;
o определение области применения и целей использования разрабатываемого программного средства;
o поиск вариантов решения поставленных задач;
o подготовка технического задания;
o выбор и подготовка инструментальных средств и средств отладки;
· подготовка инструментария для разработки (с 25.02.2012г. по 27.02.2012г.):
o установка настройка средств разработки;
o установка настройка СУБД;
· проектирование структуры базы данных (с 28.02.2012г. по 31.02.2012г.):
o разработка концептуального уровня базы данных;
o описание отношений и атрибутов;
o описание структуры базы данных на языке SQL;
· проектирование модулей (с 01.04.2012г. по 30.04.2012г.):
o разработка общей структуры программного средства;
o программирование модулей;
o создание графического отображения;
· тестирование программного средства на наличие ошибок и исключительных ситуаций(с 01.05.2012г. по 12.05.2012г.);
· составление отчета к дипломному проекту (12.05.2012г. до 22.05.2012г.).
П.А.7 Порядок контроля и приемки
Порядок и контроль приёмки определяются заведующим кафедрой "ПОВТ и АС" и основаны на демонстрации знаний технологии и умении создавать программные средства для различных предметных областей. Главным требованием к приемке является наличие правильно работающей программы иллюстрируемой тестовым примером и отчета, представленного в печатном виде.
ПРИЛОЖЕНИЕ Б
РУКОВОДСТВО СИСТЕМНОГО ПРОГРАММИСТА
П.Б.1 Общие сведения о программе
Подсистема индивидуальных блогов может применяться в образовательных порталах с целью взаимодействия участников образовательного процесса. Разработанное программное средство предоставляет авторизованным пользователям следующие возможности:
· возможность создания отдельного блога для каждого пользователя;
· возможность добавления, удаления и редактирования записей:
· возможность просмотра записей других пользователей;
· возможность добавления комментариев к записям;
· возможность просмотра добавленных комментариев;
· возможность оценки записи (нравится/не нравится) ;
· возможность вывода популярных записей.
Программное средство должно быть размещено на веб-севрере. В состав технических средств сервера должен входить компьютер, имеющий следующие характеристики:
свободное дисковое пространство;
процессор с частотой не менее 900 Мгц;
объем ОЗУ не менее 256 Мб.
Состав программных средств веб-сервера должен включать:
операционная система на основе Unix;
веб -- севрер Apache версии 2.2.*;
интерпретатор языка PHP версии не ниже 5.2;
СУБД PostgreSQL версии не ниже 9.0.
П.Б.2 Структура программы
Программное средство разрабатывалось с помощью фрэймворка CodeIgniter, поэтому структура файлов совпадает со структурой файлов фрэймворка. Поддерживается связь на уровне контроллеров с другими сервисами образовательно сайта ec.dstu.edu.ru.
Корневым каталогом программы является ci. Содержимое корневого каталога приведено в таблице П.Б.1.
Помимо стандартных библиотек фрэймворка CodeIgniter, программное средство использует следующие классы, разработанные командой программистов образовательного портала ec.dstu.edu.ru.:
· Auth_Model.php - содержит методы проверки авторизации в системе;
· MyController.php -- содержит методы построения страниц из шаблонов;
· session_model - содержит методы работы с сессией.
П.Б.3 Дополнительные возможности
Дополнительные возможности в данном программном средстве не предусмотренны.
П.Б.4 Сообщения системному программисту
В ходе проверки программы, а также в ходе выполнения программы могут выводиться сообщения:
нельзя голосовать за свои посты;
обращение по несуществующему адресу (если пользовытель пытается через url обратиться к методу, который либо не существует, либо к нему закрыт доступ);
у пользователя нету блога;
Также могут выводиться сообщения связанные с различного рода системными ошибками.
ПРИЛОЖЕНИЕ В
РУКОВОДСТВО ПРОГРАММИСТА
П.В.1 Назначение и условия применения программы
Программное средство предназначено для взаимодействия пользователей на образовательном портале ДГТУ. Программа имеет открытый исходный код, который может свободно распространяться и модифицироваться без согласия автора. Исходные коды программы приведены в приложении Д "Исходные коды программного средства".
Состав технических и программных средств для запуска программы описан в приложении Б "Руководство системного программиста" в разделе "общие сведения о программе".
П.В.2 Характеристики программы
Программное средство разработана с использованием фреймворка CodeIgniter. В его состав входят 3 контроллера, 3 модели, 6 видов , один файл с таблицей стилей и два файла с JavaScript. Для удобного хранения данных используется база данных состоящая из 5 таблиц.
П.В.3 Обращения к программе
Обращение к программе осуществляется путем ввода в адресную строку браузера имен методов контроллеров. Для обращения к системе страниц необходимо прописать адресной строке браузера следующую строку: http://ec.dstu.edu.ru/site/ci/blog/blog. Для обращения к списку популярных записей можно прописать: http://ec.dstu.edu.ru/site/ci/blog/blog/get_pop_titles/.
П.В.3.1 Контроллер blog
Blog отвечает за стабильную работу блогов. В данном контроллере определенны следующие методы:
· index() - функция переадресовывающая пользователя на домашнюю страницу, в том случае если пользователь ввел не корректный адрес;
· get_stat() - функция получения статистики по блогу;
· create_blog() - функция для создания нового блога, после создания блога происходит переход на страницу со списком записей;
· get_new_titles() - получение новых постов;
· get_pop_posts() - получение популярных постов;
· get_blog_by_owner() - получение списка блогов и постов по владельцу;
· get_mine() - получение списка постов и блогов текущего пользователя с загрузкой страницы управления блогами;
· edit_blog() - изменение описания блога и его заголовка;
· delBLog() - удаление длога и всех вложенных в него записей.
П.В.3.2 Контроллер Post
Post отвечает за корректную работу с записями. В данном контроллере определенны следующие методы:
· index() - функция переадресовывающая пользователя на домашнюю страницу;
· get_stat()-функция получения статистики по текущему блогу;
· create_post() - создать пост в блоге;
· get_res_by_term()- получает список постов по терму;
· get_post($id_resource)- функция просмотра записи. Код записи передается в виде параметра id_resource;
· edit_post($id_resource) - функция изменения содержимого записи, id_resource - код изменяемой записи ;
· del_post() -функция удаления записи и всех ее потомков(комментариев);
· get_post_mark($resource_fk) - получение оценки поста, resource_fk - код идентифицирующий запись;
· post_mark_plus() - повышение рейтинга записи;
· post_mark_minus() - понижение рейтинга записи.
П.В.3.3 Контроллер Comment
Comment отвечает за корректную работу с комментариями. В данном контроллере определенны следующие методы:
· add_comment() - функция добавления комментария к записи;
· del_comment() - удаление комментария;
· get_comments() - получение комментов к записи;
· edit_comment() - изменение содержимого комментария;
· get_comment_mark() - получить оценку комментария;
· comment_mark_plus() - повышение рейтинга комментария;
· comment_mark_minus() - понижение рейтинга комментария.
П.В.3.5 Модель Blog_model
User - модель отвечающая за работу с блогами. В ней описаны следующие функции:
· add_blog( ) - функция добавления блога;
· get_all_blog_titles() -получение списка всех блогов;
· get_in_blog_titles() -получения списка всех записей в блоге;
· get_blog_by_owner() -получение списка блогов во идентификатору владельца;
· edit_blog()- изменение содержания блога;
· delBLog() - удаления блога.
П.В.3.6 Модель Post_model
Post_model - модель отвечающая за работу с записями. В ней описаны следующие функции:
· add_post( )- функция добавления записи в блог;
· get_post( )- функция получения содержимого поста;
· del_post() - функция удаления записи из блога;
· update_post() - функция редактирования записи в блоге;
· get_post_mark() - функция получения оценки поста.
П.В.3.7 Модель Comment
Comment - модель отвечающая за работу с комментариями. В ней описаны следующие функции:
· get_comments() - функция выборки комментариев и данных об их владельцах по идентификатору поста;
· add_new_comment() - функция добавления нового комментария к записи;
· del_comment() - удаление комментария;
· get_comment_mark() - получение оценки комнтария.
ПРИЛОЖЕНИЕ Г
РУКОВОДСТВО ОПЕРАТОРА
П.Г.1 Назначение программы
Программное средство, разрабатываемое в рамках данной работы предназначено для взаимодействия участников образовательного процесса. Разрабатываемая система является удобным инструментарием, позволяющим пользователям публиковать необходимый материал, обмениваться нужной информацией в любое удобное время.
П.Г.2 Условия выполнения программы. В состав технических устройств для выполнения программы должно входить:
· монитор с размером диагонали от 10 дюймов;
· манипулятор либо мышь, либо тачпад;
· клавиатура;
· устройство для подключения к сети интернет.
В состав программных средств для выполнения программы должно входить:
операционная система: Windows, Linux или MacOs;
браузер: IE не ниже версии 8, Mozilla Firefox 3.5, Opera 10, Chrome 10.
П.Г.3 Выполнение программы
Выполнение программы начинается с авторизации на сайте ec.dstu.edu.ru. Работа с подсистемой индивидуальных блогов доступна только авторизованным на сайте ec.dstu.edu.ru.
П.Г.3.1 Работа с подсистемой индивидуальных блогов
Для того чтобы попасть на главную страницу проекта необходимо в строке браузера ввести http://ec/site/ci/blog/blog. После ответа сервер сформирует главную страницу блога на которой отображен список последних блогов. Пример представлен на рисунке П.Г.1 .
Рисунок П.Г.1 - Главная страница системы индивидуальных блогов
При нажатии кнопки "Add new" на экране появляется форма создания нового блога. В данной форме необходимо заполнить название создаваемого блога , а так же необходимо заполнить краткое описание блога. Заполнение краткого описания может быть опущено, отсутствие этих данных на работу системы блогов ни как не повлияет. По окончанию заполнения необходимо нажать кнопку сохранить. Пример представлен на рисунке П.Г.2 .
Рисунок П.Г.2 - Форма создания блога
После нажатия кнопки сохранить будет открыта страница записей по данному блогу. Так как блог был только, что создан система сообщит об отсутствии записей в нем. Для создания записей необходимо нажать кнопку "Add new". После данного действия будет открыта форма создания записи. Пример представлен на рисунке П.Г.3 .
Рисунок П.Г.3 - Форма создания записи в блоге
web блог программный алгоритм
Здесь необходимо заполнить все поля. Для удобства работы в системе блогов предусмотрено добавление мультимедиа к записи. Таких как добавление картинки с удаленного ресурса, а так же добавление видео из YouTube. Пример представлен на рисунке П.Г.4 .
Рисунок П.Г.4 - Форма добавления мультимедиа
Здесь необходимо выбрать вид вставляемого ресурса из выпадающего списка и вставить ссылку на добавляемый ресурс, далее нажать добавить.
Так же в системе предусмотрено добавление формул в тексты сообщений и комментариев. Для вызова окна добавления формул необходимо нажать на кнопку ? расположенную в верхней части окна редактора. После чего в окне браузера отобразиться следующая форма. Пример представлен на рисунке П.Г.5 .
Рисунок П.Г.5 - Форма редактора формул
После создания формулы необходимо нажать кнопку "Insert". После нажатия созданное изображение будет вставлено в окно редактора. Пример представлен на рисунке П.Г.6 .
Рисунок П.Г.6 - Добавление формулы в окно редактора
Так же для удобства поиска записей в программном продукте предусмотрено добавление тегов(термов) к записям. Для этого надо ввести наименование добавляемого тега(терма), если в системе такой тег уже присутствует, то система предложит добавить тег из списка существующих. Если тег отсутствует то будет предложено добавить новый. Пример представлен на рисунке П.Г.7 и рисунке П.Г.8 .
Рисунок П.Г.7 - Добавление существующего тега(терма)
Рисунок П.Г.8 - Добавление нового тега(терма)
После того как все необходимые поля будут заполнены необходимо нажать кнопку сохранить. Система сохранит созданную запись и переведет нас на станицу записи. Пример представлен на рисунке П.Г.9 .
Рисунок П.Г.9 - Страница записи в блоге
На данной странице возможны следующие действия :
· добавления комментария к записи (рисунок П.Г.10);
· оценивание записи, причем пользователь лишь единожды может оценить запись;
· редактирование записи;
· удаление записи;
· поиск записей по тегу(рисунок П.Г.13);
· редактирование комментария (рисунок П.Г.12);
· удаление комментария;
· цитирование комментария.
Рисунок П.Г.10 - Добавление нового комментария
Рисунок П.Г.11 - Голосование за комментарий
Рисунок П.Г.12 - Редактирование комментария
Рисунок П.Г.13 - Поиск по терму(тегу)
П.Г.4 Сообщения оператору
В ходе выполнения программы могут выводиться сообщения:
нельзя голосовать много раз;
обращение по несуществующему адресу (если пользовытель пытается через url обратиться к методу, который либо не существует, либо к нему закрыт доступ);
Также могут выводиться сообщения связанные с различного рода системными ошибками.
ПРИЛОЖЕНИЕ Д
ТЕКСТЫ ОСНОВНЫХ ПРОГРАММНЫХ МОДУЛЕЙ
Файл контроллера Blog содержит следующий текст:
<?php
if (!defined('BASEPATH')) exit ('No direct script access allowed');
require_once APPPATH . 'controllers/mycontroller.php';
class Blog extends MyController
{
public function __construct()
{
parent::__construct();
$this->load->model('/blog/blog_model');
$this->load->model('/blog/post_model');
ob_start();
}
public function get_stat()
{
$blogs = $this->blog_model->get_blogs_count();
$posts= $this->post_model->get_count();
$data['blogs_count'] = $blogs;
$data['post_count'] = $posts;
return $data;
}
public function index()
{ $aHref = '/blog/blog_just_blog';
$query = $this->blog_model->get_all_blog_titles();
$stat= $this->get_stat();
$data['user'] = $this->foAuthModel->currentUserId();
$data['stat']=$stat;
$data['titles']=$query;
$headData = array('lStyles' => array('styles/blog/style.css',
'styles/jquery/ui/ui-custom/jquery-ui.custom.css',
'styles/jquery/autocomplete/multi.css',
'styles/documents/documents.css'),
'lJSScripts' => array('js/jquery/ui/jquery-ui.custom.min.js',
'js/jquery/jquery.corner.js',
'js/jquery/tinymce/tiny_mce.js',
'js/jquery/tinymce/jquery.tinymce.js',
'js/blog/blog.js',
'js/blog/edit.js',
'js/resource/tags.js'));
$this->showHeader($headData);
$this->load->view($aHref,$data);
$this->showFooter();
}
public function create_blog()
{ $owner_fk=$this->foAuthModel->currentUserId();
$id_resource = $this->blog_model->add_blog($this->input->post('resource_name'),
$this->input->post('resource_description'),
$owner_fk);
echo json_encode($id_resource);
}
private function load_view_all($data, $aHref = '/blog/blog_view_all' )
{
$headData = array('lStyles' =>array('styles/blog/style.css',
'styles/jquery/ui/ui-custom/jquery-ui.custom.css',
'styles/jquery/autocomplete/multi.css',
'styles/documents/documents.css'),
'lJSScripts' =>array( 'js/jquery/ui/jquery-ui.custom.min.js',
'js/jquery/jquery.corner.js',
'js/jquery/tinymce/tiny_mce.js',
'js/jquery/tinymce/jquery.tinymce.js',
'js/blog/blog.js',
'js/blog/edit.js',
'js/resource/tags.js'));
$this->showHeader($headData);
$data['user'] = $this->foAuthModel->currentUserId();
$this->load->view($aHref,$data);
$this->showFooter();
}
public function get_new_titles()
{ $aHref = '/blog/blog_just_blog';
$query= $this->blog_model->get_new();
$stat= $this->get_stat();
$data['stat']=$stat;
$this->load_view_all(array('titles'=>$query,
'stat'=>$stat),$aHref);
}
public function get_pop_posts()
{ $aHref = '/blog/blog_just_posts';
$query= $this->blog_model->get_pop_posts();
$stat= $this->get_stat();
$data['stat']=$stat;
$this->load_view_all(array('titles'=>$query,
'stat'=>$stat),$aHref);
}
public function get_blog_by_owner($owner_fk)
{
$query= $this->blog_model->get_blog_by_owner($owner_fk);
$stat= $this->get_stat();
$data['stat']=$stat;
$this->load_view_all(array('titles'=>$query,
'stat'=>$stat));
}
public function get_mine()
{
$owner_fk=$this->foAuthModel->currentUserId();
$query= $this->blog_model->get_blog_by_owner($owner_fk);
$stat= $this->get_stat();
$data['stat']=$stat;
$aHref = '/blog/blog_view_mine';
$this->load_view_all(array('titles'=>$query,'stat'=>$stat),$aHref);
}
public function get_in_blog_titles($id_resource)
{ $aHref = '/blog/blog_just_posts';
$query= $this->blog_model->get_in_blog_titles($id_resource);
$owner_fk = $this->blog_model->get_owner_id($id_resource);
$stat= $this->get_stat();
$this->load_view_all(array( 'id_resource'=>$id_resource,
'titles'=>$query,
'stat'=>$stat,
'owner_fk'=>$owner_fk),$aHref);
}
public function edit_blog(){
$this->blog_model->edit_blog($this->input->post('id_resource'),
$this->input->post('resource_name'),
$this->input->post('resource_description')
);
}
public function delBLog(){
$id_resource = $this->input->post('id_resource');
$res = $this->blog_model->get_blog_child($id_resource);
foreach($res as $key)
{
$this->post_model->del_post( $key['id_resource']);
}
$this->blog_model->delBlog($id_resource);
}
}
?>
Файл контроллера Post содержит следующий текст:
<?php
if (!defined('BASEPATH')) exit ('No direct script access allowed');
require_once APPPATH . 'controllers/mycontroller.php';
class Post extends MyController
{
public function __construct()
{
parent::__construct();
$this->load->model('/blog/post_model');
$this->load->model('/blog/comment_model');
$this->load->model('/blog/blog_model');
$this->load->model('admin/resources_model', 'oResourceModel');
ob_start();
}
public function index()
{ $headData = array('lStyles' => array('styles/blog/style.css'),
'lJSScripts' => array('js/blog/blog.js'
));
$this->showHeader($headData);
echo " Что то сломалось !!!";
$this->showFooter();
}
public function get_stat()
{ $blogs = $this->blog_model->get_blogs_count();
$posts= $this->post_model->get_count();
$data['blogs_count'] = $blogs;
$data['post_count'] = $posts;
return $data;
}
public function create_post()
{ $owner_fk=$this->foAuthModel->currentUserId();
$resource = $this->post_model->add_post( $this->input->post('id_resource'),
$this->input->post('resource_name'),
$this->input->post('resource_description'),
$owner_fk);
$bResult = $this->oResourceModel->addTagsToResource
( $resource,
$this->input->post('newTags'),
$this->input->post('existingTags')
);
$result['id_resource']= $resource;
echo json_encode($result);
}
public function get_res_by_term(){
$res= $this->oResourceModel->resourcesWithTerm
(
$this->input->post('id_resource'),
array('resource_type' => TRESOURCE_BLOG_POST)
);
echo json_encode($res);
}
public function get_post($id_resource)
{ if($id_resource) {
$user = $this->foAuthModel->currentUserId();
$query = $this->post_model->get_post($id_resource);
$res= $this->comment_model->get_comments($id_resource);
$mark=$this->post_model-> get_post_mark($id_resource);
$blog_title=$this->post_model->get_blog_title($id_resource);
$query= $query->result_array();
$count_com=$this->comment_model->get_comments_count($query[0]['parent_fk']);
$count_post= $this->post_model->get_post_count($query[0]['parent_fk']);
$tags=$this->oResourceModel->resourceTerms($id_resource);
$data['tags']=$tags;
$data['data']=$query;
$data['comments']=$res->result_array();
$data['mark']=$mark;
$data['user']=$user;
$data['blog_title']=$blog_title;
$data['count_com']=$count_com;
$data['count_post']=$count_post;
$headData = array('lStyles' => array( 'styles/blog/style.css',
'styles/jquery/ui/ui-custom/jquery-ui.custom.css',
'styles/jquery/autocomplete/multi.css',
'styles/documents/documents.css'),
'lJSScripts' => array(
'js/jquery/ui/jquery-ui.custom.min.js',
'js/jquery/jquery.corner.js',
'js/jquery/tinymce/tiny_mce.js',
'js/jquery/tinymce/jquery.tinymce.js',
'js/blog/blog.js',
'js/blog/edit.js',
'js/resource/tags.js'));
$this->showHeader($headData);
$this->load->view('blog/post1_view',$data);
$this->showFooter();
}
}
public function edit_post($id_resource)
{ //$resource_description = $this->input->post('resource_description');
$stat= $this->get_stat();
$data['stat']=$stat;
$resource_description = $this->post_model->get_post($id_resource);
$data['item']=$resource_description->result_array();
$data['id_resource']=$id_resource;
$headData = array('lStyles' => array('styles/blog/style.css'),
'lJSScripts' => array('js/blog/blog.js',
'js/blog/edit.js',
'js/jquery/tinymce/tiny_mce.js',
'js/jquery/tinymce/jquery.tinymce.js'));
$this->showHeader($headData);
$this->load->view('blog/edit_post.php',$data);
$this->showFooter();
}
public function update_post()
{ $id_resource = $this->input->post('id_resource');
$resource_name = $this->input->post('resource_name');
$resource_description = $this->input->post('resource_description');
echo $id_resource;
echo $resource_description;
echo $resource_name;
$this->post_model->update_post($id_resource,$resource_description,$resource_name);
}
public function del_post()
{ $id_resource = $this->input->post('id_resource');
$this->post_model->del_post($id_resource);
}
public function get_post_mark($resource_fk)
{ if($resource_fk){
$query= $this->blog_model->get_blog_mark($resource_fk);
$mark=0;
$mark= $query->result_array();
return $mark[0]['mark'];
}
}
public function post_mark_plus()
{ $resource_fk = $this->input->post('id_page');
$user_account_fk= $this->foAuthModel->currentUserId();
$result = array("mess"=>'',"mark"=>0);
if($resource_fk){
$res=$this->post_model->post_mark_plus($resource_fk,$user_account_fk);
if($res==1)
{ $result['mess'] = '1';
$mark=$this->post_model->get_post_mark($resource_fk);
}
else
{ $result['mess'] = '0';
$mark=$this->post_model->get_post_mark($resource_fk);
}
$result['mark'] = $mark[0]['mark'];
}
echo json_encode($result);
}
public function post_mark_minus()
{
$resource_fk = $this->input->post('id_page');
$user_account_fk = $this->foAuthModel->currentUserId();
$result = array("mess"=>'',"mark"=>0);
if($resource_fk){
$res=$this->post_model->post_mark_minus($resource_fk,$user_account_fk);
if($res==1)
{
$result['mess'] = '0';
$mark=$this->post_model->get_post_mark($resource_fk);
}
else
{
$result['mess'] = '0';
$mark=$this->post_model->get_post_mark($resource_fk);
}
$result['mark'] = $mark[0]['mark'];
}
echo json_encode($result );
}
}
?>
Файл контроллера Comments содержит следующий текст:
<?php
if (!defined('BASEPATH')) exit ('No direct script access allowed');
require_once 'post.php';
require_once APPPATH . 'controllers/mycontroller.php';
class Comment extends Post
{
public function __construct()
{
parent::__construct();
$this->load->model('blog/comment_model');
$this->load->model('blog/blog_model');
ob_start();
}
public function index()
{
echo "Что то сломалось !!!";
}
public function get_comment_by_id($res)
{
if ($res)
{
$data= $this->comment_model->get_comment_by_id($res);
return $data;
}
}
public function get_stat()
{
$blogs = $this->blog_model->get_blogs_count();
$posts= $this->post_model->get_count();
$data['blogs_count'] = $blogs;
$data['post_count'] = $posts;
return $data;
}
public function add_comment($id_resource,$parent_fk)
{
$owner_fk = $this->foAuthModel->currentUserId();
$resource_description=$this->input->post('resource_description');
if($owner_fk)
{
$res = $this->comment_model->add_new_comment ( $id_resource,
$parent_fk,
$owner_fk,
$resource_description );
$data['commentInfo'] = $this->get_comment_by_id($res);
$this->load->view('blog/one_comment.php', $data);
}
}
public function del_comment()
{
$id_resource=$this->input->post('id_resource');
if($id_resource)
{
$this->comment_model->del_comment($id_resource);
}
}
public function get_comments($parent_fk)
{
if($parent_fk)
{
$data = $this->comment_model->get_comments($parent_fk);
return $res=$data->result_array();
}
}
public function edit_comment($id_resource)
{
$stat= $this->get_stat();
$data['stat']=$stat;
$resource_description = $this->comment_model->get_comment_by_id($id_resource);
$data['item']=$resource_description;
$data['id_resource']=$id_resource;
$headData = array('lStyles' => array('styles/blog/style.css'),
'lJSScripts' => array('js/blog/blog.js',
'js/blog/edit.js',
'js/jquery/tinymce/tiny_mce.js',
'js/jquery/tinymce/jquery.tinymce.js'));
$this->showHeader($headData);
$this->load->view('blog/edit_comment.php',$data);
$this->showFooter();
}
public function update_comment()
{ $id_resource = $this->input->post('id_resource');
$resource_description = $this->input->post('resource_description');
$this->comment_model->update_comment($id_resource,$resource_description);
}
public function get_comment_mark($resource_fk)
{
if($resource_fk){
$query= $this->comment_model->get_comment_mark($resource_fk);
$mark=0;
$mark= $query->result_array();
return $mark[0]['mark'];
}
}
public function comment_mark_plus()
{ $resource_fk = $this->input->post('id_page');
$user_account_fk = $this->foAuthModel->currentUserId();
$result = array("mess"=>'ssd',"mark"=>0);
if($resource_fk){
$res=$this->comment_model->comment_mark_plus($resource_fk,$user_account_fk);
if($res==1)
{
$result['mess'] = '1';
$mark=$this->comment_model->get_comment_mark($resource_fk);
}
else
{
$result['mess'] = '0';
$mark=$this->comment_model->get_comment_mark($resource_fk);
}
$result['mark'] = $mark[0]['cmark'];
}
echo json_encode($result);
}
public function comment_mark_minus()
{ $resource_fk = $this->input->post('id_page');
$user_account_fk = $this->foAuthModel->currentUserId();
$result = array("mess"=>'',"mark"=>0);
if($resource_fk){
$res=$this->comment_model->comment_mark_minus($resource_fk,$user_account_fk);
if($res==1)
{
$result['mess'] = '1';
$mark=$this->comment_model->get_comment_mark($resource_fk);
}
else
{
$result['mess'] = '0';
$mark=$this->comment_model->get_comment_mark($resource_fk);
}
$result['mark'] = $mark[0]['cmark'];
}
echo json_encode($result);
}
}
?>
Файл модели Blog_model содержит следующий текст:
<?php
if (!defined('BASEPATH')) exit ('No direct script access allowed');
class Blog_model extends CI_Model
{
public function __construct()
{
parent::__construct();
}
public function add_blog($resource_name,$resource_description,$owner_fk)
{
$parent_fk=null;
$resource_type=TRESOURCE_BLOG;
$time_last_modify = date("Y-m-d G:i:s");
$sql = "insert into access_management.resource (parent_fk,resource_name,resource_type,resource_description,time_last_modify,owner_fk) ";
$sql.="values(?,?,?,?,?,?) returning id_resource";
$query = $this->db->query($sql,array($parent_fk,$resource_name,$resource_type,$resource_description,$time_last_modify,$owner_fk));
$query = $query->result_array();
return $query[0]['id_resource'];
}
public function get_all_blog_titles()
{
$sql = "select id_resource,resource_name,resource_type, pers.surname,
pers.name,pers.patronymic,owner_fk
from access_management.resource res
inner join access_management.user_account acc on res.owner_fk=acc.id_account
inner join general.person pers on acc.person_fk=pers.id
where resource_type = " . TRESOURCE_BLOG."
order by id_resource desc
limit 15 ";
$query = $this ->db->query($sql);
$query = $query->result_array();
return $query;
}
public function get_in_blog_titles($id_resource)
{
$sql = "select id_resource,resource_name,resource_type, pers.surname,
pers.name,pers.patronymic,time_last_modify,sum(value) as ratio,owner_fk
from access_management.resource res
inner join access_management.user_account acc on res.owner_fk=acc.id_account
inner join general.person pers on acc.person_fk=pers.id
left join access_management.marks m on res.id_resource=m.resource_fk
where res.parent_fk = ?
group by id_resource,resource_name,resource_type, pers.surname,
pers.name,pers.patronymic,time_last_modify,owner_fk
";
$query = $this->db->query($sql,array($id_resource));
$query = $query->result_array();
return $query;
}
public function get_blog_by_owner($owner_fk)
{
$sql=" select id_resource,resource_name,resource_type,resource_description, pers.surname,
pers.name,pers.patronymic,time_last_modify,sum(value) as ratio,owner_fk
from access_management.resource res
inner join access_management.user_account acc on res.owner_fk=acc.id_account
inner join general.person pers on acc.person_fk=pers.id
left join access_management.marks m on res.id_resource=m.resource_fk
where res.owner_fk= ?
and res.resource_type in (".TRESOURCE_BLOG.",".TRESOURCE_BLOG_POST.")
group by id_resource,resource_name,resource_type, pers.surname,resource_description,
pers.name,pers.patronymic,time_last_modify,owner_fk";
$query = $this->db->query($sql,array($owner_fk));
return $query=$query->result_array();
}
public function get_owner_id($id_resource)
{
$sql= "select owner_fk
from access_management.resource
where id_resource = ?";
$owner_fk = $this->db->query($sql,array($id_resource));
return $owner_fk= $owner_fk->result_array();
}
public function get_blogs_count()
{
$sql = "select count(*) as count
from access_management.resource
where resource_type=".TRESOURCE_BLOG;
$query = $this->db->query($sql);
return $query=$query->result_array();
}
public function blog_mark_plus($resource_fk,$user_account_fk)
{ $value= 1;
$sql=" select * from access_management.marks where resource_fk= ? and user_account_fk= ?";
$query = $this->db->query($sql,array($resource_fk, $user_account_fk));
if ($query->num_rows == 0)
{
$new_sql="insert into access_management.marks (resource_fk,user_account_fk,value) values (?,?,?)";
Подобные документы
Средства организации блогов, разновидности CMS используемых для разработки и сопровождения блогов, их достоинства и недостатки. Общий алгоритм работы программного средства и алгоритмы работы с данными. Программное конструирование индивидуальных блогов.
дипломная работа [3,6 M], добавлен 10.07.2012Рассмотрение основ разработки программ с четкой структуризацией с применением технологии нисходящего программирования. Постановка задачи, применение процедуры и функции из стандартных модулей при создании проекта. Создание пользовательского интерфейса.
курсовая работа [936,7 K], добавлен 22.01.2015Анализ сред разработки для веб-проектов. Система учета работы элементов информационной инфраструктуры. Создание базы данных и каркаса системы на языке HTML и CSS. Технологии использования и демонстрация работы системы. Экономическое обоснование проекта.
дипломная работа [2,1 M], добавлен 25.06.2014Анализ математических алгоритмов решения задачи, постановка задач по критериям. Выбор программной платформы для создания системы и описание 1С:Предприятие 8. Функционал создания индивидуальных учебных планов, формирования и реорганизации учебных групп.
дипломная работа [2,1 M], добавлен 13.10.2016Постановка задачи разработки автоматизированной системы управления в органах социальной защиты населения. Организация учета и распределения денежных средств. Логическая и физическая структуры базы данных. Методология работы с автоматизированной системой.
дипломная работа [1,9 M], добавлен 24.03.2010Содержательная и формальная (математическая) постановка задачи. Разработка алгоритма решения задачи. Структуры программы и алгоритмы программных модулей, их описание. Решение задачи на конкретном примере. Разработка системы тестов и отладка программы.
курсовая работа [882,1 K], добавлен 24.11.2014Математическая постановка задачи. Обоснование выбора средств разработки. Входные и выходные данные работы программы. Решение задачи теста для написания и отладки программы. Описание программных модулей. Разработка алгоритма, анализ полученных результатов.
курсовая работа [2,2 M], добавлен 13.12.2015Обзор программных средств разработки приложений и обоснование выбора языка программирования. Классификация приложений для работы с базами данных. Функциональная структура базы данных с указанием назначения программных модулей, руководство пользователя.
дипломная работа [645,3 K], добавлен 21.11.2010Проектирование информационной системы. Проект базы данных, проект пользовательского интерфейса системы, проекты реализации основных функций системы. Описание программного проекта: описание модулей (файлов) и подсистем проекта, глобальных данных.
курсовая работа [938,5 K], добавлен 31.10.2015Функциональное описание процесса разработки системы автоматического проектирования цилиндрической емкости. Математическая постановка и программное обеспечение задачи. Алгоритм работы программы и результаты ее работы, анализ использования основных окон.
курсовая работа [876,0 K], добавлен 20.12.2012