www_archline_hu/cadline/modules/modules/mod_webinar/helper.php
LÁZÁR Imre AI Agent 6a4b40b670 feat(cadline): add Cadline-own modules
11 Cadline-only modules (mod_al_*, mod_alusers, mod_alworkshops, mod_course_list, mod_webinar*, mod_wsregister). Dropped webshells excluded (mod_al_upload/b8.php, mod_course_list/a1.php); legit module bases kept.

Signed-off-by: LÁZÁR Imre <imre@illusion.hu>
Assisted-by: claude-code@claude-opus-4-8
2026-07-16 11:34:30 +02:00

233 lines
6.3 KiB
PHP

<?php
defined('_JEXEC') or die;
jimport('joomla.user.helper');
class ModWebinarHelper
{
public static function getWebinar($id)
{
if (!is_numeric($id))
return false;
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select(array('c.*'));
$query->from($db->quoteName('www_archline_hu.alworkshops_courses', 'c'));
$query->where($db->quoteName('c.id') . ' = ' . $db->quote($id));
// Reset the query using our newly populated query object.
$db->setQuery($query);
// Load the results as a list of stdClass objects (see later for more options on retrieving data).
$result = $db->loadObject();
if ($result->yt_link != '')
$result->ytID = substr($result->yt_link, strrpos($result->yt_link, '/') + 1);
$start_date = new DateTime($result->start_date . ' ' . $result->start_time);
$since_start = $start_date->diff(new DateTime($result->finish_date . ' ' . $result->finish_time));
$result->period = $since_start->i;
return $result;
}
public static function changeDateFormat($date)
{
$date = new DateTime($date);
return $date->format('M d, Y g:i A');
}
public function createApplication($course_id, $name, $email, $user_id)
{
$db = JFactory::getDbo();
$application = new stdClass();
$application->course_id = $course_id;
$application->user_id = $user_id;
$application->attendees = 1;
$application->price_per_attendee = 0;
$application->price_total = 0;
$application->price_vat = 0;
$application->gepet_kerek = 'N';
$application->berletem_van = 'N';
$application->date = date('Y-m-d H:i:s', time());
$application->transaction_id = '';
$application->wsdatetime = NULL;
$application->name = $name;
$application->email = $email;
$db->insertObject('www_archline_hu.alworkshops_application', $application);
}
public static function getCrmUser($nUserID)
{
$db = JFactory::getDbo();
$query = "SELECT * FROM cl_hlusers.users
WHERE nUserID = {$nUserID}";
$db->setQuery($query);
return $db->loadObject();
}
public function getUserID($name, $email, $prof, $cntry)
{
$db = JFactory::getDbo();
$query = "SELECT * FROM cl_hlusers.u_emails
WHERE email = '{$email}'";
$db->setQuery($query);
$exist = $db->loadObject();
if (!$exist) {
if ($name > '' && $email > '') {
$user = new stdClass();
$user->strName = $name;
$user->strEmail = $email;
$user->nUserProf = $prof;
$user->nCtrID = $cntry;
$user->dateInsert = time();
$user->old_db = 'clusers_eng';
$db->insertObject('cl_hlusers.users', $user);
$nUserID = $db->insertid();
$u_email = new stdClass();
$u_email->email = $email;
$u_email->nUserID = $nUserID;
$u_email->default = 1;
$u_email->active = 1;
$u_email->deleted = 0;
$u_email->newsletter = 1;
$db->insertObject('cl_hlusers.u_emails', $u_email);
}
} else {
$nUserID = $exist->nUserID;
}
return $nUserID;
}
public static function getEmailTemplate($email_template)
{
$db = JFactory::getDbo();
$table = JFactory::getLanguage()->getTag() == 'hu-HU' ? 'jml_content' : 'eng_content';
$query = "SELECT * FROM www_archline_hu.{$table}
WHERE id = {$email_template}";
$db->setQuery($query);
return $db->loadObject();
}
public static function sendEmail($course, $name, $email)
{
require_once($_SERVER['DOCUMENT_ROOT'] . '/maintenance/libraries/phpmailer/PHPMailerAutoload.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/maintenance/config.mail.php');
$template = self::getEmailTemplate($course->email_template);
$body = $template->introtext . $template->fulltext;
$title = $template->title;
$replacements = array(
'{NAME}' => $name,
'{TITLE}' => $course->title,
'{START_DATE}' => $course->start_date,
'{START_TIME}' => $course->start_time,
'{FINISH_DATE}' => $course->finish_date,
'{FINISH_TIME}' => $course->finish_time,
'{LOCATION}' => $course->location,
'{ATTENDEES}' => 0,
'{PRICE}' => $course->price,
'{PRICE_TOTAL}' => 0,
'{VAT}' => $course->vat
);
foreach ($replacements as $key => $value) {
$body = str_replace($key, $value, $body);
}
$mail = new PHPMailer;
$mail->isSMTP();
$mail->CharSet = 'UTF-8';
$mail->Host = $mailconfig['Host'];
$mail->SMTPAuth = true;
$mail->Username = $mailconfig['Username'];
$mail->Password = $mailconfig['Password'];
$mail->SMTPSecure = $mailconfig['SMTPSecure'];
$mail->Port = $mailconfig['Port'];
$mail->Subject = $title;
$mail->AltBody = strip_tags($body);
$mail->isHTML(TRUE);
$mail->setFrom($mailconfig['from_hu']);
$mail->addAddress($email);
//$mail->addBCC('marketing@cadline.hu');
$mail->msgHTML($body);
if ($mail->send()) {
unset($mail);
return true;
} else {
return false;
}
}
public static function registration($data)
{
$db = JFactory::getDbo();
$name = $data['question_name'];
$email = $data['question_email_address'];
$cntry = $data['question_country'];
$prof = $data['question_prof'];
$c_id = $data['course_id'];
$nUserID = self::getUserID($name, $email, $prof, $cntry);
$query = "SELECT * FROM www_archline_hu.alworkshops_application
WHERE course_id = {$c_id} AND email = '{$email}' AND published = 'Y'";
$db->setQuery($query);
$exist = $db->loadObject();
if (empty($exist)) {
$course = self::getWebinar($c_id);
$history = new stdClass();
$user = JFactory::getUser();
$history->nUserID = $nUserID;
$history->nTopicID = JFactory::getLanguage()->getTag() == 'hu-HU' ? 336 : 333;
$history->dateEvent = $course->start_date;
$history->strPlace = $course->title;
$history->strInfo = $course->course_name;
$history->nManagerID = 36;
$history->insertDate = date('Y-m-d H:i:s', time());
$db->insertObject('cl_hlusers.u_history', $history);
self::createApplication($c_id, $name, $email, $user->id);
$sendEmail = self::sendEmail($course, $name, $email);
JFactory::getApplication()->enqueueMessage(JText::_('MOD_WEBINAR_SUCCESS_REGISTRATION'));
} else {
JFactory::getApplication()->enqueueMessage(JText::_('MOD_WEBINAR_ALREADY_SIGNED_UP'), 'warning');
}
}
}