function getGroupName($mixedId)
 {
     if ('m' == $mixedId[0]) {
         require_once BX_DIRECTORY_PATH_INC . 'membership_levels.inc.php';
         $a = getMembershipInfo(substr($mixedId, 1));
         return $a && isset($a['Name']) ? $a['Name'] : 'undefined';
     } else {
         bx_import('BxDolPrivacyQuery');
         $oPrivacyQuery = new BxDolPrivacyQuery();
         $a = $oPrivacyQuery->getGroupsBy(array('type' => 'id', 'id' => $mixedId));
         return $a && (int) $a['owner_id'] == 0 ? _t('_ps_group_' . $a['id'] . '_title') : $a['title'];
     }
 }
/**
 * Set a membership for a member
 *
 * @param int     $iMemberId        - member that is going to get the membership
 * @param int     $iMembershipId    - membership that is going to be assigned to the member
 *                                  if $iMembershipId == MEMBERSHIP_ID_STANDARD then $days
 *                                  and $bStartsNow parameters are not used, so Standard
 *                                  membership is always set immediately and `forever`
 *
 * @param int     $days             - number of days to set membership for
 *                                  if 0, then the membership is set forever
 *
 * @param boolean $bStartsNow       - if true, the membership will start immediately;
 *                                  if false, the membership will start after the current
 *                                  membership expires
 *
 * @return boolean                - true in case of success, false in case of failure
 *
 *
 */
function setMembership($iMemberId, $iMembershipId, $iDays = 0, $bStartsNow = false, $sTransactionId = '', $isSendMail = true)
{
    $iMemberId = (int) $iMemberId;
    $iMembershipId = (int) $iMembershipId;
    $iDays = (int) $iDays;
    $bStartsNow = $bStartsNow ? true : false;
    $SECONDS_IN_DAY = 86400;
    if (!$iMemberId) {
        $iMemberId = -1;
    }
    if (empty($sTransactionId)) {
        $sTransactionId = 'NULL';
    }
    //check if member exists
    $aProfileInfo = getProfileInfo($iMemberId);
    if (!$aProfileInfo) {
        return false;
    }
    //check if membership exists
    $iRes = (int) db_value("SELECT COUNT(`ID`) FROM `sys_acl_levels` WHERE `ID`='" . $iMembershipId . "' LIMIT 1");
    if ($iRes != 1) {
        return false;
    }
    if ($iMembershipId == MEMBERSHIP_ID_NON_MEMBER) {
        return false;
    }
    $aMembershipCurrent = getMemberMembershipInfo($iMemberId);
    $aMembershipLatest = getMemberMembershipInfo_latest($iMemberId);
    /**
     * Setting Standard membership level
     */
    if ($iMembershipId == MEMBERSHIP_ID_STANDARD) {
        if ($aMembershipCurrent['ID'] == MEMBERSHIP_ID_STANDARD) {
            return true;
        }
        //delete any present and future memberships
        $res = db_res("DELETE FROM `sys_acl_levels_members` WHERE `IDMember`='" . $iMemberId . "' AND (`DateExpires` IS NULL OR `DateExpires`>NOW())");
        if (db_affected_rows($res) <= 0) {
            return false;
        }
    }
    if ($iDays < 0) {
        return false;
    }
    $iDateStarts = time();
    if (!$bStartsNow) {
        /**
         * make the membership starts after the latest membership expires
         * or return false if latest membership isn't Standard and is lifetime membership
         */
        if (!is_null($aMembershipLatest['DateExpires'])) {
            $iDateStarts = $aMembershipLatest['DateExpires'];
        } else {
            if (is_null($aMembershipLatest['DateExpires']) && $aMembershipLatest['ID'] != MEMBERSHIP_ID_STANDARD) {
                return false;
            }
        }
    } else {
        // delete previous profile's membership level and actions traces
        db_res("DELETE FROM `sys_acl_levels_members` WHERE `IDMember`='" . $iMemberId . "'");
        clearActionsTracksForMember($iMemberId);
    }
    /**
     * set lifetime membership if 0 days is used.
     */
    $iDateExpires = $iDays != 0 ? (int) $iDateStarts + $iDays * $SECONDS_IN_DAY : 'NULL';
    $res = db_res("INSERT `sys_acl_levels_members` (`IDMember`, `IDLevel`, `DateStarts`, `DateExpires`, `TransactionID`) VALUES ('" . $iMemberId . "', '" . $iMembershipId . "', FROM_UNIXTIME(" . $iDateStarts . "), FROM_UNIXTIME(" . $iDateExpires . "), '" . $sTransactionId . "')");
    if (db_affected_rows($res) <= 0) {
        return false;
    }
    //Set Membership Alert
    bx_import('BxDolAlerts');
    $oZ = new BxDolAlerts('profile', 'set_membership', '', $iMemberId, array('mlevel' => $iMembershipId, 'days' => $iDays, 'starts_now' => $bStartsNow, 'txn_id' => $sTransactionId));
    $oZ->alert();
    //Notify user about changed membership level
    bx_import('BxDolEmailTemplates');
    $oEmailTemplate = new BxDolEmailTemplates();
    $aTemplate = $oEmailTemplate->getTemplate('t_MemChanged', $iMemberId);
    $aMembershipInfo = getMembershipInfo($iMembershipId);
    $aTemplateVars = array('MembershipLevel' => $aMembershipInfo['Name']);
    if ($isSendMail) {
        sendMail($aProfileInfo['Email'], $aTemplate['Subject'], $aTemplate['Body'], $iMemberId, $aTemplateVars);
    }
    //Notify admin about changed user's membership level
    $aTemplate = $oEmailTemplate->parseTemplate('t_UserMemChanged', $aTemplateVars, $iMemberId);
    sendMail($GLOBALS['site']['email'], $aTemplate['Subject'], $aTemplate['Body']);
    return true;
}
        echo $p_arr['ID'];
        ?>
