Модуль используется для поиска документов об образовании в архиве института. Реализация модуля выполнена на языке программирования php в виде модуля для сайта визитки института. Для удобного отображения результата применена технология ajax.

Модуль реализован в виде html формы с обязательными полями:

  • Серия диплома
  • Номер диплома
  • Фамилия выпускника

Файловая структура

  • mod_archive_of_diplomas — директория модуля на сервере.
    • tmpl
      • default.php — шаблон модуля, который принимает данные, собранные mod_archive_of_diplomas.php и генерирует HTML, который будет отображаться на странице.
    • helper.php — файл содержит вспомогательный класс, используемый для того, чтобы сделать фактическую работу в получении информации, которая будет отображаться в модуле.
    • mod_archive_of_diplomas.php — основной файл входа для модуля, который выполняет необходимые процедуры инициализации, вызова вспомогательных средств для сбора данных и содержит шаблон для отображения вывода модуля.
    • mod_archive_of_diplomas.xml — файл содержит информацию о модуле и определяет файлы, которые должны быть установлены установщиком Joomla! Так же данный файл задает параметры конфигурации модуля.

Исходный код

tmpl/default.php
PHP
<?php
// No direct access
defined( '_JEXEC' ) or die;

$document = JFactory::getDocument();
$document->addScript('/modules/mod_archive_of_diplomas/script.js?'. time());

$option['driver']   = 'mysql';
$option['host']     = '';
$option['user']     = '';
$option['password'] = '';
$option['database'] = '';
$option['prefix']   = '';

$db = & JDatabase::getInstance( $option );

if ( isset( $_REQUEST["ad_series"] ) && isset( $_REQUEST["ad_number"] ) && isset( $_REQUEST["surname"] ) ) {
	
	$ad_series = $_REQUEST["ad_series"];
	$ad_number = $_REQUEST["ad_number"];
	$surname = $_REQUEST["surname"];
	
print '<hr>';
	
	
	$query_diploms = $db->getQuery(true);
	$query_diploms -> select('ad.ad_series, ad.ad_number, ad.ad_reg_number, ad.ad_date_vypuska, u.surname, u.name, u.patronymic, s.title');
	
	$query_diploms -> from($db->quoteName('applications_diploms', 'ad'));
	$query_diploms -> join('LEFT OUTER', $db->quoteName('applications', 'a') . ' ON (' . $db->quoteName('ad.application_id') . ' = ' . $db->quoteName('a.id') . ')');
	$query_diploms -> join('LEFT OUTER', $db->quoteName('users', 'u') . ' ON (' . $db->quoteName('a.user_id') . ' = ' . $db->quoteName('u.user_id') . ')');
	$query_diploms -> join('LEFT OUTER', $db->quoteName('specialties', 's') . ' ON (' . $db->quoteName('a.special_id') . ' = ' . $db->quoteName('s.special_id') . ')');
	
	$query_diploms -> where($db->quoteName('ad.ad_series')." = ". $db->quote($ad_series));
	$query_diploms -> where($db->quoteName('ad.ad_number')." = ". $db->quote($ad_number));
	$query_diploms -> where($db->quoteName('u.surname')." = ". $db->quote($surname));
	
	$db -> setQuery( $query_diploms, 0, 1 );
	$diploms = $db->loadObjectList();
	
	if( count( $diploms ) > 0 ) {
		
		$ad_series = $diploms[0]->ad_series;
		$ad_number = $diploms[0]->ad_number;
		$ad_reg_number = $diploms[0]->ad_reg_number;
		$ad_date_vypuska = $diploms[0]->ad_date_vypuska;
		$surname = $diploms[0]->surname;
		$name = $diploms[0]->name;
		$patronymic = $diploms[0]->patronymic;
		$title = $diploms[0]->title;
		
		$fio = '';
		if( !empty( $surname ) ) $fio .= ' '. $surname;
		if( !empty( $name ) ) $fio .= ' '. $name;
		if( !empty( $patronymic ) ) $fio .= ' '. $patronymic;
		
		print '<div class="alert alert-success" style=" font-size: 1.6em; ">Документ об образовании внесен в реестр как выданный на имя: '. $fio .'. Регистрационный номер: '. $ad_reg_number .'. Дата выдачи: '. date("d.m.Y.", strtotime( $ad_date_vypuska )) .' Направление подготовки (специальность): '. $title .'. Серия бланка: '. $ad_series .', номер бланка: '. $ad_number .'</div>';
		
	} else {
		
	print '<div class="alert alert-danger">';
		print '<p>Информация не найдена</p>';
	print '</div>';
		
	}
	
print '<hr>';

}
print '<div class="alert alert-info">';
	// print '<p>Для поиска документа в <a href="/reestr" class="a-link">реестре</a> заполните форму и нажмите кнопку «Найти».</p>';
	print '<p>Для поиска документа в реестре заполните форму и нажмите кнопку «Найти».</p>';
	print '<p>Все поля обязательны к заполнению.</p>';
