* @github 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'); jimport('joomla.application.component.helper'); /** * Membersmanager Ajax Model */ class MembersmanagerModelAjax extends JModelList { protected $app_params; public function __construct() { parent::__construct(); // get params $this->app_params = JComponentHelper::getParams('com_membersmanager'); } // Used in member // allowed views protected $allowedViews = array('member'); // allowed targets protected $targets = array('profile'); // allowed types protected $types = array('image' => 'image'); // set some buckets protected $target; protected $targetType; protected $formatType; // set some defaults protected $formats = array( 'image_formats' => array( 1 => 'jpg', 2 => 'jpeg', 3 => 'gif', 4 => 'png'), 'document_formats' => array( 1 => 'doc', 2 => 'docx', 3 => 'odt', 4 => 'pdf', 5 => 'csv', 6 => 'xls', 7 => 'xlsx', 8 => 'ods', 9 => 'ppt', 10 => 'pptx', 11 => 'pps', 12 => 'ppsx', 13 => 'odp', 14 => 'zip'), 'media_formats' => array( 1 => 'mp3', 2 => 'm4a', 3 => 'ogg', 4 => 'wav', 5 => 'mp4', 6 => 'm4v', 7 => 'mov', 8 => 'wmv', 9 => 'avi', 10 => 'mpg', 11 => 'ogv', 12 => '3gp', 13 => '3g2')); // file details protected $fileName; protected $folderPath; protected $fullPath; protected $fileFormat; // return error if upload fails protected $errorMessage; // set uploading values protected $use_streams = false; protected $allow_unsafe = false; protected $safeFileOptions = array(); public function uploadfile($target, $type) { // get the view values $view = $this->getViewID(); if (in_array($target, $this->targets) && isset($this->types[$type]) && isset($view['a_view']) && in_array($view['a_view'], $this->allowedViews)) { $this->target = (string) $target; $this->targetType = (string) $type; $this->formatType = (string) $this->types[$type]; if ($package = $this->_getPackageFromUpload()) { // now we move the file into place return $this->uploadNow($package, $view); } return array('error' => $this->errorMessage); } return array('error' => JText::_('COM_MEMBERSMANAGER_THERE_HAS_BEEN_AN_ERROR')); } protected function uploadNow($package, $view) { // set the package name to file name if found $name = $this->formatType; if (isset($package['packagename'])) { $name = MembersmanagerHelper::safeString(str_replace('.'.$this->fileFormat, '', $package['packagename']), 'filename', '_', false); } $this->fileName = $this->target.'_'.$this->targetType.'_'.$this->fileFormat.'_'.MembersmanagerHelper::randomkey(20).'VDM'.$name; // set the folder path if ($this->formatType === 'document' || $this->formatType === 'media') { // get the folder path $this->folderPath = MembersmanagerHelper::getFolderPath('path', 'hiddenfilepath'); } else { // get the file path $this->folderPath = MembersmanagerHelper::getFolderPath(); } // set full path to the file $this->fullPath = $this->folderPath . $this->fileName . '.' . $this->fileFormat; // move to target folder if (JFile::move($package['dir'], $this->fullPath)) { // do crop/resize if it is an image and cropping is set if ($this->formatType === 'image') { MembersmanagerHelper::resizeImage($this->fileName, $this->fileFormat, $this->target, $this->folderPath, $this->fullPath); } // Get the basic encription. $basickey = MembersmanagerHelper::getCryptKey('basic'); $basic = null; // set link options $linkOptions = MembersmanagerHelper::getLinkOptions(); // set link options if ($basickey) { // Get the encryption object. $basic = new FOFEncryptAes($basickey, 128); } // when it is documents we need to give file name in base64 if ($this->formatType === 'document' || $this->formatType === 'media') { // store the name $keyName = $this->fileName; if (MembersmanagerHelper::checkObject($basic)) { // Get the encryption object. $localFile = MembersmanagerHelper::base64_urlencode($basic->encryptString($keyName)); } else { // can not get the encryption object so only base64 encode $localFile = MembersmanagerHelper::base64_urlencode($keyName, true); } } // check if we must update the current item if (isset($view['a_id']) && $view['a_id'] > 0 && isset($view['a_view'])) { $object = new stdClass(); $object->id = (int) $view['a_id']; if ($this->targetType === 'image' || $this->targetType === 'document') { if ($linkOptions['lock'] && MembersmanagerHelper::checkObject($basic)) { // Get the encryption object. $object->{$this->target.'_'.$this->targetType} = $basic->encryptString($this->fileName); } else { // can not get the encryption object. $object->{$this->target.'_'.$this->targetType} = $this->fileName; } } elseif ($this->targetType === 'images' || $this->targetType === 'documents' || $this->targetType === 'media') { $this->fileName = $this->setFileNameArray('add', $basic, $view); if ($linkOptions['lock'] && MembersmanagerHelper::checkObject($basic)) { // Get the encryption object. $object->{$this->target.'_'.$this->targetType} = $basic->encryptString($this->fileName); } else { // can not get the encryption object. $object->{$this->target.'_'.$this->targetType} = $this->fileName; } } JFactory::getDbo()->updateObject('#__membersmanager_'.$view['a_view'], $object, 'id'); } elseif ($this->targetType === 'images' || $this->targetType === 'documents' || $this->targetType === 'media') { $this->fileName = array($this->fileName); $this->fileName = '["'.implode('", "', $this->fileName).'"]'; } // set the results $result = array('success' => $this->fileName, 'fileformat' => $this->fileFormat); // add some more values if document format type if ($this->formatType === 'document' || $this->formatType === 'media') { $tokenLink = ''; if ($linkOptions['lock'] == 0) { $localFile = MembersmanagerHelper::base64_urlencode($keyName, true); } if ($linkOptions['session']) { $tokenLink = '&token=' . JSession::getFormToken(); } // if document if ($this->formatType === 'document') { $result['link'] = 'index.php?option=com_membersmanager&task=download.document&file=' . $localFile . $tokenLink; } // if media elseif ($this->formatType === 'media') { $result['link'] = 'index.php?option=com_membersmanager&task=download.media&file=' . $localFile . $tokenLink; } $result['key'] = $keyName; } return $result; } $this->remove($package['packagename']); return array('error' => JText::_('COM_MEMBERSMANAGER_THERE_HAS_BEEN_AN_ERROR')); } public function removeFile($oldFile, $target, $clearDB, $type) { // get view values $view = $this->getViewID(); if (in_array($target, $this->targets) && isset($this->types[$type]) && isset($view['a_view']) && in_array($view['a_view'], $this->allowedViews)) { $this->target = (string) $target; $this->targetType = (string) $type; $this->formatType = (string) $this->types[$type]; $this->fileName = (string) $oldFile; if (isset($view['a_id']) && $view['a_id'] > 0 && isset($view['a_view'])) { // get user to see if he has permission to upload $user = JFactory::getUser(); if (!$user->authorise($view['a_view'].'.edit.'.$this->target.'_'.$this->targetType, 'com_membersmanager')) { return array('error' => JText::_('COM_MEMBERSMANAGER_YOU_DO_NOT_HAVE_PERMISSION_TO_REMOVE_THIS_FILE')); } } if ($this->formatType === 'document' || $this->formatType === 'media') { // get the file path $this->folderPath = MembersmanagerHelper::getFolderPath('path', 'hiddenfilepath'); } else { // get the file path $this->folderPath = MembersmanagerHelper::getFolderPath(); } // remove from the db if there is an id if ($clearDB == 1 && isset($view['a_id']) && $view['a_id'] > 0 && isset($view['a_view']) && in_array($view['a_view'], $this->allowedViews)) { $object = new stdClass(); $object->id = (int) $view['a_id']; if ($this->targetType === 'image' || $this->targetType === 'document') { $object->{$this->target.'_'.$this->targetType} = ''; JFactory::getDbo()->updateObject('#__membersmanager_'.$view['a_view'], $object, 'id'); } elseif ($this->targetType === 'images' || $this->targetType === 'documents' || $this->targetType === 'media') { // Get the basic encription. $basickey = MembersmanagerHelper::getCryptKey('basic'); $basic = null; // set link options $linkOptions = MembersmanagerHelper::getLinkOptions(); if ($linkOptions['lock'] && $basickey) { // Get the encryption object. $basic = new FOFEncryptAes($basickey, 128); } $fileNameArray = $this->setFileNameArray('remove', $basic, $view); if ($linkOptions['lock'] && MembersmanagerHelper::checkObject($basic)) { // Get the encryption object. $object->{$this->target.'_'.$this->targetType} = $basic->encryptString($fileNameArray); } else { // can not get the encryption object. $object->{$this->target.'_'.$this->targetType} = $fileNameArray; } JFactory::getDbo()->updateObject('#__membersmanager_'.$view['a_view'], $object, 'id'); } } // load the file class jimport('joomla.filesystem.file'); // remove file with this filename $fileFormats = $this->formats[$this->formatType .'_formats']; foreach ($fileFormats as $fileFormat) { if (JFile::exists($this->folderPath . $this->fileName . '.' . $fileFormat)) { // remove the file return JFile::delete($this->folderPath . $this->fileName . '.' . $fileFormat); } } } return array('error' => JText::_('COM_MEMBERSMANAGER_THERE_HAS_BEEN_AN_ERROR')); } protected function setFileNameArray($action, $basic, $view) { $curentFiles = MembersmanagerHelper::getVar($view['a_view'], $view['a_id'], 'id', $this->target.'_'.$this->targetType); // unlock if needed if ($basic && $curentFiles === base64_encode(base64_decode($curentFiles, true))) { // basic decrypt data banner_image. $curentFiles = rtrim($basic->decryptString($curentFiles), "\0"); } // convert to array if needed if (MembersmanagerHelper::checkJson($curentFiles)) { $curentFiles = json_decode($curentFiles, true); } // remove or add the file name if (MembersmanagerHelper::checkArray($curentFiles)) { if ('add' === $action) { $curentFiles[] = $this->fileName; } else { if(($key = array_search($this->fileName, $curentFiles)) !== false) { unset($curentFiles[$key]); } } } elseif ('add' === $action) { $curentFiles = array($this->fileName); } else { $curentFiles = ''; } // convert to json if (MembersmanagerHelper::checkArray($curentFiles)) { return '["'.implode('", "', $curentFiles).'"]'; } return ''; } /** * Works out an importation file from a HTTP upload * * @return file definition or false on failure */ protected function _getPackageFromUpload() { // Get the uploaded file information $app = JFactory::getApplication(); $input = $app->input; // See JInputFiles::get. $userfiles = $input->files->get('files', null, 'array'); // Make sure that file uploads are enabled in php if (!(bool) ini_get('file_uploads')) { $this->errorMessage = JText::_('COM_MEMBERSMANAGER_WARNING_IMPORT_FILE_ERROR'); return false; } // get the files from array $userfile = null; if (is_array($userfiles)) { $userfile = array_values($userfiles)[0]; } // If there is no uploaded file, we have a problem... if (!is_array($userfile)) { $this->errorMessage = JText::_('COM_MEMBERSMANAGER_NO_IMPORT_FILE_SELECTED'); return false; } // Check if there was a problem uploading the file. if ($userfile['error'] || $userfile['size'] < 1) { $this->errorMessage = JText::_('COM_MEMBERSMANAGER_WARNING_IMPORT_UPLOAD_ERROR'); return false; } // Build the appropriate paths $config = JFactory::getConfig(); $tmp_dest = $config->get('tmp_path') . '/' . $userfile['name']; $tmp_src = $userfile['tmp_name']; // Move uploaded file jimport('joomla.filesystem.file'); jimport('joomla.filesystem.folder'); $p_file = JFile::upload($tmp_src, $tmp_dest, $this->use_streams, $this->allow_unsafe, $this->safeFileOptions); // Was the package downloaded? if (!$p_file) { $session = JFactory::getSession(); $session->clear('package'); $session->clear('dataType'); $session->clear('hasPackage'); $this->errorMessage = JText::_('COM_MEMBERSMANAGER_COULD_NOT_UPLOAD_THE_FILE'); // was not uploaded return false; } // check that this is a valid file $package = $this->check($userfile['name']); return $package; } /** * Check a file and verifies it as a allowed file format file * * @param string $archivename The uploaded package filename or import directory * * @return array of elements * */ protected function check($archivename) { // Clean the name $archivename = JPath::clean($archivename); // get file format $this->fileFormat = strtolower(pathinfo($archivename, PATHINFO_EXTENSION)); // get fileFormat key $allowedFormats = array(); if (in_array($this->fileFormat, $this->formats[$this->formatType .'_formats'])) { // get allowed formats $allowedFormats = (array) $this->app_params->get($this->formatType.'_formats', null); } // check the extension if (!in_array($this->fileFormat, $allowedFormats)) { // Cleanup the import files $this->remove($archivename); $this->errorMessage = JText::_('COM_MEMBERSMANAGER_DOES_NOT_HAVE_A_VALID_FILE_TYPE'); return false; } // check permission if user $view = $this->getViewID(); if (isset($view['a_id']) && $view['a_id'] > 0 && isset($view['a_view']) && in_array($view['a_view'], $this->allowedViews)) { // get user to see if he has permission to upload $user = JFactory::getUser(); if (!$user->authorise($view['a_view'].'.edit.'.$this->target.'_'.$this->targetType, 'com_membersmanager')) { // Cleanup the import files $this->remove($archivename); $this->errorMessage = JText::_('COM_MEMBERSMANAGER_YOU_DO_NOT_HAVE_PERMISSION_TO_UPLOAD_AN'.$this->targetType); return false; } } $config = JFactory::getConfig(); // set Package Name $check['packagename'] = $archivename; // set directory $check['dir'] = $config->get('tmp_path'). '/' .$archivename; return $check; } /** * Clean up temporary uploaded file * * @param string $package Name of the uploaded file * * @return boolean True on success * */ protected function remove($package) { jimport('joomla.filesystem.file'); $config = JFactory::getConfig(); $package = $config->get('tmp_path'). '/' .$package; // Is the package file a valid file? if (is_file($package)) { JFile::delete($package); } elseif (is_file(JPath::clean($package))) { // It might also be just a base filename JFile::delete(JPath::clean($package)); } } protected $viewid = array(); protected function getViewID($call = 'table') { if (!isset($this->viewid[$call])) { // get the vdm key $jinput = JFactory::getApplication()->input; $vdm = $jinput->get('vdm', null, 'WORD'); if ($vdm) { if ($view = MembersmanagerHelper::get($vdm)) { $current = (array) explode('__', $view); if (MembersmanagerHelper::checkString($current[0]) && isset($current[1]) && is_numeric($current[1])) { // get the view name & id $this->viewid[$call] = array( 'a_id' => (int) $current[1], 'a_view' => $current[0] ); } } } } if (isset($this->viewid[$call])) { return $this->viewid[$call]; } return false; } public function checkUnique($field, $value) { // Get the database object and a new query object. $db = \JFactory::getDbo(); $query = $db->getQuery(true); // convert to camel case naming $valueArray = (array) $this->splitAtUpperCase(trim($value)); $value = MembersmanagerHelper::safeString(trim(implode(' ', $valueArray), '-'), 'L', '-', false, false); $view = $this->getViewID(); if (isset($view['a_id']) && MembersmanagerHelper::checkString($view['a_view'])) { // Build the query. $query->select('COUNT(*)') ->from('#__membersmanager_' . (string) $view['a_view']) ->where($db->quoteName($field) . ' = ' . $db->quote($value)); // remove this item from the list if ($view['a_id'] > 0) { $query->where($db->quoteName('id') . ' <> ' . (int) $view['a_id']); } // Set and query the database. $db->setQuery($query); $duplicate = (bool) $db->loadResult(); if ($duplicate) { return array ( 'message' => JText::sprintf('COM_MEMBERSMANAGER_BSB_IS_ALREADY_IN_USE_PLEASE_TRY_ANOTHER', $value), 'status' => 'danger'); } return array ( 'value' => $value, 'message' => JText::sprintf('COM_MEMBERSMANAGER_GREAT_SS_IS_AVAILABLE', $field, $value), 'status' => 'success'); } return false; } protected function splitAtUpperCase($string) { return preg_split('/(?=[A-Z])/', $string, -1, PREG_SPLIT_NO_EMPTY); } public function getRegion($country) { // Get a db connection. $db = JFactory::getDbo(); // Create a new query object. $query = $db->getQuery(true); $query->select($db->quoteName( array('a.id') )); $query->from($db->quoteName('#__membersmanager_region', 'a')); $query->where($db->quoteName('a.published') . ' = 1'); // check for country and region $query->where($db->quoteName('a.country') . ' = '. (int) $country); $db->setQuery($query); $db->execute(); if ($db->getNumRows()) { return $db->loadColumn(); } return false; } public function getCreateUserFields($id) { $view = $this->getKey(); $access = array(1 => 'member.access', 2 => 'other.access'); if (1 == $id && isset($access[$view]) && JFactory::getUser()->authorise($access[$view], 'com_membersmanager')) { $fields = array(); // start the block $fields[] = '
'; // setup modal $name = "createUser"; // load button $fields[] = '
'; $fields[] = '
'; $fields[] = ''; $fields[] = '
'; $params = array(); $params['title'] = JText::_("COM_MEMBERSMANAGER_CREATE_USER"); $params['height'] = "500px"; $params['width'] = "100%"; // load modal $fields[] = JHtml::_('bootstrap.renderModal', 'modal-' . $name, $params, $this->getCreateFields()); // close the block $fields[] = '
'; return implode("\n",$fields); } return false; } protected function getCreateFields() { // add dive to give padding $fields[] = '
'; // load name $fields[] = '
'; $fields[] = '
'; $fields[] = '
'; $fields[] = '
'; // load username $fields[] = '
'; $fields[] = '
'; $fields[] = '
'; $fields[] = '
'; // load email $fields[] = '
'; $fields[] = '
'; $fields[] = '
'; $fields[] = '
'; // load password field $fields[] = '
'; $fields[] = '
'; $fields[] = '
'; $fields[] = '
'; $fields[] = '
'.JText::_('COM_MEMBERSMANAGER_USER_DETAILS_WILL_BE_EMAILED_DURING_CREATION_OF_THE_USER_ACCOUNT').'
'; // close the div $fields[] = '
'; $fields[] = ''; return implode("\n",$fields); } public function createUser($data) { $view = $this->getKey(); $access = array(1 => 'member.edit.user', 2 => 'other.edit.user'); if (isset($access[$view]) && JFactory::getUser()->authorise($access[$view], 'com_membersmanager')) { $data = json_decode($data, true); if (MembersmanagerHelper::checkArray($data)) { $groups = array(1 => 'memberuser', 2 => 'otheruser'); $keys = array('var' => 'name', 'uvar' => 'username', 'evar' => 'email', 'dvar' => 'password'); $bucket = array(); foreach($data as $key => $value) { if (isset($keys[$key]) && MembersmanagerHelper::checkString($value)) { $bucket[$keys[$key]] = (string) $value; if ($keys[$key] == 'password') { $bucket['password2'] = (string) $value; } } } if (MembersmanagerHelper::checkArray($bucket) && count($bucket) == 5) { // now update user $returned = MembersmanagerHelper::createUser($bucket); if (is_numeric($returned)) { if ((int) $returned > 0 && isset($groups[$view])) { $groups = $this->app_params->get($groups[$view], null); if ($groups) { // update the user groups JUserHelper::setUserGroups((int)$returned ,(array)$groups); } } $message = array(); $message[] = ''; $message[] = '
'; $message[] = '