"><?php 
        echo $p_arr['ID'];
        ?>
&nbsp</td>
<td align=center bgcolor="#ffffff"><?php 
        echo $p_arr['num_of_mem'];
        ?>
</td>
<td align=center bgcolor="#ffffff"><?php 
        echo $p_arr['num_of_days'];
        ?>
</td>
<td align=center bgcolor="#ffffff"><?php 
        $membership_info = getMembershipInfo($p_arr['MID']);
        echo $membership_info['Name'];
        ?>
</td>
<td align=center bgcolor="#ffffff"><input type=checkbox name="<?php 
        echo $p_arr[ID];
        ?>
"></td>
</tr>
<?php 
    }
}
?>
</table>

<center>
/**
 * Returns transaction description
 *
 * @param string $checkoutAction		- payment type action (e.g memership, credits, etc)
 * @param string $data					- payment action data (e.g. membership ID or event ID)
 * @param bool $languageParse			- indicates if description should be language-parsed
 *
 * @return string 						- return URL
 *
 *
 */
function returnDescByAction($checkoutAction, $data, $languageParse)
{
    switch ($checkoutAction) {
        case 'membership':
            $membershipArr = getMembershipInfo($data);
            if ($languageParse) {
                return _t('_Membership purchase') . ' - ' . $membershipArr['Name'];
            } else {
                return 'Membership purchase - ' . $membershipArr['Name'];
            }
        case 'speeddating':
            $eventArr = db_arr('SELECT `Title` FROM `SDatingEvents` WHERE `ID` = ' . (int) $data);
            if ($languageParse) {
                return _t('_SpeedDating ticket purchase') . ' - ' . $eventArr['Title'];
            } else {
                return 'SpeedDating ticket purchase - ' . $eventArr['Title'];
            }
        case 'credits':
            if ($languageParse) {
                return _t('_Credits purchase') . ' - ' . getCreditsAmountByIndex($data);
            } else {
                return 'Credits purchase - ' . getCreditsAmountByIndex($data);
            }
        case 'profiles':
            if ($languageParse) {
                return _t('_Profiles purchase') . ' - ' . $data;
            } else {
                return 'Profiles purchase - ' . $data;
            }
        default:
            return '';
    }
}
function PageCompPageMainCode()
{
    global $affnum_arr;
    global $levels_res;
    ob_start();
    ?>

<form action=<?php 
    echo $_SERVER['PHP_SELF'];
    ?>
 method="post">
	<input type=hidden name=upgrade value=YES>
		<table class="text" width="400" align=center border="0" cellpadding="2" cellspacing="0">
<?php 
    if (mysql_num_rows($levels_res) > 0) {
        echo "\r\n\t\t\t<tr>\r\n\t\t\t\t<td align=center colspan=2>\r\n\t\t\t\t" . _t("_Congratulation") . "<br />" . _t("_Got_members_part_1") . $affnum_arr[0] . _t("_Got_members_part_2") . _t("_Choose_membership") . "<br /><br />\r\n\t\t\t\t</td>\r\n\t\t\t</tr>";
        $i = 0;
        while ($levels_arr = mysql_fetch_array($levels_res)) {
            $membership_info = getMembershipInfo($levels_arr['MID']);
            ?>
			<tr>
				<td align="right"><input type=radio name=MemType id="MemType<?php 
            echo $levels_arr['MID'] . '-' . $levels_arr['num_of_days'];
            ?>
" value="<?php 
            echo $levels_arr['MID'] . '-' . $levels_arr['num_of_days'];
            ?>
"></td>
				<td align="left" nowrap>
					<label for="MemType<?php 
            echo $levels_arr['MID'] . '-' . $levels_arr['num_of_days'];
            ?>
">
						<font color=red><?php 
            echo $membership_info['Name'];
            ?>
</font> ( <?php 
            echo $levels_arr['num_of_days'] . ' ' . _t('_days');
            ?>
, <?php 
            echo _t('_requires_N_members', $levels_arr['num_of_mem']);
            ?>
 )
					</label>
					<br />
				</td>
			</tr>
<?php 
            $i++;
        }
        ?>
			<tr>
				<td align=center colspan=2>
					<br />
					<input type="submit" name="submit" class="no" value=Apply>
				</td>
			</tr>
<?php 
    }
    ?>
		</table>
</form>
<?php 
    $ret = ob_get_contents();
    ob_end_clean();
    return $ret;
}