print '</div>';

print '<form id="form_archive_of_diplomas_search" action="" method="POST">';
// print '<form id="form_archive_of_diplomas_search" action="">';
	print '<div class="row">';
		print '<div class="col-md-4 col-xs-12">';
			print '<div class="form-group" id="form_ad_series">';
				print '<label class="control-label">Серия диплома *</label>';
				print '<input type="text" name="ad_series" class="form-control" placeholder="100000" pattern="[0-9]{6}" onkeyup="this.value=this.value.replace(/[^0-9]/g,\'\')" />';
				print '<div id="ad_series_correct" class="help-block"> </div>';
			print '</div>';
		print '</div>';
		print '<div class="col-md-4 col-xs-12">';
			print '<div class="form-group" id="form_ad_number">';
				print '<label class="control-label">Номер диплома *</label>';
				print '<input type="text" name="ad_number" class="form-control" placeholder="0000001" pattern="[0-9]{7}" onkeyup="this.value=this.value.replace(/[^0-9]/g,\'\')" />';
				print '<div id="ad_number_correct" class="help-block"> </div>';
			print '</div>';
		print '</div>';
		print '<div class="col-md-4 col-xs-12">';
			print '<div class="form-group" id="form_surname">';
				print '<label class="control-label">Фамилия выпускника *</label>';
				print '<input type="text" name="surname" class="form-control" placeholder="Иванов" />';
				print '<div id="surname_correct" class="help-block"> </div>';
			print '</div>';
		print '</div>';
	print '</div>';
	print '<div class="text-right">';
		print '<button type="button" class="btn btn-success btn-lg" disabled>Найти</button>';
	print '</div>';
print '</form>';
helper.php
PHP
<?php
// No direct access
defined( '_JEXEC' ) or die;

/**
 * Class Module Helper
 * @author alvasdem
 */
class modArchiveOfDiplomasHelper
{

	/**
	 * getData method
	 * @param $params
	 * @return array
	 */
	static function getData( $params )
	{
		$db = JFactory::getDbo();
		return array();
	}

}
mod_archive_of_diplomas.php
PHP
<?php
// No direct access
defined( '_JEXEC' ) or die;

require_once( dirname( __FILE__ ) . '/helper.php' );
$data = modArchiveOfDiplomasHelper::getData( $params );
$moduleclass_sfx = htmlspecialchars( $params->get( 'moduleclass_sfx' ) );
require( JModuleHelper::getLayoutPath( 'mod_archive_of_diplomas', $params->get( 'layout', 'default' ) ) );
mod_archive_of_diplomas.xml
XML
<?xml version="1.0"?>
<extension type="module" version="1.0.0" method="upgrade" client="site">
    <name>Реестр дипломов</name>
    <author>alvasdem</author>
    <authorEmail></authorEmail>
    <authorUrl></authorUrl>
    <copyright></copyright>
    <license></license>
    <version>1.0</version>
    <description></description>
    <files>
        <filename module="mod_archive_of_diplomas">mod_archive_of_diplomas.php</filename>
        <filename>index.html</filename>
        <filename>helper.php</filename>
        <folder>tmpl</folder>
    </files>
	<languages>
		<language tag="en-GB">language/en-GB.mod_archive_of_diplomas.ini</language>
		<language tag="en-GB">language/en-GB.mod_archive_of_diplomas.sys.ini</language>
		<language tag="ru-RU">language/ru-RU.mod_archive_of_diplomas.ini</language>
		<language tag="ru-RU">language/ru-RU.mod_archive_of_diplomas.sys.ini</language>
	</languages>
    <config>
        <fields name="params">
            <fieldset name="advanced">
                <field name="layout" type="modulelayout" label="JFIELD_ALT_LAYOUT_LABEL"
                       description="JFIELD_ALT_MODULE_LAYOUT_DESC"/>
                <field name="moduleclass_sfx" type="text" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL"
                       description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC"/>
                <field name="cache" type="list" label="COM_MODULES_FIELD_CACHING_LABEL"
                       description="COM_MODULES_FIELD_CACHING_DESC" default="1">
                    <option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option>
                    <option value="1">JGLOBAL_USE_GLOBAL</option>
                </field>
            </fieldset>
        </fields>
    </config>
</extension>