'.JText::_('COM_MEMBERSMANAGER_SUCCESS').'

'; $message[] = '
'.JText::_('COM_MEMBERSMANAGER_USER_WAS_CREATED_SUCCESSFULLY_AND_THE_LOGIN_DETAILS_WAS_EMAILED_TO_THE_USER').'
'; $message[] = '
'; $notice = array(); $notice[] = '
'; $notice[] = '
'; $notice[] = '

'.JText::_('COM_MEMBERSMANAGER_READY_TO_SELECT').'

'; $notice[] = '
'.JText::sprintf('COM_MEMBERSMANAGER_YOU_CAN_NOW_SELECT_BSB_THAT_YOU_JUST_CREATED_FROM_THE_USERS_LIST_IN_THE_ABOVE_FIELD_SIMPLY_CLICK_ON_THE_BLUE_USER_ICON', $bucket['name']).'
'; $notice[] = '
'; return array( 'html' => implode("\n",$notice), 'success' => implode("\n",$message)); } else { $message = array(); $message[] = ''; $message[] = '
'; $message[] = '

'.JText::_('COM_MEMBERSMANAGER_ERROR_USER_NOT_CREATED').'

'; $message[] = '
'.$returned.'
'; $message[] = '
'; return array('error' => implode("\n",$message)); } } else { $message = array(); $message[] = ''; $message[] = '
'; $message[] = '

