Файловый менеджер - Редактировать - /home/wuectly/www/03cbe/profile.tar
Назад
fields/dob.php 0000604 00000001163 15245557173 0007302 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage Layout * * @copyright (C) 2014 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * $text string infotext to be displayed */ extract($displayData); // Closing the opening .control-group and .control-label div so we can add our info text on own line ?> </div></div> <div class="controls"><?php echo $text; ?></div> <?php // Creating new .control-group and .control-label for the actual field ?> <div class="control-group"><div class="control-label"> default_core.php 0000604 00000002334 15245613456 0007722 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_users * * @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <fieldset id="users-profile-core"> <legend> <?php echo JText::_('COM_USERS_PROFILE_CORE_LEGEND'); ?> </legend> <dl class="dl-horizontal"> <dt> <?php echo JText::_('COM_USERS_PROFILE_NAME_LABEL'); ?> </dt> <dd> <?php echo $this->data->name; ?> </dd> <dt> <?php echo JText::_('COM_USERS_PROFILE_USERNAME_LABEL'); ?> </dt> <dd> <?php echo htmlspecialchars($this->data->username, ENT_COMPAT, 'UTF-8'); ?> </dd> <dt> <?php echo JText::_('COM_USERS_PROFILE_REGISTERED_DATE_LABEL'); ?> </dt> <dd> <?php echo JHtml::_('date', $this->data->registerDate); ?> </dd> <dt> <?php echo JText::_('COM_USERS_PROFILE_LAST_VISITED_DATE_LABEL'); ?> </dt> <?php if ($this->data->lastvisitDate != $this->db->getNullDate()) : ?> <dd> <?php echo JHtml::_('date', $this->data->lastvisitDate); ?> </dd> <?php else: ?> <dd> <?php echo JText::_('COM_USERS_PROFILE_NEVER_VISITED'); ?> </dd> <?php endif; ?> </dl> </fieldset> default.php 0000604 00000002165 15245613456 0006714 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_users * * @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; if(version_compare(JVERSION, '3.0', 'ge')){ JHtml::_('bootstrap.tooltip'); } else { JHtml::_('behavior.tooltip'); } ?> <div class="profile <?php echo $this->pageclass_sfx?>"> <?php if (JFactory::getUser()->id == $this->data->id) : ?> <ul class="btn-toolbar pull-right"> <li class="btn-group"> <a class="btn" href="<?php echo JRoute::_('index.php?option=com_users&task=profile.edit&user_id='.(int) $this->data->id);?>"> <span class="icon-user"></span> <?php echo JText::_('COM_USERS_EDIT_PROFILE'); ?> </a> </li> </ul> <?php endif; ?> <?php if ($this->params->get('show_page_heading')) : ?> <div class="page-header"> <h1> <?php echo $this->escape($this->params->get('page_heading')); ?> </h1> </div> <?php endif; ?> <?php echo $this->loadTemplate('core'); ?> <?php echo $this->loadTemplate('params'); ?> <?php echo $this->loadTemplate('custom'); ?> </div> default_custom.php 0000604 00000004524 15245613456 0010307 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_users * * @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::register('users.spacer', array('JHtmlUsers', 'spacer')); $fieldsets = $this->form->getFieldsets(); if (isset($fieldsets['core'])) { unset($fieldsets['core']); } if (isset($fieldsets['params'])) { unset($fieldsets['params']); } $tmp = isset($this->data->jcfields) ? $this->data->jcfields : array(); $customFields = array(); foreach ($tmp as $customField) { $customFields[$customField->name] = $customField; } ?> <?php foreach ($fieldsets as $group => $fieldset) : ?> <?php $fields = $this->form->getFieldset($group); ?> <?php if (count($fields)) : ?> <fieldset id="users-profile-custom-<?php echo $group; ?>" class="users-profile-custom-<?php echo $group; ?>"> <?php if (isset($fieldset->label) && ($legend = trim(JText::_($fieldset->label))) !== '') : ?> <legend><?php echo $legend; ?></legend> <?php endif; ?> <?php if (isset($fieldset->description) && trim($fieldset->description)) : ?> <p><?php echo $this->escape(JText::_($fieldset->description)); ?></p> <?php endif; ?> <dl class="dl-horizontal"> <?php foreach ($fields as $field) : ?> <?php if (!$field->hidden && $field->type !== 'Spacer') : ?> <dt><?php echo $field->title; ?></dt> <dd> <?php if (key_exists($field->fieldname, $customFields)) : ?> <?php echo $customFields[$field->fieldname]->value ?: JText::_('COM_USERS_PROFILE_VALUE_NOT_FOUND'); ?> <?php elseif (JHtml::isRegistered('users.' . $field->id)) : ?> <?php echo JHtml::_('users.' . $field->id, $field->value); ?> <?php elseif (JHtml::isRegistered('users.' . $field->fieldname)) : ?> <?php echo JHtml::_('users.' . $field->fieldname, $field->value); ?> <?php elseif (JHtml::isRegistered('users.' . $field->type)) : ?> <?php echo JHtml::_('users.' . $field->type, $field->value); ?> <?php else : ?> <?php echo JHtml::_('users.value', $field->value); ?> <?php endif; ?> </dd> <?php endif; ?> <?php endforeach; ?> </dl> </fieldset> <?php endif; ?> <?php endforeach; ?> default_params.php 0000604 00000002317 15245613456 0010256 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_users * * @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); ?> <?php $fields = $this->form->getFieldset('params'); ?> <?php if (count($fields)) : ?> <fieldset id="users-profile-custom"> <legend><?php echo JText::_('COM_USERS_SETTINGS_FIELDSET_LABEL'); ?></legend> <dl class="dl-horizontal"> <?php foreach ($fields as $field): if (!$field->hidden) :?> <dt><?php echo $field->title; ?></dt> <dd> <?php if (JHtml::isRegistered('users.'.$field->id)):?> <?php echo JHtml::_('users.'.$field->id, $field->value);?> <?php elseif (JHtml::isRegistered('users.'.$field->fieldname)):?> <?php echo JHtml::_('users.'.$field->fieldname, $field->value);?> <?php elseif (JHtml::isRegistered('users.'.$field->type)):?> <?php echo JHtml::_('users.'.$field->type, $field->value);?> <?php else:?> <?php echo JHtml::_('users.value', $field->value);?> <?php endif;?> </dd> <?php endif;?> <?php endforeach;?> </dl> </fieldset> <?php endif;?> edit.php 0000604 00000005376 15245613456 0006224 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage com_users * * @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.keepalive'); JHtml::_('behavior.tooltip'); JHtml::_('behavior.formvalidation'); //load user_profile plugin language $lang = JFactory::getLanguage(); $lang->load('plg_user_profile', JPATH_ADMINISTRATOR); ?> <div class="profile-edit<?php echo $this->pageclass_sfx?>"> <?php if ($this->params->get('show_page_heading')) : ?> <div class="page-header"> <h1><?php echo $this->escape($this->params->get('page_heading')); ?></h1> </div> <?php endif; ?> <form id="member-profile" action="<?php echo JRoute::_('index.php?option=com_users&task=profile.save'); ?>" method="post" class="form-validate form-horizontal" enctype="multipart/form-data"> <?php foreach ($this->form->getFieldsets() as $group => $fieldset):// Iterate through the form fieldsets and display each one.?> <?php $fields = $this->form->getFieldset($group);?> <?php if (count($fields)):?> <fieldset> <?php if (isset($fieldset->label)):// If the fieldset has a label set, display it as the legend.?> <legend><?php echo JText::_($fieldset->label); ?></legend> <?php endif;?> <?php if (isset($fieldset->description) && trim($fieldset->description)) : ?> <?php echo '<p>' . $this->escape(JText::_($fieldset->description)) . '</p>'; ?> <?php endif; ?> <?php // Iterate through the fields in the set and display them. ?> <?php foreach ($fields as $field):?> <?php // If the field is hidden, just display the input. ?> <?php if ($field->hidden):?> <div class="control-group"> <div class="controls"> <?php echo $field->input;?> </div> </div> <?php else:?> <div class="control-group"> <div class="control-label"> <?php echo $field->label; ?> <?php if (!$field->required && $field->type != 'Spacer') : ?> <span class="optional"><?php echo JText::_('COM_USERS_OPTIONAL'); ?></span> <?php endif; ?> </div> <div class="controls"> <?php echo $field->input; ?> </div> </div> <?php endif;?> <?php endforeach;?> </fieldset> <?php endif;?> <?php endforeach;?> <div class="form-actions"> <button type="submit" class="btn btn-primary validate"><span><?php echo JText::_('JSUBMIT'); ?></span></button> <a class="btn" href="<?php echo JRoute::_('index.php?option=com_users&view=profile'); ?>" title="<?php echo JText::_('JCANCEL'); ?>"><?php echo JText::_('JCANCEL'); ?></a> <input type="hidden" name="option" value="com_users" /> <input type="hidden" name="task" value="profile.save" /> <?php echo JHtml::_('form.token'); ?> </div> </form> </div> index.html 0000604 00000000037 15245613456 0006550 0 ustar 00 <!DOCTYPE html><title></title> profiles/profile.xml 0000604 00000005417 15245632143 0010561 0 ustar 00 <?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" description="PLG_USER_PROFILE_FIELD_ADDRESS1_DESC" id="address1" filter="string" size="30" /> <field name="address2" type="text" label="PLG_USER_PROFILE_FIELD_ADDRESS2_LABEL" description="PLG_USER_PROFILE_FIELD_ADDRESS2_DESC" id="address2" filter="string" size="30" /> <field name="city" type="text" label="PLG_USER_PROFILE_FIELD_CITY_LABEL" description="PLG_USER_PROFILE_FIELD_CITY_DESC" id="city" filter="string" size="30" /> <field name="region" type="text" label="PLG_USER_PROFILE_FIELD_REGION_LABEL" description="PLG_USER_PROFILE_FIELD_REGION_DESC" id="region" filter="string" size="30" /> <field name="country" type="text" label="PLG_USER_PROFILE_FIELD_COUNTRY_LABEL" description="PLG_USER_PROFILE_FIELD_COUNTRY_DESC" id="country" filter="string" size="30" /> <field name="postal_code" type="text" label="PLG_USER_PROFILE_FIELD_POSTAL_CODE_LABEL" description="PLG_USER_PROFILE_FIELD_POSTAL_CODE_DESC" id="postal_code" filter="string" size="30" /> <field name="phone" type="tel" label="PLG_USER_PROFILE_FIELD_PHONE_LABEL" description="PLG_USER_PROFILE_FIELD_PHONE_DESC" id="phone" filter="string" size="30" /> <field name="website" type="url" label="PLG_USER_PROFILE_FIELD_WEB_SITE_LABEL" description="PLG_USER_PROFILE_FIELD_WEB_SITE_DESC" id="website" filter="url" size="30" validate="url" /> <field name="favoritebook" type="text" label="PLG_USER_PROFILE_FIELD_FAVORITE_BOOK_LABEL" description="PLG_USER_PROFILE_FIELD_FAVORITE_BOOK_DESC" filter="string" size="30" /> <field name="aboutme" type="textarea" label="PLG_USER_PROFILE_FIELD_ABOUT_ME_LABEL" description="PLG_USER_PROFILE_FIELD_ABOUT_ME_DESC" cols="30" rows="5" filter="safehtml" /> <field name="dob" type="dob" label="PLG_USER_PROFILE_FIELD_DOB_LABEL" description="PLG_USER_PROFILE_FIELD_DOB_DESC" info="PLG_USER_PROFILE_SPACER_DOB" translateformat="true" showtime="false" filter="server_utc" /> <field name="tos" type="tos" label="PLG_USER_PROFILE_FIELD_TOS_LABEL" description="PLG_USER_PROFILE_FIELD_TOS_DESC" 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> field/tos.php 0000604 00000007025 15245632143 0007152 0 ustar 00 <?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 */ defined('JPATH_PLATFORM') or die; JFormHelper::loadFieldClass('radio'); /** * Provides input for TOS * * @since 2.5.5 */ class JFormFieldTos extends JFormFieldRadio { /** * 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 ? JText::_($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)) { $label .= ' title="' . htmlspecialchars(trim($text, ':'), ENT_COMPAT, 'UTF-8') . '"'; $label .= ' data-content="' . htmlspecialchars( $this->translateDescription ? JText::_($this->description) : $this->description, ENT_COMPAT, 'UTF-8' ) . '"'; if (JFactory::getLanguage()->isRtl()) { $label .= ' data-placement="left"'; } } $tosArticle = $this->element['article'] > 0 ? (int) $this->element['article'] : 0; if ($tosArticle) { JHtml::_('behavior.modal'); JLoader::register('ContentHelperRoute', JPATH_BASE . '/components/com_content/helpers/route.php'); $attribs = array(); $attribs['class'] = 'modal'; $attribs['rel'] = '{handler: \'iframe\', size: {x:800, y:500}}'; $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->select('id, alias, catid, language') ->from('#__content') ->where('id = ' . $tosArticle); $db->setQuery($query); $article = $db->loadObject(); if (JLanguageAssociations::isEnabled()) { $tosAssociated = JLanguageAssociations::getAssociations('com_content', '#__content', 'com_content.item', $tosArticle); } $currentLang = JFactory::getLanguage()->getTag(); if (isset($tosAssociated) && $currentLang !== $article->language && array_key_exists($currentLang, $tosAssociated)) { $url = ContentHelperRoute::getArticleRoute( $tosAssociated[$currentLang]->id, $tosAssociated[$currentLang]->catid, $tosAssociated[$currentLang]->language ); $link = JHtml::_('link', JRoute::_($url . '&tmpl=component'), $text, $attribs); } else { $slug = $article->alias ? ($article->id . ':' . $article->alias) : $article->id; $url = ContentHelperRoute::getArticleRoute($slug, $article->catid, $article->language); $link = JHtml::_('link', JRoute::_($url . '&tmpl=component'), $text, $attribs); } } else { $link = $text; } // Add the label text and closing tag. $label .= '>' . $link . '<span class="star"> *</span></label>'; return $label; } } field/dob.php 0000604 00000002720 15245632143 0007106 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage User.profile * * @copyright (C) 2014 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; JFormHelper::loadFieldClass('calendar'); /** * Provides input for "Date of Birth" field * * @package Joomla.Plugin * @subpackage User.profile * @since 3.3.7 */ class JFormFieldDob extends JFormFieldCalendar { /** * The form field type. * * @var string * @since 3.3.7 */ protected $type = 'Dob'; /** * Method to get the field label markup. * * @return string The field label markup. * * @since 3.3.7 */ protected function getLabel() { $label = parent::getLabel(); // Get the info text from the XML element, defaulting to empty. $text = $this->element['info'] ? (string) $this->element['info'] : ''; $text = $this->translateLabel ? JText::_($text) : $text; if ($text) { $app = JFactory::getApplication(); $layout = new JLayoutFile('plugins.user.profile.fields.dob'); $view = $app->input->getString('view', ''); // Only display the tip when editing profile if ($view === 'registration' || $view === 'profile' || $app->isClient('administrator')) { $layout = new JLayoutFile('plugins.user.profile.fields.dob'); $info = $layout->render(array('text' => $text)); $label = $info . $label; } } return $label; } } profile.xml 0000604 00000023570 15245632143 0006736 0 ustar 00 <?xml version="1.0" encoding="utf-8"?> <extension version="3.1" type="plugin" group="user" method="upgrade"> <name>plg_user_profile</name> <author>Joomla! Project</author> <creationDate>January 2008</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> <files> <filename plugin="profile">profile.php</filename> <folder>profiles</folder> <folder>field</folder> </files> <languages> <language tag="en-GB">en-GB.plg_user_profile.ini</language> <language tag="en-GB">en-GB.plg_user_profile.sys.ini</language> </languages> <config> <fields name="params"> <fieldset name="basic" addfieldpath="/administrator/components/com_content/models/fields"> <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" description="PLG_USER_PROFILE_FIELD_ADDRESS1_DESC" default="1" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_ADDRESS2_DESC" default="1" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_CITY_DESC" default="1" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_REGION_DESC" default="1" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_COUNTRY_DESC" default="1" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_POSTAL_CODE_DESC" default="1" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_PHONE_DESC" default="1" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_WEB_SITE_DESC" default="1" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_FAVORITE_BOOK_DESC" default="1" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_ABOUT_ME_DESC" default="1" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_TOS_DESC" default="0" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_TOS_ARTICLE_DESC" select="true" new="true" edit="true" clear="true" filter="integer" /> <field name="register-require_dob" type="list" label="PLG_USER_PROFILE_FIELD_DOB_LABEL" description="PLG_USER_PROFILE_FIELD_DOB_DESC" default="1" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_ADDRESS1_DESC" default="1" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_ADDRESS2_DESC" default="1" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_CITY_DESC" default="1" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_REGION_DESC" default="1" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_COUNTRY_DESC" default="1" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_POSTAL_CODE_DESC" default="1" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_PHONE_DESC" default="1" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_WEB_SITE_DESC" default="1" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_FAVORITE_BOOK_DESC" default="1" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_ABOUT_ME_DESC" default="1" filter="integer" > <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" description="PLG_USER_PROFILE_FIELD_DOB_DESC" default="1" filter="integer" > <option value="2">JOPTION_REQUIRED</option> <option value="1">JOPTION_OPTIONAL</option> <option value="0">JDISABLED</option> </field> </fieldset> </fields> </config> </extension> profile.php 0000604 00000032073 15245632143 0006723 0 ustar 00 <?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 */ defined('_JEXEC') or die; use Joomla\CMS\Date\Date; use Joomla\CMS\Factory; use Joomla\CMS\Form\Form; use Joomla\CMS\Form\FormHelper; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\String\PunycodeHelper; use Joomla\Utilities\ArrayHelper; /** * An example custom profile plugin. * * @since 1.6 */ class PlgUserProfile extends JPlugin { /** * Date of birth. * * @var string * @since 3.1 */ private $date = ''; /** * Load the language file on instantiation. * * @var boolean * @since 3.1 */ protected $autoloadLanguage = true; /** * Constructor * * @param object &$subject The object to observe * @param array $config An array that holds the plugin configuration * * @since 1.5 */ public function __construct(& $subject, $config) { parent::__construct($subject, $config); FormHelper::addFieldPath(__DIR__ . '/field'); } /** * 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, array('com_users.profile', 'com_users.user', 'com_users.registration', 'com_admin.profile'))) { return true; } if (is_object($data)) { $userId = isset($data->id) ? $data->id : 0; if (!isset($data->profile) && $userId > 0) { // Load the profile data from the database. $db = Factory::getDbo(); $db->setQuery( 'SELECT profile_key, profile_value FROM #__user_profiles' . ' WHERE user_id = ' . (int) $userId . " AND profile_key LIKE 'profile.%'" . ' ORDER BY ordering' ); try { $results = $db->loadRowList(); } catch (RuntimeException $e) { $this->_subject->setError($e->getMessage()); return false; } // Merge the profile data. $data->profile = array(); 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', array(__CLASS__, 'url')); } if (!HTMLHelper::isRegistered('users.calendar')) { HTMLHelper::register('users.calendar', array(__CLASS__, 'calendar')); } if (!HTMLHelper::isRegistered('users.tos')) { HTMLHelper::register('users.tos', array(__CLASS__, 'tos')); } if (!HTMLHelper::isRegistered('users.dob')) { HTMLHelper::register('users.dob', array(__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 = PunycodeHelper::urlToUTF8(htmlspecialchars($value)); 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, array('com_admin.profile', 'com_users.user', 'com_users.profile', 'com_users.registration'))) { return true; } // Add the registration fields to the form. Form::addFormPath(__DIR__ . '/profiles'); $form->loadFile('profile'); $fields = array( 'address1', 'address2', 'city', 'region', 'country', 'postal_code', 'phone', 'website', 'favoritebook', 'aboutme', 'dob', 'tos', ); // Change fields description when displayed in frontend or backend profile editing $app = Factory::getApplication(); if ($app->isClient('site') || $name === 'com_users.user' || $name === 'com_admin.profile') { $form->setFieldAttribute('address1', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile'); $form->setFieldAttribute('address2', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile'); $form->setFieldAttribute('city', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile'); $form->setFieldAttribute('region', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile'); $form->setFieldAttribute('country', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile'); $form->setFieldAttribute('postal_code', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile'); $form->setFieldAttribute('phone', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile'); $form->setFieldAttribute('website', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile'); $form->setFieldAttribute('favoritebook', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile'); $form->setFieldAttribute('aboutme', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile'); $form->setFieldAttribute('dob', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile'); $form->setFieldAttribute('tos', 'description', 'PLG_USER_PROFILE_FIELD_TOS_DESC_SITE', 'profile'); } $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'); } // Remove the field if it is disabled in registration and profile elseif ($this->params->get('register-require_' . $field, 1) == 0 && $this->params->get('profile-require_' . $field, 1) == 0) { $form->removeField($field, 'profile'); } } // Case registration elseif ($name === 'com_users.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'); } } // Case profile in site or admin elseif ($name === 'com_users.profile' || $name === 'com_admin.profile') { // 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(Text::_('PLG_USER_PROFILE_ERROR_INVALID_DOB')); } if (Date::getInstance('now') < $date) { // Throw an exception if dob is greater than now. throw new InvalidArgumentException(Text::_('PLG_USER_PROFILE_ERROR_INVALID_DOB_FUTURE_DATE')); } } // Check that the tos is checked if required ie only in registration from frontend. $task = Factory::getApplication()->input->getCmd('task'); $option = Factory::getApplication()->input->getCmd('option'); $tosArticle = $this->params->get('register_tos_article'); $tosEnabled = ($this->params->get('register-require_tos', 0) == 2); // Check that the tos is checked. if ($task === 'register' && $tosEnabled && $tosArticle && $option === 'com_users' && !$data['profile']['tos']) { throw new InvalidArgumentException(Text::_('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 boolean */ public function onUserAfterSave($data, $isNew, $result, $error) { $userId = ArrayHelper::getValue($data, 'id', 0, 'int'); if ($userId && $result && isset($data['profile']) && count($data['profile'])) { try { $db = Factory::getDbo(); // 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; $key = $db->quote($key); } $query = $db->getQuery(true) ->delete($db->quoteName('#__user_profiles')) ->where($db->quoteName('user_id') . ' = ' . (int) $userId) ->where($db->quoteName('profile_key') . ' IN (' . implode(',', $keys) . ')'); $db->setQuery($query); $db->execute(); $query = $db->getQuery(true) ->select($db->quoteName('ordering')) ->from($db->quoteName('#__user_profiles')) ->where($db->quoteName('user_id') . ' = ' . (int) $userId); $db->setQuery($query); $usedOrdering = $db->loadColumn(); $tuples = array(); $order = 1; foreach ($data['profile'] as $k => $v) { while (in_array($order, $usedOrdering)) { $order++; } $tuples[] = '(' . $userId . ', ' . $db->quote('profile.' . $k) . ', ' . $db->quote(json_encode($v)) . ', ' . ($order++) . ')'; } $db->setQuery('INSERT INTO #__user_profiles VALUES ' . implode(', ', $tuples)); $db->execute(); } catch (RuntimeException $e) { $this->_subject->setError($e->getMessage()); return false; } } return true; } /** * 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 boolean */ public function onUserAfterDelete($user, $success, $msg) { if (!$success) { return false; } $userId = ArrayHelper::getValue($user, 'id', 0, 'int'); if ($userId) { try { $db = Factory::getDbo(); $db->setQuery( 'DELETE FROM #__user_profiles WHERE user_id = ' . $userId . " AND profile_key LIKE 'profile.%'" ); $db->execute(); } catch (Exception $e) { $this->_subject->setError($e->getMessage()); return false; } } return true; } }
| ver. 1.4 |
Github
|
.
| PHP 8.1.34 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка