/**
  * Returns a USERPARAMS field in specified format
  *
  * @param  moscomprofilerFields  $field
  * @param  moscomprofilerUser    $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                
  */
 function getFieldRow(&$field, &$user, $output, $formatting, $reason, $list_compare_types)
 {
     global $_CB_framework, $_CB_database, $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))))) {
         //Loop through each parameter and prepare rendering appropriately.
         foreach ($userParams as $k => $userParam) {
             $paramField = new moscomprofilerFields($_CB_database);
             $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->displaytitle = substr($userParam[0], 0, 6) == '<label' ? -1 : 1;
             // don't redisplay <label for> markup
             if ($paramField->displaytitle == -1) {
                 if (substr($paramField->title, -9, 1) != ':' && substr($paramField->title, -8) == '</label>') {
                     $paramField->title = substr($paramField->title, 0, -8) . ':</label>';
                 }
             }
             $paramField->type = 'param';
             // this is for cb_ftparam class to be correct.
             $pseudoFields[] = $paramField;
         }
     }
     if ($_CB_framework->getUi() == 2) {
         if (checkJversion() < 2) {
             $myGids = CBuser::getMyInstance()->getUserData()->gids;
             $cms_mod = $_CB_framework->acl->mapGroupNamesToValues('Administrator');
             $cms_admin = $_CB_framework->acl->mapGroupNamesToValues('Superadministrator');
         }
         $i_am_super_admin = $_CB_framework->acl->amIaSuperAdmin();
         //1.6+ only: $user_is_super_admin			=	$_CB_framework->acl->checkActionForGroups( $this->gids, 'core.admin', null );
         if (checkJversion() == 2) {
             $cms_admin_title = 'Super Users';
         } else {
             $cms_admin_title = 'Super Administrator';
         }
         $canBlockUser = CBuser::getMyInstance()->authoriseAction('core.edit.state', 'com_users');
         $canEmailEvents = $user->id == 0 && (checkJversion() >= 2 ? $canBlockUser : count(array_intersect($myGids, array($cms_mod, $cms_admin)))) || CBuser::getInstance($user->id)->authoriseAction('core.edit.state', 'com_users') || array_intersect($user->gids, getParentGIDS($ueConfig['imageApproverGid']));
         // allow also CB isModerator
         $lists = array();
         if ($canBlockUser) {
             // ensure user can't add group higher than themselves
             $gtree = $_CB_framework->acl->get_groups_below_me();
             if (checkJversion() == 2) {
                 if (!$i_am_super_admin && $user->id && CBuser::getInstance($user->id)->authoriseAction('core.manage', 'com_users') && (CBuser::getInstance($user->id)->authoriseAction('core.edit', 'com_users') || CBuser::getInstance($user->id)->authoriseAction('core.edit.state', 'com_users'))) {
                     $disabled = ' disabled="disabled"';
                 } else {
                     $disabled = '';
                 }
                 $strgids = array_map('strval', $user->gids);
                 $lists['gid'] = moscomprofilerHTML::selectList($gtree, 'gid[]', 'class="inputbox" size="11" multiple="multiple"' . $disabled, 'value', 'text', $strgids, 2, false);
             } else {
                 if (!$i_am_super_admin && (in_array($cms_admin, $user->gids) && in_array($cms_admin, $myGids) || $user->id == $_CB_framework->myId() && in_array($cms_admin, $myGids))) {
                     $lists['gid'] = "<input type=\"hidden\" name=\"gid\" value=\"{$user->gid}\" /><strong>{$cms_admin_title}</strong>";
                 } else {
                     if (!$i_am_super_admin && (in_array($cms_mod, $myGids) && !in_array($cms_admin, $myGids) && in_array($cms_mod, $user->gids))) {
                         $lists['gid'] = "<input type=\"hidden\" name=\"gid\" value=\"{$user->gid}\" /><strong>Administrator</strong>";
                     } else {
                         $lists['gid'] = moscomprofilerHTML::selectList($gtree, 'gid', 'class="inputbox" size="11"', 'value', 'text', $user->gid, 2, false);
                     }
                 }
             }
             // build the html select list
             $lists['block'] = moscomprofilerHTML::yesnoSelectList('block', 'class="inputbox" size="1"', $user->block);
             $list_approved = array();
             $list_approved[] = moscomprofilerHTML::makeOption('0', CBTxt::T('Unapproved'));
             $list_approved[] = moscomprofilerHTML::makeOption('1', CBTxt::T('Approved'));
             $list_approved[] = moscomprofilerHTML::makeOption('2', CBTxt::T('Disapproved'));
             $lists['approved'] = moscomprofilerHTML::selectList($list_approved, 'approved', 'class="inputbox" size="1"', 'value', 'text', $user->approved, 2, false);
             $lists['confirmed'] = moscomprofilerHTML::yesnoSelectList('confirmed', 'class="inputbox" size="1"', $user->confirmed);
             // build the html select list
             $lists['sendEmail'] = moscomprofilerHTML::yesnoSelectList('sendEmail', 'class="inputbox" size="1"', $user->sendEmail);
             $paramField = new moscomprofilerFields($_CB_database);
             $paramField->title = CBTxt::T('Group');
             $paramField->_html = $lists['gid'];
             $paramField->description = '';
             $paramField->name = 'gid';
             $pseudoFields[] = $paramField;
             $paramField = new moscomprofilerFields($_CB_database);
             $paramField->title = CBTxt::T('Block User');
             $paramField->_html = $lists['block'];
             $paramField->description = '';
             $paramField->name = 'block';
             $pseudoFields[] = $paramField;
             $paramField = new moscomprofilerFields($_CB_database);
             $paramField->title = CBTxt::T('Approve User');
             $paramField->_html = $lists['approved'];
             $paramField->description = '';
             $paramField->name = 'approved';
             $pseudoFields[] = $paramField;
             $paramField = new moscomprofilerFields($_CB_database);
             $paramField->title = CBTxt::T('Confirm User');
             $paramField->_html = $lists['confirmed'];
             $paramField->description = '';
             $paramField->name = 'confirmed';
             $pseudoFields[] = $paramField;
             $paramField = new moscomprofilerFields($_CB_database);
             $paramField->title = 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 moscomprofilerFields($_CB_database);
             $paramField->title = CBTxt::T('Register Date');
             $paramField->_html = cbFormatDate($user->registerDate);
             $paramField->description = '';
             $paramField->name = 'registerDate';
             $pseudoFields[] = $paramField;
             $paramField = new moscomprofilerFields($_CB_database);
             $paramField->title = CBTxt::T('Last Visit Date');
             $paramField->_html = cbFormatDate($user->lastvisitDate);
             $paramField->description = '';
             $paramField->name = 'lastvisitDate';
             $pseudoFields[] = $paramField;
         }
     }
     switch ($output) {
         case 'htmledit':
             foreach ($pseudoFields as $paramField) {
                 $paramField->required = $this->_isRequired($field, $user, $reason);
                 $paramField->profile = $field->profile;
                 $results .= parent::getFieldRow($paramField, $user, $output, $formatting, $reason, $list_compare_types);
             }
             unset($pseudoFields);
             return $results;
             break;
         default:
             return null;
             break;
     }
 }
 function sendToModerators($sub, $message, $replaceVariables = false, $mode = 0, $cc = null, $bcc = null, $attachment = null)
 {
     global $_CB_database, $ueConfig;
     $moderators = implode(',', getParentGIDS($ueConfig['imageApproverGid']));
     if ($moderators) {
         $query = 'SELECT u.id' . "\n FROM #__users u" . "\n INNER JOIN #__comprofiler c" . ' ON u.id = c.id';
         if (checkJversion() == 2) {
             $query .= "\n INNER JOIN #__user_usergroup_map g" . ' ON c.id = g.user_id' . "\n WHERE g.group_id IN ( {$moderators} )";
         } else {
             $query .= "\n WHERE u.gid IN ( {$moderators} )";
         }
         $query .= "\n AND u.block = 0" . "\n AND c.confirmed = 1" . "\n AND c.approved = 1" . "\n AND u.sendEmail = 1";
         $_CB_database->setQuery($query);
         $mods = $_CB_database->loadObjectList();
         foreach ($mods as $mod) {
             $this->sendFromSystem($mod->id, $sub, $message, $replaceVariables, $mode, $cc, $bcc, $attachment);
         }
     }
 }
