uawdijnntqw1x1x1
IP : 216.73.217.59
Hostname : webm003.cluster107.gra.hosting.ovh.net
Kernel : Linux webm003.cluster107.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
OS : Linux
PATH:
/
home
/
opticamezl
/
www
/
newok
/
tmp
/
..
/
cli
/
..
/
plugins
/
..
/
tmp
/
..
/
api
/
..
/
.
/
cli
/
..
/
templates
/
..
/
profile.tar
/
/
forms/profile.xml000064400000004101151721417530010056 0ustar00<?xml version="1.0" encoding="UTF-8"?> <form> <fields name="profile"> <fieldset name="profile" label="PLG_USER_PROFILE_SLIDER_LABEL" > <field name="address1" type="text" label="PLG_USER_PROFILE_FIELD_ADDRESS1_LABEL" filter="string" size="30" /> <field name="address2" type="text" label="PLG_USER_PROFILE_FIELD_ADDRESS2_LABEL" filter="string" size="30" /> <field name="city" type="text" label="PLG_USER_PROFILE_FIELD_CITY_LABEL" filter="string" size="30" /> <field name="region" type="text" label="PLG_USER_PROFILE_FIELD_REGION_LABEL" filter="string" size="30" /> <field name="country" type="text" label="PLG_USER_PROFILE_FIELD_COUNTRY_LABEL" filter="string" size="30" /> <field name="postal_code" type="text" label="PLG_USER_PROFILE_FIELD_POSTAL_CODE_LABEL" filter="string" size="30" /> <field name="phone" type="tel" label="PLG_USER_PROFILE_FIELD_PHONE_LABEL" filter="string" size="30" /> <field name="website" type="url" label="PLG_USER_PROFILE_FIELD_WEB_SITE_LABEL" filter="url" size="30" validate="url" /> <field name="favoritebook" type="text" label="PLG_USER_PROFILE_FIELD_FAVORITE_BOOK_LABEL" filter="string" size="30" /> <field name="aboutme" type="textarea" label="PLG_USER_PROFILE_FIELD_ABOUT_ME_LABEL" cols="30" rows="5" filter="safehtml" /> <field name="dob" type="calendar" label="PLG_USER_PROFILE_FIELD_DOB_LABEL" description="PLG_USER_PROFILE_FIELD_DOB_DESCRIPTION" hint="PLG_USER_PROFILE_FIELD_DOB_HINT" translateformat="true" showtime="false" filter="server_utc" /> <field name="tos" type="tos" label="PLG_USER_PROFILE_FIELD_TOS_LABEL" default="0" filter="integer" > <option value="1">PLG_USER_PROFILE_OPTION_AGREE</option> <option value="0">PLG_USER_PROFILE_OPTION_DO_NOT_AGREE</option> </field> </fieldset> </fields> </form> src/Field/TosField.php000064400000011755151721417530010617 0ustar00<?php /** * @package Joomla.Plugin * @subpackage User.profile * * @copyright (C) 2012 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Plugin\User\Profile\Field; use Joomla\CMS\Factory; use Joomla\CMS\Form\Field\RadioField; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Associations; use Joomla\CMS\Language\Text; use Joomla\CMS\Router\Route; use Joomla\Component\Content\Site\Helper\RouteHelper; use Joomla\Database\ParameterType; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Provides input for TOS * * @since 2.5.5 */ class TosField extends RadioField { /** * The form field type. * * @var string * @since 2.5.5 */ protected $type = 'Tos'; /** * Method to get the field label markup. * * @return string The field label markup. * * @since 2.5.5 */ protected function getLabel() { $label = ''; if ($this->hidden) { return $label; } // Get the label text from the XML element, defaulting to the element name. $text = $this->element['label'] ? (string) $this->element['label'] : (string) $this->element['name']; $text = $this->translateLabel ? Text::_($text) : $text; // Set required to true as this field is not displayed at all if not required. $this->required = true; // Build the class for the label. $class = !empty($this->description) ? 'hasPopover' : ''; $class = $class . ' required'; $class = !empty($this->labelClass) ? $class . ' ' . $this->labelClass : $class; // Add the opening label tag and main attributes attributes. $label .= '<label id="' . $this->id . '-lbl" for="' . $this->id . '" class="' . $class . '"'; // If a description is specified, use it to build a tooltip. if (!empty($this->description)) { HTMLHelper::_('bootstrap.popover', '.hasPopover'); $label .= ' data-bs-content="' . htmlspecialchars( $this->translateDescription ? Text::_($this->description) : $this->description, ENT_COMPAT, 'UTF-8' ) . '"'; if (Factory::getLanguage()->isRtl()) { $label .= ' data-bs-placement="left"'; } } $tosArticle = $this->element['article'] > 0 ? (int) $this->element['article'] : 0; if ($tosArticle) { $attribs = []; $attribs['data-bs-toggle'] = 'modal'; $attribs['data-bs-target'] = '#tosModal'; $db = $this->getDatabase(); $query = $db->getQuery(true); $query->select($db->quoteName(['id', 'alias', 'catid', 'language'])) ->from($db->quoteName('#__content')) ->where($db->quoteName('id') . ' = :id') ->bind(':id', $tosArticle, ParameterType::INTEGER); $db->setQuery($query); $article = $db->loadObject(); if (Associations::isEnabled()) { $tosAssociated = Associations::getAssociations('com_content', '#__content', 'com_content.item', $tosArticle); } $currentLang = Factory::getLanguage()->getTag(); if (isset($tosAssociated) && $currentLang !== $article->language && \array_key_exists($currentLang, $tosAssociated)) { $url = RouteHelper::getArticleRoute( $tosAssociated[$currentLang]->id, $tosAssociated[$currentLang]->catid, $tosAssociated[$currentLang]->language ); $link = HTMLHelper::_('link', Route::_($url . '&tmpl=component'), $text, $attribs); } else { $slug = $article->alias ? ($article->id . ':' . $article->alias) : $article->id; $url = RouteHelper::getArticleRoute($slug, $article->catid, $article->language); $link = HTMLHelper::_('link', Route::_($url . '&tmpl=component'), $text, $attribs); } echo HTMLHelper::_( 'bootstrap.renderModal', 'tosModal', [ 'url' => Route::_($url . '&tmpl=component'), 'title' => $text, 'height' => '100%', 'width' => '100%', 'modalWidth' => '800', 'bodyHeight' => '500', 'footer' => '<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" aria-hidden="true">' . Text::_('JLIB_HTML_BEHAVIOR_CLOSE') . '</button>', ] ); } else { $link = $text; } // Add the label text and closing tag. $label .= '>' . $link . '<span class="star" aria-hidden="true"> *</span></label>'; return $label; } } src/Extension/Profile.php000064400000034732151721417530011437 0ustar00<?php /** * @package Joomla.Plugin * @subpackage User.profile * * @copyright (C) 2009 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Plugin\User\Profile\Extension; use Exception; use Joomla\CMS\Date\Date; use Joomla\CMS\Form\Form; use Joomla\CMS\Form\FormHelper; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\String\PunycodeHelper; use Joomla\Database\DatabaseAwareTrait; use Joomla\Database\ParameterType; use Joomla\Utilities\ArrayHelper; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * An example custom profile plugin. * * @since 1.6 */ final class Profile extends CMSPlugin { use DatabaseAwareTrait; /** * Load the language file on instantiation. * * @var boolean * * @since 3.1 */ protected $autoloadLanguage = true; /** * Date of birth. * * @var string * * @since 3.1 */ private $date = ''; /** * Runs on content preparation * * @param string $context The context for the data * @param object $data An object containing the data for the form. * * @return boolean * * @since 1.6 */ public function onContentPrepareData($context, $data) { // Check we are manipulating a valid form. if (!in_array($context, ['com_users.profile', 'com_users.user', 'com_users.registration'])) { return true; } if (is_object($data)) { $userId = $data->id ?? 0; if (!isset($data->profile) && $userId > 0) { // Load the profile data from the database. $db = $this->getDatabase(); $query = $db->getQuery(true) ->select( [ $db->quoteName('profile_key'), $db->quoteName('profile_value'), ] ) ->from($db->quoteName('#__user_profiles')) ->where($db->quoteName('user_id') . ' = :userid') ->where($db->quoteName('profile_key') . ' LIKE ' . $db->quote('profile.%')) ->order($db->quoteName('ordering')) ->bind(':userid', $userId, ParameterType::INTEGER); $db->setQuery($query); $results = $db->loadRowList(); // Merge the profile data. $data->profile = []; foreach ($results as $v) { $k = str_replace('profile.', '', $v[0]); $data->profile[$k] = json_decode($v[1], true); if ($data->profile[$k] === null) { $data->profile[$k] = $v[1]; } } } if (!HTMLHelper::isRegistered('users.url')) { HTMLHelper::register('users.url', [__CLASS__, 'url']); } if (!HTMLHelper::isRegistered('users.calendar')) { HTMLHelper::register('users.calendar', [__CLASS__, 'calendar']); } if (!HTMLHelper::isRegistered('users.tos')) { HTMLHelper::register('users.tos', [__CLASS__, 'tos']); } if (!HTMLHelper::isRegistered('users.dob')) { HTMLHelper::register('users.dob', [__CLASS__, 'dob']); } } return true; } /** * Returns an anchor tag generated from a given value * * @param string $value URL to use * * @return mixed|string */ public static function url($value) { if (empty($value)) { return HTMLHelper::_('users.value', $value); } else { // Convert website URL to utf8 for display $value = htmlspecialchars(PunycodeHelper::urlToUTF8($value), ENT_QUOTES, 'UTF-8'); if (strpos($value, 'http') === 0) { return '<a href="' . $value . '">' . $value . '</a>'; } else { return '<a href="http://' . $value . '">' . $value . '</a>'; } } } /** * Returns html markup showing a date picker * * @param string $value valid date string * * @return mixed */ public static function calendar($value) { if (empty($value)) { return HTMLHelper::_('users.value', $value); } else { return HTMLHelper::_('date', $value, null, null); } } /** * Returns the date of birth formatted and calculated using server timezone. * * @param string $value valid date string * * @return mixed */ public static function dob($value) { if (!$value) { return ''; } return HTMLHelper::_('date', $value, Text::_('DATE_FORMAT_LC1'), false); } /** * Return the translated strings yes or no depending on the value * * @param boolean $value input value * * @return string */ public static function tos($value) { if ($value) { return Text::_('JYES'); } else { return Text::_('JNO'); } } /** * Adds additional fields to the user editing form * * @param Form $form The form to be altered. * @param mixed $data The associated data for the form. * * @return boolean * * @since 1.6 */ public function onContentPrepareForm(Form $form, $data) { // Check we are manipulating a valid form. $name = $form->getName(); if (!in_array($name, ['com_users.user', 'com_users.profile', 'com_users.registration'])) { return true; } // Add the registration fields to the form. FormHelper::addFieldPrefix('Joomla\\Plugin\\User\\Profile\\Field'); FormHelper::addFormPath(JPATH_PLUGINS . '/' . $this->_type . '/' . $this->_name . '/forms'); $form->loadFile('profile'); $fields = [ 'address1', 'address2', 'city', 'region', 'country', 'postal_code', 'phone', 'website', 'favoritebook', 'aboutme', 'dob', 'tos', ]; $tosArticle = $this->params->get('register_tos_article'); $tosEnabled = $this->params->get('register-require_tos', 0); // We need to be in the registration form and field needs to be enabled if ($name !== 'com_users.registration' || !$tosEnabled) { // We only want the TOS in the registration form $form->removeField('tos', 'profile'); } else { // Push the TOS article ID into the TOS field. $form->setFieldAttribute('tos', 'article', $tosArticle, 'profile'); } foreach ($fields as $field) { // Case using the users manager in admin if ($name === 'com_users.user') { // Toggle whether the field is required. if ($this->params->get('profile-require_' . $field, 1) > 0) { $form->setFieldAttribute($field, 'required', ($this->params->get('profile-require_' . $field) == 2) ? 'required' : '', 'profile'); } elseif ( // Remove the field if it is disabled in registration and profile $this->params->get('register-require_' . $field, 1) == 0 && $this->params->get('profile-require_' . $field, 1) == 0 ) { $form->removeField($field, 'profile'); } } elseif ($name === 'com_users.registration') { // Case registration // Toggle whether the field is required. if ($this->params->get('register-require_' . $field, 1) > 0) { $form->setFieldAttribute($field, 'required', ($this->params->get('register-require_' . $field) == 2) ? 'required' : '', 'profile'); } else { $form->removeField($field, 'profile'); } } elseif ($name === 'com_users.profile') { // Case profile in site or admin // Toggle whether the field is required. if ($this->params->get('profile-require_' . $field, 1) > 0) { $form->setFieldAttribute($field, 'required', ($this->params->get('profile-require_' . $field) == 2) ? 'required' : '', 'profile'); } else { $form->removeField($field, 'profile'); } } } // Drop the profile form entirely if there aren't any fields to display. $remainingfields = $form->getGroup('profile'); if (!count($remainingfields)) { $form->removeGroup('profile'); } return true; } /** * 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.1 * @throws \InvalidArgumentException on invalid date. */ public function onUserBeforeSave($user, $isnew, $data) { // Check that the date is valid. if (!empty($data['profile']['dob'])) { try { $date = new Date($data['profile']['dob']); $this->date = $date->format('Y-m-d H:i:s'); } catch (\Exception $e) { // Throw an exception if date is not valid. throw new \InvalidArgumentException($this->getApplication()->getLanguage()->_('PLG_USER_PROFILE_ERROR_INVALID_DOB')); } if (Date::getInstance('now') < $date) { // Throw an exception if dob is greater than now. throw new \InvalidArgumentException($this->getApplication()->getLanguage()->_('PLG_USER_PROFILE_ERROR_INVALID_DOB_FUTURE_DATE')); } } // Check that the tos is checked if required ie only in registration from frontend. $task = $this->getApplication()->getInput()->getCmd('task'); $option = $this->getApplication()->getInput()->getCmd('option'); $tosEnabled = ($this->params->get('register-require_tos', 0) == 2); // Check that the tos is checked. if ($task === 'register' && $tosEnabled && $option === 'com_users' && !$data['profile']['tos']) { throw new \InvalidArgumentException($this->getApplication()->getLanguage()->_('PLG_USER_PROFILE_FIELD_TOS_DESC_SITE')); } 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 void */ public function onUserAfterSave($data, $isNew, $result, $error): void { $userId = ArrayHelper::getValue($data, 'id', 0, 'int'); if ($userId && $result && isset($data['profile']) && count($data['profile'])) { $db = $this->getDatabase(); // Sanitize the date if (!empty($data['profile']['dob'])) { $data['profile']['dob'] = $this->date; } $keys = array_keys($data['profile']); foreach ($keys as &$key) { $key = 'profile.' . $key; } $query = $db->getQuery(true) ->delete($db->quoteName('#__user_profiles')) ->where($db->quoteName('user_id') . ' = :userid') ->whereIn($db->quoteName('profile_key'), $keys, ParameterType::STRING) ->bind(':userid', $userId, ParameterType::INTEGER); $db->setQuery($query); $db->execute(); $query->clear() ->select($db->quoteName('ordering')) ->from($db->quoteName('#__user_profiles')) ->where($db->quoteName('user_id') . ' = :userid') ->bind(':userid', $userId, ParameterType::INTEGER); $db->setQuery($query); $usedOrdering = $db->loadColumn(); $order = 1; $query->clear() ->insert($db->quoteName('#__user_profiles')); foreach ($data['profile'] as $k => $v) { while (in_array($order, $usedOrdering)) { $order++; } $query->values( implode( ',', $query->bindArray( [ $userId, 'profile.' . $k, json_encode($v), $order++, ], [ ParameterType::INTEGER, ParameterType::STRING, ParameterType::STRING, ParameterType::INTEGER, ] ) ) ); } $db->setQuery($query); $db->execute(); } } /** * Remove all user profile information for the given user ID * * Method is called after user data is deleted from the database * * @param array $user Holds the user data * @param boolean $success True if user was successfully stored in the database * @param string $msg Message * * @return void */ public function onUserAfterDelete($user, $success, $msg): void { if (!$success) { return; } $userId = ArrayHelper::getValue($user, 'id', 0, 'int'); if ($userId) { $db = $this->getDatabase(); $query = $db->getQuery(true) ->delete($db->quoteName('#__user_profiles')) ->where($db->quoteName('user_id') . ' = :userid') ->where($db->quoteName('profile_key') . ' LIKE ' . $db->quote('profile.%')) ->bind(':userid', $userId, ParameterType::INTEGER); $db->setQuery($query); $db->execute(); } } } profile.xml000064400000022234151721417530006737 0ustar00<?xml version="1.0" encoding="UTF-8"?> <extension type="plugin" group="user" method="upgrade"> <name>plg_user_profile</name> <author>Joomla! Project</author> <creationDate>2008-01</creationDate> <copyright>(C) 2008 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.0.0</version> <description>PLG_USER_PROFILE_XML_DESCRIPTION</description> <namespace path="src">Joomla\Plugin\User\Profile</namespace> <files> <folder>forms</folder> <folder plugin="profile">services</folder> <folder>src</folder> </files> <languages> <language tag="en-GB">language/en-GB/plg_user_profile.ini</language> <language tag="en-GB">language/en-GB/plg_user_profile.sys.ini</language> </languages> <config> <fields name="params"> <fieldset name="basic" addfieldprefix="Joomla\Component\Content\Administrator\Field"> <field name="register-require-user" type="spacer" label="PLG_USER_PROFILE_FIELD_NAME_REGISTER_REQUIRE_USER" class="text" /> <field name="register-require_address1" type="list" label="PLG_USER_PROFILE_FIELD_ADDRESS1_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> <field name="register-require_address2" type="list" label="PLG_USER_PROFILE_FIELD_ADDRESS2_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> <field name="register-require_city" type="list" label="PLG_USER_PROFILE_FIELD_CITY_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> <field name="register-require_region" type="list" label="PLG_USER_PROFILE_FIELD_REGION_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> <field name="register-require_country" type="list" label="PLG_USER_PROFILE_FIELD_COUNTRY_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> <field name="register-require_postal_code" type="list" label="PLG_USER_PROFILE_FIELD_POSTAL_CODE_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> <field name="register-require_phone" type="list" label="PLG_USER_PROFILE_FIELD_PHONE_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> <field name="register-require_website" type="list" label="PLG_USER_PROFILE_FIELD_WEB_SITE_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> <field name="register-require_favoritebook" type="list" label="PLG_USER_PROFILE_FIELD_FAVORITE_BOOK_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> <field name="register-require_aboutme" type="list" label="PLG_USER_PROFILE_FIELD_ABOUT_ME_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> <field name="register-require_tos" type="list" label="PLG_USER_PROFILE_FIELD_TOS_LABEL" default="0" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="0">JDISABLED</option> </field> <field name="register_tos_article" type="modal_article" label="PLG_USER_PROFILE_FIELD_TOS_ARTICLE_LABEL" select="true" new="true" edit="true" clear="true" filter="integer" /> <field name="register-require_dob" type="list" label="PLG_USER_PROFILE_FIELD_DOB_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> <field name="spacer1" type="spacer" hr="true" /> <field name="profile-require-user" type="spacer" label="PLG_USER_PROFILE_FIELD_NAME_PROFILE_REQUIRE_USER" class="text" /> <field name="profile-require_address1" type="list" label="PLG_USER_PROFILE_FIELD_ADDRESS1_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> <field name="profile-require_address2" type="list" label="PLG_USER_PROFILE_FIELD_ADDRESS2_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> <field name="profile-require_city" type="list" label="PLG_USER_PROFILE_FIELD_CITY_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> <field name="profile-require_region" type="list" label="PLG_USER_PROFILE_FIELD_REGION_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> <field name="profile-require_country" type="list" label="PLG_USER_PROFILE_FIELD_COUNTRY_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> <field name="profile-require_postal_code" type="list" label="PLG_USER_PROFILE_FIELD_POSTAL_CODE_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> <field name="profile-require_phone" type="list" label="PLG_USER_PROFILE_FIELD_PHONE_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> <field name="profile-require_website" type="list" label="PLG_USER_PROFILE_FIELD_WEB_SITE_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> <field name="profile-require_favoritebook" type="list" label="PLG_USER_PROFILE_FIELD_FAVORITE_BOOK_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> <field name="profile-require_aboutme" type="list" label="PLG_USER_PROFILE_FIELD_ABOUT_ME_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> <field name="profile-require_dob" type="list" label="PLG_USER_PROFILE_FIELD_DOB_LABEL" default="1" filter="integer" validate="options" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> </fieldset> </fields> </config> </extension> index.html000060400000000037151721417530006543 0ustar00<!DOCTYPE html><title></title> services/provider.php000064400000002634151721417530010745 0ustar00<?php /** * @package Joomla.Plugin * @subpackage User.profile * * @copyright (C) 2023 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\Extension\PluginInterface; use Joomla\CMS\Factory; use Joomla\CMS\Plugin\PluginHelper; use Joomla\Database\DatabaseInterface; use Joomla\DI\Container; use Joomla\DI\ServiceProviderInterface; use Joomla\Event\DispatcherInterface; use Joomla\Plugin\User\Profile\Extension\Profile; return new class () implements ServiceProviderInterface { /** * Registers the service provider with a DI container. * * @param Container $container The DI container. * * @return void * * @since 4.4.0 */ public function register(Container $container): void { $container->set( PluginInterface::class, function (Container $container) { $dispatcher = $container->get(DispatcherInterface::class); $plugin = new Profile( $dispatcher, (array) PluginHelper::getPlugin('user', 'profile') ); $plugin->setApplication(Factory::getApplication()); $plugin->setDatabase($container->get(DatabaseInterface::class)); return $plugin; } ); } };
/home/opticamezl/www/newok/tmp/../cli/../plugins/../tmp/../api/.././cli/../templates/../profile.tar