Разработка программы "Банк кадров"

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 24.05.2018
Размер файла 811,6 K

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

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

90

Размещено на http://www.allbest.ru/

ГОСУДАРСТВЕННЫЙ КОМИТЕТ СВЯЗИ, ИНФОРМАТИЗАЦИИ И ТЕЛЕКОММУНИКАЦИОННЫХ ТЕХНОЛОГИЙ РЕСПУБЛИКИ УЗБЕКИСТАН

ТАШКЕНТСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ КАРШИНСКИЙ ФИЛИАЛ

на тему

Разработка программы "Банк кадров"

Выпускник Саидмуродов Ж.Ш.

Руководитель Алманов И.С.

Карши 2014 г.

Аннотации

В настоящее время актуальна проблема мониторинга научной активности отдельных сотрудников и подразделений в целом. Системы учета научной активности разрабатываются как в нашей стране (Cadry5L от Bukharasoft, Norma), так и за рубежом (Edinburgh Research Explorer, Отдел Кадров Плюс 2014). Учёт кадров и автоматизация документооборота требует многих ресурсов. Внедрение программного продукта "KadrNet" позволяет автоматизировать процессы сбора, анализа и представления в удобной форме информации о научной деятельности организации, её подразделений.

Currently topical issue of scientific monitoring activities of individual employees and departments as a whole. Accounting system of scientific activity developed in our country (Cadry5L from Bukharasoft, Norma), and abroad (Edinburgh Research Explorer, Human Resources Plus 2014). Personnel records and workflow automation requires many resources. Introduction of software "KadrNet" allows you to automate the processes of collecting, analyzing and presenting information in a convenient form of the scientific activities of the organization, its divisions.

Содержание

  • Аннотации
  • Введение
  • Глава № 1. “KadrNet” - система управления кадром. Проектирование
  • 1.1 Описание предметной области
  • 1.2 Структура базы данных
  • 1.3 Организация обмена данными между серверной частью и клиентским приложением
  • 1.4 Экономическое обоснование результатов внедрения программного продукта
  • Глава № 2. Выбор платформы и языка программирования
  • 2.1 Joomla 2.5 CMS в качестве платформы управления системы “KadrNet
  • 2.1.1 Установка Joomla 2.5
  • 2.1.2 Joomla 2.5 API
  • 2.1.3 Работа с базой данных с использованием Joomla API
  • 2.2 Язык программирование C# - связь между клиентской и серверной части программного обеспечение “KadrNet
  • 2.2.1 Среда для разработки клиентской части
  • 2.2.2 Библиотека WebRequest
  • 2.2.3 Интерфейс управление. WebKit браузер
  • Глава № 3. Разработка клиентской и серверной части программного обеспечение KadrNet
  • 3.1 Разработка интерфейса
  • 3.2 Программная реализация
  • 3.3 Защита приложения
  • Глава № 4. Безопасность жизнедеятельности
  • 4.1 Характеристика условий труда программиста
  • 4.2 Параметры микроклимата
  • 4.3 Шум и вибрация
  • 4.4 Требования к рабочему месту
  • 4.5 Противопожарная безопасность
  • Заключение
  • Литература
  • Приложение № 1. Принцип работы приложения
  • Приложение № 2. Исходный код

Введение

Каждая организация, независимо от ее размеров, имеет отдел кадров, который, в свою очередь, может быть представлен одним, двумя или большим количеством специалистов. Отдел кадров является тем звеном, которое соединяет рядовых сотрудников и вышестоящих руководителей. Правильная организация работы отдела кадров является важным моментом в деятельности всего предприятия, так как зависимость всех работников от вовремя выполненного перевода, полученного приказа об увольнении или принятии на работу, правильно посчитанного стажа очень велика. Причем эта зависимость является как материальной, так и моральной. Отдел кадров, являясь точкой, с которой все начинается, вынужден работать с большим количеством людей. Это, в свою очередь приводит к тому, что происходит документооборот, являющийся источником большого количества бумаги. У специалистов хранится огромное число приказов, личных дел, анкет и других разного рода документов, которые являются необходимыми при такой работе. Поэтому возможность выполнения и хранения всех этих документов в электронном виде является важной и актуальной. Все документы являются результатами выполнения каких - либо кадровых операций (или же исходными данными для них). Таким образом, у специалиста должна быть возможность выполнения всех кадровых операций на компьютере, что является гораздо эффективнее, быстрее и удобнее. На практике, столкнувшись с работой специалиста этого отдела, я понял, что выполнение всех функций абсолютно точно по инструкции и без какой-либо программной поддержки, приведет к естественным ошибкам, неточностям, что является совершенно недопустимым. Именно поэтому создание автоматизированной системы отдела кадров является необходимой и исключительно правильной мерой для любого предприятия, которое ценит свое время, точность и правильность ведения кадровых дел, деньги и потенциальные возможности роста в области информационных технологий.