Example #3
0
	/**
	 * Returns a USERPARAMS field in specified format
	 *
	 * @param  moscomprofilerFields  $field
	 * @param  moscomprofilerUser    $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                
	 */
	function getFieldRow( &$field, &$user, $output, $formatting, $reason, $list_compare_types ) {
		global $_CB_framework, $_CB_database, $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) ) ) ) )
		{
			//Loop through each parameter and prepare rendering appropriately.
			foreach ( $userParams AS $k => $userParam ) {
				$paramField					=	new moscomprofilerFields( $_CB_database );
				$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->displaytitle	=	substr( $userParam[0], 0, 6 ) == '<label' ? -1 : 1;		// don't redisplay <label for> markup
				$paramField->type			=	'param';		// this is for cb_ftparam class to be correct.
				$pseudoFields[]				=	$paramField;
			}
		}

		if( $_CB_framework->getUi() == 2 ) {
			$myGid							=	userGID( $_CB_framework->myId() );
			$cms_mod						=	$_CB_framework->acl->mapGroupNamesToValues( 'Administrator' );
			$cms_admin						=	$_CB_framework->acl->mapGroupNamesToValues( 'Superadministrator' );
			if ( checkJversion() == 2 ) {
				$cms_admin_title			=	'Super Users';
			} else {
				$cms_admin_title			=	'Super Administrator';
			}
			$canBlockUser					=	$_CB_framework->check_acl( 'canBlockUsers', $_CB_framework->myUserType() );
			$canEmailEvents					=	   ( ( $user->id == 0 ) && ( in_array( $myGid, array( $cms_mod, $cms_admin ) ) ) )
												|| $_CB_framework->check_acl( 'canReceiveAdminEmails', $_CB_framework->acl->get_group_name( $user->gid, 'ARO' ) )
												|| in_array( $user->gid, getParentGIDS( $ueConfig['imageApproverGid'] ) );	// allow also CB isModerator
			$lists							=	array();
			$user_group						=	strtolower( $_CB_framework->acl->get_group_name( $user->gid, 'ARO' ) );
			if (( $user_group == strtolower( $cms_admin_title ) && $myGid != $cms_admin) || ( $user->id == $_CB_framework->myId() && $myGid == $cms_admin)) {
				$lists['gid']				=	"<input type=\"hidden\" name=\"gid\" value=\"$user->gid\" /><strong>$cms_admin_title</strong>";
			} else if ( $myGid == $cms_mod && $user->gid == $cms_mod ) {
				$lists['gid']				=	"<input type=\"hidden\" name=\"gid\" value=\"$user->gid\" /><strong>Administrator</strong>";
			} else {
				// ensure user can't add group higher than themselves
				if ( checkJversion() <= 0 ) {
					$my_groups 				=	$_CB_framework->acl->get_object_groups( 'users', $_CB_framework->myId(), 'ARO' );
				} else {
					$aro_id					=	$_CB_framework->acl->get_object_id( 'users', $_CB_framework->myId(), 'ARO' );
					$my_groups 				=	$_CB_framework->acl->get_object_groups( $aro_id, 'ARO' );
				}

				if ( is_array( $my_groups ) && ( count( $my_groups ) > 0 ) ) {
					$ex_groups				=	$_CB_framework->acl->get_group_children( $my_groups[0], 'ARO', 'RECURSE' );
					if ( $ex_groups === null ) {
						$ex_groups			=	array();		// mambo fix
					}
				} else {
					$ex_groups				=	array();
				}
	
				$gtree						=	$_CB_framework->acl->get_group_children_tree( null, 'USERS', false );
	
				// remove users 'above' me
				$i							=	0;
				while ( $i < count( $gtree ) ) {
					if ( in_array( $gtree[$i]->value, $ex_groups ) ) {
						array_splice( $gtree, $i, 1 );
					} else {
						$i++;
					}
				}

				if ( checkJversion() == 2 ) {
					$lists['gid']			=	moscomprofilerHTML::selectList( $gtree, 'gid[]', 'class="inputbox" size="11" multiple="multiple"', 'value', 'text', $user->gids, 2, false );
				} else {
					$lists['gid']			=	moscomprofilerHTML::selectList( $gtree, 'gid', 'class="inputbox" size="11"', 'value', 'text', $user->gid, 2, false );
				}
			}
	
			// build the html select list
			$lists['block']					=	moscomprofilerHTML::yesnoSelectList( 'block', 'class="inputbox" size="1"', $user->block );

			$list_approved					=	array();
			$list_approved[]				=	moscomprofilerHTML::makeOption( '0', CBTxt::T( 'Unapproved' ) );
			$list_approved[]				=	moscomprofilerHTML::makeOption( '1', CBTxt::T( 'Approved' ) );
			$list_approved[]				=	moscomprofilerHTML::makeOption( '2', CBTxt::T( 'Disapproved' ) );
			$lists['approved']				=	moscomprofilerHTML::selectList( $list_approved, 'approved', 'class="inputbox" size="1"', 'value', 'text', $user->approved, 2, false );

			$lists['confirmed']				=	moscomprofilerHTML::yesnoSelectList( 'confirmed', 'class="inputbox" size="1"', $user->confirmed );
			// build the html select list
			$lists['sendEmail']				=	moscomprofilerHTML::yesnoSelectList( 'sendEmail', 'class="inputbox" size="1"', $user->sendEmail );

			$paramField						=	new moscomprofilerFields( $_CB_database );
			$paramField->title				=	CBTxt::T( 'Group' );
			$paramField->_html				=	$lists['gid'];
			$paramField->description		=	'';
			$paramField->name				=	'gid';
			$pseudoFields[]					=	$paramField;

			if ( $canBlockUser ) {

				$paramField					=	new moscomprofilerFields( $_CB_database );
				$paramField->title			=	CBTxt::T( 'Block User' );
				$paramField->_html			=	$lists['block'];
				$paramField->description	=	'';
				$paramField->name			=	'block';
				$pseudoFields[]				=	$paramField;

				$paramField					=	new moscomprofilerFields( $_CB_database );
				$paramField->title			=	CBTxt::T( 'Approve User' );
				$paramField->_html			=	$lists['approved'];
				$paramField->description	=	'';
				$paramField->name			=	'approved';
				$pseudoFields[]				=	$paramField;

				$paramField					=	new moscomprofilerFields( $_CB_database );
				$paramField->title			=	CBTxt::T( 'Confirm User' );
				$paramField->_html			=	$lists['confirmed'];
				$paramField->description	=	'';
				$paramField->name			=	'confirmed';
				$pseudoFields[]				=	$paramField;

			}

			$paramField						=	new moscomprofilerFields( $_CB_database );
			$paramField->title				=	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 moscomprofilerFields( $_CB_database );
				$paramField->title			=	CBTxt::T( 'Register Date' );
				$paramField->_html			=	cbFormatDate( $user->registerDate );
				$paramField->description	=	'';
				$paramField->name			=	'registerDate';
				$pseudoFields[]				=	$paramField;

				$paramField					=	new moscomprofilerFields( $_CB_database );
				$paramField->title			=	CBTxt::T( 'Last Visit Date' );
				$paramField->_html			=	cbFormatDate( $user->lastvisitDate );
				$paramField->description	=	'';
				$paramField->name			=	'lastvisitDate';
				$pseudoFields[]				=	$paramField;
			}
		}

		switch ( $output ) {
			case 'htmledit':
				foreach ( $pseudoFields as $paramField ) {
					$paramField->required	=	$this->_isRequired( $field, $user, $reason );
					$paramField->profile	=	$field->profile;
					$results				.=	parent::getFieldRow( $paramField, $user, $output, $formatting, $reason, $list_compare_types );
				}
				unset( $pseudoFields );
				return $results;
				break;

			default:
				return null;
				break;
		}
	}