first commit

This commit is contained in:
2026-02-08 21:16:11 +01:00
commit e17b7026fd
8881 changed files with 1160453 additions and 0 deletions

View File

@@ -0,0 +1,287 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2020 Tassos Marinos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Plugin\PluginHelper;
class plgConvertFormsEmails extends JPlugin
{
/**
* Form Object
*
* @var object
*/
private $form;
/**
* Auto loads the plugin language file
*
* @var boolean
*/
protected $autoloadLanguage = true;
/**
* Add plugin fields to the form
*
* @param JForm $form
* @param object $data
*
* @return boolean
*/
public function onConvertFormsFormPrepareForm($form, $data)
{
$form->loadFile(__DIR__ . '/form/form.xml', false);
return true;
}
/**
* Event triggered during fieldset rendering in the form editing page in the backend.
*
* @param string $fieldset_name The name of the fieldset is going to be rendered
* @param string $fieldset The HTML output of the fieldset
*
* @return void
*/
public function onConvertFormsBackendFormPrepareFieldset($fieldset_name, &$fieldset)
{
if ($this->_name != $fieldset_name)
{
return;
}
// Proceed only if Mail Sending is disabled.
if ((bool) \JFactory::getConfig()->get('mailonline'))
{
return;
}
$warning = '
<div class="alert alert-error">
<span class="icon-warning"></span>' .
\JText::_('PLG_CONVERTFORMS_EMAILS_ERROR_MAIL_SENDING_DISABLED') . '
</div>';
$fieldset = $warning . $fieldset;
}
/**
* Create the final credentials with the auth code
*
* @param string $context The context of the content passed to the plugin (added in 1.6)
* @param object $article A JTableContent object
* @param bool $isNew If the content has just been created
*
* @return boolean
*/
public function onContentBeforeSave($context, $form, $isNew)
{
if ($context != 'com_convertforms.form')
{
return;
}
if (!is_object($form) || !isset($form->params))
{
return;
}
$params = json_decode($form->params);
if (!isset($params->emails))
{
return true;
}
// Proceed only if Send Notifications option is enabled
if ($params->sendnotifications != '1')
{
return true;
}
$this->form = clone $form;
$this->form->params = $params;
foreach ($params->emails as $key => $email)
{
$keyToID = ((int) str_replace('emails', '', $key)) + 1;
$error = JText::_('COM_CONVERTFORMS_EMAILS') . ' #' . $keyToID . ' - ';
$options = [
'recipient' => ['COM_CONVERTFORMS_EMAILS_RECIPIENT', true, true],
'subject' => ['COM_CONVERTFORMS_EMAILS_SUBJECT', false, true],
'from_name' => ['COM_CONVERTFORMS_EMAILS_FROM', false, true],
'from_email' => ['COM_CONVERTFORMS_EMAILS_FROM_EMAIL', true, true],
'reply_to' => ['COM_CONVERTFORMS_EMAILS_REPLY_TO', true, false],
'reply_to_name' => ['COM_CONVERTFORMS_EMAILS_REPLY_TO_NAME', false, false],
'body' => ['COM_CONVERTFORMS_EMAILS_BODY', false, true],
'attachments' => ['COM_CONVERTFORMS_EMAILS_ATTACHMENT', false, false]
];
foreach ($options as $key => $option)
{
$acceptsCommaSeparatedValues = $option[1];
$optionValues = $acceptsCommaSeparatedValues ? explode(',', $email->$key) : (array) $email->$key;
foreach ($optionValues as $optionValue)
{
$result = $this->validateOption($optionValue, $option[1], $option[2]);
if (is_string($result))
{
$form->setError($error . JText::_($option[0]) . ' - ' . $result);
return false;
break;
}
}
}
}
return true;
}
/**
* Validates string as an Email Notification option.
*
* @param string $string The option name as found in the xml file
* @param bool $validateAsEmail If enabled, the option should be validated as an Email Address
* @param bool $required If enabled, string should not be left blank
*
* @return void
*/
private function validateOption($string, $validateAsEmail = true, $required = true)
{
// Check if it's empty
if ($required && (empty($string) || is_null($string)))
{
return JText::sprintf('PLG_CONVERTFORMS_EMAILS_ERROR_BLANK', $string);
}
$string = trim($string);
// Check if has a valid field-based Smart Tag in the form: {field.field-name}
$pattern = "#\{field.([^{}]*)\}#s";
preg_match_all($pattern, $string, $result);
if (!empty($result[1]) && count($result[1]) > 0)
{
foreach ($result[1] as $key => $match)
{
// Keep only the actual field name
list($field_name, $options) = explode('--', $result[1][$key]) + ['', ''];
if (!$this->formHasField(trim($field_name)))
{
return JText::sprintf('PLG_CONVERTFORMS_EMAILS_ERROR_UNKNOWN_SMART_TAG', $result[0][$key]);
break;
}
}
return true;
}
// Check if has a valid Email Address info@mail.com
if ($validateAsEmail && !empty($string))
{
// Check common email-based Smart Tags
if (in_array($string, ['{user.email}', '{site.email}']))
{
return true;
}
if (!ConvertForms\Validate::email($string))
{
return JText::sprintf('PLG_CONVERTFORMS_EMAILS_ERROR_INVALID_EMAIL_ADDRESS', $string);
}
}
return true;
}
/**
* Check if given name exists as a form field
*
* @param string $name
*
* @return bool
*/
private function formHasField($name)
{
$name = strtolower($name);
foreach ($this->form->params->fields as $field)
{
if (!isset($field->name))
{
continue;
}
if (strtolower($field->name) == $name)
{
return true;
}
// In case a sub Smart Tag is being used. Eg: {field.dropdown.label} to get dropdown's selected text.
if (stripos($name, $field->name . '.') !== false)
{
return true;
}
}
return false;
}
/**
* Content is passed by reference, but after the save, so no changes will be saved.
*
* @param string $submission The submission information object
*
* @return void
*/
public function onConvertFormsSubmissionAfterSave($submission)
{
if (!isset($submission->form->sendnotifications) || !$submission->form->sendnotifications)
{
return;
}
if (!isset($submission->form->emails) || !is_array($submission->form->emails))
{
return;
}
$emailCloakEnabled = PluginHelper::isEnabled('content', 'emailcloak');
// Send email queue
foreach ($submission->form->emails as $key => $email)
{
// Disable cloaking of email addresses
if ($emailCloakEnabled)
{
$email['body'] .= '{emailcloak=off}';
}
// Trigger Content Plugins
$email['body'] = \JHtml::_('content.prepare', $email['body']);
// Replace {variables}
$email = ConvertForms\SmartTags::replace($email, $submission);
// Send mail
$mailer = new NRFramework\Email($email);
if (!$mailer->send())
{
throw new \Exception($mailer->error);
}
}
}
}

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.4.0" type="plugin" group="convertforms" method="upgrade">
<name>PLG_CONVERTFORMS_EMAILS</name>
<description>PLG_CONVERTFORMS_EMAILS_DESC</description>
<version>1.0</version>
<author>Tassos Marinos</author>
<authorEmail>info@tassos.gr</authorEmail>
<authorUrl>http://www.tassos.gr</authorUrl>
<copyright>Copyright (c)2011-2016 Tassos Marinos</copyright>
<license>GNU General Public License version 3, or later</license>
<creationDate>January 2017</creationDate>
<scriptfile>script.install.php</scriptfile>
<files>
<folder>language</folder>
<folder>form</folder>
<filename plugin="emails">emails.php</filename>
<filename>script.install.helper.php</filename>
</files>
</extension>