Необходимо также не забывать и правовую сторону. Соблюдение законодательства Республики Узбекистан, как в правовом государстве, является первоочередным между субъектами трудовых правоотношений. В виду вышесказанного в процессе создания автоматизированной информационной системы "KadrNet" необходимо учесть действующие правовые нормы РУз, требования, которые предъявляют законодательные органы к отделам кадров и общепринятые на все территории Республики Узбекистан формы документов.

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

1. Проведение анализа предметной области и ознакомление с информационно-аналитической системой "Научная деятельность".

2. Разработка концепции и структуры подсистемы "Подготовка кадров и профессиональная квалификация".

3. Разработка структуры БД для накопления информации, необходимой подсистеме.

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

5. Автоматизация ввода данных об обучении/защите путём загрузки файла автореферата диссертации, анализа информации, представленной в нем и идентификации связей с сотрудниками организации.

программа банк сотрудник квалификация

Глава № 1. “KadrNet” - система управления кадром. Проектирование

1.1 Описание предметной области

Общее описание предметной области

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

Разработанная база данных предназначена для решения следующих задач:

1. Обеспечить ввод и корректировку данных:

?ФИО сотрудника;

?Паспортные данные;

?Уровень образования;

?Оклад;

?Должность;

?Специальность;

?Отделы

?ФИО начальника;

?Телефон;

2. Давать возможность просматривать следующую информацию:

?По образованию и специальности;

?По отделам и должностям;

?По указанной специальности;

3. Обеспечивать формирование и печать отчетов:

?Вакантные должности;

?Оплата общей суммы по организации;

?Оплата общей суммы по отделам.

Описание входных документов и сообщений

В базе данных отдел кадров используются следующие документы:

?информация о сотрудниках;

?информация об отделах;

?информация об образовании;

?информация о специальности;

?информация о должностях;

?информация о штатном расписании.

Описание выходных документов и сообщений

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

Список ограничений

В проектируемой базе данных, доступ к данным имеет только сотрудник отдела кадров. Для входа в систему ему необходимо ввести пароль. Так же ограничения установлены на дату начала работы и возраст сотрудника, нельзя ввести дату из будущего и возраст сотрудника не должен превышать 60 лет.

1.2 Структура базы данных

Структуры таблиц можно открыть с программой Navicat Premium.

Таблицы: kadrnet_kadr, kadrnet_kadr_ishgraf, kadrnet_kadr_ishjadval, kadrnet_kadr_kontakt, kadrnet_kadr_mehnat, kadrnet_kadr_passport, kadrnet_kadr_qarindosh, kadrnet_kadr_struct

Связь между таблицами:

1.3 Организация обмена данными между серверной частью и клиентским приложением

Одним из способов, с помощью которых различные приложения могут подключиться базам данных SQL - сервера, является использование DLL библиотеки. Библиотека обеспечивает набор функций программного интерфейса приложений (AРI), которые упрощают подключение к базам данных самых различных форматов.

Доступ к базам данных в этом случае осуществляется с помощью драйверов, библиотек DLL, в которых содержатся функции для обеспечения таких возможностей. Драйверы устанавливаются в системе одновременно с установкой в ней утилит SQL - сервера.

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

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

На серверной и на клиентской части приложение находится система управления контентом CMS Joomla 2.5 и базы данных MYSQL.

Сервер обрабатывает запросы с клиентской части и выделяет 2 этапы подключения и 3 уровни запроса:

Подключение

· Соединение с сервером

· Получить сеансовый идентификатор аутентификации

Запросы

· Вставка, Удаление, Обновление

1.4 Экономическое обоснование результатов внедрения программного продукта

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

Экономический эффект от использования программного продукта за период внедрения (T) можно рассчитать по формуле:

, (1)

где - стоимостная оценка результатов применения разработки в период внедрения Т, у. е.,

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

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

(2)

где Т - период внедрения;

- стоимостная оценка результатов t - расчетного периода, у. е.;

- дисконтирующая функция, которая вводится с целью приведения

всех затрат и результатов к одному моменту времени:

(3)

В формуле (3) р - коэффициент дисконтирования, ,

Ei - нормативный коэффициент капитальных вложений.

Стоимостная оценка результатов t - расчетного периода = 3 у. е.

Затраты на разработку =6 у. е.

Таким образом в результате вычислений =7, 19., =1,19 у. е.

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

.