'.JText::_('COM_MEMBERSMANAGER_ERROR_USER_NOT_UPDATED').'

'; $message[] = '
'.JText::_('COM_MEMBERSMANAGER_SOME_REQUIRED_VALUES_ARE_MISSING').'.
'; $message[] = '
'; return array('error' => implode("\n",$message)); } } } return false; } public function getUser($id, $showname = 0) { $user = JFactory::getUser($id); if ($user->id) { $fields = array(); // start the block $fields[] = '
'; $fields[] = $this->getUserFields($user, false, (2 === (int) $showname)); $view = $this->getKey(); $access = array(1 => 'member.access', 2 => 'other.access'); if (isset($access[$view]) && JFactory::getUser()->authorise($access[$view], 'com_membersmanager')) { // setup modal $name = "editUser"; // load button $fields[] = '
'; $fields[] = '
'; $fields[] = ''; $fields[] = '
'; $params = array(); $params['title'] = "Edit User"; $params['height'] = "500px"; $params['width'] = "100%"; // load modal $fields[] = JHtml::_('bootstrap.renderModal', 'modal-' . $name, $params, $this->getUserFields($user, true)); } // close the block $fields[] = '
'; return implode("\n",$fields); } return false; } protected function getUserFields(&$user, $permission = false, $showname = false) { // set read only $readOnly = ' readonly="" class="readonly"'; if($permission) { // add dive to give padding $fields[] = '
'; $readOnly = ' id="vdm_name"'; } if($permission || $showname) { // load name $fields[] = '
'; $fields[] = '
'; $fields[] = '
'; $fields[] = '
'; } if($permission) { $readOnly = ' id="vdm_username"'; } // load username $fields[] = '
'; $fields[] = '
'; $fields[] = '
'; $fields[] = '
'; if($permission) { $readOnly = ' id="vdm_email"'; } // load email $fields[] = '
'; $fields[] = '
'; $fields[] = '
'; $fields[] = '
'; if($permission) { $readOnly = ' id="vdm_password"'; $password = $user->password; } else { $password = 'XXXXXXXXXXXXXXXXXX'; } // load password field $fields[] = '
'; $fields[] = '
'; $fields[] = '
'; $fields[] = '
'; if($permission) { // close padding div $fields[] = '
'; $fields[] = ''; } if(!$permission) { // Registration Date $fields[] = '
'; $fields[] = '
'; $fields[] = '
'; $fields[] = '
'; // Last Visit Date $fields[] = '
'; $fields[] = '
'; $fields[] = '
'; $fields[] = '
'; } return implode("\n",$fields); } public function setUser($id, $data) { $view = $this->getKey(); $access = array(1 => 'member.edit.own', 2 => 'other.edit.own'); $my = JFactory::getUser(); if (isset($access[$view]) && $my->authorise($access[$view], 'com_membersmanager')) { $data = json_decode($data, true); if (MembersmanagerHelper::checkArray($data)) { $keys = array('var' => 'name', 'uvar' => 'username', 'evar' => 'email', 'dvar' => 'password'); $bucket = array(); $bucket['id'] = $id; foreach($data as $key => $value) { if (isset($keys[$key]) && MembersmanagerHelper::checkString($value)) { $bucket[$keys[$key]] = (string) $value; if ($keys[$key] == 'password') { $bucket['password2'] = (string) $value; } } } if (MembersmanagerHelper::checkArray($bucket) && count($bucket) == 6) { // check if current user is a supper admin $iAmSuperAdmin = $my->authorise('core.admin'); if ($iAmSuperAdmin) { // add the user current groups $bucket['groups'] = JAccess::getGroupsByUser($id); } // now update user $done = MembersmanagerHelper::updateUser($bucket); if ($done == $id) { $message = array(); $message[] = ''; $message[] = '
'; $message[] = '

'.JText::_('COM_MEMBERSMANAGER_SUCCESS').'

'; $message[] = '
'.JText::_('COM_MEMBERSMANAGER_USER_WAS_UPDATED_SUCCESSFULLY').'.
'; $message[] = '
'; return array( 'html' => $this->getUser($id), 'success' => implode("\n",$message)); } else { $message = array(); $message[] = ''; $message[] = '
'; $message[] = '

'.JText::_('COM_MEMBERSMANAGER_ERROR_USER_NOT_UPDATED').'

'; $message[] = '
'.$done.'
'; $message[] = '
'; return array('error' => implode("\n",$message)); } } else { $message = array(); $message[] = ''; $message[] = '
'; $message[] = '

'.JText::_('COM_MEMBERSMANAGER_ERROR_USER_NOT_UPDATED').'

'; $message[] = '
'.JText::_('COM_MEMBERSMANAGER_SOME_REQUIRED_VALUES_ARE_MISSING').'.
'; $message[] = '
'; return array('error' => implode("\n",$message)); } } } return false; } protected function getKey() { $viewData = $this->getViewID(); $view = 0; if (isset($viewData['a_view'])) { switch($viewData['a_view']) { case 'member': return 1; break; case 'other' : return 2; break; } } return 0; } }