View File

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<form>
<fieldset>
<field name="recipient" type="text"
label="COM_CONVERTFORMS_EMAILS_RECIPIENT"
description="COM_CONVERTFORMS_EMAILS_RECIPIENT_DESC"
hint="COM_CONVERTFORMS_EMAILS_RECIPIENT"
class="show-smart-tags"
default="{site.email}"
required="true"
/>
<field name="subject" type="text"
label="COM_CONVERTFORMS_EMAILS_SUBJECT"
hint="COM_CONVERTFORMS_EMAILS_SUBJECT"
class="show-smart-tags"
default="New Submission #{submission.id}: Contact Form"
required="true"
/>
<field name="from_name" type="text"
label="COM_CONVERTFORMS_EMAILS_FROM"
hint="COM_CONVERTFORMS_EMAILS_FROM"
class="show-smart-tags"
default="{site.name}"
required="true"
/>
<field name="from_email" type="text"
label="COM_CONVERTFORMS_EMAILS_FROM_EMAIL"
hint="COM_CONVERTFORMS_EMAILS_FROM_EMAIL"
class="show-smart-tags"
default="{site.email}"
required="true"
/>
<field name="reply_to" type="text"
label="COM_CONVERTFORMS_EMAILS_REPLY_TO"
hint="COM_CONVERTFORMS_EMAILS_REPLY_TO"
class="show-smart-tags"
/>
<field name="reply_to_name" type="text"
label="COM_CONVERTFORMS_EMAILS_REPLY_TO_NAME"
hint="COM_CONVERTFORMS_EMAILS_REPLY_TO_NAME"
class="show-smart-tags"
/>
<field name="body" type="textarea"
label="COM_CONVERTFORMS_EMAILS_BODY"
class="editorx show-smart-tags"
filter="raw"
required="true"
default="{all_fields}"
/>
<field name="attachments" type="text"
label="COM_CONVERTFORMS_EMAILS_ATTACHMENT"
description="COM_CONVERTFORMS_EMAILS_ATTACHMENT_DESC"
hint="images/myattachment.pdf"
class="show-smart-tags"
/>
</fieldset>
</form>

View File