Здесь ЗР - затраты на ручную обработку информации, у. е., , - объем информации, обрабатываемой вручную, Мбайт, Ц - стоимость одного часа работы, у. е. /час, - коэффициент, учитывающий дополнительные затраты времени на логические операции при ручной обработке информации, - норма выработки, Мбайт/час. ЗА - затраты на автоматизированную обработку информации, у. е., ЗАмtaоtо - время автоматической обработки (час), - стоимость одного часа машинного времени, у. е. /час; - время работы оператора, час; - стоимость одного часа работы оператора, у. е. /час.

В результате вычислений получили следующие результаты:

Затраты на автоматизированную обработку информации, ЗА = 3 у. е.

Затраты на ручную обработку информации, Зр = 19 у. е.

Экономия средств от внедрения продукта, Эу= 16 у. е.

Экономический эффект от внедрения разработки в течение года использования можно определить по формуле:

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

Получив необходимы величины из вычислений выше, можем узнать величину экономического эффекта от внедрения разработки в течение года, ЭГ=15.5 у. е.

Тогда эффективность разработки может быть определена по формуле:

Для разработанного проекта Эр = 0,62, использование на предприятии разработанного программного продукта считается экономически целесообразным, если значение .

Глава № 2. Выбор платформы и языка программирования

2.1 Joomla 2.5 CMS в качестве платформы управления системы “KadrNet”

Joomla представляет собой систему управления информационным наполнением (контентом) (CMS) веб-сайтов, построенную на основе повторно используемой библиотеки классов, хранящейся, главным образом, в папке libraries/joomla. Классы из этой библиотеки выполняют многие низкоуровневые задачи, которые требуются для CMS или любого другого веб-приложения. К их числу относятся следующие задачи:

· Предоставление пользователям возможности регистрироваться с разными правами доступа к базе данных.

· Отслеживание текущего сеанса работы с браузером.

· Буферизация выводимых данных для повышения производительности.

· Обработка событий для подключаемых модулей.

· Фильтрация вводимых пользователем данных для предотвращения злонамеренных попыток нарушения защиты.

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

Допустим, требуется создать новое веб-приложение для отслеживания товарных запасов в электронном магазине. Пользователям этого приложения не предоставляется возможность отправлять или отображать статьи, контактную информацию или крупные заголовки. На самом деле это приложение может вообще не отображать веб-страницы, но лишь проверять товарные запасы и возвращать соответствующую информацию другому приложению.

В данном примере совсем необязательно, да и не нужно устанавливать всю систему Joomla CMS, но может потребоваться проверка полномочий пользователя на выполнение конкретных действий. Для решения поставленной задачи определенно потребуется взаимодействие с базой данных, фильтрация запросов с целью повысить безопасность самого приложения, а также обработка состояний ошибок. Иными словами, часть Joomla, относящаяся к CMS, не потребуется. Но в то же время можно было бы воспользоваться библиотеками Joomla, чтобы сэкономить немало труда, повторно используя уже написанный код, для чего библиотеки подходят как нельзя лучше.

В версиях 1.5 и 1.6 эту задачу можно было бы решить, установив сначала Joomla, а затем удалив те части, которые не потребуются в нашем приложении. Но это был бы лишний и совсем не обязательный труд. По этой причине разработка функциональных возможностей библиотек Joomla выделена в отдельный проект под названием Joomla Platform Project, начиная с июля 2011 года. Этот проект позволяет тем разработчикам, которым требуется только платформа Joomla без CMS, получить именно то, что им нужно. Он также позволяет выбрать платформу в качестве отдельного от CMS проекта с собственным календарным планом выпуска, кодовой базой и разработчиками.

2.1.1 Установка Joomla 2.5

Для установки Joomla 2.5 нужно загрузить последнюю версию с официального сайта (Full Package - ZIP архив). Создать в корневой директории сервера (если у вас стоит XAMPP, то по умолчанию это C: /xampp/htdocs) дополнительную директорию, например "C: /xampp/htdocs/Joomla" и распаковать содержимое архива в эту директорию. Набрать в браузере http://localhost/joomla/, после чего должно появиться диалоговое окно установки Joomla.

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

На этом шаге проверяются системные требования для установки. Рекомендуемые установки не обязательно должны совпадать. Если основные требования не будут совпадать, дальнейшая установка будет невозможна. Нажимаем кнопку "Далее".

Предоставляется лицензия (GNU GENERAL PUBLIC LICENSE) по которой распространяется и используется Joomla. Если вас что-то не устраивает, тогда лучше выбрать другую CMS. Если вы с этим лицензией соглашаетесь нажимаем кнопку "Далее".

Тип базы

Рекомендуется использовать "MySQLi", если ваш сервер не поддерживает данный тип, нужно выбрать "MySQL". (Если вы устанавливали пакет XAMPP выбираем MySQLi).

