Moderated members should not be allowed to edit the active record.
Cloning the record for them to edit.
* @return void
* @access public
*/
- public function cloneMemberInfo($id)
+ public function cloneMemberInfo( $id, $cloneType = 'CLONED' )
{
// Load Member Info Data Class and get info data for later use
// Update create and update times to now and set info record to pending
$t = date('Y-m-d H:i:s', time());
- $newReferenceName = "CLONED - ".$memberInfo['reference_name'];
+ $newReferenceName = $cloneType . " - ".$memberInfo['reference_name'];
$sql = "
UPDATE ".$MemberInfo->table."
SET create_time = '$t', modify_time = '$t', status = ".$this->config['status_numb']['Pending'].", reference_name = '".addslashes($newReferenceName)."'
$errorMessage = false;
$customFieldResults = false;
$multipleProfileEnabeled = $this->config['settings']['enable_multiple_profiles'];
+ $cloneType = 'CLONED';
// Check for action option - Should be one of the values in the "switch" statement below
$option = false;
// Determine if the current member info record active?
$this->isActive = $this->isActive();
+ // If the current record is active and the member editing is moderated.
+ // Then we need to clone the active record instead of editing it.
+ if ( $this->isActive && $lockedToMember && apply_filters( 'glm_user_is_moderated', $lockedToMember ) ) {
+ $option = 'clone';
+ $cloneType = 'PENDING';
+ }
+
// Get member base data
require_once GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataMembers.php';
$Members = new GlmDataMembers($this->wpdb, $this->config);
$memberUpdated = true;
$memberUpdateError = false;
}
-
+
} else {
$memberUpdateError = true;
}
$oldId = $this->memberInfoID;
// Clone the current member info
- $this->memberInfoID = $CloneMemberInfo->cloneMemberInfo($this->memberInfoID);
+ $this->memberInfoID = $CloneMemberInfo->cloneMemberInfo( $this->memberInfoID, $cloneType );
do_action( 'glm-member-db-clone-custom-fields', $oldId, $this->memberInfoID );
+{* Dashboard for members (own entity) *}
<div class="glm-widget-container">
<div class="glm-widget">
<h2>
<a href="{$thisUrl}?page={$thisPage}&glm_action=memberInfo&member={$memberID}" class="button glm-button glm-right">Add New {$terms.term_member_cap} Information Version</a>
</h2>
<div class="glm-widget-content">
-
{if apply_filters('glm_members_permit_admin_member_index_view_member_info_version', true)}
- {if apply_filters('glm_members_permit_admin_member_index_add_member_info_version', true)}
- {/if}
- <br clear="all">
- <table class="striped glm-admin-table">
- <thead>
- <tr>
- <th>Status</th>
- <th>Reference Name</th>
- <th> </th>
- </tr>
- </thead>
- <tbody>
-
- {if $haveInfoRecords}
- {assign var="i" value="0"}
- {foreach $memberInfoRecords as $m}
-
- {if $m.status.value == $statusTypeNumbers.Active || apply_filters('glm_members_permit_admin_member_index_list_inactive_info', true)}
- {if $i++ is odd by 1}
- <tr>
- {else}
- <tr class="alternate{if $m.status.name == 'Active'} glm-admin-table-active{/if}">
- {/if}
- <td>
- <a href="{$thisUrl}?page={$thisPage}&glm_action=memberInfo&member={$memberID}&memberInfo={$m.id}"{if $m.status.value == $statusPending} class="glm-notice"{/if}>{$m.status.name}</a>
- </td>
- <td>{$m.reference_name}</td>
- <td>
- {if $m.bad_lat_lon}<span class="glm-error">Bad Map Location</span>{/if}
- {if apply_filters('glm_members_permit_admin_member_index_clone_activate_info_version', true)}
- <a href="{$thisUrl}?page={$thisPage}&glm_action=memberInfo&member={$memberID}&memberInfo={$m.id}&option=clone" class="button button-secondary glm-button-small glm-right">Clone</a>
- {if $m.status.name != 'Active'}<a href="{$thisUrl}?page={$thisPage}&glm_action=index&member={$memberID}&activateID={$m.id}" class="button button-secondary glm-button-small glm-right">Activate</a>{/if}
- {/if}
- </td>
- </tr>
+ {if apply_filters('glm_members_permit_admin_member_index_add_member_info_version', true)}
+ {/if}
+ <br clear="all">
+ <table class="striped glm-admin-table">
+ <thead>
+ <tr>
+ <th>Status</th>
+ <th>Reference Name</th>
+ <th> </th>
+ </tr>
+ </thead>
+ <tbody>
+ {if $haveInfoRecords}
+ {assign var="i" value="0"}
+ {foreach $memberInfoRecords as $m}
- {/if}
- {/foreach}
- {else} <!-- haveInfoRecords -->
- <tr><td colspan="5"><a href="{$thisUrl}?page={$thisPage}&glm_action=memberInfo&member={$memberID}">Click here to start entering information for this {$terms.term_member}.</a></td></tr>
- {/if}
- </tbody>
- </table>
- {/if} <!-- apply_filters -->
+ {if $m.status.value == $statusTypeNumbers.Active || apply_filters('glm_members_permit_admin_member_index_list_inactive_info', true)}
+ {if $i++ is odd by 1}
+ <tr>
+ {else}
+ <tr class="alternate{if $m.status.name == 'Active'} glm-admin-table-active{/if}">
+ {/if}
+ <td>
+ <a href="{$thisUrl}?page={$thisPage}&glm_action=memberInfo&member={$memberID}&memberInfo={$m.id}"{if $m.status.value == $statusPending} class="glm-notice"{/if}>{$m.status.name}</a>
+ </td>
+ <td>{$m.reference_name}</td>
+ <td>
+ {if $m.bad_lat_lon}<span class="glm-error">Bad Map Location</span>{/if}
+ {if apply_filters('glm_members_permit_admin_member_index_clone_activate_info_version', true)}
+ <a href="{$thisUrl}?page={$thisPage}&glm_action=memberInfo&member={$memberID}&memberInfo={$m.id}&option=clone" class="button button-secondary glm-button-small glm-right">Clone</a>
+ {* Adding a check for moderated. If locked to member and moderated they should not be able to activate an inactive profile. *}
+ {if $lockedToMember && apply_filters('glm_user_is_moderated', $lockedToMember)}
+ {else}
+ {if $m.status.name != 'Active'}<a href="{$thisUrl}?page={$thisPage}&glm_action=index&member={$memberID}&activateID={$m.id}" class="button button-secondary glm-button-small glm-right">Activate</a>{/if}
+ {/if}
+ {/if}
+ </td>
+ </tr>
+ {/if}
+ {/foreach}
+ {else} <!-- haveInfoRecords -->
+ <tr><td colspan="5"><a href="{$thisUrl}?page={$thisPage}&glm_action=memberInfo&member={$memberID}">Click here to start entering information for this {$terms.term_member}.</a></td></tr>
+ {/if}
+ </tbody>
+ </table>
+ {/if} <!-- apply_filters -->
</div>
</div>
<textarea name="notes" class="glm-form-textarea">{$member.fieldData.notes}</textarea>
{if $member.fieldFail.notes}<p>{$member.fieldFail.notes}</p>{/if}<br>
This "Notes" field is not displayed anywhere else. It is strictly for making and keeping
- notes related to this {$terms.term_member} profile.
+ notes related to this {$terms.term_member} profile.
</td>
</div>
</div>
</form>
{/if}
- {else}
+ {else}
<h3 class="glm-error">You do not have any {$terms.term_member_cap} Types setup.</h3>
<p>You must have at least one {$terms.term_member_cap} Type to add a new {$terms.term_member}.</p>
<td><a href="{$thisUrl}?page=glm-members-admin-menu-settings&glm_action=index">Click here to add {$terms.term_member_cap} Types.</a></td>
</div>
<script type="text/javascript">
- jQuery(document).ready(function($) {
+ jQuery(document).ready(function($) {
- // Flash certain elements for a short time after display
+ // Flash certain elements for a short time after display
$(".glm-flash-updated").fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500);
/*
var glmSubmitRequired = false;
$('input, textarea, select').on( 'change', function() {
glmPageUpdateRequired();
- });
-
+ });
+
/*
* Checks for leaving the page
*/
-
+
// Flag submit button when updates are required.
function glmPageUpdateRequired() {
$('#updateMember').addClass('glm-bad-input-area');
glmSubmitRequired = false;
return true;
});
-
+
// If submit is required and we're laving the page, alert the user
$(window).bind('beforeunload', function() {
if (glmSubmitRequired) {
return true;
}
});
-
+
});
</script>
-
+
{include file='admin/footer.html'}
+{* View File: memberInfo.html *}
+{* glm_action: memberinfo *}
+{* Used for editing member profile records by members_manager or Own Enttity Manager *}
{include file='admin/member/header.html'}
<script src="//maps.googleapis.com/maps/api/js?&key={$settings.google_maps_api_key}"></script>
{if $errorMessage}<span class="glm-error glm-flash-updated glm-right">{$errorMessage}</span>{/if}
</h2>
- <input class="updateMemberProfile button-primary glm-right" type="submit" value="{if $memberInfoID && $memberInfo}Update {$terms.term_member} profile{else}Add new {$terms.term_member} profile{/if}">
+ {if $lockedToMember && apply_filters( 'glm_user_is_moderated', $lockedToMember )}
+ <input class="updateMemberProfile button-primary glm-right" type="submit"
+ value="{if $memberInfoID && $memberInfo}Save {$terms.term_member} profile as Draft{else}Save as Draft{/if}">
+ <input class="updateMemberProfile button-primary glm-right" type="submit"
+ value="{if $memberInfoID && $memberInfo}Request Update to {$terms.term_member} profile{else}Request Add new {$terms.term_member} profile{/if}">
+ {else}
+ <input class="updateMemberProfile button-primary glm-right" type="submit" value="{if $memberInfoID && $memberInfo}Update {$terms.term_member} profile{else}Add new {$terms.term_member} profile{/if}">
+ {/if}
<br>
<br>
<!-- **** Status, Address and Location **** -->
<div class="glm-admin-table glm-admin-table-inner">
- <div class="glm-row">
- <h2>Profile Status:</h2>
- <div class="glm-small-12">
- <select name="status">
- {foreach from=$memberInfo.fieldData.status.list item=v}
- <option value="{$v.value}"{if $v.default} selected{/if}>{$v.name}</option>
- {/foreach}
- </select>
- {if $memberInfo.fieldFail.status}<p>{$memberInfo.fieldFail.status}</p>{/if}
- <input type="checkbox" name="has_no_profile"{if $memberInfo.fieldData.has_no_profile.value} checked{/if}>
- Has no profile page
+ {if !$lockedToMember}
+ <div class="glm-row">
+ <h2>Profile Status:</h2>
+ <div class="glm-small-12">
+ <select name="status">
+ {foreach from=$memberInfo.fieldData.status.list item=v}
+ <option value="{$v.value}"{if $v.default} selected{/if}>{$v.name}</option>
+ {/foreach}
+ </select>
+ {if $memberInfo.fieldFail.status}<p>{$memberInfo.fieldFail.status}</p>{/if}
+ <input type="checkbox" name="has_no_profile"{if $memberInfo.fieldData.has_no_profile.value} checked{/if}>
+ Has no profile page
+ </div>
</div>
- </div>
+ {/if}
<div class="glm-row">
<div class="glm-small-12">
</div>