@@ -0,0 +1,47 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2020 Tassos Marinos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
defined('_JEXEC') or die('Restricted access');
JFormHelper::loadFieldClass('subform');
class JFormFieldCFSubform extends JFormFieldSubform
{
/**
* Method to get the field input markup.
*
* @return string The field input markup.
*
* @since 3.6
*/
protected function getInput()
{
// The following script toggles the required attribute for all Email Notification options.
JFactory::getDocument()->addScriptDeclaration('
jQuery(function($) {
$("input[name=\'jform[sendnotifications]\']").on("change", function() {
var enabled = $(this).is(":checked");
var exclude_fields = $("input[id*=reply_to], input[id$=attachments]");
var fields = $("#behavior-emails .subform-repeatable-group").find("input, textarea").not(exclude_fields);
if (enabled) {
fields.attr("required", "required").addClass("required");
} else {
fields.removeAttr("required").removeClass("required");
}
});
});
');
return parent::getInput();
}
}

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<form>
<fieldset name="emails" label="COM_CONVERTFORMS_EMAILS" tab="behavior" addfieldpath="plugins/convertforms/emails/form/fields">
<field name="emails-free-note" type="note"
class="alert alert-error"
description="COM_CONVERTFORMS_EMAILS_FREE_NOTE"
/>
<field name="sendnotifications" type="nrtoggle"
label="COM_CONVERTFORMS_EMAILS_DESC"
/>
<field name="emails" type="cfsubform"
formsource="/plugins/convertforms/emails/form/fields.xml"
hiddenLabel="true"
multiple="true"
buttons="false"
max="1"
showon="sendnotifications:1"
default='{ "emails0": {} }'
/>
</fieldset>
</form>

View File

@@ -0,0 +1,13 @@
; @package Convert Forms
; @version 3.2.12 Free
;
; @author Tassos Marinos - http://www.tassos.gr
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
; @license http://www.tassos.gr
PLG_CONVERTFORMS_EMAILS="Convert Forms имейл нотификации"
PLG_CONVERTFORMS_EMAILS_DESC="Изпращайте известия по имейл, когато потребителите изпратят формуляр."
PLG_CONVERTFORMS_EMAILS_ERROR_BLANK="Задължително поле"
PLG_CONVERTFORMS_EMAILS_ERROR_UNKNOWN_SMART_TAG="Неизвестен смарт таг: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_INVALID_EMAIL_ADDRESS="Невалиден имейл адрес: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_MAIL_SENDING_DISABLED="<b>Изпращането на поща е изключено!</b> <br>За да можете да изпращате имейли, опцията за изпращане на поща в глобалните настройките за поща на Joomla!, трябва да бъде активирана."

View File

@@ -0,0 +1,13 @@
; @package Convert Forms
; @version 3.2.12 Free
;
; @author Tassos Marinos - http://www.tassos.gr
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
; @license http://www.tassos.gr
PLG_CONVERTFORMS_EMAILS="Convert Forms - Notificacions per correu electrònic"
PLG_CONVERTFORMS_EMAILS_DESC="Envia notificacions per correu electrònic quan els usuaris responen a un formulari."
PLG_CONVERTFORMS_EMAILS_ERROR_BLANK="Camp requerit"
PLG_CONVERTFORMS_EMAILS_ERROR_UNKNOWN_SMART_TAG="Etiqueta intel·ligent desconeguda: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_INVALID_EMAIL_ADDRESS="Adreça de correu electrònic invàlida: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_MAIL_SENDING_DISABLED="<b>L'enviament de correus electrònics està desactivat!</b><br>Per poder enviar correus electrònics, la opció Enviar Correu electrònic dins la configuració Global de Joomla! ha d'estar activada."

View File

@@ -0,0 +1,13 @@
; @package Convert Forms
; @version 3.2.12 Free
;
; @author Tassos Marinos - http://www.tassos.gr
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
; @license http://www.tassos.gr
PLG_CONVERTFORMS_EMAILS="Convert Forms - E-mailová upozornění"
PLG_CONVERTFORMS_EMAILS_DESC="Poslat upozornění e-mailem, pokud uživatel odešle formulář"
PLG_CONVERTFORMS_EMAILS_ERROR_BLANK="Pole je povinné"
PLG_CONVERTFORMS_EMAILS_ERROR_UNKNOWN_SMART_TAG="Neznámý chytrý štítek: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_INVALID_EMAIL_ADDRESS="Nemplatný e-mailová adresa: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_MAIL_SENDING_DISABLED="<b>Odesílání e-mailů je vypnuté!</b><br>Pokud chcete odesílání e-mailů zprovoznit, musíte aktivovat volbu Odesílat e-maily, kterou najdete v sekci Nastavení mailu v Globálním nastavení Joomla!"

View File

@@ -0,0 +1,13 @@
; @package Convert Forms
; @version 3.2.12 Free
;
; @author Tassos Marinos - http://www.tassos.gr
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
; @license http://www.tassos.gr
PLG_CONVERTFORMS_EMAILS="Convert Forms - Email Benachrichtigung"
PLG_CONVERTFORMS_EMAILS_DESC="Email Benachrichtigung senden, wenn Benutzer ein Formular abschickt"
PLG_CONVERTFORMS_EMAILS_ERROR_BLANK="Feld ist erforderlich"
PLG_CONVERTFORMS_EMAILS_ERROR_UNKNOWN_SMART_TAG="Unbekanntes Smart Tag: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_INVALID_EMAIL_ADDRESS="Ungültige E-Mail-Adresse: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_MAIL_SENDING_DISABLED="<b> E-Mail-Versand ist deaktiviert! </b> <br> Um E-Mails versenden zu können, muss die Option E-Mail senden in den E-Mail-Einstellungen in der globalen Joomla! -Konfiguration aktiviert sein."

View File

@@ -0,0 +1,13 @@
; @package Convert Forms
; @version 3.2.12 Free
;
; @author Tassos Marinos - http://www.tassos.gr
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
; @license http://www.tassos.gr
PLG_CONVERTFORMS_EMAILS="Convert Forms - Ειδοποιήσεις ηλεκτρονικού ταχυδρομείου"
PLG_CONVERTFORMS_EMAILS_DESC="Στείλτε ειδοποιήσεις μέσω email όταν οι χρήστες αποστέλουν μια φόρμα."
PLG_CONVERTFORMS_EMAILS_ERROR_BLANK="Το πεδίο είναι υποχρεωτικό"
PLG_CONVERTFORMS_EMAILS_ERROR_UNKNOWN_SMART_TAG="Άγνωστη έξυπνη ετικέτα: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_INVALID_EMAIL_ADDRESS="Μη έγκυρη διεύθυνση e-mail: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_MAIL_SENDING_DISABLED="<b>Η αποστολή αλληλογραφίας είναι απενεργοποιημένη!</b><br>Για να μπορείτε να στέλνετε μηνύματα, η επιλογή Αποστολή αλληλογραφίας βρίσκεται στις Ρυθμίσεις αλληλογραφίας του Joomla! Η καθολική διαμόρφωση πρέπει να είναι ενεργοποιημένη.."

View File

@@ -0,0 +1,13 @@
; @package Convert Forms
; @version 3.2.12 Free
;
; @author Tassos Marinos - http://www.tassos.gr
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
; @license http://www.tassos.gr
PLG_CONVERTFORMS_EMAILS="Convert Forms - Email Notifications"
PLG_CONVERTFORMS_EMAILS_DESC="Send email notifications when users submit a form."
PLG_CONVERTFORMS_EMAILS_ERROR_BLANK="Field is required"
PLG_CONVERTFORMS_EMAILS_ERROR_UNKNOWN_SMART_TAG="Unknown Smart Tag: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_INVALID_EMAIL_ADDRESS="Invalid email address: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_MAIL_SENDING_DISABLED="<b>Mail sending is turned off!</b><br>In order to be able to send emails, the Send Mail option found under the Mail Settings in the Joomla! Global Configuration must be enabled."

View File

@@ -0,0 +1,9 @@
; @package Convert Forms
; @version 3.2.12 Free
;
; @author Tassos Marinos - http://www.tassos.gr
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
; @license http://www.tassos.gr
PLG_CONVERTFORMS_EMAILS="Convert Forms - Email Notifications"
PLG_CONVERTFORMS_EMAILS_DESC="Send email notifications when users submit a form."

View File

@@ -0,0 +1,13 @@
; @package Convert Forms
; @version 3.2.12 Free
;
; @author Tassos Marinos - http://www.tassos.gr
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
; @license http://www.tassos.gr
PLG_CONVERTFORMS_EMAILS="\"Formas de conversión\" - Notificaciones por email"
PLG_CONVERTFORMS_EMAILS_DESC="Envíe notificación por email cuando los usuarios envíen un formulario."
PLG_CONVERTFORMS_EMAILS_ERROR_BLANK="Campo requerido"
PLG_CONVERTFORMS_EMAILS_ERROR_UNKNOWN_SMART_TAG="Smart Tag desconocido «%s»"
PLG_CONVERTFORMS_EMAILS_ERROR_INVALID_EMAIL_ADDRESS="Email incorrecto «%s»"
PLG_CONVERTFORMS_EMAILS_ERROR_MAIL_SENDING_DISABLED="¡El envío de correo está desactivado! Para poder enviar correos electrónicos, la opción Enviar correo se encuentra en la Configuración de correo en Joomla! La configuración global debe estar habilitada."

View File

@@ -0,0 +1,13 @@
; @package Convert Forms
; @version 3.2.12 Free
;
; @author Tassos Marinos - http://www.tassos.gr
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
; @license http://www.tassos.gr
PLG_CONVERTFORMS_EMAILS="Convert Forms - E-mailide teated"
PLG_CONVERTFORMS_EMAILS_DESC="Saada e-maili teade kui kasutaja sisestab vormi."
PLG_CONVERTFORMS_EMAILS_ERROR_BLANK="Kohustuslik väli"
PLG_CONVERTFORMS_EMAILS_ERROR_UNKNOWN_SMART_TAG="Tundmatu nutikas-võtmesõna: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_INVALID_EMAIL_ADDRESS="Vigane e-maili aadress: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_MAIL_SENDING_DISABLED="<b>E-mailide saatmine on välja lülitatud!</b><br>Et e-maile saata, lülita Joomla üldistest seadetest see sisse."

View File

@@ -0,0 +1,13 @@
; @package Convert Forms
; @version 3.2.12 Free
;
; @author Tassos Marinos - http://www.tassos.gr
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
; @license http://www.tassos.gr
PLG_CONVERTFORMS_EMAILS="Convert Forms - Sähköposti-ilmoitukset"
PLG_CONVERTFORMS_EMAILS_DESC="Lähetä sähköposti-ilmoitus, kun käyttäjä lähettää lomakkeen."
PLG_CONVERTFORMS_EMAILS_ERROR_BLANK="Kenttä vaaditaan"
PLG_CONVERTFORMS_EMAILS_ERROR_UNKNOWN_SMART_TAG="Tuntematon Smart Tag: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_INVALID_EMAIL_ADDRESS="Virheellinen sähköpostiosoite: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_MAIL_SENDING_DISABLED="<b>Sähköpostien lähettäminen on kytketty pois päältä! </b><br>Jotta voisit lähettää sähköpostia, Joomlan globaalit sähköpostiasetukset on otettava käyttöön."

View File

@@ -0,0 +1,13 @@
; @package Convert Forms
; @version 3.2.12 Free
;
; @author Tassos Marinos - http://www.tassos.gr
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
; @license http://www.tassos.gr
PLG_CONVERTFORMS_EMAILS="Convertisseur de formulaires - Notifications par mail"
PLG_CONVERTFORMS_EMAILS_DESC="Envoyer une notification par mail aux utilisateurs complétant le formulaire."
PLG_CONVERTFORMS_EMAILS_ERROR_BLANK="Ce champ est requis"
PLG_CONVERTFORMS_EMAILS_ERROR_UNKNOWN_SMART_TAG="Smart tag inconnu : %s"
PLG_CONVERTFORMS_EMAILS_ERROR_INVALID_EMAIL_ADDRESS="Adresse de messagerie incorrecte : %s"
PLG_CONVERTFORMS_EMAILS_ERROR_MAIL_SENDING_DISABLED="<b>L'envoi de mails est désactivé !</b><br>Pour pouvoir les envoyer, vous devez activer l'option dans la Configuration générale de Joomla!"

View File

@@ -0,0 +1,13 @@
; @package Convert Forms
; @version 3.2.12 Free
;
; @author Tassos Marinos - http://www.tassos.gr
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
; @license http://www.tassos.gr
PLG_CONVERTFORMS_EMAILS="Convert Forms - Notifiche Email"
PLG_CONVERTFORMS_EMAILS_DESC="Invia una notifica via email quando un utente invia un modulo."
PLG_CONVERTFORMS_EMAILS_ERROR_BLANK="Campo richiesto"
PLG_CONVERTFORMS_EMAILS_ERROR_UNKNOWN_SMART_TAG="Smart Tag sconosciuta: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_INVALID_EMAIL_ADDRESS="Indirizzo eMail errato: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_MAIL_SENDING_DISABLED="<b>L'invio di email &egrave; disabilitato!</b>Per abilitare la funzione di invio email, l'ozpione Invia Email deve essere attivata nel pannello di controllo di Joomla, alla voce Configurazione Globale."

View File

@@ -0,0 +1,13 @@
; @package Convert Forms
; @version 3.2.12 Free
;
; @author Tassos Marinos - http://www.tassos.gr
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
; @license http://www.tassos.gr
PLG_CONVERTFORMS_EMAILS="Convert Forms - E-mail Notificaties"
PLG_CONVERTFORMS_EMAILS_DESC="Stuur e-mail notificaties als gebruikers een formulier inzenden."
PLG_CONVERTFORMS_EMAILS_ERROR_BLANK="Dit veld is vereist"
PLG_CONVERTFORMS_EMAILS_ERROR_UNKNOWN_SMART_TAG="Onbekende Smart Tag: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_INVALID_EMAIL_ADDRESS="Ongeldig e-mailadres: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_MAIL_SENDING_DISABLED="<b>Sturen van mail is uitgeschakeld!</b><br>Om e-mails te kunnen sturen moet de Send Mail optie in de Mail Instellingen in de Joomla! Global Configuration ingeschakeld zijn."

View File

@@ -0,0 +1,13 @@
; @package Convert Forms
; @version 3.2.12 Free
;
; @author Tassos Marinos - http://www.tassos.gr
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
; @license http://www.tassos.gr
PLG_CONVERTFORMS_EMAILS="Plugin Formulários de Conversão - Notificações de E-mail"
PLG_CONVERTFORMS_EMAILS_DESC="Envia notificações por e-mail quando os usuários enviarem um formulário."
PLG_CONVERTFORMS_EMAILS_ERROR_BLANK="Campo obrigatório"
PLG_CONVERTFORMS_EMAILS_ERROR_UNKNOWN_SMART_TAG="Smart Tag desconhecida: 1%s"
PLG_CONVERTFORMS_EMAILS_ERROR_INVALID_EMAIL_ADDRESS="Endereço de email inválido: 1%s"
; PLG_CONVERTFORMS_EMAILS_ERROR_MAIL_SENDING_DISABLED="<b>Mail sending is turned off!</b><br>In order to be able to send emails, the Send Mail option found under the Mail Settings in the Joomla! Global Configuration must be enabled."

View File

@@ -0,0 +1,13 @@
; @package Convert Forms
; @version 3.2.12 Free
;
; @author Tassos Marinos - http://www.tassos.gr
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
; @license http://www.tassos.gr
PLG_CONVERTFORMS_EMAILS="Преобразовать формы - Уведомление по электронной почте"
PLG_CONVERTFORMS_EMAILS_DESC="Отправить уведомление по электронной почте, когда пользователь отправляет форму"
PLG_CONVERTFORMS_EMAILS_ERROR_BLANK="Поле обязательно для заполнения"
PLG_CONVERTFORMS_EMAILS_ERROR_UNKNOWN_SMART_TAG="Неизвестный смарт-тег: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_INVALID_EMAIL_ADDRESS="Неверный адрес электронной почты: %s"
PLG_CONVERTFORMS_EMAILS_ERROR_MAIL_SENDING_DISABLED="<b> Отправка электронной почты деактивирована! </b> <br> Чтобы иметь возможность отправлять электронную почту, в настройках электронной почты в глобальной конфигурации Joomla! Должен быть установлен параметр Отправить электронную почту. быть активированным. "

View File

@@ -0,0 +1,13 @@
; @package Convert Forms
; @version 3.2.12 Free
;
; @author Tassos Marinos - http://www.tassos.gr
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
; @license http://www.tassos.gr
PLG_CONVERTFORMS_EMAILS="Konvertovať formuláre e-mailové upozornenia"
PLG_CONVERTFORMS_EMAILS_DESC="Odosielať e-mailové upozornenia, keď používatelia odoslali formulár."
PLG_CONVERTFORMS_EMAILS_ERROR_BLANK="Pole je povinné"
PLG_CONVERTFORMS_EMAILS_ERROR_UNKNOWN_SMART_TAG="Neznáma inteligentná značka:%s"
PLG_CONVERTFORMS_EMAILS_ERROR_INVALID_EMAIL_ADDRESS="Neplatná emailová adresa:%s"
PLG_CONVERTFORMS_EMAILS_ERROR_MAIL_SENDING_DISABLED="<b>Odosielanie pošty je vypnuté! </b><br>Aby ste mohli posielať e-maily, možnosť Odoslať poštu sa nachádza v nastaveniach pošty v Joomla! Musí byť povolená globálna konfigurácia."

View File

@@ -0,0 +1,13 @@
; @package Convert Forms
; @version 3.2.12 Free
;
; @author Tassos Marinos - http://www.tassos.gr
; @copyright Copyright (c) 2016 Tassos Marinos. All rights reserved.
; @license http://www.tassos.gr
PLG_CONVERTFORMS_EMAILS="Перетворити форми - повідомлення електронною поштою"
PLG_CONVERTFORMS_EMAILS_DESC="Надіслати сповіщення електронною поштою, коли користувач подає форму"
PLG_CONVERTFORMS_EMAILS_ERROR_BLANK="Поле обов'язкове"
PLG_CONVERTFORMS_EMAILS_ERROR_UNKNOWN_SMART_TAG="Невідомий смарт-тег: %s "
PLG_CONVERTFORMS_EMAILS_ERROR_INVALID_EMAIL_ADDRESS="Недійсна адреса електронної пошти: %s "
PLG_CONVERTFORMS_EMAILS_ERROR_MAIL_SENDING_DISABLED="<b> Електронна пошта вимкнена! </B> <br> Щоб мати змогу надсилати електронні листи, у глобальній конфігурації Joomla! Потрібно встановити параметр"_QQ_" Надіслати електронну пошту "_QQ_". бути активованим. "

View File

@@ -0,0 +1,637 @@
<?php
/**
* Installer Script Helper
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2016 Tassos Marinos All Rights Reserved
* @license http://www.gnu.org/licenses/gpl-3.0.html GNU/GPL
*/
defined('_JEXEC') or die;
jimport('joomla.filesystem.file');
jimport('joomla.filesystem.folder');
class PlgConvertformsEmailsInstallerScriptHelper
{
public $name = '';
public $alias = '';
public $extname = '';
public $extension_type = '';
public $plugin_folder = 'system';
public $module_position = 'status';
public $client_id = 1;
public $install_type = 'install';
public $show_message = true;
public $autopublish = true;
public $db = null;
public $app = null;
public $installedVersion;
public function __construct(&$params)
{
$this->extname = $this->extname ?: $this->alias;
$this->db = JFactory::getDbo();
$this->app = JFactory::getApplication();
$this->installedVersion = $this->getVersion($this->getInstalledXMLFile());
}
/**
* Preflight event
*
* @param string
* @param JAdapterInstance
*
* @return boolean
*/
public function preflight($route, $adapter)
{
if (!in_array($route, array('install', 'update')))
{
return;
}
JFactory::getLanguage()->load('plg_system_novaraininstaller', JPATH_PLUGINS . '/system/novaraininstaller');
if ($this->show_message && $this->isInstalled())
{
$this->install_type = 'update';
}
if ($this->onBeforeInstall() === false)
{
return false;
}
}
/**
* Preflight event
*
* @param string
* @param JAdapterInstance
*
* @return boolean
*/
public function postflight($route, $adapter)
{
JFactory::getLanguage()->load($this->getPrefix() . '_' . $this->extname, $this->getMainFolder());
if (!in_array($route, array('install', 'update')))
{
return;
}
if ($this->onAfterInstall() === false)
{
return false;
}
if ($route == 'install' && $this->autopublish)
{
$this->publishExtension();
}
if ($this->show_message)
{
$this->addInstalledMessage();
}
JFactory::getCache()->clean('com_plugins');
JFactory::getCache()->clean('_system');
}
public function isInstalled()
{
if (!is_file($this->getInstalledXMLFile()))
{
return false;
}
$query = $this->db->getQuery(true)
->select('extension_id')
->from('#__extensions')
->where($this->db->quoteName('type') . ' = ' . $this->db->quote($this->extension_type))
->where($this->db->quoteName('element') . ' = ' . $this->db->quote($this->getElementName()));
$this->db->setQuery($query, 0, 1);
$result = $this->db->loadResult();
return empty($result) ? false : true;
}
public function getMainFolder()
{
switch ($this->extension_type)
{
case 'plugin' :
return JPATH_SITE . '/plugins/' . $this->plugin_folder . '/' . $this->extname;
case 'component' :
return JPATH_ADMINISTRATOR . '/components/com_' . $this->extname;
case 'module' :
return JPATH_ADMINISTRATOR . '/modules/mod_' . $this->extname;
case 'library' :
return JPATH_SITE . '/libraries/' . $this->extname;
}
}
public function getInstalledXMLFile()
{
return $this->getXMLFile($this->getMainFolder());
}
public function getCurrentXMLFile()
{
return $this->getXMLFile(__DIR__);
}
public function getXMLFile($folder)
{
switch ($this->extension_type)
{
case 'module' :
return $folder . '/mod_' . $this->extname . '.xml';
default :
return $folder . '/' . $this->extname . '.xml';
}
}
public function foldersExist($folders = array())
{
foreach ($folders as $folder)
{
if (is_dir($folder))
{
return true;
}
}
return false;
}
public function publishExtension()
{
switch ($this->extension_type)
{
case 'plugin' :
$this->publishPlugin();
case 'module' :
$this->publishModule();
}
}
public function publishPlugin()
{
$query = $this->db->getQuery(true)
->update('#__extensions')
->set($this->db->quoteName('enabled') . ' = 1')
->where($this->db->quoteName('type') . ' = ' . $this->db->quote('plugin'))
->where($this->db->quoteName('element') . ' = ' . $this->db->quote($this->extname))
->where($this->db->quoteName('folder') . ' = ' . $this->db->quote($this->plugin_folder));
$this->db->setQuery($query);
$this->db->execute();
}
public function publishModule()
{
// Get module id
$query = $this->db->getQuery(true)
->select('id')
->from('#__modules')
->where($this->db->quoteName('module') . ' = ' . $this->db->quote('mod_' . $this->extname))
->where($this->db->quoteName('client_id') . ' = ' . (int) $this->client_id);
$this->db->setQuery($query, 0, 1);
$id = $this->db->loadResult();
if (!$id)
{
return;
}
// check if module is already in the modules_menu table (meaning is is already saved)
$query->clear()
->select('moduleid')
->from('#__modules_menu')
->where($this->db->quoteName('moduleid') . ' = ' . (int) $id);
$this->db->setQuery($query, 0, 1);
$exists = $this->db->loadResult();
if ($exists)
{
return;
}
// Get highest ordering number in position
$query->clear()
->select('ordering')
->from('#__modules')
->where($this->db->quoteName('position') . ' = ' . $this->db->quote($this->module_position))
->where($this->db->quoteName('client_id') . ' = ' . (int) $this->client_id)
->order('ordering DESC');
$this->db->setQuery($query, 0, 1);
$ordering = $this->db->loadResult();
$ordering++;
// publish module and set ordering number
$query->clear()
->update('#__modules')
->set($this->db->quoteName('published') . ' = 1')
->set($this->db->quoteName('ordering') . ' = ' . (int) $ordering)
->set($this->db->quoteName('position') . ' = ' . $this->db->quote($this->module_position))
->where($this->db->quoteName('id') . ' = ' . (int) $id);
$this->db->setQuery($query);
$this->db->execute();
// add module to the modules_menu table
$query->clear()
->insert('#__modules_menu')
->columns(array($this->db->quoteName('moduleid'), $this->db->quoteName('menuid')))
->values((int) $id . ', 0');
$this->db->setQuery($query);
$this->db->execute();
}
public function addInstalledMessage()
{
JFactory::getApplication()->enqueueMessage(
JText::sprintf(
JText::_($this->install_type == 'update' ? 'NRI_THE_EXTENSION_HAS_BEEN_UPDATED_SUCCESSFULLY' : 'NRI_THE_EXTENSION_HAS_BEEN_INSTALLED_SUCCESSFULLY'),
'<strong>' . JText::_($this->name) . '</strong>',
'<strong>' . $this->getVersion() . '</strong>',
$this->getFullType()
)
);
}
public function getPrefix()
{
switch ($this->extension_type)
{
case 'plugin';
return JText::_('plg_' . strtolower($this->plugin_folder));
case 'component':
return JText::_('com');
case 'module':
return JText::_('mod');
case 'library':
return JText::_('lib');
default:
return $this->extension_type;
}
}
public function getElementName($type = null, $extname = null)
{
$type = is_null($type) ? $this->extension_type : $type;
$extname = is_null($extname) ? $this->extname : $extname;
switch ($type)
{
case 'component' :
return 'com_' . $extname;
case 'module' :
return 'mod_' . $extname;
case 'plugin' :
default:
return $extname;
}
}
public function getFullType()
{
return JText::_('NRI_' . strtoupper($this->getPrefix()));
}
public function isPro()
{
$versionFile = __DIR__ . "/version.php";
// If version file does not exist we assume a PRO version
if (!JFile::exists($versionFile))
{
return true;
}
// Load version file
require_once $versionFile;
return (bool) $NR_PRO;
}
public function getVersion($file = '')
{
$file = $file ?: $this->getCurrentXMLFile();
if (!is_file($file))
{
return '';
}
$xml = JInstaller::parseXMLInstallFile($file);
if (!$xml || !isset($xml['version']))
{
return '';
}
return $xml['version'];
}
/**
* Checks wether the extension can be installed or not
*
* @return boolean
*/
public function canInstall()
{
// The extension is not installed yet. Accept Install.
if (!$installed_version = $this->getVersion($this->getInstalledXMLFile()))
{
return true;
}
// Path to extension's version file
$versionFile = $this->getMainFolder() . "/version.php";
$NR_PRO = true;
// If version file does not exist we assume we have a PRO version installed
if (file_exists($versionFile))
{
require_once($versionFile);
}
// The free version is installed. Accept install.
if (!(bool)$NR_PRO)
{
return true;
}
// Current package is a PRO version. Accept install.
if ($this->isPro())
{
return true;
}
// User is trying to update from PRO version to FREE. Do not accept install.
JFactory::getLanguage()->load($this->getPrefix() . '_' . $this->extname, __DIR__);
JFactory::getApplication()->enqueueMessage(
JText::_('NRI_ERROR_PRO_TO_FREE'), 'error'
);
JFactory::getApplication()->enqueueMessage(
html_entity_decode(
JText::sprintf(
'NRI_ERROR_UNINSTALL_FIRST',
'<a href="http://www.tassos.gr/joomla-extensions/' . $this->alias . '" target="_blank">',
'</a>',
JText::_($this->name)
)
), 'error'
);
return false;
}
/**
* Checks if current version is newer than the installed one
* Used for Novarain Framework
*
* @return boolean [description]
*/
public function isNewer()
{
if (!$installed_version = $this->getVersion($this->getInstalledXMLFile()))
{
return true;
}
$package_version = $this->getVersion();
return version_compare($installed_version, $package_version, '<=');
}
/**
* Helper method triggered before installation
*
* @return bool
*/
public function onBeforeInstall()
{
if (!$this->canInstall())
{
return false;
}
}
/**
* Helper method triggered after installation
*/
public function onAfterInstall()
{
}
/**
* Delete files
*
* @param array $folders
*/
public function deleteFiles($files = array())
{
foreach ($files as $key => $file)
{
JFile::delete($file);
}
}
/**
* Deletes folders
*
* @param array $folders
*/
public function deleteFolders($folders = array())
{
foreach ($folders as $folder)
{
if (!is_dir($folder))
{
continue;
}
JFolder::delete($folder);
}
}
public function dropIndex($table, $index)
{
$db = $this->db;
// Check if index exists first
$query = 'SHOW INDEX FROM ' . $db->quoteName('#__' . $table) . ' WHERE KEY_NAME = ' . $db->quote($index);
$db->setQuery($query);
$db->execute();
if (!$db->loadResult())
{
return;
}
// Remove index
$query = 'ALTER TABLE ' . $db->quoteName('#__' . $table) . ' DROP INDEX ' . $db->quoteName($index);
$db->setQuery($query);
$db->execute();
}
public function dropUnwantedTables($tables) {
if (!$tables) {
return;
}
foreach ($tables as $table) {
$query = "DROP TABLE IF EXISTS #__".$this->db->escape($table);
$this->db->setQuery($query);
$this->db->execute();
}
}
public function dropUnwantedColumns($table, $columns) {
if (!$columns || !$table) {
return;
}
$db = $this->db;
// Check if columns exists in database
function qt($n) {
return(JFactory::getDBO()->quote($n));
}
$query = 'SHOW COLUMNS FROM #__'.$table.' WHERE Field IN ('.implode(",", array_map("qt", $columns)).')';
$db->setQuery($query);
$rows = $db->loadColumn(0);
// Abort if we don't have any rows
if (!$rows) {
return;
}
// Let's remove the columns
$q = "";
foreach ($rows as $key => $column) {
$comma = (($key+1) < count($rows)) ? "," : "";
$q .= "drop ".$this->db->escape($column).$comma;
}
$query = "alter table #__".$table." $q";
$db->setQuery($query);
$db->execute();
}
public function fetch($table, $columns = "*", $where = null, $singlerow = false) {
if (!$table) {
return;
}
$db = $this->db;
$query = $db->getQuery(true);
$query
->select($columns)
->from("#__$table");
if (isset($where)) {
$query->where("$where");
}
$db->setQuery($query);
return ($singlerow) ? $db->loadObject() : $db->loadObjectList();
}
/**
* Load the Novarain Framework
*
* @return boolean
*/
public function loadFramework()
{
if (is_file(JPATH_PLUGINS . '/system/nrframework/autoload.php'))
{
include_once JPATH_PLUGINS . '/system/nrframework/autoload.php';
}
}
/**
* Re-orders plugin after passed array of plugins
*
* @param string $plugin Plugin element name
* @param array $lowerPluginOrder Array of plugin element names
*
* @return boolean
*/
public function pluginOrderAfter($lowerPluginOrder)
{
if (!is_array($lowerPluginOrder) || !count($lowerPluginOrder))
{
return;
}
$db = $this->db;
// Get plugins max order
$query = $db->getQuery(true);
$query
->select($db->quoteName('b.ordering'))
->from($db->quoteName('#__extensions', 'b'))
->where($db->quoteName('b.element') . ' IN ("'.implode("\",\"",$lowerPluginOrder).'")')
->order('b.ordering desc');
$db->setQuery($query);
$maxOrder = $db->loadResult();
if (is_null($maxOrder))
{
return;
}
// Get plugin details
$query
->clear()
->select(array($db->quoteName('extension_id'), $db->quoteName('ordering')))
->from($db->quoteName('#__extensions'))
->where($db->quoteName('element') . ' = ' . $db->quote($this->alias));
$db->setQuery($query);
$pluginInfo = $db->loadObject();
if (!isset($pluginInfo->ordering) || $pluginInfo->ordering > $maxOrder)
{
return;
}
// Update the new plugin order
$object = new stdClass();
$object->extension_id = $pluginInfo->extension_id;
$object->ordering = ($maxOrder + 1);
try {
$db->updateObject('#__extensions', $object, 'extension_id');
} catch (Exception $e) {
return $e->getMessage();
}
}
}

View File

@@ -0,0 +1,24 @@
<?php
/**
* @package Convert Forms
* @version 3.2.12 Free
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2020 Tassos Marinos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
defined('_JEXEC') or die('Restricted access');
require_once __DIR__ . '/script.install.helper.php';
class PlgConvertFormsEmailsInstallerScript extends PlgConvertFormsEmailsInstallerScriptHelper
{
public $name = 'PLG_CONVERTFORMS_EMAILS';
public $alias = 'emails';
public $extension_type = 'plugin';
public $plugin_folder = "convertforms";
public $show_message = false;
}