Имя пользователя

Для локальной установки это обычно "root", если вы изменяли имя пользователя для доступа к MySQL введите это имя. При установки на хостинг вам выдаются данные для доступа к БД, обычно их можно посмотреть в административной панели хостинга. Если вы не знаете имя, уточняйте информацию в поддержке своего хостинга. (Если вы устанавливали пакет XAMPP имя будет root).

Пароль

Нужно ввести пароль для доступа к MySQL. (Если вы устанавливали пакет XAMPP пароль вводить не нужно).

Имя БД

Укажите желаемое имя базы данных. (Например joomla).

Префикс таблиц

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

Если Joomla устанавливается на локальный компьютер этот шаг пропускается. Так же для большинства хостингов эти настройки не нужны.

Заполняем имя сайта и данные для учетной записи пользователя группы SuperAdministrator. Если вы впервые устанавливаете Joomla, то рекомендую установить демо данные (нужно нажать на кнопку "Установить демо данные"") для того что бы ознакомиться с системой.

Поздравляем, вы успешно установили Joomla. Нажимаем на кнопку "Удалить директорию 'installation'", дальше нажимаем на кнопку "Панель управления". В форме авторизации вводим данные, которые вы заполняли в предыдущем шаге.

2.1.2 Joomla 2.5 API

Для системы управления контентом Joomla созданы тысячи расширений. Тем не менее, использовать готовое решение не всегда целесообразно. Стороннее расширение может быть слишком дорогим или перегружать сервер ненужными для конкретной задачи функциями. Для нестандартной задачи готового решения может вовсе не найтись.

Иногда достаточно воспользоваться одним из конструкторов контента (CCK) для Joomla, позволяющих создавать свои шаблоны для материалов. Однако и CCK - не панацея, и возможно, что и он окажется бессилен. В таком случае возникает необходимость написать собственное расширение.

Может случиться, что готовое решение начнет работать некорректно и придется искать в нем ошибку. Тогда, чтобы разобраться в его коде, программисту понадобится знание принципов построения расширений под Joomla.

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

Архитектура Joomla

Фреймворк Joomla состоит из трех уровней:

1. уровень фреймворка;

2. уровень приложения;

3. уровень расширений.

Уровень фреймворка обеспечивает базовую функциональность Joomla с помощью набора библиотек и плагинов и собственно фреймворка Joomla:

фреймворк Joomla (или "ядро") - набор классов, обеспечивающих базовую функциональность Joomla. Названия этих классов начинаются с буквы "J" и говорят сами за себя: JDatabase, JUser, JForm, JEditor и т.д.;

библиотеки требуются для работы фреймворка или сторонних расширений;

плагины расширяют функциональность фреймворка.

Уровень приложения состоит из приложений, которые расширяют абстрактный класс JApplication. Приложение - глобальный объект, использующийся для обработки запросов.

В этот уровень входят следующие приложения:

JInstallation запускается при установке Joomla. После завершения установки необходимо удалить директорию installation, которая как раз и содержит данное приложение. В дальнейшем установка расширений выполняется с помощью приложения JAdministrator;

JAdministrator управляет всеми функциями для администрирования Joomla;

JSite отвечает за компоновку и отображение фронтенда;

XML-RPC позволяет администрировать сайт Joomla удаленно.

Уровень расширений состоит из расширений фреймворка Joomla и приложений:

компоненты - основной тип расширений Joomla. При каждом обращении к Joomla происходит вызов соответствующего компонента. Например, при отображении какой-либо страницы сайта происходит вызов компонента com_content;

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

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

языковые файлы позволяют представить контент Joomla на нескольких языках;

шаблоны отвечают за внешний вид сайта.

Фронтенд и бэкенд

Joomla делится на фронтенд - часть сайта, доступная пользователю, и бэкенд - систему администрирования сайта. Соответственно, в Joomla всего две точки входа - index. php для фронтенда и /administrator/index. php для бэкенда. Чтобы вызвать какой-либо установленный на сайте компонент, необходимо передать его имя (с префиксом "com_") скрипту index. php или /administrator/index. php в переменной option в строке URL. Например, переход по ссылке http://localhost/joomla/index. php? option=com_banners приведет к вызову компонента banners.

Большинство компонентов для Joomla делятся на фронтенд и бэкенд, и их код распределяется по двум папкам, каждая из которых называется по схеме com_<имя компонента>. В каждой из этих папок должен находиться файл, являющийся точкой входа, и называющийся так же, как компонент, т.е. <имя компонента>. php. Схематически это можно изобразить так:

administrator

| - components

. | - com_mycomponent

. | - mycomponent. php

components

. | - com_mycomponent

. | - mycomponent. php

Предопределенные константы

В Joomla определен ряд констант, хранящих значения путей: JPATH_BASE - путь к корневой директории текущего приложения; JPATH_ROOT - путь к корневой директории сайта, JPATH_COMPONENT - путь к директории компонента, JPATH_COMPONENT_SITE - путь к фронтенду компонента, JPATH_COMPONENT_ADMINISTRATOR - путь к бэкенду компонента и т.д. Полный их список можно найти в документации. Все эти константы возвращают значения абсолютных путей в файловой системе. Если вам необходимо получить путь для использования в URL, следует воспользоваться методом JURI:: base ().

В файле index. php, расположенном в корневой директории Joomla, определена константа _JEXEC. Большинство PHP-файлов, написанных под Joomla, начинаются с выражения

defined ('_JEXEC') or die ('Restricted access');

Данное выражение осуществляет проверку, был ли файл, в котором оно записано, вызван из Joomla. Таким путем запрещается доступ к файлу извне, чтобы предотвратить взлом сайта.

Еще одна популярная константа Joomla - DS, разделитель директорий, принятый в конкретной операционной системе (например, прямой или обратный слеш).

Языковые файлы

Joomla позволяет создать мультиязыковый сайт, задавая для каждого пользователя язык сайта и панели управления. Данная возможность реализована следующим образом: в кодах расширений при необходимости вывести на экран какой-либо заранее известный текст (например, сообщение об успешном выполнении запроса пользователя) вместо этого текста записывается его эквивалент (ключ). Для каждого языка, поддерживающегося данным расширением, создаются языковые файлы, которые хранят переводы для всех ключей, встретившихся в кодах расширения. Например, для ключа "COM_MYCOMPONENT_HELLO_WORLD" перевод на английский язык может задаваться как "Hello, world!", на русский - "Здравствуй, мир!", на французский - "Bonjour le monde!" и т.д.

Языковые файлы фронтенда хранятся в папке /language/<ln-LN>, где <ln-LN> - код языка по стандарту RFC3066. Файл должен называться по схеме <ln-LN>. <префикс><имя расширения>. ini, где префикс зависит от вида расширения: "com_" (компонент), "mod_" (модуль), "tpl_" (шаблон) и т.д. Например, путь к языковому файлу компонента contact для русского языка следующий: /language/ru-RU/ru-RU.com_contact. ini

Языковые файлы бэкенда хранятся в папке /administrator/language/<ln-LN>.

Кроме файлов. ini, для расширения должен также быть создан файл *. sys. ini, в котором могут храниться переводы сообщений, выводящихся после установки расширения, переводы пунктов меню, создающихся для компонента в панели управления, переводы параметров компонента и переводы надписей, выводящихся в менеджере расширений. Например, путь к файлу. sys. ini компонента contact для русского языка выглядит так: /administrator/language/ru-RU/ru-RU.com_contact. sys. ini

Содержимое языкового файла состоит из пар "ключ-значение" и, при необходимости, комментариев. Пустые строки игнорируются. Комментарии начинаются с символа ";". Например

; Это комментарий

Ключ - это строка для перевода, а значение - это перевод данной строки на заданный язык. Ключ отделяется от значения знаком равенства:

КЛЮЧ=Значение

Например:

COM_CONTACT="Контакты"

Ключ должен быть записан в верхнем регистре и не должен содержать пробелы. Все ключи во фронтенде должны начинаться со строки <префикс><имя расширения>_, например:

COM_CONTACT_CHANGE_CONTACT_BUTTON

Значение (перевод ключа) должно быть заключено в двойные кавычки. Если значение к тому же содержит двойные кавычки, то они должны быть записаны в виде HTML-сущности, например, &quot.

Для использования переводов применяются методы статического класса JText _ (), sprint () и printf ().

Простейший способ вывести перевод строки - использовать метод JText:: _ (), который просто переводит строку, переданную ему параметром. Например:

echo JText:: _ ('COM_MYCOMPONENT_HELLO_WORLD');

Если перевод для заданной строки не будет найден в языковых файлах, то метод _ () вернет саму эту строку. Перед поиском строка будет переведена в верхний регистр, поэтому не имеет значения, в каком регистре ее записать в коде.

Если в строку необходимо включить какие-либо значения, то используются методы JText sprintf () и printf (), аналогичные одноименным функциям в PHP. Их параметрами являются строка для перевода и любое количество аргументов для подстановки в переведенную строку. Сами параметры не будут переведены. Методы sprintf () и printf () различаются тем, что printf () выводит получившуюся строку на экран и возвращает ее длину, а sprintf () возвращает саму строку и ничего не выводит.

Например, если в языковом файле ru-RU.com_mycomponent. ini задано

COM_MYCOMPONENT_THANK_YOU="Спасибо за Ваше сообщение, %s!"

а в коде расширения имеется строка

echo JText:: sprintf ('COM_MYCOMPONENT_THANK_YOU', 'Вася');

то результатом будет вывод на экран строки "Спасибо за Ваше сообщение, Вася!".

Аргументы задаются так же, как в одноименных функциях PHP: %s означает строку, %d - целое число, %f - число с плавающей точкой и т.д.

Паттерн "фабрика" (класс JFactory)

В Joomla существует статический класс JFactory, реализующий паттерн "фабрика". Методы данного класса (getApplication (), getDate (), getDbo (), getDocument (), getLanguage (), getURI (), getUser (), getMailer (), getEditor () и др.) позволяют получить доступ к соответствующим глобальным объектам фреймворка (JApplication, JDate, JDatabase, JDocument, JLanguage, JURI, JUser, JMail, JEditor и др.), ряд которых будет рассмотрен далее.

Рассмотрим пример получения доступа к объекту JUser:

$user =& JFactory:: getUser ();

if ($user->guest)

echo "Вы не вошли на сайт";

else

echo "Вы вошли на сайт как". $user->name;

Обратите внимание на знак амперсанда перед вызовом метода getUser (). Мы получаем ссылку на объект-представитель текущего пользователя. Если пропустить амперсанд, то будет создана копия этого объекта и изменения, которые мы будем в ней производить, не затронут оригинал.

HTTP-запрос (класс JRequest)

В Joomla вместо непосредственного использования глобальных массивов $_GET, $_POST, $_FILES, $_COOKIE, $_ENV, $_SERVER и $_REQUEST удобнее применять класс JRequest. Его методы пропускают данные, введенные пользователем, через фильтр во избежание инъекций.

Для получения переменных запроса GET/POST используется метод mixed getVar (string $name, string $default=null, string $hash='default', string $type='none', int $mask=0), где:

$name

имя переменной;

$default

значение по умолчанию, которое вернет метод getVar (), если значение пере-

менной не задано;

$hash

источник данных, по умолчанию они будут получены из массива $_REQUEST.

Явное указание массива GET или POST повысит безопасность кода;

$type

тип ожидаемого значения:

INT

INTEGER

FLOAT

DOUBLE

BOOL

BOOL

WORD

ALNUM

допускает только буквенно-цифровые значения;

CMD

BASE64

допускает только те символы, которые

могут быть представлены в кодировке base64

(т.е. a-z, A-Z, 0-9, /, + и =);

STRING

ARRAY

PATH

исключает возможность атаки. Например,

если исходное значение содержало

/. / или /. /, то вместо него метод

вернет пустую строку;

USERNAME

удаляет управляющие символы

(0x00 - 0x1F), 0x7F, <, >,", ', % и &;

$mask

константа, задающая опции фильтрации:

JREQUEST_NOTRIM

не удалять пробелы в начале и конце

строки;

JREQUEST_ALLOWRAW

без какой-либо фильтрации

JREQUEST_ALLOWHTML

не удалять HTML-код, но пропустить значение

через фильтр (в частности, удалить опасные

теги - script, applet, iframe и др.).

Эти константы не заключаются в кавычки, т.к. это не строки, а статические переменные. Если ни одной опции не задано, то HTML-теги, а также пробелы в начале и конце строки будут удалены.

Пример:

$answer = JRequest:: getVar ('answer', 'no answer', 'post', 'string', JREQUEST_ALLOWRAW);

Если нужно получить весь массив переменных запроса в отфильтрованном виде, используется

mixed get (string $hash='default', int $mask=0)

Например, получим массив $_POST:

$arr = JRequest:: get ('post');

Для присвоения переменным запроса значений используется метод string setVar (string $name, string $value=null, string $hash='method', bool $overwrite=true)

Если $overwrite=false и в запросе уже задано значение переменной $name, то метод просто вернет само это значение. В противном случае переменной будет присвоено значение $value, а метод вернет старое значение $name.

Пример:

JRequest:: setVar ('var1', 'val1');

Класс JRequest содержит также методы, позволяющие получить значение определенного типа: getBool (), getCmd (), getFloat (), getInt (), getString (), getWord ().

Приложение (класс JApplication)

Очередь сообщений

В Joomla существует очередь сообщений - массив строк, которые будут выведены на экран при следующей загрузке какой-либо страницы. Стандартными являются три типа сообщений (рис.1.2): message (собственно сообщение), notice (предупреждение) и error (ошибка):

Для добавления сообщений в очередь используется метод void enqueueMessage (string $msg, [string $type = 'message']), где:

$msg

- текст сообщения;

$type

- тип сообщения.

Например:

global $app;

$app->enqueueMessage ('Message');

$app->enqueueMessage ('Notice', 'notice');

$app->enqueueMessage ('Error', 'error');

В данном примере $app - это глобальный объект JApplication.

Для получения копии очереди сообщений используется метод array getMessageQueue (). Например, для предыдущей очереди из трех сообщений он возвращает массив:

Array

(

[0] =>Array

(

[message] =>Message

[type] =>message

)

[1] =>Array

(

[message] =>Notice

[type] =>notice

)

[2] =>Array

(

[message] =>Error

[type] =>error

)

)

Перенаправление

Для перенаправления пользователя к другому URL используется метод void redirect (string $url, string $msg='', string $msgType='message', bool $moved=false), где:

$url

- URL, к которому перенаправляется пользователь;

$msg

- сообщение, которое должно быть при этом выведено;

$msgType

- тип сообщения;

$moved

- при значении true браузер получит код состояния "301

Permanently Moved", в противном случае - "303 See Other".

Данный метод добавляет сообщение к очереди сообщений, перенаправ - ляет браузер пользователя к заданному URL и завершает работу приложения Joomla. Например:

global $app;

$app->redirect ('index. php', JText:: _ ('NOTICE'), 'notice');

Второй способ организации перенаправления - использовать метод JController:: setRedirect (), который будет рассмотрен ниже вместе с другими методами класса JController.

Получение параметров конфигурации сайта

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

mixed getCfg (string $varname, string $default=null)

где $varname - название параметра.

Для примера получим название сайта:

global $app;

echo $app->getCfg ('sitename');

Определение типа запущенного приложения Joomla

Чтобы определить, откуда запущен код, можно использовать методы

int getClientId ()

bool isAdmin ()

bool isSite ()

Метод getClientId () возвращает id запущенного приложения: 0 (сайт), 1 (панель управления), 2 (установщик).

Метод isAdmin () определяет, является ли запущенное приложение бэкендом, isSite () - фронтендом.

Панели инструментов (класс JToolBarHelper)

Joomla автоматически загружает в верхней правой части экрана бэкенда компонента файл, который называется toolbar. <имя компонента>. php. Таким образом можно отображать различные панели инструментов.

Класс JToolBarHelper содержит методы, которые генерируют HTML-код для построения кнопок панелей инструментов. Для отображения кнопок, которые часто используются в компонентах, - "Сохранить", "Отменить", "Удалить" - существуют готовые методы этого класса. Их список можно найти в документации Joomla: http://docs. joomla.org/JToolBarHelper.

Для методов addNew (), publish (), publishList (), makeDefault (), unpublish (), editList (), save (), apply () заданы по умолчанию два параметра - задача (об ее значении будет сказано ниже) и подпись. Например, значения этих параметров по умолчанию для метода editList () выглядят так: $task = 'edit', $alt = 'Edit'. Можно задавать свои задачу и подпись, передавая их как, соответственно, первый и второй параметры.

Метод для удаления объектов имеет прототип

void deleteList (string $msg =, string $task = 'remove', string $alt = 'JTOOLBAR_DELETE')

где $msg - это текст сообщения с просьбой подтвердить удаление объектов. Если этот параметр задан, то при нажатии кнопки для удаления будет выводиться окно с заданным сообщением и объекты будут удалены только после нажатия кнопки "ОК" в этом окне. Если же параметр $msg не задан, то объекты будут удаляться без предупреждения.

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

void custom (string $task = '', string $icon = '', string $iconOver = '', string $alt = '', bool $listSelect = true)

где:

$task

- задача, которая будет выполнена;

$icon

- пиктограмма кнопки;

$iconOver

- пиктограмма при наведении курсора мыши;

$alt

- подпись под кнопкой;

$listSelect

- нужно ли работать только с выбранными элементами списка.

Как правило, в URL Joomla присутствует переменная task, определяющая задачу, которую должен выполнить компонент. В коде компонента в зависимости от полученного значения task вызывается некоторая функция. Например, если URL выглядит как http://localhost/joomla/index. php? option= mycomponent&task=show, то компонент mycomponent будет обрабатывать задачу show.

Параметры $icon и $iconOver задают, как ни странно, не название файла изображения, а название класса CSS, для которого задано это изображение в качестве фонового. К названию класса автоматически добавится строка "icon-32-" и будет произведен поиск этого класса в подключенных файлах CSS. Например, если третий параметр функции JToolBarHelper:: custom () задан как send. png, то будет найден класс. icon-32-send, а в результате картинка будет отображена с помощью кода:

<span class="icon-32-send"></span>

Если данная панель инструментов создана для одной-единственной записи, а не для списка, то параметру $listSelect следует задавать значение false. Если этот параметр имеет значение true, то для события кнопки onclick задается следующий код на Javascript:

if (document. adminForm. boxchecked. value==0)

{

alert ('Пожалуйста, выберите объект из списка');

}

else

{

Joomla. submitbutton ('myquestions_sendToExpert')

}

Если же $listSelect имеет значение false, то проверка того, выбраны ли в списке какие-либо элементы, не осуществляется:

Joomla. submitbutton ('myquestions_sendToExpert')

Для вывода названия панели инструментов и пиктограммы служит метод void title (string $title, string $icon), где:

$title

- название панели инструментов;

$icon

- название класса CSS, для которого необходимое изображение задано в

качестве фонового. К названию класса автоматически добавится строка

"icon-48-".

Например, если вы хотите использовать в качестве пиктограммы файл /media/com_mycomponent/images/sample-48. png, то добавьте в CSS класс

. icon-48-sample

{

background: url ('. /images/sample-48. png') 0 0 no-repeat;

}

Теперь для отображения названия необходимо добавить в код строку:

JToolBarHelper:: title ('Мой компонент','sample');

Для вывода между кнопками вертикальной черты-разделителя служит метод divider ():

void divider ();

2.1.3 Работа с базой данных с использованием Joomla API

Префикс таблиц базы данных

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

Использование префикса позволяет разместить в одной базе данных несколько установок Joomla.

Различают реальный и символический префиксы. Реальный префикс - это то конкретное сочетание символов, которое используется в названиях таблиц базы данных. Символический префикс - это сочетание "#__" (решетка и два знака подчеркивания), которое используется в запросах вместо реального префикса. При обработке запроса вместо символического префикса будет автоматически подставлен реальный. Например, при реальном префиксе "jos_" строка "#__mycomponent_mytable" превратится в "jos_mycomponent_mytable".

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

Выполнение запроса к базе данных

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

1. Получение ссылки на объект JDatabase.

2. Формирование запроса.

3. Задание запроса.

4. Выполнение запроса.

5. При необходимости - загрузка результата.

Получение ссылки на объект JDatabase

JDatabase - абстрактный класс, предоставляющий доступ к соединению с базой данных. Это соединение создается при инициализации приложения Joomla, а в коде своего расширения мы можем получить ссылку на него с помощью метода getDbo () статического класса JFactory:

$db =& JFactory:: getDbo ();

Формирование SQL-запроса

В старых версиях Joomla запросы формулировались в виде строки:

$query = 'SELECT * FROM #__categories';

В Joomla 1.6 появился объект JDatabaseQuery, методы которого позволяют упростить создание сложных SQL-запросов. Названия этих методов практически совпадают с ключевыми словами языка SQL: select (), from (), where (), having (), join () и т.д. Использование объекта JDatabaseQuery иллюстрирует следующий пример:

$db = JFactory:: getDbo ();

$query = $db->getQuery (true);

$query->select ('id, name');

$query->from ('#__users');

$query->order ('name');

$query->where ('username LIKE \'a%\'');

$db->setQuery ($query);

echo $query->__toString ();

В данном примере мы получаем из таблицы #__users отсортированный по алфавиту список id и имен пользователей, чьи логины начинаются на букву "a". Данный код выведет на экран следующий SQL-запрос:

SELECT id, name FROM #__users WHERE username LIKE 'a%' ORDER BY name

Как известно, употребляющиеся в запросе названия полей и таблиц рекомендуется заключать в ограничители, чтобы избежать совпадений с зарезервированными словами. Кроме того, строковые значения в запросах также берутся в кавычки. Методы nameQuote () и Quote () заключают, соответственно, названия и значения в правильные ограничители. Для MySQLэто обратные апострофы (``) для названий и обычные апострофы ('') для значений.

Рассмотрим пример использования этих методов:

$query = 'SELECT * FROM '. $db->nameQuote ('#__users'). ' WHERE '. $db->nameQuote ('username'). '='. $db->Quote ('admin');

Для базы данных MySQL с префиксом таблиц jos_ переменная $query примет следующее значение:

SELECT * FROM `jos_users` WHERE `username`='admin';

Задание запроса

Чтобы задать SQL-запрос для последующего выполнения, используется метод:

JDatabase setQuery (string $query, string $offset=0, string $limit=0)

где $query - это запрос, а $offset и $limit - соответственно смещение для начала выборки и количество выбираемых строк.

Например:

$db->setQuery ($query, 0,10);

Обратите внимание, что метод setQuery () не выполняет запрос, а только задает его.

Выполнение запроса

Без выборки данных

Для выполнения запроса, не требующего выборки данных (например, UPDATE или INSERT), используется метод mixed query ().


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

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