// Process any updates // --- NONE --- // Do queries and create content $query_member_info = ' SELECT * FROM ' . TABLE_MEMBER . ' LEFT JOIN ' . TABLE_MEMBERSHIP_TYPES . ' USING (membership_type_id) WHERE member_id = "' . mysql_real_escape_string($member_id) . '"'; $result_member_info = @mysql_query($query_member_info, $connection) or die(debug_print("ERROR: 785033 ", array($query, mysql_error()), basename(__FILE__) . ' LINE ' . __LINE__)); $member_data_found = false; if ($row_member_info = mysql_fetch_array($result_member_info)) { $member_data_found = true; } $renewal_info = check_membership_renewal(get_membership_info($member_id)); $member_content = ' <div id="member_info_main"> <div id="member_status"> <span class="member_id">' . $row_member_info['member_id'] . '</span> <span class="pending">' . ($row_member_info['pending'] == 1 ? 'PENDING' : '') . '</span> <span class="discontinued">' . ($row_member_info['membership_discontinued'] == 1 ? 'DISCONTINUED' : '') . '</span> </div> <div id="shopping_status"> <span class="customer_fee">' . number_format($row_member_info['customer_fee_percent'], 3) . '%</span> <span class="tax_exempt">' . ($row_member_info['mem_taxexempt'] == 1 ? '(TAX EXEMPT)' : '') . '</span> <span class="auth_type">' . implode(', ', explode(',', strtr($row_member_info['auth_type'], '_', ' '))) . '</span> </div> <div id="member_name"> <span class="username">' . $row_member_info['username'] . '</span> <span class="preferred_name">' . $row_member_info['preferred_name'] . '</span>
<?php include_once 'config_openfood.php'; session_start(); valid_auth('member'); // So paypal_utilities knows this is a local request and not a paypal request $not_from_paypal = true; include_once 'paypal_utilities.php'; // Do we need to post membership changes? if ($_POST['update_membership'] == 'true') { include_once 'func.check_membership.php'; renew_membership($_SESSION['member_id'], $_POST['membership_type_id']); // Now update our session membership values $membership_info = get_membership_info($_SESSION['member_id']); $_SESSION['renewal_info'] = check_membership_renewal($membership_info); // Make sure this function does not run again from the template_header.php $_POST['update_membership'] = 'false'; } // Set up English grammar for ordering dates $relative_text = ''; $close_suffix = ''; $open_suffix = ''; if (strtotime(ActiveCycle::date_open_next()) < time() && strtotime(ActiveCycle::date_closed_next()) > time()) { $relative_text = 'Current '; } elseif (strtotime(ActiveCycle::date_closed_next()) > time()) { $relative_text = 'Next '; } else { $relative_text = 'Prior '; } if (strtotime(ActiveCycle::date_open_next()) < time()) { $open_suffix = 'ed';
function renew_membership($member_id, $membership_type_id) { global $connection; // First see if the member can sign up for this particular membership_type $membership_info = get_membership_info($member_id); $renewal_info = check_membership_renewal($membership_info); // Compare the member's current membership_type to what they have requested if (!in_array($membership_type_id, explode(',', $membership_info['may_convert_to']))) { // Requested membership_type is not allowed for this membership_type return 'Requested membership_type is not allowed.'; } // Check if this member can renew at the requested membership_type $query_membership_type = ' SELECT * FROM ' . TABLE_MEMBERSHIP_TYPES . ' WHERE ( enabled_type = "2" OR enabled_type = "3") AND FIND_IN_SET(membership_type_id,"' . $membership_info['may_convert_to'] . '")'; $result_membership_type = mysql_query($query_membership_type, $connection) or die(debug_print("ERROR: 683080 ", array($query_membership_type, mysql_error()), basename(__FILE__) . ' LINE ' . __LINE__)); if (!($row_membership_type = mysql_fetch_array($result_membership_type))) { // Requested membership_type is not allowed return 'Requested membership_type is not allowed.'; } // Everything is good to here... so prepare to post the membership. // When switching membership types, we will use the suggested_renewal_date for the // new membership_renewal_date. When keeping the same membership type, we will // use the standard_renewal_date. if ($renewal_info['membership_expired'] == false && $renewal_info['membership_type_id'] == $row_membership_type['membership_type_id']) { $renewal_date = $renewal_info['standard_renewal_date']; } elseif ($renewal_info['suggested_renewal_date'] != '') { $renewal_date = $renewal_info['suggested_renewal_date']; } else { $renewal_date = date('Y-m-d', time()); } // If this is a renewal, then we use the renewal costs but if it // is a switch to a different type, then we use the initial cost if ($membership_info['membership_type_id'] == $membership_type_id) { // Renewal $target_field = 'renew_cost'; } else { // Switch type $target_field = 'initial_cost'; } // Post the membership receivable $transaction_row = add_to_ledger(array('transaction_group_id' => '', 'source_type' => 'member', 'source_key' => $member_id, 'target_type' => 'internal', 'target_key' => 'membership_dues', 'amount' => $row_membership_type[$target_field], 'text_key' => 'membership dues', 'posted_by' => $_SESSION['member_id'])); // Now update the members table $query_members = ' UPDATE ' . TABLE_MEMBER . ' SET last_renewal_date = "' . mysql_real_escape_string($renewal_date) . '", membership_type_id = "' . mysql_real_escape_string($membership_type_id) . '" WHERE member_id = "' . mysql_real_escape_string($member_id) . '"'; $result_members = mysql_query($query_members, $connection) or die(debug_print("ERROR: 683080 ", array($query_members, mysql_error()), basename(__FILE__) . ' LINE ' . __LINE__)); if (mysql_affected_rows()) { return 'Successfully updated membership.'; } }
function member_form($m, $errors, $mtype, $is_admin_context = false) { if ($errors) { ?> <div class="error"> <p>Votre formulaire comporte une ou plusieurs erreurs:</p> <ul class="errorlist"> <?php foreach ($errors as $e) { ?> <li><?php echo $e; ?> </li> <?php } ?> </ul> </div> <?php } ?> <p>Les champs en <b>gras</b> sont obligatoires.</p> <form method="post"> <?php if (isset($m['id'])) { ?> <input type="hidden" name="m" value="<?php echo $m['id']; ?> "> <?php } ?> <input type="hidden" name="member_type" value="<?php echo $mtype; ?> "> <?php $membership_type = isset($m['type']) ? $m['type'] : ''; if ($membership_type != '') { $membership_assoc = get_membership_info($membership_type); echo '<input type="hidden" name="membership_type_id" value="' . htmlspecialchars($membership_assoc['id']) . '">'; echo '<p><label>Type d\'abonnement: </label> '; echo htmlspecialchars($membership_assoc['title']) . ' à ' . my_currency_format($membership_assoc['amount']) . '</p>'; } else { echo '<p><label for="typeID">Type d\'abonnement: </label> '; echo '<select name="membership_type_id" id="typeID">'; $alltype = get_all_membership_info($mtype); foreach ($alltype as $type) { if ($type['amount'] != 0 || $type['id'] == $m['membership_type_id'] || $is_admin_context) { echo '<option '; if ($type['id'] == $m['membership_type_id']) { echo ' selected="selected"'; } echo ' value="' . htmlspecialchars($type['id']) . '">' . $type['title'] . ' (' . my_currency_format($type['amount']) . ')</option>' . "\n"; } } echo '</select>'; } ?> <table> <?php if ($mtype == 'individual') { ?> <tr> <td><b>Prénom</b>:</td> <td><input type="text" name="first_name" size="30" value="<?php echo $m['first_name']; ?> "></td> </tr> <tr> <td><b>Nom</b>:</td> <td><input type="text" name="last_name" size="30" value="<?php echo $m['last_name']; ?> "></td> </tr> <?php } else { ?> <tr> <td><b>Nom de l'organisation:</b></td> <td><input type="text" name="name" size="30" value="<?php echo $m['name']; ?> "></td> </tr> <?php } ?> <tr> <td><b>Courriel:</b></td> <td><input type="text" name="email" size="30" value="<?php echo $m['email']; ?> "></td> <td><div class="hint">Ce courriel sera ajouté automatiquement à une liste de diffusion (faible débit).</div></td> </tr> <tr> <td><b>Ville:</b></td> <td><input type="text" name="city" size="30" value="<?php echo $m['city']; ?> "></td> </tr> <tr> <td><b>Province:</b></td> <td> <select name="province"> <option value=""></option> <?php if (!isset($m['province'])) { $m['province'] = 'QC'; } // default province foreach (get_provinces() as $abb => $name) { ?> <option value="<?php echo $abb; ?> "<?php if ($abb == $m['province']) { ?> selected=""<?php } ?> ><?php echo $name; ?> </option> <?php } ?> </select> </td> </tr> <tr> <td>Adresse:</td> <td><input type="text" name="address" size="52" value="<?php echo $m['address']; ?> "></td> </tr> <tr> <td>Code postal:</td> <td><input type="text" name="postal_code" value="<?php echo $m['postal_code']; ?> "></td> </tr> <tr> <td>Téléphone:</td> <td><input type="text" name="phone" value="<?php echo $m['phone']; ?> "></td> <td></td> </tr> <tr> <td>Empreinte OpenPGP:</td> <td><input type="text" name="fingerprint" size="52" value="<?php echo $m['fingerprint']; ?> "></td> <td><div class="hint">Permettra de voter virtuellement.</div></td> </tr> <tr> <td><b>Mot de passe:</b></td> <td><input type="password" name="password"></td> <td><div class="hint">Vous permettra d'accéder ultérieurement à votre dossier.</div></td> </tr> <tr> <td><b>Répéter mot de passe:</b></td> <td><input type="password" name="password_repeat"></td> </tr> <?php if ($mtype == 'individual') { ?> <tr> <td>Appartenance:</td> <td> <select name="organization_id"> <option value="">Aucune</option> <?php $asso_result = get_organizations(); $org = mysql_fetch_assoc($asso_result); while ($org) { ?> <option value="<?php echo $org['member_id']; ?> "<?php if ($m['organization_id'] == $org['member_id']) { ?> selected=""<?php } ?> ><?php echo $org['organization_name']; ?> </option><?php $org = mysql_fetch_assoc($asso_result); } ?> </select> </td> <td><div class="hint">Ceci est à titre d'information seulement.</div></td> </tr> <?php } ?> <tr> <td></td><td><input type="submit" value="Procéder"></td> </tr> </table> </form> <?php }
while ($row = mysql_fetch_array($result)) { $_SESSION['member_id'] = $row['member_id']; $_SESSION['producer_id_you'] = $row['producer_id']; $_SESSION['show_name'] = $row['preferred_name']; $username = $row['username']; $_SESSION['username'] = $username; $member_id = $row['member_id']; // Following is needed for gravatar (c.f. http://en.gravatar.com/site/implement/hash/) $gravatar_hash = md5(strtolower(trim($row['email_address']))); $_SESSION['gravatar_hash'] = $gravatar_hash; // Following values are used for the wordpress interface $password_hash = $row['password']; $auth_types = $row['auth_type']; } // Save the membership/renewal information into the SESSION to avoid gathering it again $membership_info = get_membership_info($member_id); $_SESSION['renewal_info'] = check_membership_renewal($membership_info); // Enable sumultaneous logging in to wordpress if (WORDPRESS_ENABLED == true) { // Wordpress needs these to be arrays $_GET = array(); $_POST = array(); require 'wordpress_utilities.php'; wordpress_login($member_id, $auth_types); } // If transferring to another page, then go do that... if ($request_uri) { header('Location: ' . $request_uri); exit(0); } } elseif ($row_login['membership_discontinued'] == 1) {
/** * Display member information with his id * @param id member id * we quit fast if the member id is 0 or not found (return immediatly) */ function showMemberInfo($id) { if ($id === 0) { return; } $member = get_member($id); if (!$member) { return; } echo '<form method="post" action="index.php" accept-charset="iso8859-1" id="memberForm" onsubmit="return (this.email.value.length != 0); "><div class="formbox">'; if ($member['first_name'] != null) { $member['first_name'] = stripslashes($member['first_name']); $member['last_name'] = stripslashes($member['last_name']); $wikiname = $member['first_name'] . $member['last_name']; $wikiname = str_replace(array('-', ' ', '\'', '.'), '', $wikiname); $url = config('wiki_member_url') . rawurlencode(utf8_encode($wikiname)); // html escaped $html_first_name = htmlspecialchars($member['first_name']); $html_last_name = htmlspecialchars($member['last_name']); $html_wiki_url = $url; // already rawurlencode() + utf8 $html_wiki_name = htmlspecialchars($wikiname); ?> <p><label class="oblig">Prénom: </label> <?php echo $html_first_name; ?> </p> <p><label class="oblig">Nom: </label> <?php echo $html_last_name; ?> </p> <?php } elseif ($member['organization_name'] != null) { $member['organization_name'] = stripslashes($member['organization_name']); $wikiname = $member['organization_name']; $wikiname = str_replace(array('-', ' ', '\'', '.'), '', $wikiname); $url = config('wiki_member_url') . rawurlencode(utf8_encode($wikiname)); // to html $html_organization_name = htmlspecialchars($member['organization_name']); $html_wiki_url = $url; $html_wiki_name = htmlspecialchars($wikiname); ?> <p><label class="oblig">Nom: </label> <?php echo $html_organization_name; } $membership_type = isset($member['type']) ? $member['type'] : ''; $membership_assoc = get_membership_info($membership_type); if ($membership_type != '') { $html_membership_type = htmlspecialchars($membership_assoc['title']) . ' à ' . my_currency_format($membership_assoc['amount']); } else { $html_membership_type = ' - '; } // echo status ( flags & 1 == desactive ) $html_status = $member['flags'] & 1 ? 'Compte inactif' : 'Compte actif'; $html_email = htmlspecialchars(stripslashes($member['email'])); $html_city = htmlspecialchars(stripslashes($member['city'])); $html_address = htmlspecialchars(stripslashes($member['address'])); $html_postal_code = htmlspecialchars(stripslashes($member['postal_code'])); $html_phone = htmlspecialchars(stripslashes($member['phone'])); $html_fingerprint = htmlspecialchars(stripslashes($member['fingerprint'])); $html_id = htmlspecialchars(stripslashes($member['id'])); $html_affiliation_name = htmlspecialchars(stripslashes($member['affiliation_name'])); // date created $html_date_created = htmlspecialchars(format_date($member['date_created'])); // special case: province are a select list $optionsProvince = ''; foreach (get_provinces() as $abb => $name) { $optionsProvince .= '<option value="' . $abb . '"'; // selected or not? $optionsProvince .= $abb == $member['province'] ? 'selected="selected"' : ''; $optionsProvince .= '>' . htmlspecialchars($name) . '</option>' . "\n"; } ?> <p><label>Page wiki: </label><a href="<?php echo $html_wiki_url; ?> "><?php echo $html_wiki_name; ?> </a></p> <?php $enabled = ($member['flags'] & 1) == 0; $class = !$enabled ? 'disabled' : 'membre'; if ($member['expiry_date'] == 0) { $class = 'en attente de paiement'; } elseif (time() > $member['expiry_date']) { $class = 'expiré'; } $btnRenew = !$enabled && count(get_unpaid_invoices($member['id'])) == 0; ?> </p> <p><label>État: </label><?php echo $html_status; ?> (<?php echo $class; ?> ) <?php if ($btnRenew) { ?> <input type="button" value="Renouveler" onclick="window.location='../renouveler'"/><?php } ?> <p><label>Type d'abonnement: </label><?php echo $html_membership_type; ?> </a></p> <p><label class="oblig">Courriel: </label> <input type="text" name="email" size="30" value="<?php echo $html_email; ?> "></p> <p><label class="oblig">Ville: </label> <input type="text" name="city" size="30" value="<?php echo $html_city; ?> "></p> <p><label class="oblig">Province: </label> <select name="province"><option value=""></option><?php echo $optionsProvince; ?> </select></p> <p><label>Adresse: </label> <input type="text" name="address" size="52" value="<?php echo $html_address; ?> "></p> <p><label>Code postal: </label> <input type="text" name="postal_code" size="7" value="<?php echo $html_postal_code; ?> "></p> <p><label>Téléphone: </label> <input type="text" name="phone" size="12" value="<?php echo $html_phone; ?> "></p> <p><label>Empreinte OpenPGP: </label> <input type="text" name="fingerprint" size="52" value="<?php echo $html_fingerprint; ?> "></p> <p><label>Demande d'adhésion: </label> <span><?php echo $html_date_created; ?> </span></p> <p><label>ID: </label> <span><?php echo $html_id; ?> </span></p> <p><label>Appartenance: </label> <span><?php if ($html_affiliation_name == '') { echo "Aucune"; } else { echo $html_affiliation_name; } ?> </span></p> <p class="command"> <input type="submit" name="cmdSave" value="Modifier"> </p> </div></form> <?php }