/** * Check whethere viewer is a member of dynamic group. * * @param mixed $mixedGroupId dynamic group ID. * @param integer $iObjectOwnerId object owner ID. * @param integer $iViewerId viewer ID. * @return boolean result of operation. */ function isDynamicGroupMember($mixedGroupId, $iObjectOwnerId, $iViewerId, $iObjectId) { if (preg_match('/^m(\\d+)$/', $mixedGroupId, $m)) { $iMembershipId = $m[1]; require_once BX_DIRECTORY_PATH_INC . 'membership_levels.inc.php'; $aMembershipInfo = getMemberMembershipInfo($iViewerId); return $iMembershipId == $aMembershipInfo['ID'] && (!$aMembershipInfo['DateStarts'] || $aMembershipInfo['DateStarts'] < time()) && (!$aMembershipInfo['DateExpires'] || $aMembershipInfo['DateExpires'] > time()) ? true : false; } return false; }
/** * Determines if ticket available to specified member for specified event * * @param int $memberID - member ID * @param int $eventID - event ID * * @return float/bool - ticket price if ticket available, false otherwise * * */ function isTicketAvailable($memberID, $eventID) { global $date_format; // argument validation $memberID = (int) $memberID; $eventID = (int) $eventID; $memberArr = getProfileInfo($memberID); $memberSex = $memberArr['Sex']; $membershipArr = getMemberMembershipInfo($memberID); $eventArr = db_arr("SELECT `ID`, `Title`, `Place`, `EventStart`, `TicketPriceFemale`, `TicketPriceMale`, `TicketCountFemale`, `TicketCountMale` FROM `SDatingEvents`\n\t\t\t\t\tWHERE `ID` = {$eventID}\n\t\t\t\t\tAND `Status` = 'Active'\n\t\t\t\t\tAND NOW() > `TicketSaleStart` AND NOW() < `TicketSaleEnd`\n\t\t\t\t\tAND FIND_IN_SET('{$memberSex}', `EventSexFilter`)\n\t\t\t\t\tAND ( TO_DAYS('{$memberArr['DateOfBirth']}')\n\t\t\t\t\t\tBETWEEN TO_DAYS(DATE_SUB(NOW(), INTERVAL `EventAgeUpperFilter` YEAR))\n\t\t\t\t\t\tAND TO_DAYS(DATE_SUB(NOW(), INTERVAL `EventAgeLowerFilter` YEAR)) )\n\t\t\t\t\tAND ( INSTR(`EventMembershipFilter`, '\\'all\\'') OR INSTR(`EventMembershipFilter`, '\\'{$membershipArr['ID']}\\'') )"); $partNumArr = db_arr("SELECT COUNT(*) FROM `SDatingParticipants`\n\t\t\t\t\t\t\t\tLEFT JOIN `Profiles` ON `SDatingParticipants`.`IDMember` = `Profiles`.`ID`\n\t\t\t\t\t\t\t\tWHERE `SDatingParticipants`.`IDEvent` = {$eventID}\n\t\t\t\t\t\t\t\tAND `Profiles`.`Sex` = '{$memberSex}'"); $ticketsLeft = $memberArr['Sex'] == 'male' ? $eventArr['TicketCountMale'] - $partNumArr[0] : $eventArr['TicketCountFemale'] - $partNumArr[0]; $ticketPrice = (double) ($memberArr['Sex'] == 'male' ? $eventArr['TicketPriceMale'] : $eventArr['TicketPriceFemale']); $ticketPrice = sprintf("%.2f", $ticketPrice); if ($eventArr['ID'] && $ticketsLeft > 0) { $res = $ticketPrice; } else { $res = false; } return $res; }
/** * contr panel "member info" */ function contr_panel_member_info_g4() { global $site; global $p_arr; global $en_sdating; $free_mode = getParam("free_mode") == "on" ? 1 : 0; // new messages attention $new_mess_arr = db_arr("SELECT ID FROM `Messages` WHERE Recipient = {$p_arr['ID']} AND New = '1' ORDER BY Date DESC LIMIT 1"); if ($new_mess_arr) { $mess = $new_mess_arr[ID]; } // new kisses attention $new_kiss_arr = db_arr("SELECT ID FROM `VKisses` WHERE Member = {$p_arr['ID']} AND New = '1' LIMIT 1"); if ($new_kiss_arr) { $vkiss = 1; } // new friends attention $new_friend_arr = db_arr("SELECT `ID` FROM `FriendList` WHERE `Profile` = {$p_arr['ID']} AND `Check` = '0' LIMIT 1"); if ($new_friend_arr) { $frd = 1; } ob_start(); ?> <table width="100%" cellspacing="0" cellpadding="3" border="0" class="cp_table"> <!-- Profile status --> <tr> <td valign="middle" class="cp_td" align="left"><img src="<?php echo $site['images']; ?> cp_status.gif"></td> <td valign="middle" class="cp_td" align="left"><?php echo _t("_Profile status"); ?> : </td> <td valign="middle" class="cp_td_r" align="left"> <b><font class=prof_stat_<?php echo $p_arr['Status']; ?> > <?php echo _t("__{$p_arr['Status']}"); ?> </font></b> <?php switch ($p_arr['Status']) { case 'Unconfirmed': echo _t("_ATT_UNCONFIRMED"); break; case 'Approval': echo _t("_ATT_APPROVAL"); break; case 'Active': echo _t("_ATT_ACTIVE"); break; case 'Rejected': echo _t("_ATT_REJECTED"); break; case 'Suspended': echo _t("_ATT_SUSPENDED"); break; } ?> </td> </tr> <!-- Membership --> <?php if (!$free_mode) { ?> <tr> <td valign="top" class="cp_td" width="22" align="left"><img src="<?php echo $site['images']; ?> cp_membership.gif"></td> <td valign="top" class="cp_td" align="left" style="padding-top:7px;"><?php echo _t("_Membership2"); ?> :</td> <td valign="top" class="cp_td_r" align="left"> <?php echo GetMembershipStatus($p_arr['ID']); ?> </td> </tr> <?php } ?> <!-- Last login --> <tr> <td valign="middle" class="cp_td" align="left"><img src="<?php echo $site['images']; ?> cp_llogin.gif"></td> <td valign="middle" class="cp_td" align="left"><?php echo _t("_Last login"); ?> : </td> <td valign="middle" class="cp_td_r" align="left"> <?php if (!$p_arr['LastLoggedIn'] || $p_arr['LastLoggedIn'] == "0000-00-00 00:00:00") { $p_arr['LastLoggedIn'] = _t("_never"); } echo $p_arr['LastLoggedIn']; ?> </td> </tr> <!-- SpeedDating info --> <?php if ($en_sdating) { ?> <tr class="table"> <td valign="middle" class="cp_td" align="left"><img src="<?php echo $site['images']; ?> cp_lchanges.gif"></td> <td valign="middle" class="cp_td" align="left"><?php echo _t('_SpeedDating tickets'); ?> : </td> <td valign="middle" class="cp_td_r" align="left"> <?php $membership_arr = getMemberMembershipInfo($p_arr['ID']); $events_query = "SELECT `SDatingEvents`.`ID`, `Title`, (NOW() > `EventEnd` AND NOW() < DATE_ADD(`EventEnd`, INTERVAL `ChoosePeriod` DAY)) AS `ChooseActive`\r\n\t\t\t\t\tFROM `SDatingEvents`\r\n\t\t\t\t\tLEFT JOIN `SDatingParticipants` ON `SDatingParticipants`.`IDEvent` = `SDatingEvents`.`ID` AND `SDatingParticipants`.`IDMember` = {$p_arr['ID']}\r\n\t\t\t\t\tWHERE `SDatingEvents`.`Status` = 'Active'\r\n\t\t\t\t\tAND `SDatingParticipants`.`ID` IS NOT NULL\r\n\t\t\t\t\tAND NOW() < DATE_ADD(`SDatingEvents`.`EventEnd`, INTERVAL `SDatingEvents`.`ChoosePeriod` DAY)\r\n\t\t\t\t\tAND FIND_IN_SET('{$p_arr['Sex']}', `SDatingEvents`.`EventSexFilter`)\r\n\t\t\t\t\tAND ( TO_DAYS('{$p_arr['DateOfBirth']}')\r\n\t\t\t\t\t\tBETWEEN TO_DAYS(DATE_SUB(NOW(), INTERVAL `SDatingEvents`.`EventAgeUpperFilter` YEAR))\r\n\t\t\t\t\t\tAND TO_DAYS(DATE_SUB(NOW(), INTERVAL `SDatingEvents`.`EventAgeLowerFilter` YEAR)) )\r\n\t\t\t\t\tAND ( INSTR(`SDatingEvents`.`EventMembershipFilter`, '\\'all\\'') OR INSTR(`SDatingEvents`.`EventMembershipFilter`, '\\'{$membership_arr['ID']}\\'') )\r\n\t\t\t\t\tORDER BY `SDatingEvents`.`EventStart` DESC"; $events_res = db_res($events_query); if (mysql_num_rows($events_res) == 0) { echo _t('_none'); } else { $events_links = ''; while ($event_arr = mysql_fetch_assoc($events_res)) { $events_links .= strlen($events_links) ? ', ' : ''; $events_links .= "<a href=\"{$site['url']}events.php?action=show_info&event_id={$event_arr['ID']}\">" . process_line_output($event_arr['Title']) . "</a>"; } echo $events_links; } ?> </td> </tr> <?php } ?> <tr> <td valign="middle" class="cp_td" align="left"><img src="<?php echo $site['images']; ?> cp_messages.gif"></td> <td valign="middle" class="cp_td" align="left"><?php echo _t("_Messages"); ?> :</td> <td valign="middle" class="cp_td_r" align="left"><?php if ($mess) { echo _t("_ATT_MESSAGE", $mess, $site['url']); } else { echo _t("_ATT_MESSAGE_NONE", $site['url']); } ?> </td> </tr> <tr> <td valign="middle" class="cp_td" align="left"><img src="<?php echo $site['images']; ?> cp_kisses.gif"></td> <td valign="middle" class="cp_td" align="left"><?php echo _t("_Kisses"); ?> :</td> <td valign="middle" class="cp_td_r" align="left"><?php if ($vkiss) { echo _t("_ATT_VKISS", $site['url']); } else { echo _t("_ATT_VKISS_NONE", $site['url']); } ?> </td> </tr> <tr> <td valign="middle" class="cp_td" align="left"><img src="<?php echo $site['images']; ?> cp_friends.gif"></td> <td valign="middle" class="cp_td" align="left"><?php echo _t("_Friends"); ?> :</td> <td valign="middle" class="cp_td_r" align="left"><?php if ($frd) { echo _t("_ATT_FRIEND", $site['url']); } else { echo _t("_ATT_FRIEND_NONE", $site['url']); } ?> </td> </tr> </table> <?php $ret = ob_get_contents(); ob_end_clean(); return $ret; }
/** * Print code for membership status * $memberID - member ID * $offer_upgrade - will this code be printed at [c]ontrol [p]anel * $credits - will print credits status if $credits == 1 */ function GetMembershipStatus($memberID, $offer_upgrade = true, $credits = 0) { global $oTemplConfig; $ret = ""; $membership_info = getMemberMembershipInfo($memberID); $viewMembershipActions = "<br />(<a onclick=\"javascript:window.open('explanation.php?explain=membership&type=" . $membership_info['ID'] . "', '', 'width=500, height=400, menubar=no, status=no, resizable=no, scrollbars=yes, toolbar=no, location=no');\" href=\"javascript:void(0);\">" . _t("_VIEW_MEMBERSHIP_ACTIONS") . "</a>)<br />"; // Show colored membership name if ($membership_info['ID'] == MEMBERSHIP_ID_STANDARD) { $ret .= _t("_MEMBERSHIP_STANDARD") . $viewMembershipActions; if ($offer_upgrade) { $ret .= " " . _t("_MEMBERSHIP_UPGRADE_FROM_STANDARD"); } } else { $ret .= "<font color=\"red\">{$membership_info['Name']}</font>{$viewMembershipActions}"; $days_left = (int) (($membership_info['DateExpires'] - time()) / (24 * 3600)); if (!is_null($membership_info['DateExpires'])) { if ($days_left > 0) { $ret .= _t("_MEMBERSHIP_EXPIRES_IN_DAYS", $days_left); } else { $ret .= _t("_MEMBERSHIP_EXPIRES_TODAY", date("H:i", $membership_info['DateExpires']), date("H:i")); } } else { $ret .= _t("_MEMBERSHIP_EXPIRES_NEVER"); } if ($offer_upgrade && !is_null($membership_info['DateExpires'])) { $ret .= " - <a href=\"membership.php\">" . _t("_MEMBERSHIP_BUY_MORE_DAYS") . "</a>"; } } if ($credits) { $gold_arr_cred_amount = getProfileCredits($memberID); $ret .= "<br /><u>" . _t("_MEMBERSHIP_CREDITS") . "</u> (<a href=\"javascript: void(0);\" onClick=\"javascript: window.open('explanation.php?explain=credits', '', 'width={$oTemplConfig->popUpWindowWidth},height={$oTemplConfig->popUpWindowHeight},menubar=no,status=no,resizable=no,scrollbars=yes,toolbar=no, location=no' );\">" . _t("_Explanation") . "</a>)<br />"; if ($gold_arr_cred_amount) { $ret .= _t("_MEMBERSHIP_CREDITS_YES", $gold_arr_cred_amount) . "<br />"; } else { $ret .= _t("_MEMBERSHIP_CREDITS_NO") . "<br />"; } if ($offer_upgrade) { $ret .= " - <a href=\"membership.php\">" . _t("_MEMBERSHIP_CREDITS_BUY_MORE") . "</a>"; } } return $ret; }
$last_timestamp = time() - 24 * 3600; $last_membership_arr = getMemberMembershipInfo($row['ID'], $last_timestamp); if ($current_membership_arr['ID'] != $last_membership_arr['ID']) { modules_update($row['ID']); // Handle membership level change if ($further_membership_arr['ID'] == MEMBERSHIP_ID_STANDARD) { $mail_ret = mem_expiration_letter($row['ID'], $last_membership_arr['Name'], -1); if ($mail_ret) { $expire_letters++; } } } } elseif ($current_membership_arr['ID'] != MEMBERSHIP_ID_STANDARD) { // Calculate further UNIX Timestamp $further_timestamp = time() + $expire_notification_days * 24 * 3600; $further_membership_arr = getMemberMembershipInfo($row['ID'], $further_timestamp); if ($current_membership_arr['ID'] != $further_membership_arr['ID'] && $further_membership_arr['ID'] == MEMBERSHIP_ID_STANDARD) { if (!$expire_notify_once || abs($further_timestamp - time()) < 24 * 3600) { $mail_ret = mem_expiration_letter($row['ID'], $current_membership_arr['Name'], (int) (($current_membership_arr['DateExpires'] - time()) / (24 * 3600))); if ($mail_ret) { $expire_letters++; } } } } } echo "Send membership expire letters: {$expire_letters} letters\n"; //======================================================================================================================== // clear tmp folder -------------------------------------------------------------------------- del_old_all_files(); // ----------------------------------------------------------------------------------
/** * Set a membership for a member * * @param int $memberID - member that is going to get the membership * @param int $membershipID - membership that is going to be assigned to the member * if $membershipID == MEMBERSHIP_ID_STANDARD then $days * and $startsNow 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 $startsNow - 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($memberID, $membershipID, $days = 0, $startsNow = false, $transactionID = 0) { $memberID = (int) $memberID; $membershipID = (int) $membershipID; $days = (int) $days; $startsNow = $startsNow ? true : false; $SECONDS_IN_DAY = 86400; $transactionID = (int) $transactionID; if ($transactionID <= 0) { $transactionID = 'NULL'; } //check if member exists $res = db_res("SELECT COUNT(ID) FROM Profiles WHERE ID = {$memberID}"); $res = mysql_fetch_row($res); if ($res[0] != 1) { return false; } //check if membership exists $res = db_res("SELECT COUNT(ID) FROM MemLevels WHERE ID = {$membershipID}"); $res = mysql_fetch_row($res); if ($res[0] != 1) { return false; } if ($membershipID == MEMBERSHIP_ID_NON_MEMBER) { return false; } $currentMembership = getMemberMembershipInfo($memberID); $latestMembership = getMemberMembershipInfo_latest($memberID); if ($membershipID == MEMBERSHIP_ID_STANDARD) { //return if already Standard if ($currentMembership['ID'] == MEMBERSHIP_ID_STANDARD) { return true; } //delete any present and future memberships db_res("\r\n\t\t\tDELETE\tFROM ProfileMemLevels\r\n\t\t\tWHERE\tIDMember = {$memberID}\r\n\t\t\t\t\tAND\t(DateExpires IS NULL OR DateExpires > NOW())"); if (mysql_affected_rows() > 0) { return true; } else { return false; } } if ($days < 0) { return false; } $dateStarts = time(); if (!$startsNow) { //make the membership start after the current membership expires if (!is_null($latestMembership['DateExpires'])) { $dateStarts = $latestMembership['DateExpires']; // if membership already exists then it's unlimited - just shift or delete it $res = db_res("\r\n\t\t\t\tSELECT\tIDMember\r\n\t\t\t\tFROM\tProfileMemLevels\r\n\t\t\t\tWHERE\tIDMember = {$memberID}\r\n\t\t\t\t\t\tAND UNIX_TIMESTAMP(DateStarts) = {$dateStarts}\r\n\t\t\t\t\t\tAND IDLevel = {$membershipID}"); $res = mysql_fetch_row($res); if ($res[0]) { if ($days == 0) { db_res("DELETE\tFROM ProfileMemLevels\r\n\t\t\t\t\t\t\tWHERE\tIDMember = {$memberID}\r\n\t\t\t\t\t\t\t\t\tAND UNIX_TIMESTAMP(DateStarts) = {$dateStarts}\r\n\t\t\t\t\t\t\t\t\tAND IDLevel = {$membershipID}"); } else { db_res("UPDATE\tProfileMemLevels\r\n\t\t\t\t\t\t\tSET\t\tDateStarts = FROM_UNIXTIME(" . ((int) $dateStarts + $days * $SECONDS_IN_DAY) . ")\r\n\t\t\t\t\t\t\tWHERE\tIDMember = {$memberID}\r\n\t\t\t\t\t\t\t\t\tAND UNIX_TIMESTAMP(DateStarts) = {$dateStarts}\r\n\t\t\t\t\t\t\t\t\tAND IDLevel = {$membershipID}"); } } } } if ($days == 0) { //if days==0 then set the membership forever $dateExpires = 'NULL'; } else { $dateExpires = (int) $dateStarts + $days * $SECONDS_IN_DAY; } //insert corresponding record into ProfileMemLevels db_res("\r\n\t\tINSERT ProfileMemLevels (IDMember, IDLevel, DateStarts, DateExpires, TransactionID)\r\n\t\tVALUES ({$memberID}, {$membershipID}, FROM_UNIXTIME({$dateStarts}), FROM_UNIXTIME({$dateExpires}), {$transactionID})"); if (mysql_affected_rows() <= 0) { return false; } return true; }
function QueueMessage() { $msg_id = (int) $_POST['msgs_id']; $ret = ""; $query = "SELECT `ID` FROM `NotifyMsgs` WHERE `ID` = {$msg_id}"; $arr_arr = db_arr($query); if (!$arr_arr) { return "Failed to queue emails (ID: {$msg_id})."; } // Initially no emails queued $emails = 0; // Send to all emails in NotifyEmails table if ($_POST['send_to_subscribers'] == 'on') { $res_eml = db_res("SELECT `ID` FROM `NotifyEmails`"); while ($arr_eml = mysql_fetch_array($res_eml)) { $res = db_res("SELECT `NotifyEmails`.`Email` FROM `NotifyQueue` INNER JOIN `NotifyEmails` ON (`NotifyQueue`.`Email` = `NotifyEmails`.`ID`) WHERE `NotifyQueue`.`Email` = {$arr_eml['ID']} AND `NotifyQueue`.`Msg` = {$msg_id} AND `From` = 'NotifyEmails'"); if ($res && ($arr = mysql_fetch_array($res))) { $ret .= "Email(notify) <b><u>{$arr['Email']}</u></b> already exists in queue.<br>"; continue; } $res = db_res("INSERT INTO `NotifyQueue` SET `Email` = {$arr_eml['ID']}, `Msg` = {$msg_id}, `From` = 'NotifyEmails', `Creation` = NOW()"); if (!$res) { $ret .= "Email <b><u>{$arr['Email']}</u></b> was not added to queue.<br>"; continue; } $emails++; } } // Send to all profiles if ($_POST['send_to_members'] == 'on') { // Sex filter $apply_filter = false; $arrpd = db_arr("SELECT `extra` FROM `ProfilesDesc` WHERE `name` = 'Sex'"); $vals = preg_split("/[,\\']+/", $arrpd['extra'], -1, PREG_SPLIT_NO_EMPTY); foreach ($vals as $v) { if (!isset($_POST["sex_{$v}"]) || $_POST["sex_{$v}"] != 'on') { $apply_filter = true; break; } } if ($apply_filter) { $sex_string_buffer = "'-1'"; foreach ($vals as $v) { if (isset($_POST["sex_{$v}"]) && $_POST["sex_{$v}"] == 'on') { $sex_string_buffer .= ",'{$v}'"; } } } else { $sex_filter_sql = ''; } // Age filter $age_start = (int) $_POST['age_start']; $age_end = (int) $_POST['age_end']; if ($age_start && $age_end) { $date_start = (int) (date("Y") - $age_start); $date_end = (int) (date("Y") - $age_end - 1); $date_start = $date_start . date("-m-d"); $date_end = $date_end . date("-m-d"); $age_filter_sql = "AND (TO_DAYS(`DateOfBirth`) BETWEEN TO_DAYS('{$date_end}') AND (TO_DAYS('{$date_start}')+1))"; } else { $age_filter_sql = ''; } // Country filter if ($_POST['country'] != 'all') { $country = process_db_input($_POST['country']); $country_filter_sql = "AND `Country` = '{$country}'"; } else { $country_filter_sql = ''; } // Membership filter if ($_POST['membership'] != 'all') { $membershipID = (int) $_POST['membership']; } else { $membershipID = -1; } $res_eml = db_res("SELECT `ID` FROM `Profiles` WHERE `Status` <> 'Unconfirmed' AND `EmailNotify` = 'NotifyMe' {$sex_filter_sql} {$age_filter_sql} {$country_filter_sql}"); while ($arr_eml = mysql_fetch_array($res_eml)) { // Dynamic membership filter $membership_info = getMemberMembershipInfo($arr_eml['ID']); if ($membershipID != -1 && $membership_info['ID'] != $membershipID) { continue; } $res = db_res("SELECT `Profiles`.`Email` FROM `NotifyQueue` INNER JOIN `Profiles` ON (`NotifyQueue`.`Email` = `Profiles`.`ID`) WHERE `NotifyQueue`.`Email` = {$arr_eml['ID']} AND `NotifyQueue`.`Msg` = {$msg_id} AND `From` = 'Profiles' "); if ($res && ($arr = mysql_fetch_array($res))) { $ret .= "Email(profiles) <b><u>{$arr['Email']}</u></b> already exists in queue.<br>"; continue; } $res = db_res("INSERT INTO `NotifyQueue` SET `Email` = {$arr_eml['ID']}, `Msg` = {$msg_id}, `From` = 'Profiles', `Creation` = NOW()"); if (!$res) { $ret .= "Email <b><u>{$arr['Email']}</u></b> was not added to queue.<br>"; continue; } $emails++; } } $ret .= (int) $emails . " emails was successfully added to queue."; return $ret; }
function QueueMessage() { global $MySQL; $iEmails = 0; $sReturn = ""; $iMsgId = (int) $_POST['msgs_id']; $aOriginalMessage = $MySQL->getRow("SELECT `id`, `subject`, `body` FROM `sys_sbs_messages` WHERE `id`='" . $iMsgId . "' LIMIT 1"); if (!is_array($aOriginalMessage) || empty($aOriginalMessage)) { return _t('_adm_mmail_Failed_to_queue_emails_X', $iMsgId); } //--- Send to all subscribers $oEmailTemplates = new BxDolEmailTemplates(); if ($_POST['send_to_subscribers'] == 'non') { $sSql = "SELECT\n `tsu`.`name` AS `user_name`,\n `tsu`.`email` AS `user_email`,\n `tst`.`template` AS `template_name`\n FROM `sys_sbs_types` AS `tst`\n INNER JOIN `sys_sbs_entries` AS `tse` ON `tst`.`id`=`tse`.`subscription_id` AND `tse`.`subscriber_type`='" . BX_DOL_SBS_TYPE_VISITOR . "'\n INNER JOIN `sys_sbs_users` AS `tsu` ON `tse`.`subscriber_id`=`tsu`.`id`\n WHERE\n `tst`.`unit`='system' AND\n `tst`.`action`='mass_mailer'"; $aSubscribers = $MySQL->getAll($sSql); foreach ($aSubscribers as $aSubscriber) { if (empty($aSubscriber['user_email'])) { continue; } $aMessage = $oEmailTemplates->parseTemplate($aSubscriber['template_name'], array('RealName' => $aSubscriber['user_name'], 'Email' => $aSubscriber['user_email'], 'MessageSubject' => $aOriginalMessage['subject'], 'MessageText' => $aOriginalMessage['body'])); $mixedResult = $MySQL->query("INSERT INTO `sys_sbs_queue`(`email`, `subject`, `body`) VALUES('" . $aSubscriber['user_email'] . "', '" . process_db_input($aMessage['subject'], BX_TAGS_STRIP) . "', '" . process_db_input($aMessage['body'], BX_TAGS_VALIDATE) . "')"); if ($mixedResult === false) { $sReturn .= _t('_adm_mmail_Email_not_added_to_queue_X', $aSubscriber['user_email']); continue; } $iEmails++; } } //--- Send to all profiles if ($_POST['send_to_members'] == 'memb') { //--- Sex filter $sex_filter_sql = ''; if (is_array($_POST['sex']) && !empty($_POST['sex'])) { $sex_filter_sql = "AND `Sex` IN ('" . implode("','", $_POST['sex']) . "')"; } //--- Age filter $age_filter_sql = ''; $age = $_POST['age']; if ($age != 'all') { $age_start = (int) $_POST['age_start']; $age_end = (int) $_POST['age_end']; if ($age_start && $age_end) { $date_start = (int) (date("Y") - $age_start); $date_end = (int) (date("Y") - $age_end - 1); $date_start = $date_start . date("-m-d"); $date_end = $date_end . date("-m-d"); $age_filter_sql = "AND (TO_DAYS(`DateOfBirth`) BETWEEN TO_DAYS('{$date_end}') AND (TO_DAYS('{$date_start}')+1))"; } } //--- Country filter $country_filter_sql = ''; if ($_POST['country'] != 'all') { $country = process_db_input($_POST['country']); $country_filter_sql = "AND `Country` = '{$country}'"; } //--- Membership filter $membershipID = $_POST['membership'] != 'all' ? (int) $_POST['membership'] : -1; $aMembers = $MySQL->getAll("SELECT `ID` AS `id`, `Email` AS `email` FROM `Profiles` WHERE `Status` <> 'Unconfirmed' AND `EmailNotify` = 1 AND (`Couple` = '0' OR `Couple` > `ID`) {$sex_filter_sql} {$age_filter_sql} {$country_filter_sql}"); foreach ($aMembers as $aMember) { if (empty($aMember['email'])) { continue; } //--- Dynamic membership filter if ($membershipID != -1) { $membership_info = getMemberMembershipInfo($aMember['id']); if ($membership_info['ID'] != $membershipID) { continue; } } $aMessage = $oEmailTemplates->parseTemplate('t_AdminEmail', array('MessageSubject' => $aOriginalMessage['subject'], 'MessageText' => $aOriginalMessage['body']), $aMember['id']); $mixedResult = $MySQL->query("INSERT INTO `sys_sbs_queue`(`email`, `subject`, `body`) VALUES('" . $aMember['email'] . "', '" . process_db_input($aMessage['subject'], BX_TAGS_STRIP) . "', '" . process_db_input($aMessage['body'], BX_TAGS_VALIDATE) . "')"); if ($mixedResult === false) { $sReturn .= _t('_adm_mmail_Email_not_added_to_queue_X', $aMember['email']); continue; } $iEmails++; } } $sReturn .= _t('_adm_mmail_X_emails_was_succ_added_to_queue', (int) $iEmails); return $sReturn; }
/** * Print code for membership status * $memberID - member ID * $offer_upgrade - will this code be printed at [c]ontrol [p]anel */ function GetMembershipStatus($memberID, $offer_upgrade = true) { $ret = ''; $membership_info = getMemberMembershipInfo($memberID); $viewMembershipActions = "<br />(<a onclick=\"javascript:window.open('explanation.php?explain=membership&type=" . $membership_info['ID'] . "', '', 'width=660, height=500, menubar=no, status=no, resizable=no, scrollbars=yes, toolbar=no, location=no');\" href=\"javascript:void(0);\">" . _t("_VIEW_MEMBERSHIP_ACTIONS") . "</a>)<br />"; // Show colored membership name if ($membership_info['ID'] == MEMBERSHIP_ID_STANDARD) { $ret .= _t("_MEMBERSHIP_STANDARD") . $viewMembershipActions; if ($offer_upgrade) { $ret .= " " . _t("_MEMBERSHIP_UPGRADE_FROM_STANDARD"); } } else { $ret .= "<font color=\"red\">{$membership_info['Name']}</font>{$viewMembershipActions}"; $days_left = (int) (($membership_info['DateExpires'] - time()) / (24 * 3600)); if (!is_null($membership_info['DateExpires'])) { $ret .= $days_left > 0 ? _t("_MEMBERSHIP_EXPIRES_IN_DAYS", $days_left) : _t("_MEMBERSHIP_EXPIRES_TODAY", date("H:i", $membership_info['DateExpires']), date("H:i")); } else { $ret .= _t("_MEMBERSHIP_EXPIRES_NEVER"); } } return $ret; }
/** * 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; }
function serviceIsUrlAccessable($sURL, $iUserId = 0) { if ($iUserId && isRole(BX_DOL_ROLE_ADMIN, $iUserId) || strpos($sURL, '/' . $GLOBALS['admin_dir']) === 0) { return true; } //admin isn't affected by this module also access to admin panel shouldn't ever be protected $aMemLevel = getMemberMembershipInfo($iUserId); $iMemLevel = $aMemLevel['ID']; if ($iMemLevel) { $aRules = $this->_oDb->getAllRules(); foreach ($aRules as $aRule) { if ($aRule['MemLevels'][$iMemLevel] && @preg_match('#' . $aRule['Rule'] . '#i', $sURL)) { return false; } } } return true; }
function convertEditField2Input($aItem, $aParams, $iPerson) { $bCouple = $aParams['couple']; $aValues = $aParams['values']; $aErrors = $aParams['errors']; $iPageId = $aParams['page_id']; if (!$iPageId) { return; } $aCustomMediaTemplates = $this->generateCustomMediaTemplates($this->_iProfileId, $iPageId, db_value("SELECT `thumb` FROM `ml_clonetwo_main` WHERE `id` = {$iPageId} LIMIT 1"), $aItem['Name']); $aCustomYouTubeTemplates = $this->generateCustomYouTubeTemplates($this->_iProfileId, $iPageId, $aItem['Name']); $aCustomRssTemplates = $this->generateCustomRssTemplate($this->_iProfileId, $iPageId, $aItem['Name']); $aInput = array(); switch ($aItem['Type']) { case 'text': $aInput['type'] = 'text'; $aInput['value'] = $aValues[$iPerson]; if ($aItem['MediaType'] != 'none') { $aInput['type'] = 'custom'; switch ($aItem['MediaType']) { case 'photo': $aInput['content'] = ($aCustomMediaTemplates['photos']['thumb_choice'] ? $aCustomMediaTemplates['photos']['thumb_choice'] . '<br>' . $aCustomMediaTemplates['photos']['choice'] . '<br>' : '') . $aCustomMediaTemplates['photos']['upload']; break; case 'video': $aInput['content'] = ($aCustomMediaTemplates['videos']['choice'] ? $aCustomMediaTemplates['videos']['choice'] . '<br>' : '') . $aCustomMediaTemplates['videos']['upload']; break; case 'sound': $aInput['content'] = ($aCustomMediaTemplates['sounds']['choice'] ? $aCustomMediaTemplates['sounds']['choice'] . '<br>' : '') . $aCustomMediaTemplates['sounds']['upload']; break; case 'file': $aInput['content'] = ($aCustomMediaTemplates['files']['choice'] ? $aCustomMediaTemplates['files']['choice'] . '<br>' : '') . $aCustomMediaTemplates['files']['upload']; break; case 'rss': $aInput['content'] = ($aCustomRssTemplates['choice'] ? $aCustomRssTemplates['choice'] . '<br>' : '') . $aCustomRssTemplates['upload']; break; case 'youtube': $aInput['content'] = ($aCustomYouTubeTemplates['choice'] ? $aCustomYouTubeTemplates['choice'] . '<br>' : '') . $aCustomYouTubeTemplates['upload']; break; case 'editorlog': $aInput['type'] = 'hidden'; $aInput['value'] = getLoggedId(); break; case 'datelog': $aInput['type'] = 'hidden'; $aInput['value'] = time(); break; } } if ($aItem['Name'] == 'title') { $aInput['attrs']['readonly'] = 'true'; } break; //case 'text': $aInput['type'] = 'text'; $aInput['value'] = $aValues[$iPerson]; break; //case 'text': $aInput['type'] = 'text'; $aInput['value'] = $aValues[$iPerson]; break; case 'area': $aInput['type'] = 'textarea'; $aInput['value'] = $aValues[$iPerson]; $aInput['attrs']['counter'] = 'true'; break; case 'html_area': $aInput['type'] = 'textarea'; $aInput['html'] = 2; $aInput['value'] = $aValues[$iPerson]; $aInput['attrs']['counter'] = 'true'; break; case 'date': $aInput['type'] = $aItem['WithTime'] ? 'datetime' : 'date'; $aInput['infodisplay'] = 'filterDate'; $aInput['value'] = $aValues[$iPerson]; break; case 'datetime': $aInput['type'] = 'datetime'; $aInput['value'] = $aValues[$iPerson]; break; case 'num': $aInput['type'] = 'number'; $aInput['value'] = $aValues[$iPerson]; break; case 'range': $aInput['type'] = 'doublerange'; $aInput['value'] = $aValues[$iPerson]; break; case 'pass': $aInput['type'] = 'password'; break; case 'bool': $aInput['type'] = 'checkbox'; $aInput['value'] = 'yes'; $aInput['checked'] = (bool) (int) $aValues[$iPerson]; break; case 'select_one': switch ($aItem['Control']) { case 'select': $aInput['type'] = 'select'; break; case 'radio': $aInput['type'] = 'radio_set'; break; default: return false; } $aInput['value'] = $aValues[$iPerson] ? $aValues[$iPerson] : $aItem['Default']; $aNewValues = $this->convertValues4Input($aItem['Values'], $aItem['UseLKey'], $aItem['Name'], $aItem, $aItem['Default'] ? $aItem['Default'] : $aValues[$iPerson]); $aInput['attrs'] = $aValues['attrs'] ? $aValues['attrs'] : ''; $aInput['values'] = $aNewValues['values'] ? $aNewValues['values'] : $aNewValues; break; case 'select_set': switch ($aItem['Control']) { case 'select': $aInput['type'] = 'select_multiple'; break; case 'checkbox': $aInput['type'] = 'checkbox_set'; break; default: return false; } $aInput['values'] = $this->convertValues4Input($aItem['Values'], $aItem['UseLKey'], $aItem['Name'], $aItem, $aInput['value']); $aInput['value'] = $aValues[$iPerson]; break; case 'photo': $aInput['type'] = 'file'; $aInput['value'] = $aValues[$iPerson]; break; case 'system': switch ($aItem['Name']) { case 'Featured': $aInput = array('type' => 'checkbox', 'value' => 'yes', 'checked' => $aValues[0]); break; case 'Status': $aInput = array('type' => 'select', 'value' => $aValues[0], 'values' => array()); foreach ($aItem['Values'] as $sValue) { $aInput['values'][$sValue] = _t("_FieldValues_{$sValue}"); } break; case 'Membership': $aMemberships = getMemberships(); $aMembershipInfo = getMemberMembershipInfo($iProfileID); $aInput = array('type' => 'custom', 'content' => $this->getInputMembership($aMemberships, $aMembershipInfo)); break; case 'ID': case 'Date': case 'DateLastEdit': case 'DateLastLogin': //non editable return false; break; default: return false; } break; default: return false; } $aInput['name'] = $aItem['Type'] == 'system' ? $aItem['Name'] : $aItem['Name'] . "[{$iPerson}]"; $aInput['caption'] = _t($aItem['Caption']); $aInput['required'] = $aItem['Type'] == 'pass' ? false : $aItem['Mandatory']; $aInput['info'] = ($sInfo = _t($aItem['Desc'], $aItem['Min'], $aItem['Max'])) != $aItem['Desc'] ? $sInfo : null; if ($aItem['Type'] == 'date') { $aInput['attrs']['min'] = $aItem['Max'] ? date('Y') - $aItem['Max'] . '-' . date('m') . '-' . date('d') : date('Y') - 100 . '-' . date('m') . '-' . date('d'); $aInput['attrs']['max'] = $aItem['Min'] ? date('Y') - $aItem['Min'] . '-' . date('m') . '-' . date('d') : date('Y') + 100 . '-' . date('m') . '-' . date('d'); } else { $aInput['attrs']['min'] = $aItem['Min']; $aInput['attrs']['max'] = $aItem['Max']; } $aInput['error'] = $aErrors[$iPerson]; if ($aItem['WithPhoto'] || $aItem['MediaType'] == 'map') { $aVarsUpload = array('display_form' => 'visible', 'input_name' => $aItem['Name'], 'form_submit' => _t('_ml_fields_builder_form_save'), 'draggable' => 'true', 'form_find' => _t('_ml_fields_builder_form_find'), 'Closest_matching_address' => _t('_ml_fields_builder_matching_address'), 'Current_position' => _t('_ml_fields_builder_position'), 'default_address' => $aInput['value'] ? $aInput['value'] : 'New York'); $aInput['type'] = 'custom'; $aInput['content'] = $this->_oMain->_oTemplate->parseHtmlByName('location', $aVarsUpload); } if ($aItem['Multiplyable'] && $aItem['MediaType'] == 'none') { //$aInput['value'] = $aItem['WithPhoto'] ? array() : explode(getParam('ml_clonetwo_multi_divider'), $aInput['value']); $aInput['value'] = explode($this->_sDelimeter, $aInput['value']); $aInput['name'] = $aItem['Name'] . '[]'; $aInput['attrs']['multiplyable'] = 'true'; } if ($aItem['Attribute'] == 'addon') { $aInput['type'] = 'select_box'; $aInput['name'] = $aItem['Name']; $aInput['value'] = explode($this->_sDelimeter, $aInput['value']); } //elseif ($aItem['WithPhoto']) //$aInput['value'] = ''; if ($iPerson == 1) { $aInput['tr_attrs'] = array('class' => 'hidable', 'style' => 'display: ' . ($bCouple ? 'table-row' : 'none')); } return $aInput; }
function getBlockCode_Membership() { if (!isAdmin()) { return; } $sUnlimited = process_line_output(_t('_pfm_unlimited')); $this->aFormMembership = array('form_attrs' => array('id' => 'profile_edit_membership', 'name' => 'profile_edit_membership', 'action' => BX_DOL_URL_ROOT . 'pedit.php?ID=' . $this->iProfileID, 'method' => 'post', 'enctype' => 'multipart/form-data'), 'params' => array('db' => array('table' => '', 'key' => '', 'uri' => '', 'uri_title' => '', 'submit_name' => 'save_membership')), 'inputs' => array('doSetMembership' => array('type' => 'hidden', 'name' => 'doSetMembership', 'value' => 'yes'), 'MembershipInfo' => array('type' => 'custom', 'caption' => _t('_Membership_current'), 'content' => ''), 'MembershipID' => array('type' => 'select', 'name' => 'MembershipID', 'caption' => _t('_Membership_name'), 'value' => '', 'values' => array(), 'required' => 0, 'attrs' => array('onchange' => 'checkStandard()'), 'checker' => array('func' => 'avail', 'params' => array(), 'error' => _t('_Membership_name_err_empty')), 'db' => array('pass' => 'Int')), 'MembershipDays' => array('type' => 'text', 'name' => 'MembershipDays', 'caption' => _t('_Membership_days'), 'value' => $sUnlimited, 'required' => 0, 'attrs' => array('onfocus' => "if(MembershipDays.value == '" . $sUnlimited . "') MembershipDays.value = ''", 'onblur' => "if(MembershipDays.value == '') MembershipDays.value = '" . $sUnlimited . "'"), 'info' => _t('_Membership_days_info'), 'db' => array('pass' => 'Xss')), 'MembershipImmediately' => array('type' => 'checkbox', 'name' => 'MembershipImmediately', 'caption' => _t('_Membership_starts'), 'value' => 'on', 'required' => 0, 'db' => array('pass' => 'Xss')), 'save_membership' => array('type' => 'submit', 'name' => 'save_membership', 'value' => _t('_Membership_save')))); $aMemberships = getMemberships(); foreach ($aMemberships as $iId => $sName) { if ($iId != MEMBERSHIP_ID_NON_MEMBER) { $this->aFormMembership['inputs']['MembershipID']['values'][] = array('key' => $iId, 'value' => $sName); } } $oForm = new BxTemplFormView($this->aFormMembership); $oForm->initChecker(); $sContent = ""; if ($oForm->isSubmittedAndValid()) { $iMshipID = (int) $oForm->getCleanValue('MembershipID'); $iMshipDays = (int) $oForm->getCleanValue('MembershipDays'); //0 = unlim $bStartsNow = $oForm->getCleanValue('MembershipImmediately') == 'on'; $bSave = setMembership($this->iProfileID, $iMshipID, $iMshipDays, $bStartsNow); $sContent .= MsgBox(_t($bSave ? '_Membership_save_msg_saved' : '_Membership_save_err_saved'), 3); } /** * Retrieve current membership info. */ $aMembershipCurrent = getMemberMembershipInfo($this->iProfileID); $sMembershipCurrent = $aMembershipCurrent['Name']; if ($aMembershipCurrent['ID'] != MEMBERSHIP_ID_STANDARD) { $sMembershipCurrent .= ', ' . (!isset($aMembershipCurrent['DateExpires']) ? _t('_MEMBERSHIP_EXPIRES_NEVER') : _t('_MEMBERSHIP_EXPIRES', defineTimeInterval($aMembershipCurrent['DateExpires']))); } $oForm->aInputs['MembershipInfo']['content'] = $sMembershipCurrent; ob_start(); ?> <script type="text/javascript"> <!-- function checkStandard() { var iId = parseInt($("[name='MembershipID']").val()); if(iId == <?php echo MEMBERSHIP_ID_STANDARD; ?> ) { $("[name='MembershipDays']").attr('disabled', 'disabled'); $("[name='MembershipImmediately']").attr('disabled', 'disabled'); } else { $("[name='MembershipDays']").removeAttr('disabled'); $("[name='MembershipImmediately']").removeAttr('disabled'); } } $(document).ready(function() { checkStandard(); }); --> </script> <?php $sContent .= ob_get_clean(); return array($sContent . $oForm->getCode(), array(), array(), false); }
/** * page show filer form function * @return HTML presentation of data */ function PageSDatingCalendar() { global $dir; global $site; global $sdatingThumbWidth; global $sdatingThumbHeight; global $aPreValues; global $oTemplConfig; $iPicSize = $this->iIconSize + 15; // collect information about current member $aMember['ID'] = (int) $_COOKIE['memberID']; $aMemberData = getProfileInfo($aMember['ID']); $sMemberSex = $aMemberData['Sex']; $aMembership = getMemberMembershipInfo($aMember['ID']); // now year, month and day list($iNowYear, $iNowMonth, $iNowDay) = explode('-', date('Y-m-d')); // current year, month, month name, day, days in month if (isset($_REQUEST['month'])) { list($iCurMonth, $iCurYear) = explode('-', $_REQUEST['month']); $iCurMonth = (int) $iCurMonth; $iCurYear = (int) $iCurYear; } else { list($iCurMonth, $iCurYear) = explode('-', date('n-Y')); } list($sCurMonthName, $iCurDaysInMonth) = explode('-', date('F-t', mktime(0, 0, 0, $iCurMonth, $iNowDay, $iCurYear))); // previous month year, month $iPrevYear = $iCurYear; $iPrevMonth = $iCurMonth - 1; if ($iPrevMonth <= 0) { $iPrevMonth = 12; $iPrevYear--; } // next month year, month $iNextYear = $iCurYear; $iNextMonth = $iCurMonth + 1; if ($iNextMonth > 12) { $iNextMonth = 1; $iNextYear++; } // days in previous month $iPrevDaysInMonth = (int) date('t', mktime(0, 0, 0, $iPrevMonth, $iNowDay, $iPrevYear)); // days-of-week of first day in current month $iFirstDayDow = (int) date('w', mktime(0, 0, 0, $iCurMonth, 1, $iCurYear)); // from which day of previous month calendar starts $iPrevShowFrom = $iPrevDaysInMonth - $iFirstDayDow + 1; // select events array $aCalendarEvents = array(); $sCountryFilter = 'all'; $sRCalendarCountry = isset($_REQUEST['calendar_country']) ? $_REQUEST['calendar_country'] : $aMemberData['Country']; $sRCalendarCountry = $sRCalendarCountry == '' ? 'all' : $sRCalendarCountry; if ($sRCalendarCountry == 'all') { $sCountryFilter = ''; } else { $sCountryFilter = 'AND `Country` = \'' . process_db_input($sRCalendarCountry) . '\''; } //old WHERE data`s /* AND FIND_IN_SET('{$sMemberSex}', `EventSexFilter`) AND ( TO_DAYS('{$aMemberData['DateOfBirth']}') BETWEEN TO_DAYS(DATE_SUB(NOW(), INTERVAL `EventAgeUpperFilter` YEAR)) AND TO_DAYS(DATE_SUB(NOW(), INTERVAL `EventAgeLowerFilter` YEAR)) ) AND ( INSTR(`EventMembershipFilter`, '\'all\'') OR INSTR(`EventMembershipFilter`, '\'{$aMembership['ID']}\'') ) */ $sRequest = "SELECT `ID`, `Title`, `PhotoFilename`, DAYOFMONTH(`EventStart`) AS `EventDay`, MONTH(`EventStart`) AS `EventMonth` FROM `SDatingEvents`\r\n\t\t\t\t\t\t\tWHERE ( MONTH(`EventStart`) = {$iCurMonth} AND YEAR(`EventStart`) = {$iCurYear} OR\r\n\t\t\t\t\t\t\t\t\tMONTH( DATE_ADD(`EventStart`, INTERVAL 1 MONTH) ) = {$iCurMonth} AND YEAR( DATE_ADD(`EventStart`, INTERVAL 1 MONTH) ) = {$iCurYear} OR\r\n\t\t\t\t\t\t\t\t\tMONTH( DATE_SUB(`EventStart`, INTERVAL 1 MONTH) ) = {$iCurMonth} AND YEAR( DATE_SUB(`EventStart`, INTERVAL 1 MONTH) ) = {$iCurYear} )\r\n\t\t\t\t\t\t\t{$sCountryFilter}\r\n\t\t\t\t\t\t\tAND `Status` = 'Active'\r\n\t\t\t\t\t\t\t"; $vEventsRes = db_res($sRequest); while ($aEventData = mysql_fetch_assoc($vEventsRes)) { $aCalendarEvents["{$aEventData['EventDay']}-{$aEventData['EventMonth']}"][$aEventData['ID']]['Title'] = $aEventData['Title']; $aCalendarEvents["{$aEventData['EventDay']}-{$aEventData['EventMonth']}"][$aEventData['ID']]['PhotoFilename'] = $aEventData['PhotoFilename']; } // make calendar grid $bPreviousMonth = $iFirstDayDow > 0 ? true : false; $bNextMonth = false; $iCurrentDay = $bPreviousMonth ? $iPrevShowFrom : 1; for ($i = 0; $i < 6; $i++) { for ($j = 0; $j < 7; $j++) { $aCalendarGrid[$i][$j]['day'] = $iCurrentDay; $aCalendarGrid[$i][$j]['month'] = $bPreviousMonth ? $iPrevMonth : ($bNextMonth ? $iNextMonth : $iCurMonth); $aCalendarGrid[$i][$j]['current'] = !$bPreviousMonth && !$bNextMonth; $aCalendarGrid[$i][$j]['today'] = $iNowYear == $iCurYear && $iNowMonth == $iCurMonth && $iNowDay == $iCurrentDay && !$bPreviousMonth && !$bNextMonth; // make day increment $iCurrentDay++; if ($bPreviousMonth && $iCurrentDay > $iPrevDaysInMonth) { $bPreviousMonth = false; $iCurrentDay = 1; } if (!$bPreviousMonth && !$bNextMonth && $iCurrentDay > $iCurDaysInMonth) { $bNextMonth = true; $iCurrentDay = 1; } } } $sShowEventsByCountryC = _t('_Show events by country'); $sAllC = _t('_All'); $sPrevC = _t('_Prev'); $sNextC = _t('_Next'); $sSundaySC = _t('_Sunday_short'); $sMondaySC = _t('_Monday_short'); $sTuesdaySC = _t('_Tuesday_short'); $sWednesdaySC = _t('_Wednesday_short'); $sThursdaySC = _t('_Thursday_short'); $sFridaySC = _t('_Friday_short'); $sSaturdaySC = _t('_Saturday_short'); $sNoPhotoC = _t('_No photo'); $sCalendarC = _t('_Calendar'); $sCalendarOptions = ''; $sCalSel = $sRCalendarCountry == 'all' ? 'selected="selected"' : ''; $sCalendarOptions .= '<option value="all" ' . $sCalSel . " >{$sAllC}</option>"; foreach ($aPreValues['Country'] as $key => $value) { $sCalKeySel = $sRCalendarCountry == "{$key}" ? 'selected="selected"' : ''; $sCuontryVal = _t($value['LKey']); $sCalendarOptions .= "<option value=\"{$key}\" {$sCalKeySel} >{$sCuontryVal}</option>"; } $sCalendarCountry = isset($_REQUEST['calendar_country']) ? '&calendar_country=' . process_pass_data($_REQUEST['calendar_country']) : ''; $sCalendarPrevHref = $_SERVER['PHP_SELF'] . "?action=calendar&month={$iPrevMonth}-{$iPrevYear}" . $sCalendarCountry; $sCurMonYear = _t('_' . $sCurMonthName) . ', ' . $iCurYear; $sCalendarNextHref = $_SERVER['PHP_SELF'] . "?action=calendar&month={$iNextMonth}-{$iNextYear}" . $sCalendarCountry; $sCalTableTrs = ''; for ($i = 0; $i < 6; $i++) { $sCalTableTrs .= '<tr>'; for ($j = 0; $j < 7; $j++) { if ($aCalendarGrid[$i][$j]['today']) { $sCellClass = 'calendar_today'; } elseif ($aCalendarGrid[$i][$j]['current']) { $sCellClass = 'calendar_current'; } else { $sCellClass = 'calendar_non_current'; } $sCalTableTrs .= <<<EOF <td style="width:100px;height:100px;" class="{$sCellClass}">{$aCalendarGrid[$i][$j]['day']} EOF; $vDayMonthValue = $aCalendarGrid[$i][$j]['day'] . '-' . $aCalendarGrid[$i][$j]['month']; if (isset($aCalendarEvents[$vDayMonthValue]) && is_array($aCalendarEvents[$vDayMonthValue])) { foreach ($aCalendarEvents[$vDayMonthValue] as $eventID => $eventArr) { $sEventThumbname = getThumbNameByPictureName($eventArr['PhotoFilename'], true); $sGenUrl = $this->genUrl($eventID, '', 'entry', true); if (strlen(trim($sEventThumbname)) && file_exists($dir['sdatingImage'] . $sEventThumbname)) { $sCalTableTrs .= <<<EOF <div> <a href="{$sGenUrl}"> \t<img src="{$site['sdatingImage']}icon_{$eventArr['PhotoFilename']}" border="0" alt="{$eventArr['Title']}" title="{$eventArr['Title']}" style="margin: 2px;" /> </a> </div> EOF; } else { global $tmpl; $sSpacerName = $this->sSpacerPath; $sNaname = $site['url'] . 'templates/tmpl_' . $tmpl . '/' . $this->sPicNotAvail; $sCalTableTrs .= <<<EOF <!-- <div align="center" class="small" title="{$eventArr['Title']}" style="width: {$sdatingThumbWidth}px; height: {$sdatingThumbHeight}px; vertical-align: middle; line-height: {$sdatingThumbHeight}px; border: 1px solid silver; background-color: #FFFFFF; font-weight: normal; margin: 2px; font-size: 80%; cursor: pointer;"> --> <div> \t<a href="{$sGenUrl}"> \t\t<img src="{$sSpacerName}" style="width:64px;height:64px; background-image: url({$sNaname});" class="photo1" alt="" /> \t\t<!--<nobr>{$sNoPhotoC}</nobr>--> \t</a> </div> EOF; } } } $sCalTableTrs .= '</td>'; } $sCalTableTrs .= '</tr>'; } $sRetHtml = <<<EOF <br /> <div align="center" style="margin-bottom: 10px;"> \t<form id="calendarCountryForm" action="{$_SERVER['PHP_SELF']}" method="get" style="margin: 0px;"> \t\t<input type="hidden" name="action" value="calendar" /> \t\t<input type="hidden" name="month" value="{$iCurMonth}-{$iCurYear}" /> \t\t{$sShowEventsByCountryC} \t\t<select class="no" name="calendar_country" onchange="javascript: document.forms['calendarCountryForm'].submit();" style="vertical-align: middle;">{$sCalendarOptions}</select> \t</form> \t<table cellpadding="1" cellspacing="1" border="0" width="100%" class="text" style="text-align:center;margin-top:10px;"> \t\t<tr> \t\t\t<td class="calendar_current" style="padding: 3px;"> \t\t\t\t<a href="{$sCalendarPrevHref}">{$sPrevC}</a> \t\t\t</td> \t\t\t<td colspan="5" class="calendar_current">{$sCurMonYear}</td> \t\t\t<td class="calendar_current" style="padding: 3px;"> \t\t\t\t<a href="{$sCalendarNextHref}">{$sNextC}</a> \t\t\t</td> \t\t</tr> \t\t<tr> \t\t\t<td style="width:{$iPicSize}px;" class="calendar_non_current">{$sSundaySC}</td> \t\t\t<td style="width:{$iPicSize}px;" class="calendar_non_current">{$sMondaySC}</td> \t\t\t<td style="width:{$iPicSize}px;" class="calendar_non_current">{$sTuesdaySC}</td> \t\t\t<td style="width:{$iPicSize}px;" class="calendar_non_current">{$sWednesdaySC}</td> \t\t\t<td style="width:{$iPicSize}px;" class="calendar_non_current">{$sThursdaySC}</td> \t\t\t<td style="width:{$iPicSize}px;" class="calendar_non_current">{$sFridaySC}</td> \t\t\t<td style="width:{$iPicSize}px;" class="calendar_non_current">{$sSaturdaySC}</td> \t\t</tr> \t{$sCalTableTrs} \t</table> </div> <br /> EOF; return DesignBoxContent($sCalendarC, $sRetHtml, $oTemplConfig->PageSDatingCalendar_db_num); }
/** * Set a membership for a member * * @param int $memberID - member that is going to get the membership * @param int $membershipID - membership that is going to be assigned to the member * if $membershipID == MEMBERSHIP_ID_STANDARD then $days * and $startsNow 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 $startsNow - 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($memberID, $membershipID, $days = 0, $startsNow = false, $transactionID = '') { $memberID = (int) $memberID; $membershipID = (int) $membershipID; $days = (int) $days; $startsNow = $startsNow ? true : false; $SECONDS_IN_DAY = 86400; if (!$memberID) { $memberID = -1; } if (empty($transactionID)) { $transactionID = 'NULL'; } //check if member exists $aProfileInfo = getProfileInfo($memberID); if (!$aProfileInfo) { return false; } //check if membership exists $res = db_res("SELECT COUNT(ID) FROM `sys_acl_levels` WHERE ID = {$membershipID}"); $res = mysql_fetch_row($res); if ($res[0] != 1) { return false; } if ($membershipID == MEMBERSHIP_ID_NON_MEMBER) { return false; } $currentMembership = getMemberMembershipInfo($memberID); $latestMembership = getMemberMembershipInfo_latest($memberID); if ($membershipID == MEMBERSHIP_ID_STANDARD) { //return if already Standard if ($currentMembership['ID'] == MEMBERSHIP_ID_STANDARD) { return true; } //delete any present and future memberships db_res("\r\n\t\t\tDELETE\tFROM `sys_acl_levels_members`\r\n\t\t\tWHERE\tIDMember = {$memberID}\r\n\t\t\t\t\tAND\t(DateExpires IS NULL OR DateExpires > NOW())"); if (db_affected_rows() > 0) { return true; } else { return false; } } if ($days < 0) { return false; } $dateStarts = time(); if (!$startsNow) { //make the membership start after the current membership expires if (!is_null($latestMembership['DateExpires'])) { $dateStarts = $latestMembership['DateExpires']; // if membership already exists then it's unlimited - just shift or delete it $res = db_res("\r\n\t\t\t\tSELECT\tIDMember\r\n\t\t\t\tFROM\t`sys_acl_levels_members`\r\n\t\t\t\tWHERE\tIDMember = {$memberID}\r\n\t\t\t\t\t\tAND UNIX_TIMESTAMP(DateStarts) = {$dateStarts}\r\n\t\t\t\t\t\tAND IDLevel = {$membershipID}"); $res = mysql_fetch_row($res); if ($res[0]) { if ($days == 0) { db_res("DELETE\tFROM `sys_acl_levels_members`\r\n\t\t\t\t\t\t\tWHERE\tIDMember = {$memberID}\r\n\t\t\t\t\t\t\t\t\tAND UNIX_TIMESTAMP(DateStarts) = {$dateStarts}\r\n\t\t\t\t\t\t\t\t\tAND IDLevel = {$membershipID}"); } else { db_res("UPDATE\t`sys_acl_levels_members`\r\n\t\t\t\t\t\t\tSET\t\tDateStarts = FROM_UNIXTIME(" . ((int) $dateStarts + $days * $SECONDS_IN_DAY) . ")\r\n\t\t\t\t\t\t\tWHERE\tIDMember = {$memberID}\r\n\t\t\t\t\t\t\t\t\tAND UNIX_TIMESTAMP(DateStarts) = {$dateStarts}\r\n\t\t\t\t\t\t\t\t\tAND IDLevel = {$membershipID}"); } } } } else { //delete previous profile's membership level db_res("DELETE FROM `sys_acl_levels_members` WHERE `IDMember` = {$memberID}"); } if ($days == 0) { //if days==0 then set the membership forever $dateExpires = 'NULL'; } else { $dateExpires = (int) $dateStarts + $days * $SECONDS_IN_DAY; } //insert corresponding record into sys_acl_levels_members db_res("\r\n\t\tINSERT `sys_acl_levels_members` (IDMember, IDLevel, DateStarts, DateExpires, TransactionID)\r\n\t\tVALUES ({$memberID}, {$membershipID}, FROM_UNIXTIME({$dateStarts}), FROM_UNIXTIME({$dateExpires}), '{$transactionID}')"); if (db_affected_rows() <= 0) { return false; } //Set Membership Alert bx_import('BxDolAlerts'); $oZ = new BxDolAlerts('profile', 'set_membership', '', $memberID, array('mlevel' => $membershipID, 'days' => $days, 'starts_now' => $startsNow, 'txn_id' => $transactionID)); $oZ->alert(); return true; }
function processing() { global $MODE; // - Defaults - $MODE = "_MAIL_"; //$MODE = "_LIVE_"; $DAY = "_OBEY_"; //$DAY = "_FORCE_"; define('NON_VISUAL_PROCESSING', 'YES'); // - Always finish set_time_limit(36000); ignore_user_abort(); // - Parameters check - for ($i = 0; strlen($argv[$i]); $i++) { switch ($argv[$i]) { case "--live": $MODE = "_LIVE_"; break; case "--mail": $MODE = "_MAIL_"; break; case "--force-day": $DAY = "_FORCE_"; break; case "--obey-day": $DAY = "_OBEY_"; break; } } if ($MODE != "_LIVE_") { ob_start(); } $day = date("d"); if (getParam("cmdDay") == $day && $DAY == "_OBEY_") { echo "Already done today, bailing out\n"; $this->finish(); return; } setParam("cmdDay", $day); //======================================================================================================================== // - Send Admin Stats notification $this->processAdminStats(); // - Membership check - unmarkMembershipAsExpiringAll(); echo "\n- Membership expiration letters -\n"; $iExpireNotificationDays = (int) getParam("expire_notification_days"); $bExpireNotifyOnce = getParam("expire_notify_once") == 'on'; $iExpireLetters = 0; $aRow = $GLOBALS['MySQL']->getFirstRow("SELECT `ID` FROM `Profiles`"); while (!empty($aRow)) { $aCurrentMem = getMemberMembershipInfo($aRow['ID']); // If expire_notification_days is -1 then notify after expiration if ($aCurrentMem['ID'] == MEMBERSHIP_ID_STANDARD && $iExpireNotificationDays == -1) { // Calculate last UNIX Timestamp $iLastTimestamp = time() - 24 * 3600; $aLastMem = getMemberMembershipInfo($aRow['ID'], $iLastTimestamp); if ($aCurrentMem['ID'] != $aLastMem['ID']) { $bMailResult = mem_expiration_letter($aRow['ID'], $aLastMem['Name'], -1); if ($bMailResult) { $iExpireLetters++; } } } else { if ($aCurrentMem['ID'] != MEMBERSHIP_ID_STANDARD) { // Calculate further UNIX Timestamp for expiration check $iFurtherTimestamp = time() + 24 * 3600; $aFurtherMem = getMemberMembershipInfo($aRow['ID'], $iFurtherTimestamp); if ($aCurrentMem['ID'] != $aFurtherMem['ID'] && $aFurtherMem['ID'] == MEMBERSHIP_ID_STANDARD) { markMembershipAsExpiring($aRow['ID'], $aCurrentMem['ID'], $aCurrentMem['TransactionID']); } // Calculate further UNIX Timestamp for notification letter $iFurtherTimestamp = time() + $iExpireNotificationDays * 24 * 3600; $aFurtherMem = getMemberMembershipInfo($aRow['ID'], $iFurtherTimestamp); if ($aCurrentMem['ID'] != $aFurtherMem['ID'] && $aFurtherMem['ID'] == MEMBERSHIP_ID_STANDARD) { if (!$bExpireNotifyOnce || abs($iFurtherTimestamp - $aCurrentMem['DateExpires']) < 24 * 3600) { $bMailResult = mem_expiration_letter($aRow['ID'], $aCurrentMem['Name'], (int) (($aCurrentMem['DateExpires'] - time()) / (24 * 3600))); if ($bMailResult) { $iExpireLetters++; } } } } } $aRow = $GLOBALS['MySQL']->getNextRow(); } echo "Send membership expire letters: {$iExpireLetters} letters\n"; //======================================================================================================================== // clear tmp folder -------------------------------------------------------------------------- $this->del_old_all_files(); // ---------------------------------------------------------------------------------- $this->clean_database(); $this->finish(); }
<tr> <td align=center><a href="<?php echo getProfileLink($profaff_res['ID']); ?> "><?php echo $profaff_arr['NickName']; ?> </a></td> <td align=center><?php echo $profaff_arr['aff_num']; ?> </td> <td align=center> <?php $membership_info = getMemberMembershipInfo($profaff_arr['ID']); echo $membership_info['Name']; ?> </td> </tr> <?php } ?> </table> <?php ContentBlockFoot(); ContentBlockHead("AFF Approved banners"); ?>
while (!empty($aRow)) { $aCurrentMem = getMemberMembershipInfo($aRow['ID']); // If expire_notification_days is -1 then notify after expiration if ($aCurrentMem['ID'] == MEMBERSHIP_ID_STANDARD && $iExpireNotificationDays == -1) { // Calculate last UNIX Timestamp $iLastTimestamp = time() - 24 * 3600; $aLastMem = getMemberMembershipInfo($aRow['ID'], $iLastTimestamp); if ($aCurrentMem['ID'] != $aLastMem['ID']) { $bMailResult = $oAcl->getExpirationLetter($aRow['ID'], $aLastMem['Name'], -1); if ($bMailResult) { $iExpireLetters++; } } } else { if ($aCurrentMem['ID'] != MEMBERSHIP_ID_STANDARD) { // Calculate further UNIX Timestamp $iFurtherTimestamp = time() + $iExpireNotificationDays * 24 * 3600; $aFurtherMem = getMemberMembershipInfo($aRow['ID'], $iFurtherTimestamp); if ($aCurrentMem['ID'] != $aFurtherMem['ID'] && $aFurtherMem['ID'] == MEMBERSHIP_ID_STANDARD) { if (!$bExpireNotifyOnce || abs($iFurtherTimestamp - $aCurrentMem['DateExpires']) < 24 * 3600) { $bMailResult = $oAcl->getExpirationLetter($aRow['ID'], $aCurrentMem['Name'], (int) (($aCurrentMem['DateExpires'] - time()) / (24 * 3600))); if ($bMailResult) { $iExpireLetters++; } } } } } $aRow = $oDb->getNextRow(); } echo "Send membership expire letters: {$iExpireLetters} letters\n";
/** * Print code for membership status * $memberID - member ID * $offer_upgrade - will this code be printed at [c]ontrol [p]anel */ function GetMembershipStatus($memberID, $bOfferUpgrade = true, $bViewActions = true) { $ret = ''; $aMembership = getMemberMembershipInfo($memberID); $sViewActions = $bViewActions ? "<a onclick=\"javascript:loadHtmlInPopup('explanation_popup', '" . BX_DOL_URL_ROOT . "explanation.php?explain=membership&type=" . $aMembership['ID'] . "');\" href=\"javascript:void(0);\">" . _t("_VIEW_MEMBERSHIP_ACTIONS") . "</a>" : ""; // Show colored membership name if ($aMembership['ID'] == MEMBERSHIP_ID_STANDARD) { $ret .= $aMembership['Name']; if ($bOfferUpgrade && BxDolRequest::serviceExists('membership', 'get_upgrade_url')) { $sViewActions = _t('_MEMBERSHIP_UPGRADE_FROM_STANDARD', BxDolService::call('membership', 'get_upgrade_url')) . '<span class="sys-bullet"></span>' . $sViewActions; } $ret .= '<br />' . $sViewActions; } else { $ret .= '<font color="red">' . $aMembership['Name'] . '</font>'; $sExpiration = ''; if (!is_null($aMembership['DateExpires'])) { $sExpiration = _t("_MEMBERSHIP_EXPIRES", defineTimeInterval($aMembership['DateExpires'])); } else { $sExpiration = _t("_MEMBERSHIP_EXPIRES_NEVER"); } $ret .= '<br />' . $sViewActions . '<span class="sys-bullet"></span>' . $sExpiration; } return $ret; }
/** * page code function */ function PageCompPageMainCode() { global $site; global $dir; global $_page; global $p_arr; global $p_arr_new; global $db_vsbl; global $db_editbl; global $tab; global $autoApproval_ifProfile; global $ID; global $MEMBER; global $ADMIN; global $NEW_TO_ADD; global $Featured; global $pic; global $pics; global $pic_num; global $enable_audio_upload; global $enable_video_upload; global $sound_file_exist; global $video_file_exist; global $status_admin_ex; global $change_error_text; global $result_text; global $pictures_text; global $membership_message; global $max_thumb_height; global $max_thumb_width; global $enable_ray; global $enable_ray_pro; ob_start(); if ($NEW_TO_ADD) { $_page['header'] = _t("_New Member"); $_page['header_text'] = _t("_New Member Add Here"); } else { $_page['header'] = process_line_output($p_arr['NickName']) . ": " . process_line_output(strmaxtextlen($p_arr['DescriptionMe'], 45)); $_page['header_text'] = "<b>" . process_line_output($p_arr['NickName']) . "</b> - "; $_page['header_text'] .= _t('_' . $p_arr['Sex']); $_page['header_text'] .= ", " . _t("_y/o", age($p_arr['DateOfBirth'])) . " (ID: {$p_arr['ID']})"; } echo '<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td>'; if ($ADMIN && $status_admin_ex) { echo $status_admin_ex; } if ($change_error_text) { echo $change_error_text . '<br />'; } global $moderator; if ($ADMIN && !$moderator) { echo "<div align=right class=text2><a href=\"{$_SERVER['PHP_SELF']}\">" . _t("_Add New Profile") . "</a></div>"; } if ($result_text) { echo '<center>' . $result_text . '</center><br />'; } if ($ADMIN && !$NEW_TO_ADD && $enable_video_upload && $enable_ray && $enable_ray_pro && file_exists($dir['root'] . "ray/modules/video/admin.php")) { $sRayHeaderPath = $dir['root'] . "ray/inc/header.inc.php"; $iId = (int) $p_arr['ID']; $aAdmin = db_arr("SELECT `Name`, `Password` FROM `Admins` LIMIT 1"); $sNick = $aAdmin['Name']; $sPassword = $aAdmin['Password']; echo "<tr><td><div style=\"width:179px; padding-bottom:10px; margin-left:auto; margin-right:auto;\">"; require_once $dir['root'] . "ray/modules/video/admin.php"; echo "</div></td></tr>"; } if ($ADMIN && !$NEW_TO_ADD) { // Print membership information and controls $memberships_arr = getMemberships(); $membership_info = getMemberMembershipInfo($ID); ?> <!-- MEMBERSHIP [BEGIN] --> <tr><td> <center><?php echo $membership_message; ?> </center> <form name="MembershipForm" action="profile_edit.php?ID=<?php echo $p_arr['ID']; ?> " method=post> <input type="hidden" name="SetMembership" value="YES"> <table width=100% cellspacing=0 cellpadding=2 class="text2" border=0> <?php echo print_rows_set_membership(1, $memberships_arr, $membership_info, 3, "table", "panel", "25%"); ?> </table> <center> <input class=no type="submit" value="Set" style="width: 50px;"> </center> </form> <hr> </td></tr> <!-- MEMBERSHIP [ END ] --> <?php } ?> <form name="jform" method="post" action="profile_edit.php?ID=<?php echo $p_arr['ID']; ?> "> <?php if ($NEW_TO_ADD) { ?> <input type="hidden" name="NewProfile" value="YES" /> <?php } ?> <input type="hidden" name="SaveChanges" value="YES" /> <?php if ($ADMIN) { ?> <table cellspacing="0" cellpadding="0" class="small2" align="center"> <tr> <td align="right" width="75%"><?php echo _t("_Mark as Featured"); ?> </td> <td align="left" width="25%"> <input type="checkbox" name="Featured" <?php if ($Featured) { echo 'checked="checked"'; } ?> > </td> </tr> </table> <?php } ?> <table border="0" cellspacing="0" cellpadding="0" width="100%"> <tr> <td valign="top"> <table border="0" cellspacing="1" cellpadding="0" width="100%"> <tr><td align="center" valign="middle"> <?php if ($NEW_TO_ADD) { echo _t("_New Member") . '<br /><br />'; } else { ?> <table border="0" cellspacing="0" cellpadding="0" width="250"> <tr> <td align="center" valign="middle" style="position:relative; display:block;width:112px;"> <?php echo get_member_thumbnail($p_arr['ID'], 'none'); ?> </td> <td> <?php $yes_ph = 0; require_once BX_DIRECTORY_PATH_ROOT . 'profilePhotos.php'; $oPhoto = new ProfilePhotos($p_arr['ID']); $oPhoto->getMediaArray(); $yes_ph = $oPhoto->iMediaCount; if ($yes_ph) { ?> <a href="<?php echo $site['url']; ?> photos_gallery.php?ID=<?php echo $p_arr['ID']; ?> " ><?php echo _t("_More Photos"); ?> </a><br /> <?php } if (!$MEMBER) { echo "<div class=small2>" . _t("_Last logged in") . ": "; if (!$p_arr['LastLoggedIn'] || $p_arr['LastLoggedIn'] == "0000-00-00 00:00:00") { echo _t("_never"); } else { echo $p_arr['LastLoggedIn']; } echo "</div>"; } else { echo _t("_Profile status"); ?> : <b><font class=prof_stat_<?php echo $p_arr['Status']; ?> > <?php echo _t("_" . $p_arr['Status']); ?> </font></b><br /> <?php if ($MEMBER) { switch ($p_arr['Status']) { case 'Active': echo '<a href="change_status.php">' . _t("_Suspend account") . '</a><br />'; break; case 'Suspended': echo '<a href="change_status.php">' . _t("_Activate account") . '</a><br />'; break; } } } ?> </td></tr> </table> <?php } ?> </td> <td valign="top" align="center" width="100%"> <?php $free_mode = getParam("free_mode") == "on" ? 1 : 0; ?> </td> </table> </td></tr> <tr><td> <table class="profile_edit_table"><!-- Profile edit page --> <?php $first_row = 1; $rd = !($ADMIN || $MEMBER); $columns = 2; $respd = db_res("SELECT *, (`editable` & {$db_editbl}) AS `is_editable` FROM `ProfilesDesc` WHERE `visible` & {$db_vsbl} AND ( FIND_IN_SET('0', `show_on_page`) OR FIND_IN_SET('" . (int) $_page['name_index'] . "', show_on_page)) ORDER BY `order` ASC"); while ($arrpd = mysql_fetch_array($respd)) { $fname = get_input_name($arrpd); if ($arrpd['get_value'] && $arrpd['to_db'] == 0) { $funcbody = $arrpd['get_value']; $func = create_function('$arg0', $funcbody); $p_arr[$fname] = $func($p_arr_new); } if ($arrpd['is_editable'] && isset($p_arr_new[$fname])) { $p_arr[$fname] = $p_arr_new[$fname]; } $not_first_row = 0; $read_only = !$arrpd['is_editable']; switch ($arrpd['type']) { case 'set': // set of checkboxes echo print_row_set($first_row, $arrpd, $p_arr[$fname], "table", $rd, $columns, "", $read_only); break; case 'rb': // radio buttons echo print_row_radio_button($first_row, $arrpd, $p_arr[$fname], "table", $rd, $columns, "", $read_only); break; case 'r': // reference to array for combo box if ($fname == 'Country') { $onchange = "flagImage = document.getElementById('flagImageId'); flagImage.src = '{$site['flags']}' + this.value.toLowerCase() + '.gif';"; if (strlen($p_arr[$fname]) == 0) { $p_arr[$fname] = getParam('default_country'); } $imagecode = '<img id="flagImageId" src="' . ($site['flags'] . strtolower($p_arr[$fname])) . '.gif" alt="flag" />'; } else { $onchange = ''; $imagecode = ''; } echo print_row_ref($first_row, $arrpd, $p_arr[$fname], "table", $rd, $columns, "", $read_only, $onchange, $imagecode); break; case '0': // divider echo print_row_delim($first_row, $arrpd, "panel", $columns); $not_first_row = 1; $first_row = 1; break; case 'e': // enum combo box. if field name is 'Sex', than this is simple text, user can not change it echo print_row_enum($first_row, $arrpd, $p_arr[$fname], "table", $javascript, $rd, $columns, "", $read_only); break; case 'en': // enum combo box with numbers echo print_row_enum_n($first_row, $arrpd, $p_arr[$fname], "table", $rd, $columns, "", $read_only); break; case 'eny': // enum combo box with years echo print_row_enum_years($first_row, $arrpd, $p_arr[$fname], "table", $rd, $columns, "", $read_only); break; case 'a': // text Area echo print_row_area($first_row, $arrpd, $p_arr[$fname], "table", $rd, $columns, "", $read_only); break; case 'c': // input box echo print_row_edit($first_row, $arrpd, $p_arr[$fname], "table", $rd, $columns, "", $read_only); break; case 'date': // date echo print_row_date($first_row, $arrpd, $p_arr[$fname], "table", $rd, $columns, "", $read_only); break; case 'p': // input box password echo print_row_pwd($first_row, $arrpd, '', "table", $rd, $columns, "", $read_only); break; default: $not_first_row = 1; } if (!$not_first_row && $first_row == 1) { $first_row = 0; } } ?> </table> </td></tr> </table> <br /> <?php if (!!($ADMIN || $MEMBER)) { ?> <center><input type="submit" value="<?php echo _t("_Save Changes"); ?> " /></center> </form> <br /> <?php if ($MEMBER && !$NEW_TO_ADD) { if (!$autoApproval_ifProfile) { attention(_t("_PROFILE_WARNING1", $site['title'])); } attention(_t("_PROFILE_WARNING2", $site['title'])); } } echo "</td></tr></table>"; $ret = ob_get_clean(); return $ret; }
/** * Page blocks' methods */ function getCurrentLevelBlock() { $aUserLevel = getMemberMembershipInfo($this->getUserId()); return $this->_oTemplate->displayCurrentLevel($aUserLevel); }
function _isAllowedJoinByMembership(&$aEvent) { if (!$aEvent['EventMembershipFilter']) { return true; } require_once BX_DIRECTORY_PATH_INC . 'membership_levels.inc.php'; $aMemebrshipInfo = getMemberMembershipInfo($this->_iProfileId); return $aEvent['EventMembershipFilter'] == $aMemebrshipInfo['ID'] && $aMemebrshipInfo['DateStarts'] < time() && $aMemebrshipInfo['DateExpires'] > time() ? true : false; }
function processing() { global $MODE; // - Defaults - $MODE = "_MAIL_"; //$MODE = "_LIVE_"; $DAY = "_OBEY_"; //$DAY = "_FORCE_"; define('NON_VISUAL_PROCESSING', 'YES'); // - Always finish set_time_limit(36000); ignore_user_abort(); // - Parameters check - for ($i = 0; strlen($argv[$i]); $i++) { switch ($argv[$i]) { case "--live": $MODE = "_LIVE_"; break; case "--mail": $MODE = "_MAIL_"; break; case "--force-day": $DAY = "_FORCE_"; break; case "--obey-day": $DAY = "_OBEY_"; break; } } if ($MODE != "_LIVE_") { ob_start(); } $day = date("d"); if (getParam("cmdDay") == $day && $DAY == "_OBEY_") { echo "Already done today, bailing out\n"; $this->finish(); return; } setParam("cmdDay", $day); //======================================================================================================================== // - Membership check - echo "\n- Membership expiration letters -\n"; $expire_notification_days = getParam("expire_notification_days"); $expire_notify_once = getParam("expire_notify_once"); $expire_letters = 0; $exp_res = db_res("SELECT `ID` FROM `Profiles`", 0); while ($row = mysql_fetch_array($exp_res)) { $current_membership_arr = getMemberMembershipInfo($row['ID']); // If expire_notification_days is -1 then notify after expiration if ($current_membership_arr['ID'] == MEMBERSHIP_ID_STANDARD && $expire_notification_days == -1) { // Calculate last UNIX Timestamp $last_timestamp = time() - 24 * 3600; $last_membership_arr = getMemberMembershipInfo($row['ID'], $last_timestamp); if ($current_membership_arr['ID'] != $last_membership_arr['ID']) { if ($further_membership_arr['ID'] == MEMBERSHIP_ID_STANDARD) { $mail_ret = mem_expiration_letter($row['ID'], $last_membership_arr['Name'], -1); if ($mail_ret) { $expire_letters++; } } } } elseif ($current_membership_arr['ID'] != MEMBERSHIP_ID_STANDARD) { // Calculate further UNIX Timestamp $further_timestamp = time() + $expire_notification_days * 24 * 3600; $further_membership_arr = getMemberMembershipInfo($row['ID'], $further_timestamp); if ($current_membership_arr['ID'] != $further_membership_arr['ID'] && $further_membership_arr['ID'] == MEMBERSHIP_ID_STANDARD) { if (!$expire_notify_once || abs($further_timestamp - $current_membership_arr['DateExpires']) < 24 * 3600) { $mail_ret = mem_expiration_letter($row['ID'], $current_membership_arr['Name'], (int) (($current_membership_arr['DateExpires'] - time()) / (24 * 3600))); if ($mail_ret) { $expire_letters++; } } } } } echo "Send membership expire letters: {$expire_letters} letters\n"; //======================================================================================================================== // clear tmp folder -------------------------------------------------------------------------- $this->del_old_all_files(); // ---------------------------------------------------------------------------------- $this->clean_database(); $this->finish(); }
function convertEditField2Input($aItem, $aParams, $iPerson) { $bCouple = $aParams['couple']; $aValues = $aParams['values']; $aErrors = $aParams['errors']; $iProfileID = $aParams['profile_id']; $aInput = array(); switch ($aItem['Type']) { case 'text': $aInput['type'] = 'text'; $aInput['value'] = $aValues[$iPerson]; break; case 'area': $aInput['type'] = 'textarea'; $aInput['value'] = $aValues[$iPerson]; $aInput['attrs']['counter'] = 'true'; break; case 'html_area': $aInput['type'] = 'textarea'; $aInput['html'] = true; $aInput['value'] = $aValues[$iPerson]; $aInput['attrs']['counter'] = 'true'; break; case 'date': $aInput['type'] = 'date'; $aInput['value'] = $aValues[$iPerson]; break; case 'datetime': $aInput['type'] = 'datetime'; $aInput['value'] = $aValues[$iPerson]; break; case 'num': $aInput['type'] = 'number'; $aInput['value'] = $aValues[$iPerson]; break; case 'range': $aInput['type'] = 'doublerange'; $aInput['value'] = $aValues[$iPerson]; break; case 'pass': $aInput['type'] = 'password'; break; case 'bool': $aInput['type'] = 'checkbox'; $aInput['value'] = 'yes'; $aInput['checked'] = (bool) (int) $aValues[$iPerson]; break; case 'select_one': switch ($aItem['Control']) { case 'select': $aInput['type'] = 'select'; break; case 'radio': $aInput['type'] = 'radio_set'; break; default: return false; } $aInput['values'] = $this->convertValues4Input($aItem['Values'], $aItem['UseLKey']); $aInput['value'] = $aValues[$iPerson]; break; case 'select_set': switch ($aItem['Control']) { case 'select': $aInput['type'] = 'select_multiple'; break; case 'checkbox': $aInput['type'] = 'checkbox_set'; break; default: return false; } $aInput['values'] = $this->convertValues4Input($aItem['Values'], $aItem['UseLKey']); $aInput['value'] = $aValues[$iPerson]; break; case 'system': switch ($aItem['Name']) { case 'Featured': $aInput = array('type' => 'checkbox', 'value' => 'yes', 'checked' => $aValues[0]); break; case 'Status': $aInput = array('type' => 'select', 'value' => $aValues[0], 'values' => array()); foreach ($aItem['Values'] as $sValue) { $aInput['values'][$sValue] = _t("_FieldValues_{$sValue}"); } break; case 'Membership': $aMemberships = getMemberships(); $aMembershipInfo = getMemberMembershipInfo($iProfileID); $aInput = array('type' => 'custom', 'content' => $this->getInputMembership($aMemberships, $aMembershipInfo)); break; case 'ID': case 'DateReg': case 'DateLastEdit': case 'DateLastLogin': //non editable return false; break; default: return false; } break; default: return false; } $aInput['name'] = $aItem['Type'] == 'system' ? $aItem['Name'] : $aItem['Name'] . "[{$iPerson}]"; $aInput['caption'] = _t($aItem['Caption']); $aInput['required'] = $aItem['Type'] == 'pass' ? false : $aItem['Mandatory']; $aInput['info'] = ($sInfo = _t($aItem['Desc'], $aItem['Min'], $aItem['Max'])) != $aItem['Desc'] ? $sInfo : null; if ($aItem['Type'] == 'date') { $aInput['attrs']['min'] = $aItem['Max'] ? date('Y') - $aItem['Max'] . '-' . date('m') . '-' . date('d') : date('Y') - 100 . '-' . date('m') . '-' . date('d'); $aInput['attrs']['max'] = $aItem['Min'] ? date('Y') - $aItem['Min'] . '-' . date('m') . '-' . date('d') : date('Y') + 100 . '-' . date('m') . '-' . date('d'); } else { $aInput['attrs']['min'] = $aItem['Min']; $aInput['attrs']['max'] = $aItem['Max']; } $aInput['error'] = $aErrors[$iPerson]; if ($iPerson == 1) { $aInput['tr_attrs'] = array('class' => 'hidable', 'style' => 'display: ' . ($bCouple ? 'table-row' : 'none')); } return $aInput; }