Файловый менеджер - Редактировать - /home/wuectly/www/03cbe/terms.zip
Назад
PK �]!]�*��� � terms.xmlnu &1i� <?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) 2018 Open Source Matters, Inc.</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> PK aa!]&�� � terms/terms.xmlnu &1i� <?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">PLG_USER_TERMS_OPTION_DO_NOT_AGREE</option> </field> </fieldset> </fields> </form> PK aa!]�+' ' terms.phpnu &1i� <?php /** * @package Joomla.Plugin * @subpackage User.terms * * @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org> * @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); } } PK aa!]�r � � field/terms.phpnu &1i� <?php /** * @package Joomla.Plugin * @subpackage User.terms * * @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org> * @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); } } PK �]!]�*��� � terms.xmlnu &1i� PK aa!]&�� � terms/terms.xmlnu &1i� PK aa!]�+' ' L terms.phpnu &1i� PK aa!]�r � � � field/terms.phpnu &1i� PK 0 �'