Spade
Mini Shell
| Directory:~$ /home/lmsyaran/public_html/joomla4/ |
| [Home] [System Details] [Kill Me] |
terms.xml000064400000002776151163075700006441 0ustar00<?xml
version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin"
group="user" method="upgrade">
<name>plg_user_terms</name>
<author>Joomla! Project</author>
<creationDate>June 2018</creationDate>
<copyright>(C) 2005 - 2020 Open Source Matters. All rights
reserved.</copyright>
<license>GNU General Public License version 2 or later; see
LICENSE.txt</license>
<authorEmail>admin@joomla.org</authorEmail>
<authorUrl>www.joomla.org</authorUrl>
<version>3.9.0</version>
<description>PLG_USER_TERMS_XML_DESCRIPTION</description>
<files>
<filename plugin="terms">terms.php</filename>
<folder>terms</folder>
<folder>field</folder>
</files>
<languages>
<language
tag="en-GB">en-GB.plg_user_terms.ini</language>
<language
tag="en-GB">en-GB.plg_user_terms.sys.ini</language>
</languages>
<config>
<fields name="params">
<fieldset name="basic"
addfieldpath="/administrator/components/com_content/models/fields">
<field
name="terms_note"
type="textarea"
label="PLG_USER_TERMS_NOTE_FIELD_LABEL"
description="PLG_USER_TERMS_NOTE_FIELD_DESC"
hint="PLG_USER_TERMS_NOTE_FIELD_DEFAULT"
class="span12"
rows="7"
cols="20"
filter="html"
/>
<field
name="terms_article"
type="modal_article"
label="PLG_USER_TERMS_FIELD_ARTICLE_LABEL"
description="PLG_USER_TERMS_FIELD_ARTICLE_DESC"
select="true"
new="true"
edit="true"
clear="true"
filter="integer"
/>
</fieldset>
</fields>
</config>
</extension>
field/terms.php000064400000006341151163263010007474 0ustar00<?php
/**
* @package Joomla.Plugin
* @subpackage User.terms
*
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
* @license GNU General Public License version 2 or later; see
LICENSE.txt
*/
defined('JPATH_PLATFORM') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\Form\FormHelper;
use Joomla\CMS\Language\Associations;
use Joomla\CMS\Language\Text;
FormHelper::loadFieldClass('radio');
/**
* Provides input for privacyterms
*
* @since 3.9.0
*/
class JFormFieldterms extends JFormFieldRadio
{
/**
* The form field type.
*
* @var string
* @since 3.9.0
*/
protected $type = 'terms';
/**
* Method to get the field input markup.
*
* @return string The field input markup.
*
* @since 3.9.0
*/
protected function getInput()
{
// Display the message before the field
echo
$this->getRenderer('plugins.user.terms.message')->render($this->getLayoutData());
return parent::getInput();
}
/**
* Method to get the field label markup.
*
* @return string The field label markup.
*
* @since 3.9.0
*/
protected function getLabel()
{
if ($this->hidden)
{
return '';
}
return
$this->getRenderer('plugins.user.terms.label')->render($this->getLayoutData());
}
/**
* Method to get the data to be passed to the layout for rendering.
*
* @return array
*
* @since 3.9.4
*/
protected function getLayoutData()
{
$data = parent::getLayoutData();
$article = false;
$termsArticle = $this->element['article'] > 0 ? (int)
$this->element['article'] : 0;
if ($termsArticle &&
Factory::getApplication()->isClient('site'))
{
$db = Factory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName(array('id', 'alias',
'catid', 'language')))
->from($db->quoteName('#__content'))
->where($db->quoteName('id') . ' = ' . (int)
$termsArticle);
$db->setQuery($query);
$article = $db->loadObject();
JLoader::register('ContentHelperRoute', JPATH_BASE .
'/components/com_content/helpers/route.php');
if (Associations::isEnabled())
{
$termsAssociated =
Associations::getAssociations('com_content',
'#__content', 'com_content.item', $termsArticle);
}
$currentLang = Factory::getLanguage()->getTag();
if (isset($termsAssociated) && $currentLang !==
$article->language && array_key_exists($currentLang,
$termsAssociated))
{
$article->link = ContentHelperRoute::getArticleRoute(
$termsAssociated[$currentLang]->id,
$termsAssociated[$currentLang]->catid,
$termsAssociated[$currentLang]->language
);
}
else
{
$slug = $article->alias ? ($article->id . ':' .
$article->alias) : $article->id;
$article->link = ContentHelperRoute::getArticleRoute($slug,
$article->catid, $article->language);
}
}
$extraData = array(
'termsnote' => !empty($this->element['note'])
? $this->element['note'] :
Text::_('PLG_USER_TERMS_NOTE_FIELD_DEFAULT'),
'options' => $this->getOptions(),
'value' => (string) $this->value,
'translateLabel' => $this->translateLabel,
'translateDescription' => $this->translateDescription,
'translateHint' => $this->translateHint,
'termsArticle' => $termsArticle,
'article' => $article,
);
return array_merge($data, $extraData);
}
}
terms/terms.xml000064400000000716151163263010007554 0ustar00<?xml
version="1.0" encoding="utf-8"?>
<form>
<fields name="terms">
<fieldset
name="terms"
label="PLG_USER_TERMS_LABEL"
>
<field
name="terms"
type="terms"
label="PLG_USER_TERMS_FIELD_LABEL"
description="PLG_USER_TERMS_FIELD_DESC"
default="0"
filter="integer"
required="true"
>
<option
value="1">PLG_USER_TERMS_OPTION_AGREE</option>
<option value="0">JNO</option>
</field>
</fieldset>
</fields>
</form>
terms.php000064400000011064151163263010006407 0ustar00<?php
/**
* @package Joomla.Plugin
* @subpackage User.terms
*
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
* @license GNU General Public License version 2 or later; see
LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\CMS\Form\Form;
use Joomla\CMS\Form\FormHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\MVC\Model\BaseDatabaseModel;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\Utilities\ArrayHelper;
/**
* An example custom terms and conditions plugin.
*
* @since 3.9.0
*/
class PlgUserTerms extends CMSPlugin
{
/**
* Load the language file on instantiation.
*
* @var boolean
* @since 3.9.0
*/
protected $autoloadLanguage = true;
/**
* Application object.
*
* @var JApplicationCms
* @since 3.9.0
*/
protected $app;
/**
* Database object.
*
* @var JDatabaseDriver
* @since 3.9.0
*/
protected $db;
/**
* Constructor
*
* @param object &$subject The object to observe
* @param array $config An array that holds the plugin
configuration
*
* @since 3.9.0
*/
public function __construct(&$subject, $config)
{
parent::__construct($subject, $config);
FormHelper::addFieldPath(__DIR__ . '/field');
}
/**
* Adds additional fields to the user registration form
*
* @param JForm $form The form to be altered.
* @param mixed $data The associated data for the form.
*
* @return boolean
*
* @since 3.9.0
*/
public function onContentPrepareForm($form, $data)
{
if (!($form instanceof JForm))
{
$this->_subject->setError('JERROR_NOT_A_FORM');
return false;
}
// Check we are manipulating a valid form - we only display this on user
registration form.
$name = $form->getName();
if (!in_array($name, array('com_users.registration')))
{
return true;
}
// Add the terms and conditions fields to the form.
Form::addFormPath(__DIR__ . '/terms');
$form->loadFile('terms');
$termsarticle = $this->params->get('terms_article');
$termsnote = $this->params->get('terms_note');
// Push the terms and conditions article ID into the terms field.
$form->setFieldAttribute('terms', 'article',
$termsarticle, 'terms');
$form->setFieldAttribute('terms', 'note',
$termsnote, 'terms');
}
/**
* Method is called before user data is stored in the database
*
* @param array $user Holds the old user data.
* @param boolean $isNew True if a new user is stored.
* @param array $data Holds the new user data.
*
* @return boolean
*
* @since 3.9.0
* @throws InvalidArgumentException on missing required data.
*/
public function onUserBeforeSave($user, $isNew, $data)
{
// // Only check for front-end user registration
if ($this->app->isClient('administrator'))
{
return true;
}
$userId = ArrayHelper::getValue($user, 'id', 0,
'int');
// User already registered, no need to check it further
if ($userId > 0)
{
return true;
}
// Check that the terms is checked if required ie only in registration
from frontend.
$option = $this->app->input->getCmd('option');
$task = $this->app->input->get->getCmd('task');
$form = $this->app->input->post->get('jform',
array(), 'array');
if ($option == 'com_users' && in_array($task,
array('registration.register')) &&
empty($form['terms']['terms']))
{
throw new
InvalidArgumentException(Text::_('PLG_USER_TERMS_FIELD_ERROR'));
}
return true;
}
/**
* Saves user profile data
*
* @param array $data entered user data
* @param boolean $isNew true if this is a new user
* @param boolean $result true if saving the user worked
* @param string $error error message
*
* @return boolean
*
* @since 3.9.0
*/
public function onUserAfterSave($data, $isNew, $result, $error)
{
if (!$isNew || !$result)
{
return true;
}
JLoader::register('ActionlogsModelActionlog',
JPATH_ADMINISTRATOR .
'/components/com_actionlogs/models/actionlog.php');
$userId = ArrayHelper::getValue($data, 'id', 0,
'int');
$message = array(
'action' => 'consent',
'id' => $userId,
'title' => $data['name'],
'itemlink' =>
'index.php?option=com_users&task=user.edit&id=' .
$userId,
'userid' => $userId,
'username' => $data['username'],
'accountlink' =>
'index.php?option=com_users&task=user.edit&id=' .
$userId,
);
/* @var ActionlogsModelActionlog $model */
$model = BaseDatabaseModel::getInstance('Actionlog',
'ActionlogsModel');
$model->addLog(array($message),
'PLG_USER_TERMS_LOGGING_CONSENT_TO_TERMS',
'plg_user_terms', $userId);
}
}