/** * Returns a USERPARAMS field in specified format * * @param FieldTable $field * @param UserTable $user * @param string $output 'html', 'xml', 'json', 'php', 'csvheader', 'csv', 'rss', 'fieldslist', 'htmledit' * @param string $formatting 'table', 'td', 'span', 'div', 'none' * @param string $reason 'profile' for user profile view, 'edit' for profile edit, 'register' for registration, 'list' for user-lists * @param int $list_compare_types IF reason == 'search' : 0 : simple 'is' search, 1 : advanced search with modes, 2 : simple 'any' search * @return mixed */ public function getFieldRow(&$field, &$user, $output, $formatting, $reason, $list_compare_types) { global $_CB_framework, $ueConfig; $results = null; if (class_exists('JFactory')) { // Joomla 1.5 : $lang = JFactory::getLanguage(); $lang->load('com_users'); } $pseudoFields = array(); //Implementing Joomla's new user parameters such as editor $ui = $_CB_framework->getUi(); $userParams = $this->_getUserParams($ui, $user); if (is_array($userParams) && count($userParams) > 0 && ($ui == 2 || (isset($ueConfig['frontend_userparams']) ? $ueConfig['frontend_userparams'] == 1 : in_array($_CB_framework->getCfg('frontend_userparams'), array('1', null))))) { if ($ui == 1) { $excludeParams = explode('|*|', $field->params->get('hide_userparams')); } else { $excludeParams = array(); } //Loop through each parameter and prepare rendering appropriately. foreach ($userParams as $k => $userParam) { if (checkJversion() >= 2) { $nameId = isset($userParam[4]) ? $userParam[4] : null; } else { $nameId = isset($userParam[5]) ? $userParam[5] : null; } if (!$excludeParams || !$nameId || $nameId && !in_array($nameId, $excludeParams)) { $paramField = new FieldTable($field->getDbo()); $paramField->title = $userParam[0]; $paramField->_html = $userParam[1]; $paramField->description = isset($userParam[2]) && class_exists("JText") ? JText::_($userParam[2]) : null; $paramField->name = isset($userParam[3]) && class_exists("JText") ? JText::_($userParam[3]) : null; // very probably wrong! $paramField->fieldid = 'userparam_' . $k; $paramField->type = 'param'; // this is for cb_ftparam class to be correct. if (!preg_match('/<(?:input|select|textarea)[^>]*class[^>]*>/i', $paramField->_html)) { $paramField->_html = preg_replace('/<(input|select|textarea)/i', '<$1 class="form-control"', $paramField->_html); } $pseudoFields[] = $paramField; } } } if ($ui == 2) { $i_am_super_admin = Application::MyUser()->isSuperAdmin(); $canBlockUser = Application::MyUser()->isAuthorizedToPerformActionOnAsset('core.edit.state', 'com_users'); $canEmailEvents = $user->id == 0 && $canBlockUser || Application::User((int) $user->id)->isAuthorizedToPerformActionOnAsset('core.edit.state', 'com_users') || Application::User((int) $user->id)->canViewAccessLevel(Application::Config()->get('moderator_viewaccesslevel', 3, \CBLib\Registry\GetterInterface::INT)); $lists = array(); if ($canBlockUser) { // ensure user can't add group higher than themselves $gtree = $_CB_framework->acl->get_groups_below_me(); if (!$i_am_super_admin && $user->id && Application::User((int) $user->id)->isAuthorizedToPerformActionOnAsset('core.manage', 'com_users') && (Application::User((int) $user->id)->isAuthorizedToPerformActionOnAsset('core.edit', 'com_users') || Application::User((int) $user->id)->isAuthorizedToPerformActionOnAsset('core.edit.state', 'com_users'))) { $disabled = ' disabled="disabled"'; } else { $disabled = ''; } if ($user->id) { $strgids = array_map('strval', Application::User((int) $user->id)->getAuthorisedGroups(false)); } else { $strgids = (string) $_CB_framework->getCfg('new_usertype'); } $lists['gid'] = moscomprofilerHTML::selectList($gtree, 'gid[]', 'class="form-control" size="11" multiple="multiple"' . $disabled, 'value', 'text', $strgids, 2, false, null, false); // build the html select list $lists['block'] = moscomprofilerHTML::yesnoSelectList('block', 'class="form-control"', (string) $user->block); $list_banned = array(); $list_banned[] = moscomprofilerHTML::makeOption('1', CBTxt::T('Banned')); $list_banned[] = moscomprofilerHTML::makeOption('2', CBTxt::T('Pending')); $list_banned[] = moscomprofilerHTML::makeOption('0', CBTxt::T('Active')); $lists['banned'] = moscomprofilerHTML::selectList($list_banned, 'banned', 'class="form-control"', 'value', 'text', (string) $user->banned, 2, false, null, false); $list_approved = array(); $list_approved[] = moscomprofilerHTML::makeOption('2', CBTxt::T('Rejected')); $list_approved[] = moscomprofilerHTML::makeOption('0', CBTxt::T('Pending')); $list_approved[] = moscomprofilerHTML::makeOption('1', CBTxt::T('Approved')); $lists['approved'] = moscomprofilerHTML::selectList($list_approved, 'approved', 'class="form-control"', 'value', 'text', (string) $user->approved, 2, false, null, false); $lists['confirmed'] = moscomprofilerHTML::yesnoSelectList('confirmed', 'class="form-control"', (string) $user->confirmed, CBTxt::T('Confirmed'), CBTxt::T('Pending')); // build the html select list $lists['sendEmail'] = moscomprofilerHTML::yesnoSelectList('sendEmail', 'class="form-control"', (string) $user->sendEmail); $paramField = new FieldTable($field->getDbo()); $paramField->title = 'Group'; // For translation parser: CBTxt::T( 'Group' ); $paramField->_html = $lists['gid']; $paramField->description = ''; $paramField->name = 'gid'; $pseudoFields[] = $paramField; $paramField = new FieldTable($field->getDbo()); $paramField->title = 'Block User'; // For translation parser: CBTxt::T( 'Block User' ); $paramField->_html = $lists['block']; $paramField->description = ''; $paramField->name = 'block'; $pseudoFields[] = $paramField; $paramField = new FieldTable($field->getDbo()); $paramField->title = 'Approve User'; // For translation parser: CBTxt::T( 'Approve User' ); $paramField->_html = $lists['approved']; $paramField->description = ''; $paramField->name = 'approved'; $pseudoFields[] = $paramField; $paramField = new FieldTable($field->getDbo()); $paramField->title = 'Confirm User'; // For translation parser: CBTxt::T( 'Confirm User' ); $paramField->_html = $lists['confirmed']; $paramField->description = ''; $paramField->name = 'confirmed'; $pseudoFields[] = $paramField; $paramField = new FieldTable($field->getDbo()); $paramField->title = 'Ban User'; // For translation parser: CBTxt::T( 'Ban User' ); $paramField->_html = $lists['banned']; $paramField->description = ''; $paramField->name = 'banned'; $pseudoFields[] = $paramField; $paramField = new FieldTable($field->getDbo()); $paramField->title = 'Receive Moderator Emails'; // For translation parser: CBTxt::T( 'Receive Moderator Emails' ); if ($canEmailEvents || $user->sendEmail) { $paramField->_html = $lists['sendEmail']; } else { $paramField->_html = CBTxt::T('No (User\'s group-level doesn\'t allow this)') . '<input type="hidden" name="sendEmail" value="0" />'; } $paramField->description = ''; $paramField->name = 'sendEmail'; $pseudoFields[] = $paramField; } if ($user->id) { $paramField = new FieldTable($field->getDbo()); $paramField->title = 'Register Date'; // For translation parser: CBTxt::T( 'Register Date' ); $paramField->_html = cbFormatDate($user->registerDate); $paramField->description = ''; $paramField->name = 'registerDate'; $pseudoFields[] = $paramField; $paramField = new FieldTable($field->getDbo()); $paramField->title = 'Last Visit Date'; // For translation parser: CBTxt::T( 'Last Visit Date' ); $paramField->_html = cbFormatDate($user->lastvisitDate); $paramField->description = ''; $paramField->name = 'lastvisitDate'; $pseudoFields[] = $paramField; $paramField = new FieldTable($field->getDbo()); $paramField->title = 'Last Reset Time'; // For translation parser: CBTxt::T( 'Last Reset Time' ); $paramField->_html = cbFormatDate($user->lastResetTime); $paramField->description = ''; $paramField->name = 'lastResetTime'; $pseudoFields[] = $paramField; $paramField = new FieldTable($field->getDbo()); $paramField->title = 'Password Reset Count'; // For translation parser: CBTxt::T( 'Password Reset Count' ); $paramField->_html = (int) $user->resetCount; $paramField->description = ''; $paramField->name = 'resetCount'; $pseudoFields[] = $paramField; } } switch ($output) { case 'htmledit': foreach ($pseudoFields as $paramField) { $paramField->required = $this->_isRequired($field, $user, $reason); $paramField->profile = $field->profile; $paramField->params = $field->params; $results .= parent::getFieldRow($paramField, $user, $output, $formatting, $reason, $list_compare_types); } unset($pseudoFields); return $results; break; default: return null; break; } }