Updated with JCB v2.10.0

This commit is contained in:
Llewellyn van der Merwe 2019-08-14 04:14:40 +02:00
parent 5e34938710
commit 001a426dac
No known key found for this signature in database
GPG Key ID: CAD7B16D27AF28C5
151 changed files with 1481 additions and 438 deletions

View File

@ -13,38 +13,38 @@ Watch this [tutorial](https://youtu.be/lkE0ZiSWufg) to see how.
+ *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com)
+ *Name*: [Members Manager](https://www.joomlacomponentbuilder.com/)
+ *First Build*: 6th July, 2018
+ *Last Build*: 12th June, 2019
+ *Last Build*: 14th August, 2019
+ *Version*: 2.0.x
+ *Copyright*: Copyright (C) 2015. All Rights Reserved
+ *License*: GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
## Build Time
**116 Hours** or **15 Eight Hour Days** (actual time the author saved -
**119 Hours** or **15 Eight Hour Days** (actual time the author saved -
due to [Automated Component Builder](http://joomlacomponentbuilder.com))
> (if creating a folder and file took **5 seconds** and writing one line of code took **10 seconds**,
> never making one mistake or taking any coffee break.)
+ *Line count*: **41627**
+ *Line count*: **42672**
+ *File count*: **237**
+ *Folder count*: **61**
**77 Hours** or **9 Eight Hour Days** (the actual time the author spent)
**78 Hours** or **10 Eight Hour Days** (the actual time the author spent)
> (with the following break down:
> **debugging @29hours** = codingtime / 4;
> **debugging @30hours** = codingtime / 4;
> **planning @17hours** = codingtime / 7;
> **mapping @12hours** = codingtime / 10;
> **office @19hours** = codingtime / 6;)
> **office @20hours** = codingtime / 6;)
**193 Hours** or **24 Eight Hour Days**
**197 Hours** or **25 Eight Hour Days**
(a total of the realistic time frame for this project)
> (if creating a folder and file took **5 seconds** and writing one line of code took **10 seconds**,
> with the normal everyday realities at the office, that includes the component planning, mapping & debugging.)
Project duration: **4.8 weeks** or **1 months**
Project duration: **5 weeks** or **1 months**
> This **component** was build with a Joomla [Automated Component Builder](http://joomlacomponentbuilder.com).
> Developed by [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com)

View File

@ -13,38 +13,38 @@ Watch this [tutorial](https://youtu.be/lkE0ZiSWufg) to see how.
+ *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com)
+ *Name*: [Members Manager](https://www.joomlacomponentbuilder.com/)
+ *First Build*: 6th July, 2018
+ *Last Build*: 12th June, 2019
+ *Last Build*: 14th August, 2019
+ *Version*: 2.0.x
+ *Copyright*: Copyright (C) 2015. All Rights Reserved
+ *License*: GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
## Build Time
**116 Hours** or **15 Eight Hour Days** (actual time the author saved -
**119 Hours** or **15 Eight Hour Days** (actual time the author saved -
due to [Automated Component Builder](http://joomlacomponentbuilder.com))
> (if creating a folder and file took **5 seconds** and writing one line of code took **10 seconds**,
> never making one mistake or taking any coffee break.)
+ *Line count*: **41627**
+ *Line count*: **42672**
+ *File count*: **237**
+ *Folder count*: **61**
**77 Hours** or **9 Eight Hour Days** (the actual time the author spent)
**78 Hours** or **10 Eight Hour Days** (the actual time the author spent)
> (with the following break down:
> **debugging @29hours** = codingtime / 4;
> **debugging @30hours** = codingtime / 4;
> **planning @17hours** = codingtime / 7;
> **mapping @12hours** = codingtime / 10;
> **office @19hours** = codingtime / 6;)
> **office @20hours** = codingtime / 6;)
**193 Hours** or **24 Eight Hour Days**
**197 Hours** or **25 Eight Hour Days**
(a total of the realistic time frame for this project)
> (if creating a folder and file took **5 seconds** and writing one line of code took **10 seconds**,
> with the normal everyday realities at the office, that includes the component planning, mapping & debugging.)
Project duration: **4.8 weeks** or **1 months**
Project duration: **5 weeks** or **1 months**
> This **component** was build with a Joomla [Automated Component Builder](http://joomlacomponentbuilder.com).
> Developed by [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com)

View File

@ -8,6 +8,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
/* CSS Document */
.no-click {
pointer-events: none;

View File

@ -8,6 +8,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
/* CSS Document */

View File

@ -8,6 +8,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
/* CSS Document */

View File

@ -8,6 +8,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
/* CSS Document */

View File

@ -8,6 +8,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
/* CSS Document */

View File

@ -6,6 +6,7 @@
* @github Joomla Members Manager <https://github.com/vdm-io/Joomla-Members-Manager>
* @copyright Copyright (C) 2015. All Rights Reserved
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
*/
/* JS Document */

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
@ -41,7 +42,7 @@ class MembersmanagerControllerAjax extends JControllerLegacy
// Check Token!
$token = JSession::getFormToken();
$call_token = $jinput->get('token', 0, 'ALNUM');
if($token == $call_token)
if($jinput->get($token, 0, 'ALNUM') || $token === $call_token)
{
$task = $this->getTask();
switch($task)

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
@ -37,8 +38,95 @@ class MembersmanagerControllerMember extends JControllerForm
{
$this->view_list = 'Members'; // safeguard for setting the return view listing to the main view.
parent::__construct($config);
}
/**
* Method to save a record and redirect to the profile
*
* @param string $key The name of the primary key of the URL variable.
* @param string $urlVar The name of the URL variable if different from the primary key (sometimes required to avoid router collisions).
*
* @return boolean True if successful, false otherwise.
*/
public function saveprofile($key = null, $urlVar = null)
{
// Check id from post
$id = $this->input->get('id', 0, 'INT');
// to make sure the item is checkedin on redirect
if ($id > 0)
{
$this->task = 'save';
}
// since this is a new record, we just create and remain in it
else
{
$this->task = 'apply';
}
// safe the item
$saved = parent::save($key, $urlVar);
if (class_exists('MembersmanagerHelperRoute'))
{
if ($id > 0)
{
// get post
$post = $this->input->post->get('jform', array(), 'array');
// get the slug
$slug = (isset($post['token'])) ? $id . ':' . $post['token'] : $id;
// Redirect to the profile
$this->setRedirect(JRoute::_(MembersmanagerHelperRoute::getProfileRoute($slug), true));
}
}
else
{
// get the referral options
$this->ref = $this->input->get('ref', 0, 'word');
$this->refid = $this->input->get('refid', 0, 'int');
// Check if there is a return value
$return = $this->input->get('return', null, 'base64');
$canReturn = (!is_null($return) && JUri::isInternal(base64_decode($return)));
// This is not needed since parent save already does this
// Due to the ref and refid implementation we need to add this
if ($canReturn)
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref . '&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view=' . (string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
}
return $saved;
}
/**
* Method override to check if you can add a new record.
*
@ -79,7 +167,11 @@ class MembersmanagerControllerMember extends JControllerForm
$user = JFactory::getUser();
// get record id.
$recordId = (int) isset($data[$key]) ? $data[$key] : 0;
// make sure user can access member (it is always true for self)
if (!MembersmanagerHelper::canAccessMember($recordId, null, $user))
{
return false;
}
// Access check.
$access = ($user->authorise('member.access', 'com_membersmanager.member.' . (int) $recordId) && $user->authorise('member.access', 'com_membersmanager'));

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('JPATH_PLATFORM') or die;

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
@ -210,7 +211,7 @@ abstract class MembersmanagerHelper
**/
protected static function setMemberEditURL($item)
{
if (($url = self::getEditURL($item, 'member', 'members', '&return=' . self::$return_here)) !== false)
if (self::canAccessMember($item->get('id', 0)) && ($url = self::getEditURL($item, 'member', 'members', '&return=' . self::$return_here)) !== false)
{
return $url;
}
@ -227,8 +228,8 @@ abstract class MembersmanagerHelper
{
self::$params = JComponentHelper::getParams('com_membersmanager');
}
// only load link if open to public or is logged in
if (2 == self::$params->get('login_required', 1) || JFactory::getUser()->id > 0)
// only load link if open to public or has access
if (2 == self::$params->get('login_required', 1) || self::canAccessMember($object->get('id', 0)))
{
return JRoute::_('index.php?option=com_membersmanager&view=profile&id='. $object->get('id') . ':' . $object->get('token') . '&return=' . self::$return_here);
}
@ -726,13 +727,6 @@ abstract class MembersmanagerHelper
}
/**
* The Access Memory
*
* @var array
*/
protected static $accessMemory = array();
/**
* The Key to Access Memory
*
@ -765,13 +759,12 @@ abstract class MembersmanagerHelper
}
}
// check memory first
self::$acK3y = md5($user->get('id', 'not_set') . '_' . $type);
if (isset(self::$accessMemory[self::$acK3y]))
self::$acK3y = 'membersmanager_user_access_' . $user->get('id', 'not_set') . '_' . $type;
// check if we have it globally stored
if (($access = self::get(self::$acK3y, false)) !== false)
{
return self::$accessMemory[self::$acK3y];
return $access;
}
// fallback to false
self::$accessMemory[self::$acK3y] = false;
// get DB
if (!$db)
{
@ -780,14 +773,14 @@ abstract class MembersmanagerHelper
// get user Access groups
if (2 == $type)
{
self::$accessMemory[self::$acK3y] = self::getAccessGroups($user, $db);
self::set(self::$acK3y, self::getAccessGroups($user, $db));
}
elseif (1 == $type)
{
// return access types
self::$accessMemory[self::$acK3y] = self::getAccessTypes($user, $db);
self::set(self::$acK3y, self::getAccessTypes($user, $db));
}
return self::$accessMemory[self::$acK3y];
return self::get(self::$acK3y, false);
}
/**
@ -820,7 +813,10 @@ abstract class MembersmanagerHelper
if (self::checkArray($types) && ($userID = $user->get('id', false)) !== false && $userID > 0 && ($member_type = self::getVar('member', $userID, 'user', 'type')) !== false)
{
// get the groups this member belong to
$member_access = self::getMemberGroupsByType($member_type);
if (($member_access = self::getMemberGroupsByType($member_type)) == false)
{
return false;
}
// function to setup the group array
$setGroups = function ($groups) {
// convert to array
@ -841,7 +837,7 @@ abstract class MembersmanagerHelper
foreach ($types as $groups)
{
$groups_access = $setGroups($groups['groups_access']);
if (self::checkArray($groups_target) && $intersect($groups_access, $member_access))
if (self::checkArray($groups_access) && $intersect($groups_access, $member_access))
{
$groups_target = $setGroups($groups['groups_target']);
foreach ($groups_target as $group_target)
@ -897,7 +893,10 @@ abstract class MembersmanagerHelper
if (self::checkArray($types) && ($userID = $user->get('id', false)) !== false && $userID > 0 && ($member_type = self::getVar('member', $userID, 'user', 'type')) !== false)
{
// get the access groups
$groups_access = self::getMemberGroupsByType($member_type);
if (($groups_access = self::getMemberGroupsByType($member_type)) === false)
{
return false;
}
// function to setup the group array
$setGroups = function ($groups) {
// convert to array
@ -5276,12 +5275,12 @@ abstract class MembersmanagerHelper
$app->enqueueMessage(JText::_('COM_MEMBERSMANAGER_YOU_DO_NOT_HAVE_PERMISSION_TO_EDIT_THIS_MEMBER_RELATIONSHIPS_PLEASE_CONTACT_YOUR_SYSTEM_ADMINISTRATOR'), 'warning');
return;
}
// get database object
$db = JFactory::getDbo();
// check if there is relationships and members in those relationships
if (self::checkArray($data) && isset($data['id']) && is_numeric($data['id']) && $data['id'] > 0 && isset($data['type'])
&& ($relation_types = self::getRelationshipsByTypes($data['type'], $db, true)) !== false)
{
// get database object
$db = JFactory::getDbo();
// get the post object
$post = JFactory::getApplication()->input->post;
// Create a new query object.
@ -5587,6 +5586,24 @@ abstract class MembersmanagerHelper
{
return 'membersmanager';
}
/**
* Can a member access another member's data
*
* @param mix $member The the member being accessed
* To do a dynamic get of member ID use the following array
* array( table, where, whereString, what)
* @param array $types The type of member being accessed
* @param mix $user The active user
* @param object $db The database object
*
* @return bool true of can access
*
*/
public static function canAccessMember($member = null, $types = null, $user = null, $db = null)
{
// here you can do your own custom validation
return true;
}
/**
* Load the Component xml manifest.
**/
@ -6497,38 +6514,42 @@ abstract class MembersmanagerHelper
/**
* Get any component's model
**/
public static function getModel($name, $path = JPATH_COMPONENT_ADMINISTRATOR, $component = 'Membersmanager', $config = array())
public static function getModel($name, $path = JPATH_COMPONENT_ADMINISTRATOR, $Component = 'Membersmanager', $config = array())
{
// fix the name
$name = self::safeString($name);
// full path
$fullPath = $path . '/models';
// set prefix
$prefix = $component.'Model';
// full path to models
$fullPathModels = $path . '/models';
// load the model file
JModelLegacy::addIncludePath($fullPath, $prefix);
JModelLegacy::addIncludePath($fullPathModels, $Component . 'Model');
// make sure the table path is loaded
if (!isset($config['table_path']) || !self::checkString($config['table_path']))
{
// This is the JCB default path to tables in Joomla 3.x
$config['table_path'] = JPATH_ADMINISTRATOR . '/components/com_' . strtolower($Component) . '/tables';
}
// get instance
$model = JModelLegacy::getInstance($name, $prefix, $config);
$model = JModelLegacy::getInstance($name, $Component . 'Model', $config);
// if model not found (strange)
if ($model == false)
{
jimport('joomla.filesystem.file');
// get file path
$filePath = $path.'/'.$name.'.php';
$fullPath = $fullPath.'/'.$name.'.php';
$filePath = $path . '/' . $name . '.php';
$fullPathModel = $fullPathModels . '/' . $name . '.php';
// check if it exists
if (JFile::exists($filePath))
{
// get the file
require_once $filePath;
}
elseif (JFile::exists($fullPath))
elseif (JFile::exists($fullPathModel))
{
// get the file
require_once $fullPath;
require_once $fullPathModel;
}
// build class names
$modelClass = $prefix.$name;
$modelClass = $Component . 'Model' . $name;
if (class_exists($modelClass))
{
// initialize the model

View File

@ -126,8 +126,7 @@ COM_MEMBERSMANAGER_CONFIG_MOBILE_PHONE_HINT="Mobile Phone Here"
COM_MEMBERSMANAGER_CONFIG_MOBILE_PHONE_LABEL="Mobile Phone"
COM_MEMBERSMANAGER_CONFIG_MOBILE_PHONE_MESSAGE="Error! Please add mobile phone number here."
COM_MEMBERSMANAGER_CONFIG_NO="No"
COM_MEMBERSMANAGER_CONFIG_NOTE_CORE_MEMBER_PLACEHOLDERS_DESCRIPTION="
<div id='core_member_placeholders'>Loading placeholders.<span class='loading-dots' ></span></div>
COM_MEMBERSMANAGER_CONFIG_NOTE_CORE_MEMBER_PLACEHOLDERS_DESCRIPTION="<div id='core_member_placeholders'>Loading placeholders.<span class='loading-dots' ></span></div>
<script type='text/javascript'>
var token;
jQuery(document).ready(function($) {
@ -297,7 +296,7 @@ COM_MEMBERSMANAGER_CONFIG_PHONE_DESCRIPTION="The phone number of the contact per
COM_MEMBERSMANAGER_CONFIG_PHONE_HINT="Phone Number Here!"
COM_MEMBERSMANAGER_CONFIG_PHONE_LABEL="Phone Number"
COM_MEMBERSMANAGER_CONFIG_PHONE_MESSAGE="Error! Please add phone number here."
COM_MEMBERSMANAGER_CONFIG_PLACEHOLDER_DESCRIPTION="to use in main template "
COM_MEMBERSMANAGER_CONFIG_PLACEHOLDER_DESCRIPTION="to use in main template"
COM_MEMBERSMANAGER_CONFIG_PLACEHOLDER_HINT="component_name_1"
COM_MEMBERSMANAGER_CONFIG_PLACEHOLDER_LABEL="Unique Placeholder"
COM_MEMBERSMANAGER_CONFIG_PLACEHOLDER_PREFIX_DESCRIPTION="What would like to use as the prefix of the values when used in templates."
@ -338,8 +337,7 @@ COM_MEMBERSMANAGER_CONFIG_TABLE_ROW_TEMPLATE_HINT="// html for a single row
<tr>
<td>[member_name]</td>
<td>[member_email]</td>
</tr>
"
</tr>"
COM_MEMBERSMANAGER_CONFIG_TABLE_ROW_TEMPLATE_LABEL="Table Row Template"
COM_MEMBERSMANAGER_CONFIG_TABLE_TEMPLATE_DESCRIPTION="Set the HTML for the table surrounding the rows - to add items (all rows) use [load_items] placeholder"
COM_MEMBERSMANAGER_CONFIG_TABLE_TEMPLATE_HINT="// html for the table surrounding the rows (items)
@ -376,7 +374,7 @@ COM_MEMBERSMANAGER_CONTRIBUTORS="Contributors"
COM_MEMBERSMANAGER_CORE_PLACEHOLDERS="Core Placeholders"
COM_MEMBERSMANAGER_COULD_NOT_UPLOAD_THE_FILE="Could not upload the file!"
COM_MEMBERSMANAGER_CPANEL_ACCESS_SITE="cPanel (Site) Access"
COM_MEMBERSMANAGER_CPANEL_ACCESS_SITE_DESC=" Allows the users in this group to access site cpanel."
COM_MEMBERSMANAGER_CPANEL_ACCESS_SITE_DESC="Allows the users in this group to access site cpanel."
COM_MEMBERSMANAGER_CREATE_NEW_S="Create New %s"
COM_MEMBERSMANAGER_DASH="Dashboard"
COM_MEMBERSMANAGER_DASHBOARD="Members Manager Dashboard"
@ -385,14 +383,14 @@ COM_MEMBERSMANAGER_DOES_NOT_HAVE_A_VALID_FILE_TYPE="Does not have a valid file t
COM_MEMBERSMANAGER_DOWNLOAD="Download"
COM_MEMBERSMANAGER_EDIT="Edit"
COM_MEMBERSMANAGER_EDIT_CREATED_BY="Edit Created By"
COM_MEMBERSMANAGER_EDIT_CREATED_BY_DESC=" Allows users in this group to edit created by."
COM_MEMBERSMANAGER_EDIT_CREATED_BY_DESC="Allows users in this group to edit created by."
COM_MEMBERSMANAGER_EDIT_CREATED_DATE="Edit Created Date"
COM_MEMBERSMANAGER_EDIT_CREATED_DATE_DESC=" Allows users in this group to edit created date."
COM_MEMBERSMANAGER_EDIT_CREATED_DATE_DESC="Allows users in this group to edit created date."
COM_MEMBERSMANAGER_EDIT_S="Edit %s"
COM_MEMBERSMANAGER_EDIT_VERSIONS="Edit Version"
COM_MEMBERSMANAGER_EDIT_VERSIONS_DESC=" Allows users in this group to edit versions."
COM_MEMBERSMANAGER_EDIT_VERSIONS_DESC="Allows users in this group to edit versions."
COM_MEMBERSMANAGER_EXPORT_DATA="Export Data"
COM_MEMBERSMANAGER_EXPORT_DATA_DESC=" Allows users in this group to export data."
COM_MEMBERSMANAGER_EXPORT_DATA_DESC="Allows users in this group to export data."
COM_MEMBERSMANAGER_EXPORT_FAILED="Export Failed"
COM_MEMBERSMANAGER_GREAT_SS_IS_AVAILABLE="Great, %s(%s) is available!"
COM_MEMBERSMANAGER_HELP_MANAGER="Help"
@ -400,7 +398,7 @@ COM_MEMBERSMANAGER_HTWOCURL_NOT_FOUNDHTWOPPLEASE_SETUP_CURL_ON_YOUR_SYSTEM_OR_BM
COM_MEMBERSMANAGER_IMAGE="Image"
COM_MEMBERSMANAGER_IMPORT_CONTINUE="Continue"
COM_MEMBERSMANAGER_IMPORT_DATA="Import Data"
COM_MEMBERSMANAGER_IMPORT_DATA_DESC=" Allows users in this group to import data."
COM_MEMBERSMANAGER_IMPORT_DATA_DESC="Allows users in this group to import data."
COM_MEMBERSMANAGER_IMPORT_ERROR="Import error."
COM_MEMBERSMANAGER_IMPORT_FAILED="Import Failed"
COM_MEMBERSMANAGER_IMPORT_FILE_COLUMNS="File Columns"
@ -430,7 +428,7 @@ COM_MEMBERSMANAGER_IMPORT_SELECT_FILE_DIRECTORY="Set the path to file"
COM_MEMBERSMANAGER_IMPORT_SELECT_FILE_FOR_MEMBERS="Select the file to import data to members."
COM_MEMBERSMANAGER_IMPORT_SELECT_FILE_FOR_TYPES="Select the file to import data to types."
COM_MEMBERSMANAGER_IMPORT_SELECT_FILE_URL="Enter file URL"
COM_MEMBERSMANAGER_IMPORT_SUCCESS="Import Success!"
COM_MEMBERSMANAGER_IMPORT_SUCCESS="Great! Import successful."
COM_MEMBERSMANAGER_IMPORT_TABLE_COLUMNS="Table Columns"
COM_MEMBERSMANAGER_IMPORT_TITLE="Data Importer"
COM_MEMBERSMANAGER_IMPORT_UNABLE_TO_FIND_IMPORT_PACKAGE="Package to import not found."
@ -457,7 +455,7 @@ COM_MEMBERSMANAGER_MEMBERS_ACCESS_PASSWORD_DESC="Allows the users in this group
COM_MEMBERSMANAGER_MEMBERS_ACCESS_PROFILE_IMAGE="Members Access Profile Image"
COM_MEMBERSMANAGER_MEMBERS_ACCESS_PROFILE_IMAGE_DESC="Allows the users in this group to access profile image of member"
COM_MEMBERSMANAGER_MEMBERS_ACCESS_SITE="Members (Site) Access"
COM_MEMBERSMANAGER_MEMBERS_ACCESS_SITE_DESC=" Allows the users in this group to access site members."
COM_MEMBERSMANAGER_MEMBERS_ACCESS_SITE_DESC="Allows the users in this group to access site members."
COM_MEMBERSMANAGER_MEMBERS_ACCESS_USEREMAIL="Members Access Useremail"
COM_MEMBERSMANAGER_MEMBERS_ACCESS_USEREMAIL_DESC="Allows the users in this group to access useremail of member"
COM_MEMBERSMANAGER_MEMBERS_ACCESS_USERNAME="Members Access Username"
@ -576,7 +574,7 @@ COM_MEMBERSMANAGER_MEMBER_ERROR_UNIQUE_ALIAS="Another Member has the same alias.
COM_MEMBERSMANAGER_MEMBER_ID="Id"
COM_MEMBERSMANAGER_MEMBER_ID_MISMATCH_SS_COULD_NOT_BE_SAVED="Member ID mismatch, %s-%s could not be saved."
COM_MEMBERSMANAGER_MEMBER_IMPORT_JOOMLA_USERS_BUTTON_ACCESS="Member Import Joomla Users Button Access"
COM_MEMBERSMANAGER_MEMBER_IMPORT_JOOMLA_USERS_BUTTON_ACCESS_DESC=" Allows the users in this group to access the import joomla users button."
COM_MEMBERSMANAGER_MEMBER_IMPORT_JOOMLA_USERS_BUTTON_ACCESS_DESC="Allows the users in this group to access the import joomla users button."
COM_MEMBERSMANAGER_MEMBER_IS_ALREADY_LINKED_TO_AN_USER_THIS_CAN_NOT_BE_CHANGED_CONTACT_YOUR_SYSTEM_ADMINISTRATOR_IF_YOU_NEED_MORE_HELP="Member is already linked to an USER, this can not be changed. Contact your system administrator if you need more help."
COM_MEMBERSMANAGER_MEMBER_MAIN="Main"
COM_MEMBERSMANAGER_MEMBER_MAIN_LOGIN="Main & Login"
@ -604,10 +602,9 @@ COM_MEMBERSMANAGER_MEMBER_PASSWORD_DESCRIPTION="Enter the password for the membe
COM_MEMBERSMANAGER_MEMBER_PASSWORD_LABEL="Password"
COM_MEMBERSMANAGER_MEMBER_PERMISSION="Permissions"
COM_MEMBERSMANAGER_MEMBER_PROFILE_ACCESS_SITE="Member Profile (Site) Access"
COM_MEMBERSMANAGER_MEMBER_PROFILE_ACCESS_SITE_DESC=" Allows the users in this group to access site member profile."
COM_MEMBERSMANAGER_MEMBER_PROFILE_ACCESS_SITE_DESC="Allows the users in this group to access site member profile."
COM_MEMBERSMANAGER_MEMBER_PROFILE_IMAGE="Profile Image"
COM_MEMBERSMANAGER_MEMBER_PROFILE_IMAGE_UPLOADER_DESCRIPTION="
<div id='uikittwo-profile-image-uploader' style='display:none'>
COM_MEMBERSMANAGER_MEMBER_PROFILE_IMAGE_UPLOADER_DESCRIPTION="<div id='uikittwo-profile-image-uploader' style='display:none'>
<div id='uikittwo-upload-drop-profile-image' class='uk-placeholder uk-text-center'>
<br /><br />
<i class='uk-icon-cloud-upload uk-icon-medium uk-text-muted uk-margin-small-right'></i>
@ -664,7 +661,7 @@ COM_MEMBERSMANAGER_MEMBER_VERSION_LABEL="Revision"
COM_MEMBERSMANAGER_MEMBER_WAS_CREATED_SUCCESSFULLY_AND_THE_LOGIN_DETAILS_WAS_EMAILED_TO_THE_MEMBER="Member was created successfully, and the login details was emailed to the member."
COM_MEMBERSMANAGER_MEMBER_WAS_NOT_ADDED_TO_ANY_GROUPS_PLEASE_INFORM_YOUR_SYSTEM_ADMINISTRATOR="Member was not added to any groups. Please inform your system administrator."
COM_MEMBERSMANAGER_NEW="New"
COM_MEMBERSMANAGER_NOT_FOUND_OR_ACCESS_DENIED="Not found or access denied!"
COM_MEMBERSMANAGER_NOT_FOUND_OR_ACCESS_DENIED="Not found, or access denied."
COM_MEMBERSMANAGER_NO_ACCESS_GRANTED="No Access Granted!"
COM_MEMBERSMANAGER_NO_IMPORT_FILE_SELECTED="No import file selected."
COM_MEMBERSMANAGER_NO_MEMBERS_ARE_SET_PLEASE_SET_SOME_AND_TRY_AGAIN="No members are set, please set some and try again."
@ -818,7 +815,7 @@ COM_MEMBERSMANAGER_TYPE_TYPE="Type"
COM_MEMBERSMANAGER_TYPE_TYPE_DESCRIPTION="Select the type/s"
COM_MEMBERSMANAGER_TYPE_TYPE_LABEL="can Link"
COM_MEMBERSMANAGER_TYPE_UPDATE_TYPES_BUTTON_ACCESS="Type Update Types Button Access"
COM_MEMBERSMANAGER_TYPE_UPDATE_TYPES_BUTTON_ACCESS_DESC=" Allows the users in this group to access the update types button."
COM_MEMBERSMANAGER_TYPE_UPDATE_TYPES_BUTTON_ACCESS_DESC="Allows the users in this group to access the update types button."
COM_MEMBERSMANAGER_TYPE_VERSION_DESC="A count of the number of times this Type has been revised."
COM_MEMBERSMANAGER_TYPE_VERSION_LABEL="Revision"
COM_MEMBERSMANAGER_TYPE_VIEW_RELATIONSHIP="View Relationship"
@ -828,7 +825,7 @@ COM_MEMBERSMANAGER_TYPE_YES="Yes"
COM_MEMBERSMANAGER_UPDATE_SUCCESS="Update Success!"
COM_MEMBERSMANAGER_UPDATE_TYPES="Update Types"
COM_MEMBERSMANAGER_USE_BATCH="Use Batch"
COM_MEMBERSMANAGER_USE_BATCH_DESC=" Allows users in this group to use batch copy/update method."
COM_MEMBERSMANAGER_USE_BATCH_DESC="Allows users in this group to use batch copy/update method."
COM_MEMBERSMANAGER_VALUE_ALREADY_TAKEN_PLEASE_TRY_AGAIN="Value already taken, please try again."
COM_MEMBERSMANAGER_VERSION="Version"
COM_MEMBERSMANAGER_WARNING_IMPORT_FILE_ERROR="Warning, import file error."

View File

@ -1,17 +1,17 @@
COM_MEMBERSMANAGER="Members Manager"
COM_MEMBERSMANAGER_CONFIGURATION="Members Manager Configuration"
COM_MEMBERSMANAGER_CPANEL_ACCESS_SITE="cPanel (Site) Access"
COM_MEMBERSMANAGER_CPANEL_ACCESS_SITE_DESC=" Allows the users in this group to access site cpanel."
COM_MEMBERSMANAGER_CPANEL_ACCESS_SITE_DESC="Allows the users in this group to access site cpanel."
COM_MEMBERSMANAGER_EDIT_CREATED_BY="Edit Created By"
COM_MEMBERSMANAGER_EDIT_CREATED_BY_DESC=" Allows users in this group to edit created by."
COM_MEMBERSMANAGER_EDIT_CREATED_BY_DESC="Allows users in this group to edit created by."
COM_MEMBERSMANAGER_EDIT_CREATED_DATE="Edit Created Date"
COM_MEMBERSMANAGER_EDIT_CREATED_DATE_DESC=" Allows users in this group to edit created date."
COM_MEMBERSMANAGER_EDIT_CREATED_DATE_DESC="Allows users in this group to edit created date."
COM_MEMBERSMANAGER_EDIT_VERSIONS="Edit Version"
COM_MEMBERSMANAGER_EDIT_VERSIONS_DESC=" Allows users in this group to edit versions."
COM_MEMBERSMANAGER_EDIT_VERSIONS_DESC="Allows users in this group to edit versions."
COM_MEMBERSMANAGER_EXPORT_DATA="Export Data"
COM_MEMBERSMANAGER_EXPORT_DATA_DESC=" Allows users in this group to export data."
COM_MEMBERSMANAGER_EXPORT_DATA_DESC="Allows users in this group to export data."
COM_MEMBERSMANAGER_IMPORT_DATA="Import Data"
COM_MEMBERSMANAGER_IMPORT_DATA_DESC=" Allows users in this group to import data."
COM_MEMBERSMANAGER_IMPORT_DATA_DESC="Allows users in this group to import data."
COM_MEMBERSMANAGER_MEMBERS_ACCESS="Members Access"
COM_MEMBERSMANAGER_MEMBERS_ACCESS_DESC="Allows the users in this group to access access members"
COM_MEMBERSMANAGER_MEMBERS_ACCESS_EMAIL="Members Access Email"
@ -23,7 +23,7 @@ COM_MEMBERSMANAGER_MEMBERS_ACCESS_PASSWORD_DESC="Allows the users in this group
COM_MEMBERSMANAGER_MEMBERS_ACCESS_PROFILE_IMAGE="Members Access Profile Image"
COM_MEMBERSMANAGER_MEMBERS_ACCESS_PROFILE_IMAGE_DESC="Allows the users in this group to access profile image of member"
COM_MEMBERSMANAGER_MEMBERS_ACCESS_SITE="Members (Site) Access"
COM_MEMBERSMANAGER_MEMBERS_ACCESS_SITE_DESC=" Allows the users in this group to access site members."
COM_MEMBERSMANAGER_MEMBERS_ACCESS_SITE_DESC="Allows the users in this group to access site members."
COM_MEMBERSMANAGER_MEMBERS_ACCESS_USEREMAIL="Members Access Useremail"
COM_MEMBERSMANAGER_MEMBERS_ACCESS_USEREMAIL_DESC="Allows the users in this group to access useremail of member"
COM_MEMBERSMANAGER_MEMBERS_ACCESS_USERNAME="Members Access Username"
@ -105,9 +105,9 @@ COM_MEMBERSMANAGER_MEMBERS_VIEW_USERNAME="Members View Username"
COM_MEMBERSMANAGER_MEMBERS_VIEW_USERNAME_DESC="Allows the users in this group to view username of member"
COM_MEMBERSMANAGER_MEMBERS_VIEW_USER_DESC="Allows the users in this group to view user of member"
COM_MEMBERSMANAGER_MEMBER_IMPORT_JOOMLA_USERS_BUTTON_ACCESS="Member Import Joomla Users Button Access"
COM_MEMBERSMANAGER_MEMBER_IMPORT_JOOMLA_USERS_BUTTON_ACCESS_DESC=" Allows the users in this group to access the import joomla users button."
COM_MEMBERSMANAGER_MEMBER_IMPORT_JOOMLA_USERS_BUTTON_ACCESS_DESC="Allows the users in this group to access the import joomla users button."
COM_MEMBERSMANAGER_MEMBER_PROFILE_ACCESS_SITE="Member Profile (Site) Access"
COM_MEMBERSMANAGER_MEMBER_PROFILE_ACCESS_SITE_DESC=" Allows the users in this group to access site member profile."
COM_MEMBERSMANAGER_MEMBER_PROFILE_ACCESS_SITE_DESC="Allows the users in this group to access site member profile."
COM_MEMBERSMANAGER_MENU="&#9733; Members Manager"
COM_MEMBERSMANAGER_MENU_CPANEL_DESC="Control Panel for Members"
COM_MEMBERSMANAGER_MENU_CPANEL_OPTION="cPanel"
@ -162,6 +162,6 @@ COM_MEMBERSMANAGER_TYPES_IMPORT_DESC="Allows the users in this group to import i
COM_MEMBERSMANAGER_TYPES_SUBMENU="Types Submenu"
COM_MEMBERSMANAGER_TYPES_SUBMENU_DESC="Allows the users in this group to submenu of type"
COM_MEMBERSMANAGER_TYPE_UPDATE_TYPES_BUTTON_ACCESS="Type Update Types Button Access"
COM_MEMBERSMANAGER_TYPE_UPDATE_TYPES_BUTTON_ACCESS_DESC=" Allows the users in this group to access the update types button."
COM_MEMBERSMANAGER_TYPE_UPDATE_TYPES_BUTTON_ACCESS_DESC="Allows the users in this group to access the update types button."
COM_MEMBERSMANAGER_USE_BATCH="Use Batch"
COM_MEMBERSMANAGER_USE_BATCH_DESC=" Allows users in this group to use batch copy/update method."
COM_MEMBERSMANAGER_USE_BATCH_DESC="Allows users in this group to use batch copy/update method."

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('JPATH_BASE') or die;

View File

@ -9,12 +9,24 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
$fields = $displayData->get('fields') ?: array(
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model method
// this name combination of tab and layout in the method name is the only work around
// seeing that JCB uses those two values (tab_name & layout_name) as the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'token',
'account',
'user'
@ -23,6 +35,7 @@ $fields = $displayData->get('fields') ?: array(
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<div class="form-inline form-inline-header">
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
@ -31,3 +44,4 @@ $hiddenFields = $displayData->get('hidden_fields') ?: array();
<?php echo $form->renderField($field, null, null, array('class' => 'control-wrapper-' . $field)); ?>
<?php endforeach; ?>
</div>
<?php endif; ?>

View File

@ -9,12 +9,24 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
$fields = $displayData->get('fields') ?: array(
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model method
// this name combination of tab and layout in the method name is the only work around
// seeing that JCB uses those two values (tab_name & layout_name) as the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'type',
'name',
'surname',
@ -31,9 +43,11 @@ $fields = $displayData->get('fields') ?: array(
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type', 'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null, array('class' => 'control-wrapper-' . $field)); ?>
<?php endforeach; ?>
<?php endif; ?>

View File

@ -9,21 +9,35 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
$fields = $displayData->get('fields') ?: array(
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model method
// this name combination of tab and layout in the method name is the only work around
// seeing that JCB uses those two values (tab_name & layout_name) as the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'profile_image_uploader'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type', 'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null, array('class' => 'control-wrapper-' . $field)); ?>
<?php endforeach; ?>
<?php endif; ?>

View File

@ -9,12 +9,24 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
$fields = $displayData->get('fields') ?: array(
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model method
// this name combination of tab and layout in the method name is the only work around
// seeing that JCB uses those two values (tab_name & layout_name) as the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'created',
'created_by',
'modified',
@ -24,9 +36,11 @@ $fields = $displayData->get('fields') ?: array(
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type', 'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null, array('class' => 'control-wrapper-' . $field)); ?>
<?php endforeach; ?>
<?php endif; ?>

View File

@ -9,12 +9,24 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
$fields = $displayData->get('fields') ?: array(
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model method
// this name combination of tab and layout in the method name is the only work around
// seeing that JCB uses those two values (tab_name & layout_name) as the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'published',
'ordering',
'access',
@ -26,9 +38,11 @@ $fields = $displayData->get('fields') ?: array(
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type', 'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null, array('class' => 'control-wrapper-' . $field)); ?>
<?php endforeach; ?>
<?php endif; ?>

View File

@ -9,12 +9,24 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
$fields = $displayData->get('fields') ?: array(
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model method
// this name combination of tab and layout in the method name is the only work around
// seeing that JCB uses those two values (tab_name & layout_name) as the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'add_relationship',
'type',
'edit_relationship',
@ -24,9 +36,11 @@ $fields = $displayData->get('fields') ?: array(
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type', 'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null, array('class' => 'control-wrapper-' . $field)); ?>
<?php endforeach; ?>
<?php endif; ?>

View File

@ -9,12 +9,24 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
$fields = $displayData->get('fields') ?: array(
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model method
// this name combination of tab and layout in the method name is the only work around
// seeing that JCB uses those two values (tab_name & layout_name) as the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'communicate',
'field_type'
);
@ -22,9 +34,11 @@ $fields = $displayData->get('fields') ?: array(
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type', 'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null, array('class' => 'control-wrapper-' . $field)); ?>
<?php endforeach; ?>
<?php endif; ?>

View File

@ -9,12 +9,24 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
$fields = $displayData->get('fields') ?: array(
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model method
// this name combination of tab and layout in the method name is the only work around
// seeing that JCB uses those two values (tab_name & layout_name) as the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'name',
'alias'
);
@ -22,6 +34,7 @@ $fields = $displayData->get('fields') ?: array(
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<div class="form-inline form-inline-header">
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
@ -30,3 +43,4 @@ $hiddenFields = $displayData->get('hidden_fields') ?: array();
<?php echo $form->renderField($field, null, null, array('class' => 'control-wrapper-' . $field)); ?>
<?php endforeach; ?>
</div>
<?php endif; ?>

View File

@ -9,18 +9,31 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
$fields = $displayData->get('fields') ?: array(
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model method
// this name combination of tab and layout in the method name is the only work around
// seeing that JCB uses those two values (tab_name & layout_name) as the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'description'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<div class="form-vertical">
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
@ -29,3 +42,4 @@ $hiddenFields = $displayData->get('hidden_fields') ?: array();
<?php echo $form->renderField($field, null, null, array('class' => 'control-wrapper-' . $field)); ?>
<?php endforeach; ?>
</div>
<?php endif; ?>

View File

@ -9,21 +9,35 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
$fields = $displayData->get('fields') ?: array(
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model method
// this name combination of tab and layout in the method name is the only work around
// seeing that JCB uses those two values (tab_name & layout_name) as the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'groups_target'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type', 'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null, array('class' => 'control-wrapper-' . $field)); ?>
<?php endforeach; ?>
<?php endif; ?>

View File

@ -9,21 +9,35 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
$fields = $displayData->get('fields') ?: array(
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model method
// this name combination of tab and layout in the method name is the only work around
// seeing that JCB uses those two values (tab_name & layout_name) as the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'groups_access'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type', 'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null, array('class' => 'control-wrapper-' . $field)); ?>
<?php endforeach; ?>
<?php endif; ?>

View File

@ -9,12 +9,24 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
$fields = $displayData->get('fields') ?: array(
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model method
// this name combination of tab and layout in the method name is the only work around
// seeing that JCB uses those two values (tab_name & layout_name) as the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'created',
'created_by',
'modified',
@ -24,9 +36,11 @@ $fields = $displayData->get('fields') ?: array(
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type', 'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null, array('class' => 'control-wrapper-' . $field)); ?>
<?php endforeach; ?>
<?php endif; ?>

View File

@ -9,12 +9,24 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
$fields = $displayData->get('fields') ?: array(
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model method
// this name combination of tab and layout in the method name is the only work around
// seeing that JCB uses those two values (tab_name & layout_name) as the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'published',
'ordering',
'access',
@ -26,9 +38,11 @@ $fields = $displayData->get('fields') ?: array(
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type', 'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null, array('class' => 'control-wrapper-' . $field)); ?>
<?php endforeach; ?>
<?php endif; ?>

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.tabstate');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
@ -670,7 +671,7 @@ class MembersmanagerModelAjax extends JModelList
$header = '';
}
// get the core component helper class & get placeholders
if (($helperClass = MembersmanagerHelper::getHelperClass(MembersmanagerHelper::getCoreName())) !== false && ($placeholders = $helperClass::getAnyPlaceHolders($getType)) !== false)
if (($helperClass = MembersmanagerHelper::getHelperClass('membersmanager')) !== false && ($placeholders = $helperClass::getAnyPlaceHolders($getType)) !== false)
{
return '<div>' . $header . '<code style="display: inline-block; padding: 2px; margin: 3px;">' .
implode('</code> <code style="display: inline-block; padding: 2px; margin: 3px;">', $placeholders) .

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
@ -38,15 +39,15 @@ class JFormFieldMainmembers extends JFormFieldList
protected function getInput()
{
// see if we should add buttons
$setButton = $this->getAttribute('button');
$set_button = $this->getAttribute('button');
// get html
$html = parent::getInput();
// if true set button
if ($setButton === 'true')
if ($set_button === 'true')
{
$button = array();
$script = array();
$buttonName = $this->getAttribute('name');
$button_code_name = $this->getAttribute('name');
// get the input from url
$app = JFactory::getApplication();
$jinput = $app->input;
@ -70,55 +71,52 @@ class JFormFieldMainmembers extends JFormFieldList
$ref .= '&amp;return=' . $_return;
$refJ .= '&return=' . $_return;
}
// get button label
$button_label = trim($button_code_name);
$button_label = preg_replace('/_+/', ' ', $button_label);
$button_label = preg_replace('/\s+/', ' ', $button_label);
$button_label = preg_replace("/[^A-Za-z ]/", '', $button_label);
$button_label = ucfirst(strtolower($button_label));
// get user object
$user = JFactory::getUser();
// only add if user allowed to create member
if ($user->authorise('member.create', 'com_membersmanager') && $app->isAdmin()) // TODO for now only in admin area.
{
// build Create button
$buttonNamee = trim($buttonName);
$buttonNamee = preg_replace('/_+/', ' ', $buttonNamee);
$buttonNamee = preg_replace('/\s+/', ' ', $buttonNamee);
$buttonNamee = preg_replace("/[^A-Za-z ]/", '', $buttonNamee);
$buttonNamee = ucfirst(strtolower($buttonNamee));
$button[] = '<a id="'.$buttonName.'Create" class="btn btn-small btn-success hasTooltip" title="'.JText::sprintf('COM_MEMBERSMANAGER_CREATE_NEW_S', $buttonNamee).'" style="border-radius: 0px 4px 4px 0px; padding: 4px 4px 4px 7px;"
$button[] = '<a id="'.$button_code_name.'Create" class="btn btn-small btn-success hasTooltip" title="'.JText::sprintf('COM_MEMBERSMANAGER_CREATE_NEW_S', $button_label).'" style="border-radius: 0px 4px 4px 0px; padding: 4px 4px 4px 7px;"
href="index.php?option=com_membersmanager&amp;view=member&amp;layout=edit'.$ref.'" >
<span class="icon-new icon-white"></span></a>';
}
// only add if user allowed to edit member
if (($buttonName === 'member' || $buttonName === 'members') && $user->authorise('member.edit', 'com_membersmanager') && $app->isAdmin()) // TODO for now only in admin area.
if ($user->authorise('member.edit', 'com_membersmanager') && $app->isAdmin()) // TODO for now only in admin area.
{
// build edit button
$buttonNamee = trim($buttonName);
$buttonNamee = preg_replace('/_+/', ' ', $buttonNamee);
$buttonNamee = preg_replace('/\s+/', ' ', $buttonNamee);
$buttonNamee = preg_replace("/[^A-Za-z ]/", '', $buttonNamee);
$buttonNamee = ucfirst(strtolower($buttonNamee));
$button[] = '<a id="'.$buttonName.'Edit" class="btn btn-small hasTooltip" title="'.JText::sprintf('COM_MEMBERSMANAGER_EDIT_S', $buttonNamee).'" style="display: none; padding: 4px 4px 4px 7px;" href="#" >
$button[] = '<a id="'.$button_code_name.'Edit" class="btn btn-small hasTooltip" title="'.JText::sprintf('COM_MEMBERSMANAGER_EDIT_S', $button_label).'" style="display: none; padding: 4px 4px 4px 7px;" href="#" >
<span class="icon-edit"></span></a>';
// build script
$script[] = "
jQuery(document).ready(function() {
jQuery('#adminForm').on('change', '#jform_".$buttonName."',function (e) {
jQuery('#adminForm').on('change', '#jform_".$button_code_name."',function (e) {
e.preventDefault();
var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val();
".$buttonName."Button(".$buttonName."Value);
var ".$button_code_name."Value = jQuery('#jform_".$button_code_name."').val();
".$button_code_name."Button(".$button_code_name."Value);
});
var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val();
".$buttonName."Button(".$buttonName."Value);
var ".$button_code_name."Value = jQuery('#jform_".$button_code_name."').val();
".$button_code_name."Button(".$button_code_name."Value);
});
function ".$buttonName."Button(value) {
function ".$button_code_name."Button(value) {
if (value > 0) {
// hide the create button
jQuery('#".$buttonName."Create').hide();
jQuery('#".$button_code_name."Create').hide();
// show edit button
jQuery('#".$buttonName."Edit').show();
jQuery('#".$button_code_name."Edit').show();
var url = 'index.php?option=com_membersmanager&view=members&task=member.edit&id='+value+'".$refJ."';
jQuery('#".$buttonName."Edit').attr('href', url);
jQuery('#".$button_code_name."Edit').attr('href', url);
} else {
// show the create button
jQuery('#".$buttonName."Create').show();
jQuery('#".$button_code_name."Create').show();
// hide edit button
jQuery('#".$buttonName."Edit').hide();
jQuery('#".$button_code_name."Edit').hide();
}
}";
}

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
@ -38,15 +39,15 @@ class JFormFieldTypes extends JFormFieldList
protected function getInput()
{
// see if we should add buttons
$setButton = $this->getAttribute('button');
$set_button = $this->getAttribute('button');
// get html
$html = parent::getInput();
// if true set button
if ($setButton === 'true')
if ($set_button === 'true')
{
$button = array();
$script = array();
$buttonName = $this->getAttribute('name');
$button_code_name = $this->getAttribute('name');
// get the input from url
$app = JFactory::getApplication();
$jinput = $app->input;
@ -70,55 +71,52 @@ class JFormFieldTypes extends JFormFieldList
$ref .= '&amp;return=' . $_return;
$refJ .= '&return=' . $_return;
}
// get button label
$button_label = trim($button_code_name);
$button_label = preg_replace('/_+/', ' ', $button_label);
$button_label = preg_replace('/\s+/', ' ', $button_label);
$button_label = preg_replace("/[^A-Za-z ]/", '', $button_label);
$button_label = ucfirst(strtolower($button_label));
// get user object
$user = JFactory::getUser();
// only add if user allowed to create type
if ($user->authorise('type.create', 'com_membersmanager') && $app->isAdmin()) // TODO for now only in admin area.
{
// build Create button
$buttonNamee = trim($buttonName);
$buttonNamee = preg_replace('/_+/', ' ', $buttonNamee);
$buttonNamee = preg_replace('/\s+/', ' ', $buttonNamee);
$buttonNamee = preg_replace("/[^A-Za-z ]/", '', $buttonNamee);
$buttonNamee = ucfirst(strtolower($buttonNamee));
$button[] = '<a id="'.$buttonName.'Create" class="btn btn-small btn-success hasTooltip" title="'.JText::sprintf('COM_MEMBERSMANAGER_CREATE_NEW_S', $buttonNamee).'" style="border-radius: 0px 4px 4px 0px; padding: 4px 4px 4px 7px;"
$button[] = '<a id="'.$button_code_name.'Create" class="btn btn-small btn-success hasTooltip" title="'.JText::sprintf('COM_MEMBERSMANAGER_CREATE_NEW_S', $button_label).'" style="border-radius: 0px 4px 4px 0px; padding: 4px 4px 4px 7px;"
href="index.php?option=com_membersmanager&amp;view=type&amp;layout=edit'.$ref.'" >
<span class="icon-new icon-white"></span></a>';
}
// only add if user allowed to edit type
if (($buttonName === 'type' || $buttonName === 'types') && $user->authorise('type.edit', 'com_membersmanager') && $app->isAdmin()) // TODO for now only in admin area.
if ($user->authorise('type.edit', 'com_membersmanager') && $app->isAdmin()) // TODO for now only in admin area.
{
// build edit button
$buttonNamee = trim($buttonName);
$buttonNamee = preg_replace('/_+/', ' ', $buttonNamee);
$buttonNamee = preg_replace('/\s+/', ' ', $buttonNamee);
$buttonNamee = preg_replace("/[^A-Za-z ]/", '', $buttonNamee);
$buttonNamee = ucfirst(strtolower($buttonNamee));
$button[] = '<a id="'.$buttonName.'Edit" class="btn btn-small hasTooltip" title="'.JText::sprintf('COM_MEMBERSMANAGER_EDIT_S', $buttonNamee).'" style="display: none; padding: 4px 4px 4px 7px;" href="#" >
$button[] = '<a id="'.$button_code_name.'Edit" class="btn btn-small hasTooltip" title="'.JText::sprintf('COM_MEMBERSMANAGER_EDIT_S', $button_label).'" style="display: none; padding: 4px 4px 4px 7px;" href="#" >
<span class="icon-edit"></span></a>';
// build script
$script[] = "
jQuery(document).ready(function() {
jQuery('#adminForm').on('change', '#jform_".$buttonName."',function (e) {
jQuery('#adminForm').on('change', '#jform_".$button_code_name."',function (e) {
e.preventDefault();
var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val();
".$buttonName."Button(".$buttonName."Value);
var ".$button_code_name."Value = jQuery('#jform_".$button_code_name."').val();
".$button_code_name."Button(".$button_code_name."Value);
});
var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val();
".$buttonName."Button(".$buttonName."Value);
var ".$button_code_name."Value = jQuery('#jform_".$button_code_name."').val();
".$button_code_name."Button(".$button_code_name."Value);
});
function ".$buttonName."Button(value) {
function ".$button_code_name."Button(value) {
if (value > 0) {
// hide the create button
jQuery('#".$buttonName."Create').hide();
jQuery('#".$button_code_name."Create').hide();
// show edit button
jQuery('#".$buttonName."Edit').show();
jQuery('#".$button_code_name."Edit').show();
var url = 'index.php?option=com_membersmanager&view=types&task=type.edit&id='+value+'".$refJ."';
jQuery('#".$buttonName."Edit').attr('href', url);
jQuery('#".$button_code_name."Edit').attr('href', url);
} else {
// show the create button
jQuery('#".$buttonName."Create').show();
jQuery('#".$button_code_name."Create').show();
// hide edit button
jQuery('#".$buttonName."Edit').hide();
jQuery('#".$button_code_name."Edit').hide();
}
}";
}

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
@ -38,15 +39,15 @@ class JFormFieldTypesonmember extends JFormFieldList
protected function getInput()
{
// see if we should add buttons
$setButton = $this->getAttribute('button');
$set_button = $this->getAttribute('button');
// get html
$html = parent::getInput();
// if true set button
if ($setButton === 'true')
if ($set_button === 'true')
{
$button = array();
$script = array();
$buttonName = $this->getAttribute('name');
$button_code_name = $this->getAttribute('name');
// get the input from url
$app = JFactory::getApplication();
$jinput = $app->input;
@ -70,55 +71,52 @@ class JFormFieldTypesonmember extends JFormFieldList
$ref .= '&amp;return=' . $_return;
$refJ .= '&return=' . $_return;
}
// get button label
$button_label = trim($button_code_name);
$button_label = preg_replace('/_+/', ' ', $button_label);
$button_label = preg_replace('/\s+/', ' ', $button_label);
$button_label = preg_replace("/[^A-Za-z ]/", '', $button_label);
$button_label = ucfirst(strtolower($button_label));
// get user object
$user = JFactory::getUser();
// only add if user allowed to create type
if ($user->authorise('type.create', 'com_membersmanager') && $app->isAdmin()) // TODO for now only in admin area.
{
// build Create button
$buttonNamee = trim($buttonName);
$buttonNamee = preg_replace('/_+/', ' ', $buttonNamee);
$buttonNamee = preg_replace('/\s+/', ' ', $buttonNamee);
$buttonNamee = preg_replace("/[^A-Za-z ]/", '', $buttonNamee);
$buttonNamee = ucfirst(strtolower($buttonNamee));
$button[] = '<a id="'.$buttonName.'Create" class="btn btn-small btn-success hasTooltip" title="'.JText::sprintf('COM_MEMBERSMANAGER_CREATE_NEW_S', $buttonNamee).'" style="border-radius: 0px 4px 4px 0px; padding: 4px 4px 4px 7px;"
$button[] = '<a id="'.$button_code_name.'Create" class="btn btn-small btn-success hasTooltip" title="'.JText::sprintf('COM_MEMBERSMANAGER_CREATE_NEW_S', $button_label).'" style="border-radius: 0px 4px 4px 0px; padding: 4px 4px 4px 7px;"
href="index.php?option=com_membersmanager&amp;view=type&amp;layout=edit'.$ref.'" >
<span class="icon-new icon-white"></span></a>';
}
// only add if user allowed to edit type
if (($buttonName === 'type' || $buttonName === 'types') && $user->authorise('type.edit', 'com_membersmanager') && $app->isAdmin()) // TODO for now only in admin area.
if ($user->authorise('type.edit', 'com_membersmanager') && $app->isAdmin()) // TODO for now only in admin area.
{
// build edit button
$buttonNamee = trim($buttonName);
$buttonNamee = preg_replace('/_+/', ' ', $buttonNamee);
$buttonNamee = preg_replace('/\s+/', ' ', $buttonNamee);
$buttonNamee = preg_replace("/[^A-Za-z ]/", '', $buttonNamee);
$buttonNamee = ucfirst(strtolower($buttonNamee));
$button[] = '<a id="'.$buttonName.'Edit" class="btn btn-small hasTooltip" title="'.JText::sprintf('COM_MEMBERSMANAGER_EDIT_S', $buttonNamee).'" style="display: none; padding: 4px 4px 4px 7px;" href="#" >
$button[] = '<a id="'.$button_code_name.'Edit" class="btn btn-small hasTooltip" title="'.JText::sprintf('COM_MEMBERSMANAGER_EDIT_S', $button_label).'" style="display: none; padding: 4px 4px 4px 7px;" href="#" >
<span class="icon-edit"></span></a>';
// build script
$script[] = "
jQuery(document).ready(function() {
jQuery('#adminForm').on('change', '#jform_".$buttonName."',function (e) {
jQuery('#adminForm').on('change', '#jform_".$button_code_name."',function (e) {
e.preventDefault();
var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val();
".$buttonName."Button(".$buttonName."Value);
var ".$button_code_name."Value = jQuery('#jform_".$button_code_name."').val();
".$button_code_name."Button(".$button_code_name."Value);
});
var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val();
".$buttonName."Button(".$buttonName."Value);
var ".$button_code_name."Value = jQuery('#jform_".$button_code_name."').val();
".$button_code_name."Button(".$button_code_name."Value);
});
function ".$buttonName."Button(value) {
function ".$button_code_name."Button(value) {
if (value > 0) {
// hide the create button
jQuery('#".$buttonName."Create').hide();
jQuery('#".$button_code_name."Create').hide();
// show edit button
jQuery('#".$buttonName."Edit').show();
jQuery('#".$button_code_name."Edit').show();
var url = 'index.php?option=com_membersmanager&view=types&task=type.edit&id='+value+'".$refJ."';
jQuery('#".$buttonName."Edit').attr('href', url);
jQuery('#".$button_code_name."Edit').attr('href', url);
} else {
// show the create button
jQuery('#".$buttonName."Create').show();
jQuery('#".$button_code_name."Create').show();
// hide edit button
jQuery('#".$buttonName."Edit').hide();
jQuery('#".$button_code_name."Edit').hide();
}
}";
}

View File

@ -8,6 +8,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// Some Global Values
jform_vvvvvvvvvv_required = false;
jform_vvvvvvwvvw_required = false;

View File

@ -8,6 +8,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// Some Global Values
jform_vvvvvvyvvz_required = false;
jform_vvvvvvyvwa_required = false;

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
@ -18,13 +19,44 @@ use Joomla\Registry\Registry;
* Membersmanager Member Model
*/
class MembersmanagerModelMember extends JModelAdmin
{
{
/**
* The tab layout fields array.
*
* @var array
*/
protected $tabLayoutFields = array(
'membership' => array(
'left' => array(
'type',
'name',
'surname',
'username',
'email',
'useremail',
'password',
'password_check',
'main_member',
'not_required',
'profile_image'
),
'right' => array(
'profile_image_uploader'
),
'above' => array(
'token',
'account',
'user'
)
)
);
/**
* @var string The prefix to use with controller messages.
* @since 1.6
*/
protected $text_prefix = 'COM_MEMBERSMANAGER';
/**
* The type alias for this content type.
*
@ -1688,19 +1720,39 @@ class MembersmanagerModelMember extends JModelAdmin
// check if token is set
if (empty($data['token']))
{
// get a token
$token = call_user_func(function($data) {
// get the name of this member
if (isset($data['account']) && (1 == $data['account'] || 4 == $data['account']) && isset($data['user']) && $data['user'] > 0)
{
return JFactory::getUser($data['user'])->name;
}
elseif (isset($data['name']) && MembersmanagerHelper::checkString($data['name']))
{
return $data['name'];
}
return MembersmanagerHelper::randomkey(8);
}, $data);
if (!isset($data['surname']))
{
// get a token
$token = call_user_func(function($data) {
// get the name of this member
if (isset($data['account']) && (1 == $data['account'] || 4 == $data['account']) && isset($data['user']) && $data['user'] > 0)
{
return JFactory::getUser($data['user'])->name;
}
elseif (isset($data['name']) && MembersmanagerHelper::checkString($data['name']))
{
return $data['name'];
}
return MembersmanagerHelper::randomkey(8);
}, $data);
}
else
{
// get a token
$token = call_user_func(function($data) {
// get the name of this member
if (isset($data['account']) && (1 == $data['account'] || 4 == $data['account']) && isset($data['user']) && $data['user'] > 0)
{
return JFactory::getUser($data['user'])->name . ' ' . $data['surname'];
}
elseif (isset($data['name']) && MembersmanagerHelper::checkString($data['name']))
{
return $data['name'] . ' ' . $data['surname'];
}
return MembersmanagerHelper::randomkey(8);
}, $data);
}
// split at upper case
$tokenArray = (array) preg_split('/(?=[A-Z])/', trim($token), -1, PREG_SPLIT_NO_EMPTY);
// make string safe

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('JPATH_PLATFORM') or die;

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('JPATH_PLATFORM') or die;

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('JPATH_PLATFORM') or die;

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
@ -18,13 +19,48 @@ use Joomla\Registry\Registry;
* Membersmanager Type Model
*/
class MembersmanagerModelType extends JModelAdmin
{
{
/**
* The tab layout fields array.
*
* @var array
*/
protected $tabLayoutFields = array(
'details' => array(
'left' => array(
'groups_target'
),
'right' => array(
'groups_access'
),
'fullwidth' => array(
'description'
),
'above' => array(
'name',
'alias'
)
),
'advance' => array(
'left' => array(
'add_relationship',
'type',
'edit_relationship',
'view_relationship'
),
'right' => array(
'communicate',
'field_type'
)
)
);
/**
* @var string The prefix to use with controller messages.
* @since 1.6
*/
protected $text_prefix = 'COM_MEMBERSMANAGER';
/**
* The type alias for this content type.
*

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -8,6 +8,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
Joomla.submitbutton = function(task)
{
if (task == ''){

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
@ -243,7 +244,27 @@ class MembersmanagerViewMember extends JViewLegacy
$this->document->addScript( JURI::root(true) .'/media/com_membersmanager/uikit-v3/js/uikit-icons'.$size.'.js', (MembersmanagerHelper::jVersion()->isCompatible('3.8.0')) ? array('version' => 'auto') : 'text/javascript');
}
// add var key
$this->document->addScriptDeclaration("var vastDevMod = '".$this->get('VDM')."';");
$this->document->addScriptDeclaration("var vastDevMod = '" . $this->get('VDM') . "';");
// when this is a create view
if ((empty($this->item->id) || $this->item->id == 0) && !$isAdmin)
{
// update button
$update_button = 'jQuery(document).ready(function($){';
$update_button .= '$(\'#toolbar-save button\').attr("onClick", "Joomla.submitbutton(\'member.saveprofile\');");';
$update_button .= '$(\'#toolbar-save button\').removeClass("btn btn-small button-new btn-success");';
$update_button .= '$(\'#toolbar-save button\').addClass("btn btn-small button-new btn-success");';
$update_button .= '$(\'#toolbar-save button\').html(\'<span class="icon-new icon-white" aria-hidden="true"></span> Create\');';
$update_button .= '});';
$this->document->addScriptDeclaration($update_button);
}
elseif (!$isAdmin && isset($this->item->id) && $this->item->id > 0)
{
// update button
$update_button = 'jQuery(document).ready(function($){';
$update_button .= '$(\'#toolbar-save button\').attr("onClick", "Joomla.submitbutton(\'member.saveprofile\');");';
$update_button .= '});';
$this->document->addScriptDeclaration($update_button);
}
// need to add some language strings
JText::script('COM_MEMBERSMANAGER_VALUE_ALREADY_TAKEN_PLEASE_TRY_AGAIN');
JText::script('view not acceptable. Error');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -8,6 +8,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
Joomla.submitbutton = function(task)
{
if (task == ''){

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -6,7 +6,8 @@
* @github Joomla Members Manager <https://github.com/vdm-io/Joomla-Members-Manager>
* @copyright Copyright (C) 2015. All Rights Reserved
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
*/
body {
background: rgb(204,204,204);

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.2" method="upgrade">
<name>COM_MEMBERSMANAGER</name>
<creationDate>12th June, 2019</creationDate>
<creationDate>14th August, 2019</creationDate>
<author>Llewellyn van der Merwe</author>
<authorEmail>llewellyn@joomlacomponentbuilder.com</authorEmail>
<authorUrl>https://www.joomlacomponentbuilder.com/</authorUrl>
@ -56,9 +56,7 @@ Watch this [tutorial](https://youtu.be/lkE0ZiSWufg) to see how.</p>
<filename>index.html</filename>
<filename>router.php</filename>
<filename>membersmanager.php</filename>
<filename>membersmanager.php</filename>
<filename>router.php</filename>
<filename>controller.php</filename>
<filename>router.php</filename>
<folder>assets</folder>
<folder>helpers</folder>
<folder>controllers</folder>
@ -83,11 +81,6 @@ Watch this [tutorial](https://youtu.be/lkE0ZiSWufg) to see how.</p>
<filename>controller.php</filename>
<filename>index.html</filename>
<filename>membersmanager.php</filename>
<filename>access.xml</filename>
<filename>config.xml</filename>
<filename>controller.php</filename>
<filename>membersmanager.php</filename>
<filename>README.txt</filename>
<filename>README.txt</filename>
<folder>assets</folder>
<folder>controllers</folder>

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
@ -20,21 +21,27 @@ JHTML::_('behavior.modal');
class com_membersmanagerInstallerScript
{
/**
* method to install the component
* Constructor
*
* @return void
* @param JAdapterInstance $parent The object responsible for running this script
*/
function install($parent)
{
}
public function __construct(JAdapterInstance $parent) {}
/**
* method to uninstall the component
* Called on installation
*
* @return void
* @param JAdapterInstance $parent The object responsible for running this script
*
* @return boolean True on success
*/
function uninstall($parent)
public function install(JAdapterInstance $parent) {}
/**
* Called on uninstallation
*
* @param JAdapterInstance $parent The object responsible for running this script
*/
public function uninstall(JAdapterInstance $parent)
{
// Get Application object
$app = JFactory::getApplication();
@ -404,57 +411,63 @@ class com_membersmanagerInstallerScript
}
/**
* method to update the component
* Called on update
*
* @return void
* @param JAdapterInstance $parent The object responsible for running this script
*
* @return boolean True on success
*/
function update($parent)
{
}
public function update(JAdapterInstance $parent){}
/**
* method to run before an install/update/uninstall method
* Called before any type of action
*
* @return void
* @param string $type Which action is happening (install|uninstall|discover_install|update)
* @param JAdapterInstance $parent The object responsible for running this script
*
* @return boolean True on success
*/
function preflight($type, $parent)
public function preflight($type, JAdapterInstance $parent)
{
// get application
$app = JFactory::getApplication();
// is redundant ...hmmm
if ($type == 'uninstall')
// is redundant or so it seems ...hmmm let me know if it works again
if ($type === 'uninstall')
{
return true;
}
// the default for both install and update
$jversion = new JVersion();
if (!$jversion->isCompatible('3.6.0'))
if (!$jversion->isCompatible('3.8.0'))
{
$app->enqueueMessage('Please upgrade to at least Joomla! 3.6.0 before continuing!', 'error');
$app->enqueueMessage('Please upgrade to at least Joomla! 3.8.0 before continuing!', 'error');
return false;
}
// do any updates needed
if ($type == 'update')
if ($type === 'update')
{
}
// do any install needed
if ($type == 'install')
if ($type === 'install')
{
}
return true;
}
/**
* method to run after an install/update/uninstall method
* Called after any type of action
*
* @return void
* @param string $type Which action is happening (install|uninstall|discover_install|update)
* @param JAdapterInstance $parent The object responsible for running this script
*
* @return boolean True on success
*/
function postflight($type, $parent)
public function postflight($type, JAdapterInstance $parent)
{
// get application
$app = JFactory::getApplication();
// set the default component settings
if ($type == 'install')
if ($type === 'install')
{
// Get The Database object
@ -518,7 +531,7 @@ class com_membersmanagerInstallerScript
</a>';
}
// do any updates needed
if ($type == 'update')
if ($type === 'update')
{
// Get The Database object
@ -588,5 +601,6 @@ class com_membersmanagerInstallerScript
</a>
<h3>Upgrade to Version 2.0.6 Was Successful! Let us know if anything is not working as expected.</h3>';
}
return true;
}
}

View File

@ -8,6 +8,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
/* CSS Document */

View File

@ -8,6 +8,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
/* CSS Document */

View File

@ -8,6 +8,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
/* CSS Document */

View File

@ -8,6 +8,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
/* CSS Document */

View File

@ -8,6 +8,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
/* CSS Document */
.no-click {
pointer-events: none;

View File

@ -6,7 +6,8 @@
* @github Joomla Members Manager <https://github.com/vdm-io/Joomla-Members-Manager>
* @copyright Copyright (C) 2015. All Rights Reserved
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
*/
/* JS Document */
// the search method

View File

@ -6,7 +6,8 @@
* @github Joomla Members Manager <https://github.com/vdm-io/Joomla-Members-Manager>
* @copyright Copyright (C) 2015. All Rights Reserved
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
*/
/* JS Document */
// Get report based on id & element from Server

View File

@ -6,6 +6,7 @@
* @github Joomla Members Manager <https://github.com/vdm-io/Joomla-Members-Manager>
* @copyright Copyright (C) 2015. All Rights Reserved
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
*/
/* JS Document */

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
@ -44,7 +45,7 @@ class MembersmanagerControllerAjax extends JControllerLegacy
// Check Token!
$token = JSession::getFormToken();
$call_token = $jinput->get('token', 0, 'ALNUM');
if($token == $call_token)
if($jinput->get($token, 0, 'ALNUM') || $token === $call_token)
{
$task = $this->getTask();
switch($task)

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
@ -37,8 +38,95 @@ class MembersmanagerControllerMember extends JControllerForm
{
$this->view_list = 'cpanel'; // safeguard for setting the return view listing to the default site view.
parent::__construct($config);
}
/**
* Method to save a record and redirect to the profile
*
* @param string $key The name of the primary key of the URL variable.
* @param string $urlVar The name of the URL variable if different from the primary key (sometimes required to avoid router collisions).
*
* @return boolean True if successful, false otherwise.
*/
public function saveprofile($key = null, $urlVar = null)
{
// Check id from post
$id = $this->input->get('id', 0, 'INT');
// to make sure the item is checkedin on redirect
if ($id > 0)
{
$this->task = 'save';
}
// since this is a new record, we just create and remain in it
else
{
$this->task = 'apply';
}
// safe the item
$saved = parent::save($key, $urlVar);
if (class_exists('MembersmanagerHelperRoute'))
{
if ($id > 0)
{
// get post
$post = $this->input->post->get('jform', array(), 'array');
// get the slug
$slug = (isset($post['token'])) ? $id . ':' . $post['token'] : $id;
// Redirect to the profile
$this->setRedirect(JRoute::_(MembersmanagerHelperRoute::getProfileRoute($slug), true));
}
}
else
{
// get the referral options
$this->ref = $this->input->get('ref', 0, 'word');
$this->refid = $this->input->get('refid', 0, 'int');
// Check if there is a return value
$return = $this->input->get('return', null, 'base64');
$canReturn = (!is_null($return) && JUri::isInternal(base64_decode($return)));
// This is not needed since parent save already does this
// Due to the ref and refid implementation we need to add this
if ($canReturn)
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref . '&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view=' . (string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
}
return $saved;
}
/**
* Method override to check if you can add a new record.
*
@ -79,7 +167,11 @@ class MembersmanagerControllerMember extends JControllerForm
$user = JFactory::getUser();
// get record id.
$recordId = (int) isset($data[$key]) ? $data[$key] : 0;
// make sure user can access member (it is always true for self)
if (!MembersmanagerHelper::canAccessMember($recordId, null, $user))
{
return false;
}
// Access check.
$access = ($user->authorise('member.access', 'com_membersmanager.member.' . (int) $recordId) && $user->authorise('member.access', 'com_membersmanager'));

View File

@ -7,7 +7,8 @@
* @github Joomla Members Manager <https://github.com/vdm-io/Joomla-Members-Manager>
* @copyright Copyright (C) 2015. All Rights Reserved
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
@ -210,7 +211,7 @@ abstract class MembersmanagerHelper
**/
protected static function setMemberEditURL($item)
{
if (($url = self::getEditURL($item, 'member', 'members', '&return=' . self::$return_here)) !== false)
if (self::canAccessMember($item->get('id', 0)) && ($url = self::getEditURL($item, 'member', 'members', '&return=' . self::$return_here)) !== false)
{
return $url;
}
@ -227,8 +228,8 @@ abstract class MembersmanagerHelper
{
self::$params = JComponentHelper::getParams('com_membersmanager');
}
// only load link if open to public or is logged in
if (2 == self::$params->get('login_required', 1) || JFactory::getUser()->id > 0)
// only load link if open to public or has access
if (2 == self::$params->get('login_required', 1) || self::canAccessMember($object->get('id', 0)))
{
return JRoute::_('index.php?option=com_membersmanager&view=profile&id='. $object->get('id') . ':' . $object->get('token') . '&return=' . self::$return_here);
}
@ -726,13 +727,6 @@ abstract class MembersmanagerHelper
}
/**
* The Access Memory
*
* @var array
*/
protected static $accessMemory = array();
/**
* The Key to Access Memory
*
@ -765,13 +759,12 @@ abstract class MembersmanagerHelper
}
}
// check memory first
self::$acK3y = md5($user->get('id', 'not_set') . '_' . $type);
if (isset(self::$accessMemory[self::$acK3y]))
self::$acK3y = 'membersmanager_user_access_' . $user->get('id', 'not_set') . '_' . $type;
// check if we have it globally stored
if (($access = self::get(self::$acK3y, false)) !== false)
{
return self::$accessMemory[self::$acK3y];
return $access;
}
// fallback to false
self::$accessMemory[self::$acK3y] = false;
// get DB
if (!$db)
{
@ -780,14 +773,14 @@ abstract class MembersmanagerHelper
// get user Access groups
if (2 == $type)
{
self::$accessMemory[self::$acK3y] = self::getAccessGroups($user, $db);
self::set(self::$acK3y, self::getAccessGroups($user, $db));
}
elseif (1 == $type)
{
// return access types
self::$accessMemory[self::$acK3y] = self::getAccessTypes($user, $db);
self::set(self::$acK3y, self::getAccessTypes($user, $db));
}
return self::$accessMemory[self::$acK3y];
return self::get(self::$acK3y, false);
}
/**
@ -820,7 +813,10 @@ abstract class MembersmanagerHelper
if (self::checkArray($types) && ($userID = $user->get('id', false)) !== false && $userID > 0 && ($member_type = self::getVar('member', $userID, 'user', 'type')) !== false)
{
// get the groups this member belong to
$member_access = self::getMemberGroupsByType($member_type);
if (($member_access = self::getMemberGroupsByType($member_type)) == false)
{
return false;
}
// function to setup the group array
$setGroups = function ($groups) {
// convert to array
@ -841,7 +837,7 @@ abstract class MembersmanagerHelper
foreach ($types as $groups)
{
$groups_access = $setGroups($groups['groups_access']);
if (self::checkArray($groups_target) && $intersect($groups_access, $member_access))
if (self::checkArray($groups_access) && $intersect($groups_access, $member_access))
{
$groups_target = $setGroups($groups['groups_target']);
foreach ($groups_target as $group_target)
@ -897,7 +893,10 @@ abstract class MembersmanagerHelper
if (self::checkArray($types) && ($userID = $user->get('id', false)) !== false && $userID > 0 && ($member_type = self::getVar('member', $userID, 'user', 'type')) !== false)
{
// get the access groups
$groups_access = self::getMemberGroupsByType($member_type);
if (($groups_access = self::getMemberGroupsByType($member_type)) === false)
{
return false;
}
// function to setup the group array
$setGroups = function ($groups) {
// convert to array
@ -5276,12 +5275,12 @@ abstract class MembersmanagerHelper
$app->enqueueMessage(JText::_('COM_MEMBERSMANAGER_YOU_DO_NOT_HAVE_PERMISSION_TO_EDIT_THIS_MEMBER_RELATIONSHIPS_PLEASE_CONTACT_YOUR_SYSTEM_ADMINISTRATOR'), 'warning');
return;
}
// get database object
$db = JFactory::getDbo();
// check if there is relationships and members in those relationships
if (self::checkArray($data) && isset($data['id']) && is_numeric($data['id']) && $data['id'] > 0 && isset($data['type'])
&& ($relation_types = self::getRelationshipsByTypes($data['type'], $db, true)) !== false)
{
// get database object
$db = JFactory::getDbo();
// get the post object
$post = JFactory::getApplication()->input->post;
// Create a new query object.
@ -5587,6 +5586,24 @@ abstract class MembersmanagerHelper
{
return 'membersmanager';
}
/**
* Can a member access another member's data
*
* @param mix $member The the member being accessed
* To do a dynamic get of member ID use the following array
* array( table, where, whereString, what)
* @param array $types The type of member being accessed
* @param mix $user The active user
* @param object $db The database object
*
* @return bool true of can access
*
*/
public static function canAccessMember($member = null, $types = null, $user = null, $db = null)
{
// here you can do your own custom validation
return true;
}
public static function jsonToString($value, $sperator = ", ", $table = null, $id = 'id', $name = 'name')
{
@ -5712,38 +5729,42 @@ abstract class MembersmanagerHelper
/**
* Get any component's model
**/
public static function getModel($name, $path = JPATH_COMPONENT_SITE, $component = 'Membersmanager', $config = array())
public static function getModel($name, $path = JPATH_COMPONENT_SITE, $Component = 'Membersmanager', $config = array())
{
// fix the name
$name = self::safeString($name);
// full path
$fullPath = $path . '/models';
// set prefix
$prefix = $component.'Model';
// full path to models
$fullPathModels = $path . '/models';
// load the model file
JModelLegacy::addIncludePath($fullPath, $prefix);
JModelLegacy::addIncludePath($fullPathModels, $Component . 'Model');
// make sure the table path is loaded
if (!isset($config['table_path']) || !self::checkString($config['table_path']))
{
// This is the JCB default path to tables in Joomla 3.x
$config['table_path'] = JPATH_ADMINISTRATOR . '/components/com_' . strtolower($Component) . '/tables';
}
// get instance
$model = JModelLegacy::getInstance($name, $prefix, $config);
$model = JModelLegacy::getInstance($name, $Component . 'Model', $config);
// if model not found (strange)
if ($model == false)
{
jimport('joomla.filesystem.file');
// get file path
$filePath = $path.'/'.$name.'.php';
$fullPath = $fullPath.'/'.$name.'.php';
$filePath = $path . '/' . $name . '.php';
$fullPathModel = $fullPathModels . '/' . $name . '.php';
// check if it exists
if (JFile::exists($filePath))
{
// get the file
require_once $filePath;
}
elseif (JFile::exists($fullPath))
elseif (JFile::exists($fullPathModel))
{
// get the file
require_once $fullPath;
require_once $fullPathModel;
}
// build class names
$modelClass = $prefix.$name;
$modelClass = $Component . 'Model' . $name;
if (class_exists($modelClass))
{
// initialize the model

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

View File

@ -96,8 +96,7 @@ COM_MEMBERSMANAGER_MEMBER_PASSWORD_DESCRIPTION="Enter the password for the membe
COM_MEMBERSMANAGER_MEMBER_PASSWORD_LABEL="Password"
COM_MEMBERSMANAGER_MEMBER_PERMISSION="Permissions"
COM_MEMBERSMANAGER_MEMBER_PROFILE_IMAGE="Profile Image"
COM_MEMBERSMANAGER_MEMBER_PROFILE_IMAGE_UPLOADER_DESCRIPTION="
<div id='uikittwo-profile-image-uploader' style='display:none'>
COM_MEMBERSMANAGER_MEMBER_PROFILE_IMAGE_UPLOADER_DESCRIPTION="<div id='uikittwo-profile-image-uploader' style='display:none'>
<div id='uikittwo-upload-drop-profile-image' class='uk-placeholder uk-text-center'>
<br /><br />
<i class='uk-icon-cloud-upload uk-icon-medium uk-text-muted uk-margin-small-right'></i>
@ -160,6 +159,7 @@ COM_MEMBERSMANAGER_NOT_AUTHORISED_TO_VIEW_MEMBERS="Not authorised to view member
COM_MEMBERSMANAGER_NOT_AUTHORISED_TO_VIEW_PROFILE="Not authorised to view profile!"
COM_MEMBERSMANAGER_NOT_ENOUGH_DATA="Not enough data"
COM_MEMBERSMANAGER_NOT_FOUND_OR_ACCESS_DENIED="Not found or access denied!"
COM_MEMBERSMANAGER_NO_ACCESS="No Access"
COM_MEMBERSMANAGER_NO_ACCESS_GRANTED="No Access Granted!"
COM_MEMBERSMANAGER_NO_ACCESS_TO_VIEW_DETAILS="No Access to View Details"
COM_MEMBERSMANAGER_NO_DETAILS_FOUND="No Details Found"
@ -185,7 +185,7 @@ COM_MEMBERSMANAGER_PLEASE_ENABLE_POPUPS_IN_YOUR_BROWSER_FOR_THIS_WEBSITE_TO_PRIN
COM_MEMBERSMANAGER_PLEASE_PUBLISH_A_LOGIN_MODULE_TO_THIS_CODESLOGINCODE_POSITION_AND_INSURE_THAT_YOU_TARGET_THESE_PAGES_THIS_IS_POSSIBLE_IF_YOU_ADD_THE_MODULE_TO_ALL_PAGES_SINCE_THIS_MODULE_POSITION_SHOULD_ONLY_BE_AVAILABLE_IN_THIS_COMPONENT="Please publish a login module to this <code>%s-login</code> position, and insure that you target these pages. This is possible if you add the module to all pages, since this module position should only be available in this component."
COM_MEMBERSMANAGER_PRINT="Print"
COM_MEMBERSMANAGER_PRINT_CLOSE="Print & Close"
COM_MEMBERSMANAGER_PROFILE="Member Profile"
COM_MEMBERSMANAGER_PROFILE="Profile"
COM_MEMBERSMANAGER_PROFILE_DESC="Member Profile"
COM_MEMBERSMANAGER_PROPORTIONALLY="proportionally"
COM_MEMBERSMANAGER_RELATIONSHIPS="Relationships"
@ -207,6 +207,7 @@ COM_MEMBERSMANAGER_WARNING_IMPORT_FILE_ERROR="Warning, import file error."
COM_MEMBERSMANAGER_WARNING_IMPORT_UPLOAD_ERROR="Warning, import upload error."
COM_MEMBERSMANAGER_WELCOME_S_UPDATE_YOUR_DETAILS="Welcome %s, update your details"
COM_MEMBERSMANAGER_YOU_CAN_NOT_DELETE_BSB_FIRST_MOVE_ALL_SUB_ACCOUNTS_TO_NEW_MAIN_MEMBER="You can not delete <b>%s</b>, first move all sub account/s to new main member."
COM_MEMBERSMANAGER_YOU_DO_NOT_HAVE_ACCESS_TO_THIS_AREA="You do not have access to this area!"
COM_MEMBERSMANAGER_YOU_DO_NOT_HAVE_PERMISSION_TO_ADD_DATA_TO_S_PLEASE_CONTACT_YOUR_SYSTEM_ADMINISTRATOR="You do not have permission to add data to %s, please contact your system administrator."
COM_MEMBERSMANAGER_YOU_DO_NOT_HAVE_PERMISSION_TO_CREATE_MEMBERS="You do not have permission to create members."
COM_MEMBERSMANAGER_YOU_DO_NOT_HAVE_PERMISSION_TO_EDIT_S_PLEASE_CONTACT_YOUR_SYSTEM_ADMINISTRATOR="You do not have permission to edit %s, please contact your system administrator."

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('JPATH_BASE') or die('Restricted access');

View File

@ -9,6 +9,7 @@
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access to this file
defined('JPATH_BASE') or die('Restricted access');

Some files were not shown because too many files have changed in this diff Show More