示例#1
0
 /**
  * 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;
     }
 }