Разработан модуль по заказу Открытого института для поздравления обучающихся и сотрудников. Модуль написан на языке программирования php по стандартам joomla и опубликован на главной странице сайта визитки

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

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

Исходный код

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

$option = [];

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

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

$users = $db->getQuery(true);
// $db -> setQuery("SELECT user_id, surname, name, patronymic FROM users WHERE DAY(date_of_birth) = ". date("d") ." AND MONTH(date_of_birth) = ". date("m") ." AND user_id > 100");
$db -> setQuery("SELECT
  applications.user_id,
  users.surname,
  users.name,
  users.patronymic
FROM applications
  LEFT OUTER JOIN users
    ON applications.user_id = users.user_id
WHERE applications.status = 1 
AND users.user_id > 100 
AND DAY(users.date_of_birth) = ". date("d") ."
AND MONTH(users.date_of_birth) = ". date("m") ."
GROUP BY applications.user_id");
// $db -> setQuery("SELECT user_id, surname, name, patronymic FROM users WHERE date_of_birth >= '1986-02-08' AND date_of_birth <= '1986-02-08' AND user_id >= 100");
$users = $db->loadObjectList();
/* 
print '<pre>';
	print_r( $users );
print '</pre>';
 */
if( count( $users ) > 0 ) {
	print '<div class="module-title bg-blef" style="margin-bottom: 5px;"><span>'. $module->title .'</span></div>';

	print '<div class="module'. $moduleclass_sfx .'">';
		
		print '<table class="table table-hover">';
			print '<caption>Желаем Вам добра и удачи, благополучия в доме, мирного неба, достатка, а также профессионализма высшей пробы!</caption>';
			print '<tbody>';
			foreach( $users AS $user ) {
				print '<tr>';
					print '<td>'. $user->surname .' '. $user->name .' '. $user->patronymic .'</td>';
				print '</tr>';
			}
			print '</tbody>';
		print '</table>';

	print '</div>';
}
helper.php
PHP
<?php
// No direct access
defined( '_JEXEC' ) or die;

/**
 * Class Module Helper
 * @author alvasdem
 */

class modPeoplesBirthdayHelper
{

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

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

require_once( dirname( __FILE__ ) . '/helper.php' );
// $data = modPeoplesBirthdayHelper::getData( $params );
$moduleclass_sfx = htmlspecialchars( $params->get( 'moduleclass_sfx' ) );
require( JModuleHelper::getLayoutPath( 'mod_peoples_birthday', $params->get( 'layout', 'default' ) ) );
mod_peoples_birthday.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_peoples_birthday">mod_peoples_birthday.php</filename>
        <filename>index.html</filename>
        <filename>helper.php</filename>
        <folder>tmpl</folder>
    </files>
    <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>