c05a7059 by Jeff Balicki

broker cleanup

Signed-off-by: Jeff <jeff@gotenzing.com>
1 parent 97098577
......@@ -21,8 +21,8 @@ if (isset($_GET['current_tab'])) {
$currentTab = 'ace_body_shop';
}
$bodyShopURL = home_url('/broker-landing-page/ace?current_tab=ace_body_shop');
$propertyContractorURL = home_url('/broker-landing-page/ace?current_tab=ace_property_contractor');
$bodyShopURL = home_url('/ace?current_tab=ace_body_shop');
$propertyContractorURL = home_url('/ace?current_tab=ace_property_contractor');
?>
......
......@@ -5,7 +5,8 @@ error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE & ~E_WARNING & ~E_DEPRECATED);
@ini_set( 'max_execution_time', '300' );
require_once __DIR__ . '/vendor/autoload.php';
require_once 'simple_html_dom.php';
require_once 'inc/users.php';
require_once 'inc/learn.php';
add_action('wp_enqueue_scripts', 'theme_broker_enqueue_scripts');
function theme_broker_enqueue_scripts()
......@@ -385,76 +386,6 @@ function send_headers()
}
add_action('template_redirect', 'send_headers');
/**
* Add login authentication function to use either username or email address
*/
//add_action('wp_authenticate', 'my_front_end_login_fail', 1, 2);
//add_action('wp_login_failed', 'my_front_end_login_fail', 1, 1);
function my_front_end_login_fail($user, $pwd = '')
{
// reasons to stop here
// $user is not empty
// $user is not a wp-error object
// $pwd is not empty
if (!empty($user) && !empty($pwd) && !is_wp_error($user)) {
return false;
}
// if a referer is set, use it. else setup the standard login file
$referrer = (isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER']
: home_url('wp-login.php'); // take the safe one, use home_url()
/*
* since PHP5 we can parse an url
* @see http://php.net/manual/en/function.parse-url.php
*
* parse_url( 'http://www.example.com/wp-login.php?login=failed&foo=bar' ) gives us something like that:
*
* array (
* 'scheme' => 'http'
* 'host' => 'www.example.com'
* 'path' => '/wp-login.php'
* 'query' => 'login=failed&foo=bar'
* )
*/
$parsed_url = parse_url($referrer);
/*
* Another fine function is parse_str()
* @see: http://php.net/manual/en/function.parse-str.php
*
* parse( 'login=failed&foo=bar', $query ); results in
* array(
* 'login' => 'failed'
* 'foo' => 'bar'
* )
*
*/
parse_str($parsed_url['query'], $query);
// if there's a valid referrer, and it's not the default log-in screen
if (!strstr($parsed_url['path'], 'wp-login') && !strstr($parsed_url['path'], 'wp-admin')) {
// already has the failed don't appened it again
$redirect_to = $referrer;
if (!isset($query['login']) || 'failed' !== $query['login']) {
// add the failed
// but never ever use a simple string concaternation
// what will result if the referer is 'example.com?foo=bar'?
// it will result in 'example.com?foo=bar?login=failed' OUTCH!
$redirect_to = add_query_arg(['login' => 'failed_empty'], $referrer);
}
// you don't want to redirect to google or somewhere else, you want to redirect to your
// own domain. so use wp_safe_redirect()
wp_safe_redirect($redirect_to);
exit;
}
}
/**
* Redirect always homepage after logout
......@@ -576,422 +507,6 @@ function remove_lostpassword_text($text)
add_filter('gettext', 'remove_lostpassword_text');
/**
* Add custom user profile fields
*/
add_action('show_user_profile', 'add_custom_fields');
add_action('edit_user_profile', 'add_custom_fields');
add_action("user_new_form", "add_custom_fields");
define('WPSL_MARKER_URI', dirname(get_bloginfo('template_url')) . '/commonwell-corp/images/');
function add_custom_fields($user)
{
$brokerList = getBrokerageList();
$userBrokerId = esc_attr(get_the_author_meta('broker_id', $user->ID));
?>
<div class="broker-group">
<h3>Broker</h3>
<table class="form-table form-broker_id">
<tr class="form-field">
<th><label for="broker_id">Brokerage <span class="description">(required)</span></label></th>
<td>
<input type="text" style="position: absolute; opacity: 0; z-index: -1;" />
<select name="broker_id" id="broker_id">
<option value="">Select Broker</option>
<?php foreach ($brokerList as $broker): ?>
<?php
$isSelected = $userBrokerId === $broker['broker_id'] ? 'selected="selected"' : '';
?>
<option value="<?php echo $broker['broker_id']; ?>" <?php echo $isSelected; ?>><?php echo $broker['brokerage']; ?></option>
<?php endforeach;?>
</select>
</td>
</tr>
</table>
</div>
<?php
}
/**
* Save additional profile field
*/
add_action('personal_options_update', 'save_custom_fields');
add_action('edit_user_profile_update', 'save_custom_fields');
add_action('user_register', 'save_custom_fields');
function save_custom_fields($user_id)
{
# again do this only if you can
if (!current_user_can('administrator', $user_id)) {
return false;
}
$brokerList = getBrokerageList();
$brokerage = false;
foreach ($brokerList as $broker) {
if ($_POST['broker_id'] == $broker['broker_id']) {
$brokerage = $broker['brokerage'];
}
}
if ($brokerage) {
update_user_meta($user_id, 'brokerage', sanitize_text_field($brokerage));
}
update_user_meta($user_id, 'broker_id', sanitize_text_field($_POST['broker_id']));
}
add_action('admin_footer-user-new.php', 'addUAMField');
/**
* Add UAM field into a user registration form
*
* @param $user
*/
function addUAMField($user)
{
try {
global $userAccessManager, $wpdb;
$aUamUserGroups = $userAccessManager->getAccessHandler()->getUserGroups();
} catch(Throwable $e) {
error_log($e->getMessage());
return;
}
?>
<h3><?php echo TXT_UAM_GROUPS; ?></h3>
<table class="form-table">
<tbody>
<tr>
<th>
<label for="usergroups"><?php echo TXT_UAM_SET_UP_USERGROUPS; ?></label>
</th>
<td>
<input type="hidden" name="uam_update_groups" value="true" />
<ul class="uam_group_selection">
<?php
if (
!isset($sGroupsFormName)
|| $sGroupsFormName === null
) {
$sGroupsFormName = 'uam_usergroups';
}
foreach ($aUamUserGroups as $oUamUserGroup) {
$sAddition = '';
$sAttributes = '';
?>
<li>
<input type="checkbox" id="<?php echo $sGroupsFormName; ?>-<?php echo $oUamUserGroup->getId(); ?>" <?php echo $sAttributes; ?> value="<?php echo $oUamUserGroup->getId(); ?>" name="<?php echo $sGroupsFormName; ?>[]" data-name="<?php echo strtolower($oUamUserGroup->getGroupName()); ?>" />
<label for="<?php echo $sGroupsFormName; ?>-<?php echo $oUamUserGroup->getId(); ?>" class="selectit" style="display:inline;">
<?php echo $oUamUserGroup->getGroupName() . $sAddition; ?>
</label>
<a class="uam_group_info_link">(<?php echo TXT_UAM_INFO; ?>)</a>
<!-- Tool tip content-->
<div class="tooltip">
<ul class="uam_group_info">
<?php
global $userAccessManager;
foreach ($userAccessManager->getAccessHandler()->getAllObjectTypes() as $sCurObjectType) {
if (isset($aUserGroups[$oUamUserGroup->getId()])) {
$aRecursiveMembership = $aUserGroups[$oUamUserGroup->getId()]->getRecursiveMembershipForObjectType(
$sObjectType,
$iObjectId,
$sCurObjectType
);
if (count($aRecursiveMembership) > 0) {
?>
<li class="uam_group_info_head">
<?php echo constant(
'TXT_UAM_GROUP_MEMBERSHIP_BY_' . strtoupper($sCurObjectType)
); ?>:
<ul>
<?php
foreach ($aRecursiveMembership as $oObject) {
?>
<li class="recusiveTree"><?php echo walkPath(
$oObject,
$sCurObjectType
); ?></li>
<?php
}
?>
</ul>
</li>
<?php
}
}
}
?>
<li class="uam_group_info_head"><?php echo TXT_UAM_GROUP_INFO; ?>:
<ul>
<li><?php echo TXT_UAM_READ_ACCESS; ?>:
<?php
if ($oUamUserGroup->getReadAccess() == "all") {
echo TXT_UAM_ALL;
} elseif ($oUamUserGroup->getReadAccess() == "group") {
echo TXT_UAM_ONLY_GROUP_USERS;
}
?>
</li>
<li><?php echo TXT_UAM_WRITE_ACCESS; ?>:
<?php
if ($oUamUserGroup->getWriteAccess() == "all") {
echo TXT_UAM_ALL;
} elseif ($oUamUserGroup->getWriteAccess() == "group") {
echo TXT_UAM_ONLY_GROUP_USERS;
}
?>
</li>
<li>
<?php echo TXT_UAM_GROUP_ROLE; ?>: <?php
if ($oUamUserGroup->getObjectsFromType('role')) {
$sOut = '';
foreach ($oUamUserGroup->getObjectsFromType(
'role'
) as $sKey => $sRole) {
$sOut .= trim($sKey) . ', ';
}
echo rtrim($sOut, ', ');
} else {
echo TXT_UAM_NONE;
}
?>
</li>
</ul>
</li>
</ul>
</div>
</li>
<?php
}
?>
</ul>
</td>
</tr>
</tbody>
</table>
<?php
}
add_action('user_register', 'saveUAMField');
/**
* Save the UAM field value
*
* @return bool
*/
function saveUAMField($user_id)
{
try {
# again do this only if you can
if (!current_user_can('administrator', $user_id)) {
return false;
}
global $userAccessManager;
$uamAccessHandler = $userAccessManager->getAccessHandler();
$aUserGroups = null;
$aFormData = array();
if (isset($_POST['uam_update_groups'])) {
$aFormData = $_POST;
} elseif (isset($_GET['uam_update_groups'])) {
$aFormData = $_GET;
}
if (isset($aFormData['uam_update_groups'])) {
if ($aUserGroups === null) {
$aUserGroups = isset($aFormData['uam_user_groups']) ? $aFormData['uam_user_groups'] : array();
}
foreach ($aUserGroups as $key => $value) {
if (isset($aUserGroups[$key]['id'])) {
$uamUserGroups = $uamAccessHandler->getUserGroups();
$uamUserGroup = $uamUserGroups[$key];
$uamUserGroup->addObject('_user_', $user_id);
$uamUserGroup->save();
}
}
}
} catch(Throwable $e) {
error_log("saveUAMField Error " . $e->getMessage() . ", for user_id = " . $user_id . " while updating group(s) " . $_REQUEST['uam_update_groups']);
}
}
/**
* Remove roles
*
* Author, Editor, Contributor
*
*/
$wp_roles = new WP_Roles();
$wp_roles->remove_role("author");
$wp_roles->remove_role("editor");
$wp_roles->remove_role("contributor");
/**
* Admin init function
*/
add_action('admin_footer-user-new.php', 'setUserProfileLogicNewUser');
add_action('admin_footer-user-edit.php', 'setUserProfileLogicEditUser');
function setUserProfileLogicNewUser($hook)
{
?>
<script>
(function($) {
var addNewUserForm = $('#createuser');
var roleSelectBox = $('#role');
var brokerIdSelectBox = $('#broker_id');
var brokerIdFormField = $('.form-broker_id .form-field');
var brokerCheckbox = $('.uam_group_selection input[type="checkbox"][id="uam_usergroups-1"]');
var brokerGroup = $('.broker-group');
// Role select
roleSelectBox.on(
'change',
function(e) {
var userRole = e.target.value;
// If broker is selected
// Check "Broker" user group
if (userRole === 'subscriber') {
brokerCheckbox[0].checked = true;
brokerGroup.slideDown(100);
} else {
brokerCheckbox[0].checked = false;
brokerGroup.slideUp(100);
brokerIdSelectBox[0].selectedIndex = 0;
brokerIdFormField.removeClass('form-required');
brokerIdFormField.removeClass('form-invalid');
}
}
).trigger('change');
// Organization
brokerIdSelectBox.on('change', function() {
var userRole = roleSelectBox.val();
// If Broker is selected, org is empty
// Show error message
if (userRole === 'subscriber') {
if (brokerIdSelectBox[0].selectedIndex !== 0) {
brokerIdFormField.removeClass('form-required');
brokerIdFormField.removeClass('form-invalid');
}
}
});
addNewUserForm.on('submit', function(e) {
var userRole = roleSelectBox.val();
// If Broker is selected, org is empty
// Show error message
if (userRole === 'subscriber') {
if (brokerIdSelectBox[0].selectedIndex == 0) {
brokerIdFormField.addClass('form-required');
} else {
brokerIdFormField.removeClass('form-required');
brokerIdFormField.removeClass('form-invalid');
}
} else {
brokerIdFormField.removeClass('form-required');
brokerIdFormField.removeClass('form-invalid');
}
});
})(jQuery);
</script>
<?php
}
function setUserProfileLogicEditUser($hook)
{
?>
<script>
(function($) {
var addEditUserForm = $('#your-profile');
var roleSelectBox = $('#role');
var brokerCheckbox = $('.uam_group_selection input[type="checkbox"][id="uam_usergroups-1"]');
var brokerIdFormField = $('.form-broker_id .form-field');
var brokerGroup = $('.broker-group');
var brokerSelectBox = $('#broker_id');
roleSelectBox.on(
'change',
function(e) {
var targetValue = e.target.value;
// If broker is selected
// Check "Broker" user group
if (targetValue === 'subscriber') {
brokerCheckbox[0].checked = true;
brokerGroup.slideDown(100);
} else {
brokerCheckbox[0].checked = false;
brokerGroup.slideUp(100);
brokerSelectBox[0].selectedIndex = 0;
brokerIdFormField.removeClass('form-required');
brokerIdFormField.removeClass('form-invalid');
}
}
).trigger('change');
// Organization
brokerSelectBox.on('change', function() {
var userRole = roleSelectBox.val();
// If Broker is selected, org is empty
// Show error message
if (userRole === 'subscriber') {
if (brokerSelectBox[0].selectedIndex !== 0) {
brokerIdFormField.removeClass('form-required');
brokerIdFormField.removeClass('form-invalid');
}
}
});
addEditUserForm.on('submit', function(e) {
var userRole = roleSelectBox.val();
// If Broker is selected, org is empty
// Show error message
if (userRole === 'subscriber') {
if (brokerSelectBox[0].selectedIndex == 0) {
brokerIdFormField.addClass('form-required');
brokerIdFormField.addClass('form-invalid');
return false;
} else {
brokerIdFormField.removeClass('form-required');
brokerIdFormField.removeClass('form-invalid');
return true;
}
} else {
brokerIdFormField.removeClass('form-required');
brokerIdFormField.removeClass('form-invalid');
return true;
}
});
})(jQuery);
</script>
<?php
}
add_action('init', 'handle_preflight');
function handle_preflight()
......@@ -1018,225 +533,6 @@ add_role(
)
);
add_action('show_user_profile', 'addCommonwellStaffInfo');
add_action('edit_user_profile', 'addCommonwellStaffInfo');
function addCommonwellStaffInfo($user)
{
$user_id = $_GET['user_id'];
if (user_can($user_id, 'cwl_staff')) {
$CommonwellTitle = get_user_meta($user_id, 'Commonwelltitle', true);
$CommonwellPersonalizedMesssage = get_user_meta($user_id, 'CommonwellPersonalizedMesssage', true);
$CommonwellTel = get_user_meta($user_id, 'CommonwellTel', true);
$VideoLink = get_user_meta($user_id, 'VideoLink', true);
?>
<h3>Commonwell Staff</h3>
<table class="form-table">
<tr>
<th><label for="organization_profile">Commonwell Title</label></th>
<td><input id="Commonwelltitle" type="text" name="Commonwelltitle" value="<?php echo $CommonwellTitle; ?>" class="regular-text" /></td>
</tr>
<tr>
<th><label for="organization_profile">Personalized Messsage</label></th>
<td><textarea id="CommonwellPersonalizedMesssage" name="CommonwellPersonalizedMesssage" />
<?php echo $CommonwellPersonalizedMesssage; ?>
</textarea></td>
</tr>
<tr>
<th><label for="organization_profile">Phone</label></th>
<td><input type='tel' id="CommonwellTel" name="CommonwellTel" class="regular-text" pattern='[\+]\d{1}[\(]\d{3}[\)-]\d{3}[\-]\d{4} [\ext]\d{3}' value=" <?php echo $CommonwellTel; ?>" title='Phone Number (Format: +9(999)-999-9999 ext 999)'>
(Format: +9(999)-999-9999 ext 999)
</td>
</tr>
<tr>
<th><label for="organization_profile">Video Link</label></th>
<td><input id="VideoLink" type="text" name="VideoLink" value="<?php echo $VideoLink; ?>" class="regular-text" /></td>
</tr>
</table>
<?php
}
}
/**
* Save additional profile field
*/
add_action('personal_options_update', 'saveCommonwellStaffInfo');
add_action('edit_user_profile_update', 'saveCommonwellStaffInfo');
function saveCommonwellStaffInfo($user_id)
{
update_user_meta($user_id, 'Commonwelltitle', sanitize_text_field($_POST['Commonwelltitle']));
update_user_meta(
$user_id,
'CommonwellPersonalizedMesssage',
sanitize_text_field($_POST['CommonwellPersonalizedMesssage'])
);
update_user_meta($user_id, 'CommonwellTel', sanitize_text_field($_POST['CommonwellTel']));
update_user_meta($user_id, 'VideoLink', sanitize_text_field($_POST['VideoLink']));
}
add_action('show_user_profile', 'my_show_extra_profile_fields');
add_action('edit_user_profile', 'my_show_extra_profile_fields');
function my_show_extra_profile_fields($user)
{
$user_id = $_GET['user_id'];
if (user_can($user_id, 'cwl_staff')) {
include_once $_SERVER['DOCUMENT_ROOT'] . '/wordpress/wp-config.php';
global $wpdb;
$query = get_option('broker_list') ? unserialize(get_option('broker_list')) : [];
foreach ($query as $key => $row) {
$brokers[$row['id']]['id'] = $row['id'];
$brokers[$row['id']]['broker_id'] = $row['broker_id'];
$brokers[$row['id']]['name'] = $row['brokerage'];
}
$brokersSelected = 'select broker_id from wp_broker_staff where staff_id =' . $user_id;
foreach ($wpdb->get_results($brokersSelected) as $row) {
$brokersPicked[] = $row->broker_id;
unset($brokers[$row->broker_id]);
}
;
$brokersLeft = $brokers;
?>
<table class="form-table">
<form>
<fieldset>
<tr>
<th><label>Brokers Served</label></th>
</tr>
<tr>
<td width="30%" align="center">
  YOUR LIST
<select style="width:100%;" name="brokerselected[]" id="select-to" multiple="multiple" size="5">
<?php
foreach ($query as $key => $row) {
//error_log(print_r($brokerPicked,true));
if (in_array($row['broker_id'], $brokersPicked)) {
?>
<option selected="selected" value="<?php echo $row['broker_id']; ?>"><?php echo $row['brokerage']; ?></option>
<?php }
}?>
</select>
</td>
<td width="20%">
<a href="JavaScript:void(0);" style="float:left;" id="btn-remove">Remove &raquo;</a>
<a href="JavaScript:void(0);" style="float:right;" id="btn-add">&laquo; Add </a>
</td>
<td width="30%" align="center">
BROKERS
<select style="width:100%;" name="selectfrom" id="select-from" multiple size="5">
<?php foreach ($brokersLeft as $brokerLeft) {?>
<option value="<?php echo $brokerLeft['broker_id']; ?>"><?php echo $brokerLeft['name']; ?></option>
<?php }?>
</select>
<td>
</tr>
</fieldset>
</form>
</td>
</tr>
</table>
<script>
jQuery(document).ready(
function($) {
$('#btn-add').click(
function() {
$('#select-from option:selected').each(
function() {
$('#select-to').append("<option selected='selected' value='" + $(this).val() + "'>" + $(this).text() + "</option>");
$(this).remove();
}
);
}
);
$('#btn-remove').click(
function() {
$('#select-to option:selected').each(
function() {
$('#select-from').append("<option value='" + $(this).val() + "'>" + $(this).text() + "</option>");
$(this).remove();
}
);
}
);
$(document).on(
'submit', '#your-profile',
function() {
$('#select-to option').each(
function() {
$(this).attr("selected", 1);
}
);
}
);
}
);
</script>
<?php }
}
add_action('personal_options_update', 'my_save_extra_profile_fields');
add_action('edit_user_profile_update', 'my_save_extra_profile_fields');
function my_save_extra_profile_fields()
{
global $wpdb;
global $user_id;
$wpdb->delete(
'wp_broker_staff',
array('staff_id' => $user_id)
);
foreach ($_POST['brokerselected'] as $brokerselected) {
//error_log($brokerselected);
$wpdb->insert(
'wp_broker_staff',
array(
'staff_id' => $user_id,
'broker_id' => $brokerselected,
)
);
}
}
// Our custom post type function
function create_posttype()
......@@ -1317,79 +613,7 @@ function ja_theme_setup()
{
add_theme_support('post-thumbnails', array('post', 'notifications'));
}
function custom_post_type()
{
// Set UI labels for Custom Post Type
$labelsNewsandEvents = array(
'name' => _x('News', 'Post Type General Name', 'commonwell-corp'),
'singular_name' => _x('News', 'Post Type Singular Name', 'commonwell-corp'),
'menu_name' => __('Notifications', 'commonwell-corp'),
'parent_item_colon' => __('Parent News ', 'commonwell-corp'),
'all_items' => __('All News', 'commonwell-corp'),
'view_item' => __('View News', 'commonwell-corp'),
'add_new_item' => __('Add New News', 'commonwell-corp'),
'add_new' => __('Add New', 'commonwell-corp'),
'edit_item' => __('Edit News', 'commonwell-corp'),
'update_item' => __('Update News', 'commonwell-corp'),
'search_items' => __('Search News', 'commonwell-corp'),
'not_found' => __('Not Found', 'commonwell-corp'),
'not_found_in_trash' => __('Not found in Trash', 'commonwell-corp'),
);
// Set other options for Custom Post Type
$labelsNewsandEvents = array(
'label' => __('news', 'twentythirteen'),
'description' => __('notification news and reviews', 'twentythirteen'),
'labels' => $labels,
// Features this CPT supports in Post Editor
'supports' => array(
'title',
'editor',
'excerpt',
'author',
'thumbnail',
'comments',
'revisions',
'custom-fields',
),
// You can associate this CPT with a taxonomy or custom taxonomy.
'taxonomies' => array('genres'),
/* A hierarchical CPT is like Pages and can have
* Parent and child items. A non-hierarchical CPT
* is like Posts.
*/
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'menu_position' => 5,
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'post',
);
// Registering your Custom Post Type
register_post_type('new_and_events', $args);
}
global $post;
if ($post->type == 'Notifications') {
get_template_part(get_bloginfo('template_url') . '/broker_pages.php');
error_log('tre');
}
/* Hook into the 'init' action so that the function
* Containing our post type registration is not
* unnecessarily executed.
*/
add_action('init', 'custom_post_type', 0);
function clean_custom_menus()
{
......@@ -1510,7 +734,7 @@ function clean_custom_moblie_menus()
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="' . get_option('home') . '/broker-landing-page/">
<a href="' . get_option('home') .'">
<img id="mobile-logo" src="' . get_bloginfo('template_url') . '/images/Commonwell-logo.svg" alt="Commonwell Mutual Insurance Group logo" />
</a>
<button onClick="showSearch();" type="button" class="search_icon_button" ><i class="search_icon material-icons">&#xE8B6;</i></button>
......@@ -1748,38 +972,6 @@ function NewsText()
}
add_shortcode("ImpactNews", "ImpactNews");
function ImpactNews()
{
$custom_args = array(
'post_type' => 'new_and_events',
'posts_per_page' => 10,
'paged' => 1,
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'type',
'value' => 'Impact',
'compare' => '=',
),
)
);
$custom_query = new WP_Query($custom_args);
if ($custom_query->have_posts()):
$news = '<div class="impact-news"><h3>(UPCOMING PROGRAM DATES)</h3><hr>';
while ($custom_query->have_posts()): $custom_query->the_post();
$id = get_the_ID();
$post = get_post($id);
$news .= '<h4>'.$post->post_title.'</h4><p>'. $post->post_content.'</p><hr>' ;
endwhile;
$newspost = $news.'</div>';
endif;
return $newspost;
}
add_shortcode("WaveButton", "WaveButton");
function WaveButton()
......@@ -2111,111 +1303,6 @@ function disable_emojis_remove_dns_prefetch($urls, $relation_type)
}
function broker_override_fields($broker_override_id)
{
$brokerList = getBrokerageList();
$userBrokerId = $broker_override_id;
?>
<select name="broker_override_id" class="broker_override_id">
<option value="">Select Broker</option>
<?php foreach ($brokerList as $broker): ?>
<?php
$isSelected = $userBrokerId === $broker['brokerage'] ? 'selected="selected"' : '';
?>
<option value="<?php echo $broker['brokerage']; ?>" <?php echo $isSelected; ?>><?php echo $broker['brokerage']; ?></option>
<?php endforeach;?>
</select>
<?php
}
function matchBrokerageFromList($post_title)
{
$brokerList = get_option('broker_list') ? unserialize(get_option('broker_list')) : [];
$searchword = $post_title;
$matches = array();
foreach ($brokerList as $k => $v) {
$brokerage = substr($v['brokerage'], 0, strrpos($v['brokerage'], '-'));
if (strpos($searchword, $brokerage) !== false) {
$matches[$k] = $v['brokerage'];
}
}
return $matches;
}
function getRecipientWithBrokerId($Brokerage)
{
$available_brokers = get_users(
array(
'meta_query' => array(
array(
'key' => 'brokerage',
'value' => $Brokerage,
'compare' => '==',
),
),
)
);
ob_start();
?>
<select name="lead_recipien_id" class="lead_recipien_id">
<option value="">Select Recipient</option>
<?php foreach ($available_brokers as $broker): ?>
<?php
$isSelected = "";
?>
<option value="<?php echo $broker->ID; ?>"><?php echo $broker->user_email; ?></option>
<?php endforeach;?>
</select>
<?php
}
add_action('wp_ajax_get_recipients', 'ajax_get_Recipien_With_BrokerId');
add_action('wp_ajax_nopriv_get_recipients', 'ajax_get_Recipien_With_BrokerId');
function ajax_get_Recipien_With_BrokerId()
{
$broker_override_id = $_POST['broker_override_id'];
$available_brokers = get_users(
array(
'meta_query' => array(
array(
'key' => 'brokerage',
'value' => $broker_override_id,
'compare' => '==',
),
),
)
);
?>
<select name="lead_recipien_id" class="lead_recipien_id">
<option value="">Select Recipient</option>
<?php foreach ($available_brokers as $broker): ?>
<?php
$isSelected = "";
?>
<option value="<?php echo $broker->ID; ?>"><?php echo $broker->user_email; ?></option>
<?php endforeach;?>
</select>
<?php $output = ob_get_clean();
wp_send_json_success($output);
die();
}
add_shortcode('add_hr', 'add_hr_shortcode');
......@@ -2244,640 +1331,6 @@ function remove_custom_cookie_admin()
function badgeos_send_achievements_email_custom( $user_id, $achievement_id, $this_trigger, $site_id, $args, $entry_id ) {
global $wpdb;
$badgeos_settings = ( $exists = badgeos_utilities::get_option( 'badgeos_settings' ) ) ? $exists : array();
$achievement_post_type = badgeos_utilities::get_post_type( $achievement_id );
$achievement_type = $badgeos_settings['achievement_main_post_type'];
$post_obj = get_page_by_path( $achievement_post_type, OBJECT, $achievement_type );
$parent_post_type = '';
if( $post_obj ) {
$parent_post_type = $post_obj->post_type;
}
if ( trim( $achievement_type ) == trim( $parent_post_type ) ) {
$badgeos_admin_tools = ( $exists = badgeos_utilities::get_option( 'badgeos_admin_tools' ) ) ? $exists : array();
$email_cc_list = badgeos_bcc_cc_emails( $badgeos_admin_tools, 'email_achievement_cc_list', 'cc' );
$email_bcc_list = badgeos_bcc_cc_emails( $badgeos_admin_tools, 'email_achievement_bcc_list', 'bcc' );
if( ! isset( $badgeos_admin_tools['email_disable_earned_achievement_email'] ) || $badgeos_admin_tools['email_disable_earned_achievement_email'] == 'no' ) {
$results = $wpdb->get_results( "select * from ".$wpdb->prefix."badgeos_achievements where entry_id='".$entry_id."'", 'ARRAY_A' );
if( count( $results ) > 0 ) {
$record = $results[ 0 ];
$achievement_type = $record[ 'post_type' ];
$type_title = $post_obj->post_title;
$step_type = trim( $badgeos_settings['achievement_step_post_type'] );
$issue_date = $record[ 'date_earned' ];
$rec_type = $record[ 'rec_type' ];
$rec_date_earned = $record['date_earned'];
$date_format = badgeos_utilities::get_option( 'date_format', true );
$time_format = badgeos_utilities::get_option( 'time_format', true );
if( get_post_meta( $achievement_id, '_open_badge_enable_baking', true ) ) {
$evidence_page_id = get_option( 'badgeos_evidence_url' );
$badgeos_evidence_url = get_permalink( $evidence_page_id );
$badgeos_evidence_url = add_query_arg( 'bg', $record[ 'ID' ], $badgeos_evidence_url );
$badgeos_evidence_url = add_query_arg( 'eid', $record[ 'entry_id' ], $badgeos_evidence_url );
$badgeos_evidence_url = add_query_arg( 'uid', $record[ 'user_id' ], $badgeos_evidence_url );
}
if( ! empty( $achievement_type ) && trim( $achievement_type ) != $step_type ) {
$email_subject = $badgeos_admin_tools['email_achievement_subject'];
if( empty( $email_subject ) ) {
$email_subject = __( 'Congratulation for earning an achievement', 'badgeos' );
}
$email_content = $badgeos_admin_tools['email_achievement_content'];
$from_title = get_bloginfo( 'name' );
$from_email = get_bloginfo( 'admin_email' );
if( !empty( $badgeos_admin_tools['email_general_from_name'] ) ) {
$from_title = $badgeos_admin_tools['email_general_from_name'];
}
if( !empty( $badgeos_admin_tools['email_general_from_email'] ) ) {
$from_title = $badgeos_admin_tools['email_general_from_email'];
}
$achievement_title = $record[ 'achievement_title' ];
$points = $record[ 'points' ];
$achievement_image = badgeos_get_achievement_post_thumbnail( $achievement_id, 'full' );
$user_to_title = '';
$user_email = '';
$to_user_id = $record[ 'user_id'];
$user_to = get_user_by( 'ID', $record[ 'user_id'] );
if( $user_to ) {
$user_to_title = $user_to->display_name;
$user_email = $user_to->user_email;
}
$headers[] = 'From: '.$from_title.' <'.$from_email.'>';
$headers[] = 'Content-Type: text/html; charset=UTF-8';
if( is_array( $email_cc_list ) && count( $email_cc_list ) > 0 ) {
foreach( $email_cc_list as $cc_id ) {
if( !empty( $cc_id ) ) {
$headers[] = 'Cc: '.$cc_id;
}
}
}
if( is_array( $email_bcc_list ) && count( $email_bcc_list ) > 0 ) {
foreach( $email_bcc_list as $bcc_id ) {
if( !empty( $bcc_id ) ) {
$headers[] = 'Bcc: '.$bcc_id;
}
}
}
$email_subject = str_replace('[achievement_type]', $type_title, $email_subject );
$email_subject = str_replace('[achievement_title]', $achievement_title, $email_subject );
$email_subject = str_replace('[points]', $points, $email_subject );
$email_subject = str_replace('[user_email]', $user_email, $email_subject );
$email_subject = str_replace('[user_name]', $user_to_title, $email_subject );
ob_start();
$email_content = stripslashes( html_entity_decode( $email_content ) );
$email_content = str_replace("\'","'", $email_content);
$email_content = str_replace('\"','"', $email_content);
$email_content = str_replace('[achievement_type]', $type_title, $email_content );
$email_content = str_replace('[achievement_title]', $achievement_title, $email_content );
$email_content = str_replace('[date_earned]', date( $date_format.' '.$time_format, strtotime($record['date_earned']) ), $email_content );
$email_content = str_replace('[achievement_link]', get_permalink($achievement_id), $email_content );
$email_content = str_replace('[points]', $points, $email_content );
$email_content = str_replace('[user_email]', $user_email, $email_content );
$email_content = str_replace('[user_name]', $user_to_title."<p>&nbsp;</p>", $email_content );
$email_content = str_replace('[achievement_image]', "<p>&nbsp;</p>".$achievement_image."<p>&nbsp;</p>", $email_content );
$email_content = str_replace('[user_profile_link]', get_edit_profile_url( $to_user_id ), $email_content );
$email_content = str_replace('[evidence]', badgeos_include_evidence_in_email( $achievement_id, $issue_date, $rec_type, $badgeos_evidence_url, $rec_date_earned ), $email_content);
?>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%;">
<tr>
<td style="font-family: sans-serif; font-size: 14px; vertical-align: top;">
<?php echo $email_content; ?>
</td>
</tr>
</table>
<?php
$message = ob_get_contents();
ob_end_clean();
if( ! empty( $user_email ) ) {
wp_mail( $user_email, strip_tags( $email_subject ), $message, $headers );
}
}
}
}
}
}
add_action( 'badgeos_award_achievement', 'badgeos_send_achievements_email_custom', 10, 6 );
function remove_badgeos_can_notify_user( $user_login, $user ) {
update_user_meta($user->ID, '_badgeos_can_notify_user', '');
}
add_action('wp_login', 'remove_badgeos_can_notify_user', 10, 2 );
add_shortcode('textbooks', 'textbooks_shortcode');
function textbooks_shortcode()
{
ob_start();
global $wpdb;
$results = $wpdb->get_results("SELECT meta_value FROM ".$wpdb->prefix."usermeta where meta_key LIKE '%learndash_group_users%' and user_id =".get_current_user_id());
foreach( $results as $result){
$sfwd_groups = get_post_meta($result->meta_value , '_groups', true );
if(!empty($sfwd_groups['groups_group_materials']) ){
echo '<h4 style="font-size:1rem;">'.get_the_title($result->meta_value).'</h4>';
echo '<div class="material">'.$sfwd_groups['groups_group_materials'].'</div>';
}
}
$enrolled_courses = learndash_user_get_enrolled_courses( get_current_user_id(), array(), false);
foreach($enrolled_courses as $enrolled_course){
$lesson_materials="";
$sfwd_course = get_post_meta($enrolled_course , '_sfwd-courses', true );
$course_steps = get_post_meta($enrolled_course , 'ld_course_steps', true );
$course_steps = $course_steps['steps']['h']['sfwd-lessons'];
foreach($course_steps as $key => $course_step){
$sfwd_lessons = get_post_meta($key , '_sfwd-lessons', true );
$lesson_materials .= $sfwd_lessons['sfwd-lessons_lesson_materials'];
}
if(!empty($sfwd_course['sfwd-courses_course_materials']) || !empty($lesson_materials) ){
echo '<h4 style="font-size:1rem;">'.str_replace("Private:","",get_the_title($enrolled_course )).'</h4>';
echo '<div class="material">'.$sfwd_course['sfwd-courses_course_materials'].$lesson_materials.'</div>';
}
}
?>
<?php
return ob_get_clean();
}
add_shortcode('badges', 'badges_shortcode');
function badges_shortcode()
{
ob_start();
//learndash_groups_to_course(get_current_user_id());
global $wpdb;
$results = $wpdb->get_results("SELECT ID, date_earned, achievement_title FROM ".$wpdb->prefix."badgeos_achievements where post_type='badges' and user_id =".get_current_user_id());
echo '<div class="badges">';
foreach( $results as $result){
$thumbnail_id = get_post_meta($result->ID, '_thumbnail_id', true );
echo '<div class="badge_container" data-title="'.str_replace(":","_",str_replace(" ","-",get_the_title($result->ID))).'">'.wp_get_attachment_image($thumbnail_id, array('300', '200'), "", array( "class" => "img-responsive" ) ).'</div>';
}
echo '</div>';
echo '<p class="has-text-align-center">Click to download your certificate</p>';
echo '<div class="cert">';
$enrolled_courses = learndash_user_get_enrolled_courses( get_current_user_id(), array(), false);
foreach($enrolled_courses as $enrolled_course){
if($enrolled_course == 45591){
continue;
}
$cert = learndash_get_course_certificate_link($enrolled_course, get_current_user_id());
if(!empty($cert)){
$sfwd_course = get_post_meta($enrolled_course , '_sfwd-courses', true );
$thumbnail_id = get_post_meta($sfwd_course['sfwd-courses_certificate'], '_thumbnail_id', true );
echo '<div class="badge_container cert"><a target="_blank" class="cert_link" href="'.$cert.'">'
.wp_get_attachment_image($thumbnail_id, array('200', '100'), "", array( "class" => "img-responsive" ) ).' </a><br><strong>'. date( 'F, d, Y', get_user_meta(get_current_user_id(), 'course_completed_'.$enrolled_course, true )).'</strong></div>';
}
}
echo '</div>';
?>
<?php
return ob_get_clean();
}
function learndash_groups_to_course($user_id)
{
global $user_ID, $blog_id, $wpdb;
$results = $wpdb->get_results("SELECT meta_value FROM ".$wpdb->prefix."usermeta where meta_key LIKE '%learndash_group_users%' and user_id =".$user_id);
foreach( $results as $result){
if($result->meta_value== 45728){
continue;
}
ld_update_group_access( $user_id, $result->meta_value, false);
$sfwd_groups = get_post_meta($result->meta_value , '_groups', true );
$group_course_id = get_post_meta($result->meta_value, 'ld_auto_enroll_group_course_ids', true );
if($group_course_id[0] !==""){
if(!get_user_meta($user_id,'course_completed_'.$group_course_id[0],true )){
sci_learndash_mark_course_complete($group_course_id[0],$user_id);
if($access_from = get_user_meta($user_id,'course_'.$group_course_id[0].'_access_from',true )){
update_user_meta( $user_id, 'course_completed_'.$group_course_id[0], $access_from);
}
}
}
}
}
/**
* Mark learndash course as complete.
*
* @param int $id Course ID.
* @param int $user_id User ID.
*/
function sci_learndash_mark_course_complete($id, $user_id)
{
//retreive current course progress
$user_progress['course'][$id] = learndash_user_get_course_progress($user_id, $id, 'legacy');
if (isset($user_progress['course'][$id]['lessons'])) {
//update lessons progress to complete
$lesson_array = $user_progress['course'][$id]['lessons'];
$lessons = array_flip($lesson_array);
$lessons = array_fill_keys(array_keys($lesson_array), 1);
$user_progress['course'][$id]['lessons'] = $lessons;
}
//update topics progress to complete
if (isset($user_progress['course'][$id]['topics'])) {
foreach($user_progress['course'][$id]['topics'] as $ldtopic_key => $ldtopic){
if(count($ldtopic) > 0){
$new_ldtopic = array_flip($ldtopic);
$new_ldtopic = array_fill_keys(array_keys($ldtopic), 1);
$user_progress['course'][$id]['topics'][$ldtopic_key] = $new_ldtopic;
}
}
}
//update quiz progress to complete
if (isset($user_progress['quiz'][$id])) {
$quiz_array = $user_progress['course'][$id]['quiz'];
$quiz = array_flip($quiz_array);
$quiz = array_fill_keys(array_keys($quiz_array), 1);
$user_progress['course'][$id]['quiz'] = $quiz;
}else{
$quiz_list = [];
if ( isset($user_progress['course'][$id]['lessons']) && count($user_progress['course'][$id]['lessons']) > 0 ) {
$ld_lesson_keys = array_keys($user_progress['course'][$id]['lessons']);
foreach($ld_lesson_keys as $course_lesson_id){
$topic_quizzes = learndash_get_lesson_quiz_list( $course_lesson_id );
if (!empty($topic_quizzes)){
foreach ($topic_quizzes as $topic_quiz) {
$quiz_list[$topic_quiz['post']->ID] = 1;
}
}
}
}
if (!empty($quiz_list)){
$user_progress['quiz'][$id] = $quiz_list;
}
}
$processed_course_ids = [];
if ((isset($user_progress['course'])) && (!empty($user_progress['course']))) {
$usermeta = get_user_meta($user_id, '_sfwd-course_progress', true);
$course_progress = empty($usermeta) ? [] : $usermeta;
$course_changed = false; // Simple flag to let us know we changed the quiz data so we can save it back to user meta.
foreach ($user_progress['course'] as $course_id => $course_data_new) {
$processed_course_ids[intval($course_id)] = intval($course_id);
if (isset($course_progress[$course_id])) {
$course_data_old = $course_progress[$course_id];
} else {
$course_data_old = [];
}
$course_data_new = learndash_course_item_to_activity_sync($user_id, $course_id, $course_data_new,
$course_data_old);
$course_progress[$course_id] = $course_data_new;
$course_changed = true;
}
if (true === $course_changed) {
update_user_meta($user_id, '_sfwd-course_progress', $course_progress);
}
}
if ((isset($user_progress['quiz'])) && (!empty($user_progress['quiz']))) {
$usermeta = get_user_meta($user_id, '_sfwd-quizzes', true);
$quizz_progress = empty($usermeta) ? [] : $usermeta;
$quiz_changed = false; // Simple flag to let us know we changed the quiz data so we can save it back to user meta.
foreach ($user_progress['quiz'] as $course_id => $course_quiz_set) {
foreach ($course_quiz_set as $quiz_id => $quiz_new_status) {
$quiz_meta = get_post_meta($quiz_id, '_sfwd-quiz', true);
if (!empty($quiz_meta)) {
$quiz_old_status = !learndash_is_quiz_notcomplete($user_id, [$quiz_id => 1], false, $course_id);
// For Quiz if the admin marks a qiz complete we don't attempt to update an existing attempt for the user quiz.
// Instead we add a new entry. LD doesn't care as it will take the complete one for calculations where needed.
if ((bool)true === (bool)$quiz_new_status) {
if ((bool)true !== (bool)$quiz_old_status) {
if (isset($quiz_meta['sfwd-quiz_lesson'])) {
$lesson_id = absint($quiz_meta['sfwd-quiz_lesson']);
} else {
$lesson_id = 0;
}
if (isset($quiz_meta['sfwd-quiz_topic'])) {
$topic_id = absint($quiz_meta['sfwd-quiz_topic']);
} else {
$topic_id = 0;
}
// If the admin is marking the quiz complete AND the quiz is NOT already complete...
// Then we add the minimal quiz data to the user profile.
$quizdata = [
'quiz' => $quiz_id,
'score' => 0,
'count' => 0,
'question_show_count' => 0,
'pass' => true,
'rank' => '-',
'time' => time(),
'pro_quizid' => absint($quiz_meta['sfwd-quiz_quiz_pro']),
'course' => $course_id,
'lesson' => $lesson_id,
'topic' => $topic_id,
'points' => 0,
'total_points' => 0,
'percentage' => 0,
'timespent' => 0,
'has_graded' => false,
'statistic_ref_id' => 0,
'm_edit_by' => get_current_user_id(), // Manual Edit By ID.
'm_edit_time' => time(), // Manual Edit timestamp.
];
$quizz_progress[] = $quizdata;
if (true === $quizdata['pass']) {
$quizdata_pass = true;
} else {
$quizdata_pass = false;
}
// Then we add the quiz entry to the activity database.
learndash_update_user_activity(
[
'course_id' => $course_id,
'user_id' => $user_id,
'post_id' => $quiz_id,
'activity_type' => 'quiz',
'activity_action' => 'insert',
'activity_status' => $quizdata_pass,
'activity_started' => $quizdata['time'],
'activity_completed' => $quizdata['time'],
'activity_meta' => $quizdata,
]
);
$quiz_changed = true;
if ((isset($quizdata['course'])) && (!empty($quizdata['course']))) {
$quizdata['course'] = get_post($quizdata['course']);
}
if ((isset($quizdata['lesson'])) && (!empty($quizdata['lesson']))) {
$quizdata['lesson'] = get_post($quizdata['lesson']);
}
if ((isset($quizdata['topic'])) && (!empty($quizdata['topic']))) {
$quizdata['topic'] = get_post($quizdata['topic']);
}
/**
* Fires after the quiz is marked as complete.
*
* @param arrat $quizdata An array of quiz data.
* @param WP_User $user WP_User object.
*/
do_action('learndash_quiz_completed', $quizdata, get_user_by('ID', $user_id));
}
} elseif (true !== $quiz_new_status) {
// If we are unsetting a quiz ( changing from complete to incomplete). We need to do some complicated things...
if (true === $quiz_old_status) {
if (!empty($quizz_progress)) {
foreach ($quizz_progress as $quiz_idx => $quiz_item) {
if (($quiz_item['quiz'] == $quiz_id) && (true === $quiz_item['pass'])) {
$quizz_progress[$quiz_idx]['pass'] = false;
// We need to update the activity database records for this quiz_id
$activity_query_args = [
'post_ids' => $quiz_id,
'user_ids' => $user_id,
'activity_type' => 'quiz',
];
$quiz_activity = learndash_reports_get_activity($activity_query_args);
if ((isset($quiz_activity['results'])) && (!empty($quiz_activity['results']))) {
foreach ($quiz_activity['results'] as $result) {
if ((isset($result->activity_meta['pass'])) && (true === $result->activity_meta['pass'])) {
// If the activity meta 'pass' element is set to true we want to update it to false.
learndash_update_user_activity_meta($result->activity_id, 'pass',
false);
// Also we need to update the 'activity_status' for this record
learndash_update_user_activity(
[
'activity_id' => $result->activity_id,
'course_id' => $course_id,
'user_id' => $user_id,
'post_id' => $quiz_id,
'activity_type' => 'quiz',
'activity_action' => 'update',
'activity_status' => false,
]
);
}
}
}
$quiz_changed = true;
}
/**
* Remove the quiz lock.
*
* @since 2.3.1
*/
if ((isset($quiz_item['pro_quizid'])) && (!empty($quiz_item['pro_quizid']))) {
learndash_remove_user_quiz_locks($user_id, $quiz_item['quiz']);
}
}
}
}
}
$processed_course_ids[intval($course_id)] = intval($course_id);
}
}
}
if (true === $quiz_changed) {
update_user_meta($user_id, '_sfwd-quizzes', $quizz_progress);
}
}
if (!empty($processed_course_ids)) {
foreach (array_unique($processed_course_ids) as $course_id) {
learndash_process_mark_complete($user_id, $course_id);
learndash_update_group_course_user_progress($course_id, $user_id);
}
}
}
add_shortcode('dash_user_info', 'dash_user_info_shortcode');
function dash_user_info_shortcode()
{
global $current_user;
get_currentuserinfo();
echo'<div class="dash_user_info">';
echo get_avatar( $current_user->ID, 180 );
echo '<p>'.$current_user->first_name.' '.$current_user->last_name.'</p>';
echo "</div>";
ob_start();?>
<?php
return ob_get_clean();
}
function the_bread() {
if(!is_admin()){
$ingredients = array(
'separator' => '>',
'offset' => -3,
'length' => 3,
);
$flour = $_SERVER['REQUEST_URI'];
if ( str_contains( $flour, '?' ) )
$flour = substr( $flour, 0, strpos( $flour, '?' ) );
$flour = ( str_ends_with( $flour, '/' ) ? explode( '/', substr( $flour, 1, -1 ) ) : explode( '/', substr( $flour, 1 ) ) );
$crumbs = [];
foreach ( $flour as $crumb ) {
$slug = esc_html( $crumb );
$url = esc_url( $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'] . '/' . substr( implode( '/', $flour ), 0, strpos( implode( '/', $flour ), $crumb ) ) . $crumb. '/' );
array_push( $crumbs, ( object )
[
'slug' => $slug,
'url' => $url,
]
);
};
$offset = ( empty( $ingredients['offset'] ) ? 0 : $ingredients['offset'] );
$length = ( empty( $ingredients['length'] ) ? null : $ingredients['length'] );
$crumbs = array_slice( $crumbs, $offset, $length );
echo '<ul class="bread">';
$i = 0;
if ( is_singular( 'sfwd-lessons' ) ) {
echo '<li class="crumb" itemprop="itemListElement">
<a itemprop="item" href="https://thecommonwell.ca/broker-landing-page/learning-2/">
<span itemprop="name">Broker Learning</span>
</a>
<meta itemprop="position" content="1">
</li>&gt;<li class="crumb" itemprop="itemListElement">
<a itemprop="item" href="https://thecommonwell.ca/broker-landing-page/learning-2/marketing-masters/">
<span itemprop="name">Marketing Masters</span>
</a>
<meta itemprop="position" content="2">
</li>&gt;';
}
foreach ( $crumbs as $crumb ) {
$i++;
echo '<li class="crumb" itemprop="itemListElement">
<a itemprop="item" href="' . $crumb->url . '">
<span itemprop="name">' . ( url_to_postid( $crumb->url ) ? get_the_title( url_to_postid( $crumb->url ) ) : ucfirst( str_replace( '-', ' ', $crumb->slug ) ) ) . '</span>
</a>
<meta itemprop="position" content="' . $i . '">
</li>';
if ( $i !== sizeof( $crumbs ) && ! empty( $ingredients['separator'] ) )
echo $ingredients['separator'];
};
echo '</ul>';
}
};
add_shortcode( 'breadcrumbs', 'the_bread' );
if (!function_exists('str_contains')) {
function str_contains(string $haystack, string $needle): bool
{
......@@ -3065,9 +1518,7 @@ add_filter( 'gutenberg_use_widgets_block_editor', '__return_false' );
add_filter( 'use_widgets_block_editor', '__return_false' );
add_filter( 'login_redirect', function( $url, $query, $user ) {
return '/broker-landing-page';
}, 10, 3 );
......
......@@ -82,7 +82,7 @@
<div class="row">
<div class="col-xs-3 col-sm-3 col-md-3 col-lg-3">
<div id="page-logo">
<a href="<?php bloginfo('url') ?>/broker-landing-page/" title="<?php bloginfo('name') ?> - <?php bloginfo('description') ?>">
<a href="<?php bloginfo('url') ?>" title="<?php bloginfo('name') ?> - <?php bloginfo('description') ?>">
<img id="otherpage-logo" src="<?php bloginfo('template_directory') ?>/images/Commonwell-logo.svg" alt="Commonwell Mutual Insurance Group logo" />
</a>
</div>
......
<?php
function badgeos_send_achievements_email_custom( $user_id, $achievement_id, $this_trigger, $site_id, $args, $entry_id ) {
global $wpdb;
$badgeos_settings = ( $exists = badgeos_utilities::get_option( 'badgeos_settings' ) ) ? $exists : array();
$achievement_post_type = badgeos_utilities::get_post_type( $achievement_id );
$achievement_type = $badgeos_settings['achievement_main_post_type'];
$post_obj = get_page_by_path( $achievement_post_type, OBJECT, $achievement_type );
$parent_post_type = '';
if( $post_obj ) {
$parent_post_type = $post_obj->post_type;
}
if ( trim( $achievement_type ) == trim( $parent_post_type ) ) {
$badgeos_admin_tools = ( $exists = badgeos_utilities::get_option( 'badgeos_admin_tools' ) ) ? $exists : array();
$email_cc_list = badgeos_bcc_cc_emails( $badgeos_admin_tools, 'email_achievement_cc_list', 'cc' );
$email_bcc_list = badgeos_bcc_cc_emails( $badgeos_admin_tools, 'email_achievement_bcc_list', 'bcc' );
if( ! isset( $badgeos_admin_tools['email_disable_earned_achievement_email'] ) || $badgeos_admin_tools['email_disable_earned_achievement_email'] == 'no' ) {
$results = $wpdb->get_results( "select * from ".$wpdb->prefix."badgeos_achievements where entry_id='".$entry_id."'", 'ARRAY_A' );
if( count( $results ) > 0 ) {
$record = $results[ 0 ];
$achievement_type = $record[ 'post_type' ];
$type_title = $post_obj->post_title;
$step_type = trim( $badgeos_settings['achievement_step_post_type'] );
$issue_date = $record[ 'date_earned' ];
$rec_type = $record[ 'rec_type' ];
$rec_date_earned = $record['date_earned'];
$date_format = badgeos_utilities::get_option( 'date_format', true );
$time_format = badgeos_utilities::get_option( 'time_format', true );
if( get_post_meta( $achievement_id, '_open_badge_enable_baking', true ) ) {
$evidence_page_id = get_option( 'badgeos_evidence_url' );
$badgeos_evidence_url = get_permalink( $evidence_page_id );
$badgeos_evidence_url = add_query_arg( 'bg', $record[ 'ID' ], $badgeos_evidence_url );
$badgeos_evidence_url = add_query_arg( 'eid', $record[ 'entry_id' ], $badgeos_evidence_url );
$badgeos_evidence_url = add_query_arg( 'uid', $record[ 'user_id' ], $badgeos_evidence_url );
}
if( ! empty( $achievement_type ) && trim( $achievement_type ) != $step_type ) {
$email_subject = $badgeos_admin_tools['email_achievement_subject'];
if( empty( $email_subject ) ) {
$email_subject = __( 'Congratulation for earning an achievement', 'badgeos' );
}
$email_content = $badgeos_admin_tools['email_achievement_content'];
$from_title = get_bloginfo( 'name' );
$from_email = get_bloginfo( 'admin_email' );
if( !empty( $badgeos_admin_tools['email_general_from_name'] ) ) {
$from_title = $badgeos_admin_tools['email_general_from_name'];
}
if( !empty( $badgeos_admin_tools['email_general_from_email'] ) ) {
$from_title = $badgeos_admin_tools['email_general_from_email'];
}
$achievement_title = $record[ 'achievement_title' ];
$points = $record[ 'points' ];
$achievement_image = badgeos_get_achievement_post_thumbnail( $achievement_id, 'full' );
$user_to_title = '';
$user_email = '';
$to_user_id = $record[ 'user_id'];
$user_to = get_user_by( 'ID', $record[ 'user_id'] );
if( $user_to ) {
$user_to_title = $user_to->display_name;
$user_email = $user_to->user_email;
}
$headers[] = 'From: '.$from_title.' <'.$from_email.'>';
$headers[] = 'Content-Type: text/html; charset=UTF-8';
if( is_array( $email_cc_list ) && count( $email_cc_list ) > 0 ) {
foreach( $email_cc_list as $cc_id ) {
if( !empty( $cc_id ) ) {
$headers[] = 'Cc: '.$cc_id;
}
}
}
if( is_array( $email_bcc_list ) && count( $email_bcc_list ) > 0 ) {
foreach( $email_bcc_list as $bcc_id ) {
if( !empty( $bcc_id ) ) {
$headers[] = 'Bcc: '.$bcc_id;
}
}
}
$email_subject = str_replace('[achievement_type]', $type_title, $email_subject );
$email_subject = str_replace('[achievement_title]', $achievement_title, $email_subject );
$email_subject = str_replace('[points]', $points, $email_subject );
$email_subject = str_replace('[user_email]', $user_email, $email_subject );
$email_subject = str_replace('[user_name]', $user_to_title, $email_subject );
ob_start();
$email_content = stripslashes( html_entity_decode( $email_content ) );
$email_content = str_replace("\'","'", $email_content);
$email_content = str_replace('\"','"', $email_content);
$email_content = str_replace('[achievement_type]', $type_title, $email_content );
$email_content = str_replace('[achievement_title]', $achievement_title, $email_content );
$email_content = str_replace('[date_earned]', date( $date_format.' '.$time_format, strtotime($record['date_earned']) ), $email_content );
$email_content = str_replace('[achievement_link]', get_permalink($achievement_id), $email_content );
$email_content = str_replace('[points]', $points, $email_content );
$email_content = str_replace('[user_email]', $user_email, $email_content );
$email_content = str_replace('[user_name]', $user_to_title."<p>&nbsp;</p>", $email_content );
$email_content = str_replace('[achievement_image]', "<p>&nbsp;</p>".$achievement_image."<p>&nbsp;</p>", $email_content );
$email_content = str_replace('[user_profile_link]', get_edit_profile_url( $to_user_id ), $email_content );
$email_content = str_replace('[evidence]', badgeos_include_evidence_in_email( $achievement_id, $issue_date, $rec_type, $badgeos_evidence_url, $rec_date_earned ), $email_content);
?>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%;">
<tr>
<td style="font-family: sans-serif; font-size: 14px; vertical-align: top;">
<?php echo $email_content; ?>
</td>
</tr>
</table>
<?php
$message = ob_get_contents();
ob_end_clean();
if( ! empty( $user_email ) ) {
wp_mail( $user_email, strip_tags( $email_subject ), $message, $headers );
}
}
}
}
}
}
add_action( 'badgeos_award_achievement', 'badgeos_send_achievements_email_custom', 10, 6 );
function remove_badgeos_can_notify_user( $user_login, $user ) {
update_user_meta($user->ID, '_badgeos_can_notify_user', '');
}
add_action('wp_login', 'remove_badgeos_can_notify_user', 10, 2 );
add_shortcode('textbooks', 'textbooks_shortcode');
function textbooks_shortcode()
{
ob_start();
global $wpdb;
$results = $wpdb->get_results("SELECT meta_value FROM ".$wpdb->prefix."usermeta where meta_key LIKE '%learndash_group_users%' and user_id =".get_current_user_id());
foreach( $results as $result){
$sfwd_groups = get_post_meta($result->meta_value , '_groups', true );
if(!empty($sfwd_groups['groups_group_materials']) ){
echo '<h4 style="font-size:1rem;">'.get_the_title($result->meta_value).'</h4>';
echo '<div class="material">'.$sfwd_groups['groups_group_materials'].'</div>';
}
}
$enrolled_courses = learndash_user_get_enrolled_courses( get_current_user_id(), array(), false);
foreach($enrolled_courses as $enrolled_course){
$lesson_materials="";
$sfwd_course = get_post_meta($enrolled_course , '_sfwd-courses', true );
$course_steps = get_post_meta($enrolled_course , 'ld_course_steps', true );
$course_steps = $course_steps['steps']['h']['sfwd-lessons'];
foreach($course_steps as $key => $course_step){
$sfwd_lessons = get_post_meta($key , '_sfwd-lessons', true );
$lesson_materials .= $sfwd_lessons['sfwd-lessons_lesson_materials'];
}
if(!empty($sfwd_course['sfwd-courses_course_materials']) || !empty($lesson_materials) ){
echo '<h4 style="font-size:1rem;">'.str_replace("Private:","",get_the_title($enrolled_course )).'</h4>';
echo '<div class="material">'.$sfwd_course['sfwd-courses_course_materials'].$lesson_materials.'</div>';
}
}
?>
<?php
return ob_get_clean();
}
add_shortcode('badges', 'badges_shortcode');
function badges_shortcode()
{
ob_start();
//learndash_groups_to_course(get_current_user_id());
global $wpdb;
$results = $wpdb->get_results("SELECT ID, date_earned, achievement_title FROM ".$wpdb->prefix."badgeos_achievements where post_type='badges' and user_id =".get_current_user_id());
echo '<div class="badges">';
foreach( $results as $result){
$thumbnail_id = get_post_meta($result->ID, '_thumbnail_id', true );
echo '<div class="badge_container" data-title="'.str_replace(":","_",str_replace(" ","-",get_the_title($result->ID))).'">'.wp_get_attachment_image($thumbnail_id, array('300', '200'), "", array( "class" => "img-responsive" ) ).'</div>';
}
echo '</div>';
echo '<p class="has-text-align-center">Click to download your certificate</p>';
echo '<div class="cert">';
$enrolled_courses = learndash_user_get_enrolled_courses( get_current_user_id(), array(), false);
foreach($enrolled_courses as $enrolled_course){
if($enrolled_course == 45591){
continue;
}
$cert = learndash_get_course_certificate_link($enrolled_course, get_current_user_id());
if(!empty($cert)){
$sfwd_course = get_post_meta($enrolled_course , '_sfwd-courses', true );
$thumbnail_id = get_post_meta($sfwd_course['sfwd-courses_certificate'], '_thumbnail_id', true );
echo '<div class="badge_container cert"><a target="_blank" class="cert_link" href="'.$cert.'">'
.wp_get_attachment_image($thumbnail_id, array('200', '100'), "", array( "class" => "img-responsive" ) ).' </a><br><strong>'. date( 'F, d, Y', get_user_meta(get_current_user_id(), 'course_completed_'.$enrolled_course, true )).'</strong></div>';
}
}
echo '</div>';
?>
<?php
return ob_get_clean();
}
function learndash_groups_to_course($user_id)
{
global $user_ID, $blog_id, $wpdb;
$results = $wpdb->get_results("SELECT meta_value FROM ".$wpdb->prefix."usermeta where meta_key LIKE '%learndash_group_users%' and user_id =".$user_id);
foreach( $results as $result){
if($result->meta_value== 45728){
continue;
}
ld_update_group_access( $user_id, $result->meta_value, false);
$sfwd_groups = get_post_meta($result->meta_value , '_groups', true );
$group_course_id = get_post_meta($result->meta_value, 'ld_auto_enroll_group_course_ids', true );
if($group_course_id[0] !==""){
if(!get_user_meta($user_id,'course_completed_'.$group_course_id[0],true )){
sci_learndash_mark_course_complete($group_course_id[0],$user_id);
if($access_from = get_user_meta($user_id,'course_'.$group_course_id[0].'_access_from',true )){
update_user_meta( $user_id, 'course_completed_'.$group_course_id[0], $access_from);
}
}
}
}
}
/**
* Mark learndash course as complete.
*
* @param int $id Course ID.
* @param int $user_id User ID.
*/
function sci_learndash_mark_course_complete($id, $user_id)
{
//retreive current course progress
$user_progress['course'][$id] = learndash_user_get_course_progress($user_id, $id, 'legacy');
if (isset($user_progress['course'][$id]['lessons'])) {
//update lessons progress to complete
$lesson_array = $user_progress['course'][$id]['lessons'];
$lessons = array_flip($lesson_array);
$lessons = array_fill_keys(array_keys($lesson_array), 1);
$user_progress['course'][$id]['lessons'] = $lessons;
}
//update topics progress to complete
if (isset($user_progress['course'][$id]['topics'])) {
foreach($user_progress['course'][$id]['topics'] as $ldtopic_key => $ldtopic){
if(count($ldtopic) > 0){
$new_ldtopic = array_flip($ldtopic);
$new_ldtopic = array_fill_keys(array_keys($ldtopic), 1);
$user_progress['course'][$id]['topics'][$ldtopic_key] = $new_ldtopic;
}
}
}
//update quiz progress to complete
if (isset($user_progress['quiz'][$id])) {
$quiz_array = $user_progress['course'][$id]['quiz'];
$quiz = array_flip($quiz_array);
$quiz = array_fill_keys(array_keys($quiz_array), 1);
$user_progress['course'][$id]['quiz'] = $quiz;
}else{
$quiz_list = [];
if ( isset($user_progress['course'][$id]['lessons']) && count($user_progress['course'][$id]['lessons']) > 0 ) {
$ld_lesson_keys = array_keys($user_progress['course'][$id]['lessons']);
foreach($ld_lesson_keys as $course_lesson_id){
$topic_quizzes = learndash_get_lesson_quiz_list( $course_lesson_id );
if (!empty($topic_quizzes)){
foreach ($topic_quizzes as $topic_quiz) {
$quiz_list[$topic_quiz['post']->ID] = 1;
}
}
}
}
if (!empty($quiz_list)){
$user_progress['quiz'][$id] = $quiz_list;
}
}
$processed_course_ids = [];
if ((isset($user_progress['course'])) && (!empty($user_progress['course']))) {
$usermeta = get_user_meta($user_id, '_sfwd-course_progress', true);
$course_progress = empty($usermeta) ? [] : $usermeta;
$course_changed = false; // Simple flag to let us know we changed the quiz data so we can save it back to user meta.
foreach ($user_progress['course'] as $course_id => $course_data_new) {
$processed_course_ids[intval($course_id)] = intval($course_id);
if (isset($course_progress[$course_id])) {
$course_data_old = $course_progress[$course_id];
} else {
$course_data_old = [];
}
$course_data_new = learndash_course_item_to_activity_sync($user_id, $course_id, $course_data_new,
$course_data_old);
$course_progress[$course_id] = $course_data_new;
$course_changed = true;
}
if (true === $course_changed) {
update_user_meta($user_id, '_sfwd-course_progress', $course_progress);
}
}
if ((isset($user_progress['quiz'])) && (!empty($user_progress['quiz']))) {
$usermeta = get_user_meta($user_id, '_sfwd-quizzes', true);
$quizz_progress = empty($usermeta) ? [] : $usermeta;
$quiz_changed = false; // Simple flag to let us know we changed the quiz data so we can save it back to user meta.
foreach ($user_progress['quiz'] as $course_id => $course_quiz_set) {
foreach ($course_quiz_set as $quiz_id => $quiz_new_status) {
$quiz_meta = get_post_meta($quiz_id, '_sfwd-quiz', true);
if (!empty($quiz_meta)) {
$quiz_old_status = !learndash_is_quiz_notcomplete($user_id, [$quiz_id => 1], false, $course_id);
// For Quiz if the admin marks a qiz complete we don't attempt to update an existing attempt for the user quiz.
// Instead we add a new entry. LD doesn't care as it will take the complete one for calculations where needed.
if ((bool)true === (bool)$quiz_new_status) {
if ((bool)true !== (bool)$quiz_old_status) {
if (isset($quiz_meta['sfwd-quiz_lesson'])) {
$lesson_id = absint($quiz_meta['sfwd-quiz_lesson']);
} else {
$lesson_id = 0;
}
if (isset($quiz_meta['sfwd-quiz_topic'])) {
$topic_id = absint($quiz_meta['sfwd-quiz_topic']);
} else {
$topic_id = 0;
}
// If the admin is marking the quiz complete AND the quiz is NOT already complete...
// Then we add the minimal quiz data to the user profile.
$quizdata = [
'quiz' => $quiz_id,
'score' => 0,
'count' => 0,
'question_show_count' => 0,
'pass' => true,
'rank' => '-',
'time' => time(),
'pro_quizid' => absint($quiz_meta['sfwd-quiz_quiz_pro']),
'course' => $course_id,
'lesson' => $lesson_id,
'topic' => $topic_id,
'points' => 0,
'total_points' => 0,
'percentage' => 0,
'timespent' => 0,
'has_graded' => false,
'statistic_ref_id' => 0,
'm_edit_by' => get_current_user_id(), // Manual Edit By ID.
'm_edit_time' => time(), // Manual Edit timestamp.
];
$quizz_progress[] = $quizdata;
if (true === $quizdata['pass']) {
$quizdata_pass = true;
} else {
$quizdata_pass = false;
}
// Then we add the quiz entry to the activity database.
learndash_update_user_activity(
[
'course_id' => $course_id,
'user_id' => $user_id,
'post_id' => $quiz_id,
'activity_type' => 'quiz',
'activity_action' => 'insert',
'activity_status' => $quizdata_pass,
'activity_started' => $quizdata['time'],
'activity_completed' => $quizdata['time'],
'activity_meta' => $quizdata,
]
);
$quiz_changed = true;
if ((isset($quizdata['course'])) && (!empty($quizdata['course']))) {
$quizdata['course'] = get_post($quizdata['course']);
}
if ((isset($quizdata['lesson'])) && (!empty($quizdata['lesson']))) {
$quizdata['lesson'] = get_post($quizdata['lesson']);
}
if ((isset($quizdata['topic'])) && (!empty($quizdata['topic']))) {
$quizdata['topic'] = get_post($quizdata['topic']);
}
/**
* Fires after the quiz is marked as complete.
*
* @param arrat $quizdata An array of quiz data.
* @param WP_User $user WP_User object.
*/
do_action('learndash_quiz_completed', $quizdata, get_user_by('ID', $user_id));
}
} elseif (true !== $quiz_new_status) {
// If we are unsetting a quiz ( changing from complete to incomplete). We need to do some complicated things...
if (true === $quiz_old_status) {
if (!empty($quizz_progress)) {
foreach ($quizz_progress as $quiz_idx => $quiz_item) {
if (($quiz_item['quiz'] == $quiz_id) && (true === $quiz_item['pass'])) {
$quizz_progress[$quiz_idx]['pass'] = false;
// We need to update the activity database records for this quiz_id
$activity_query_args = [
'post_ids' => $quiz_id,
'user_ids' => $user_id,
'activity_type' => 'quiz',
];
$quiz_activity = learndash_reports_get_activity($activity_query_args);
if ((isset($quiz_activity['results'])) && (!empty($quiz_activity['results']))) {
foreach ($quiz_activity['results'] as $result) {
if ((isset($result->activity_meta['pass'])) && (true === $result->activity_meta['pass'])) {
// If the activity meta 'pass' element is set to true we want to update it to false.
learndash_update_user_activity_meta($result->activity_id, 'pass',
false);
// Also we need to update the 'activity_status' for this record
learndash_update_user_activity(
[
'activity_id' => $result->activity_id,
'course_id' => $course_id,
'user_id' => $user_id,
'post_id' => $quiz_id,
'activity_type' => 'quiz',
'activity_action' => 'update',
'activity_status' => false,
]
);
}
}
}
$quiz_changed = true;
}
/**
* Remove the quiz lock.
*
* @since 2.3.1
*/
if ((isset($quiz_item['pro_quizid'])) && (!empty($quiz_item['pro_quizid']))) {
learndash_remove_user_quiz_locks($user_id, $quiz_item['quiz']);
}
}
}
}
}
$processed_course_ids[intval($course_id)] = intval($course_id);
}
}
}
if (true === $quiz_changed) {
update_user_meta($user_id, '_sfwd-quizzes', $quizz_progress);
}
}
if (!empty($processed_course_ids)) {
foreach (array_unique($processed_course_ids) as $course_id) {
learndash_process_mark_complete($user_id, $course_id);
learndash_update_group_course_user_progress($course_id, $user_id);
}
}
}
add_shortcode('dash_user_info', 'dash_user_info_shortcode');
function dash_user_info_shortcode()
{
global $current_user;
get_currentuserinfo();
echo'<div class="dash_user_info">';
echo get_avatar( $current_user->ID, 180 );
echo '<p>'.$current_user->first_name.' '.$current_user->last_name.'</p>';
echo "</div>";
ob_start();?>
<?php
return ob_get_clean();
}
function the_bread() {
if(!is_admin()){
$ingredients = array(
'separator' => '>',
'offset' => -3,
'length' => 3,
);
$flour = $_SERVER['REQUEST_URI'];
if ( str_contains( $flour, '?' ) )
$flour = substr( $flour, 0, strpos( $flour, '?' ) );
$flour = ( str_ends_with( $flour, '/' ) ? explode( '/', substr( $flour, 1, -1 ) ) : explode( '/', substr( $flour, 1 ) ) );
$crumbs = [];
foreach ( $flour as $crumb ) {
$slug = esc_html( $crumb );
$url = esc_url( $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'] . '/' . substr( implode( '/', $flour ), 0, strpos( implode( '/', $flour ), $crumb ) ) . $crumb. '/' );
array_push( $crumbs, ( object )
[
'slug' => $slug,
'url' => $url,
]
);
};
$offset = ( empty( $ingredients['offset'] ) ? 0 : $ingredients['offset'] );
$length = ( empty( $ingredients['length'] ) ? null : $ingredients['length'] );
$crumbs = array_slice( $crumbs, $offset, $length );
echo '<ul class="bread">';
$i = 0;
if ( is_singular( 'sfwd-lessons' ) ) {
echo '<li class="crumb" itemprop="itemListElement">
<a itemprop="item" href="https://thecommonwell.ca/learning-2/">
<span itemprop="name">Broker Learning</span>
</a>
<meta itemprop="position" content="1">
</li>&gt;<li class="crumb" itemprop="itemListElement">
<a itemprop="item" href="https://thecommonwell.ca/learning-2/marketing-masters/">
<span itemprop="name">Marketing Masters</span>
</a>
<meta itemprop="position" content="2">
</li>&gt;';
}
foreach ( $crumbs as $crumb ) {
$i++;
echo '<li class="crumb" itemprop="itemListElement">
<a itemprop="item" href="' . $crumb->url . '">
<span itemprop="name">' . ( url_to_postid( $crumb->url ) ? get_the_title( url_to_postid( $crumb->url ) ) : ucfirst( str_replace( '-', ' ', $crumb->slug ) ) ) . '</span>
</a>
<meta itemprop="position" content="' . $i . '">
</li>';
if ( $i !== sizeof( $crumbs ) && ! empty( $ingredients['separator'] ) )
echo $ingredients['separator'];
};
echo '</ul>';
}
};
add_shortcode( 'breadcrumbs', 'the_bread' );
<?php
if( function_exists('acf_add_options_page') ) {
acf_add_options_page(array(
'page_title' => 'Payment Options',
'menu_title' => 'Payment Options',
'menu_slug' => 'payment-options',
'capability' => 'edit_posts',
'redirect' => false
));
}
add_action( 'admin_menu', 'rudr_submenu' );
add_action('wpcf7_init', 'networking_setup');
function networking_setup()
{
wpcf7_add_form_tag('bambora_checkout', 'bambora_checkout');
}
function bambora_checkout($tag)
{
$bambora = ' <div id="bambora" class="container">
<div class="row"> <div class="form-group col-lg-12 has-feedback" id="card-number-bootstrap">Card Number *<div id="card-number" class="form-control"></div><label class="help-block" for="card-number" id="card-number-error"></label> </div></div>
<div class="row"> <div class="form-group col-md-12 col-lg-6 has-feedback" id="card-cvv-bootstrap">CVV *<div id="card-cvv" class="form-control"></div><label class="help-block" for="card-cvv" id="card-cvv-error"></label> </div>
<div class="form-group col-md-12 col-lg-6 has-feedback" id="card-expiry-bootstrap">Expiry Date *<div id="card-expiry" class="form-control"></div><label class="help-block" for="card-expiry" id="card-expiry-error"></label> </div>
<div class="payment"><button id="pay-button" type="submit" class="btn btn-primary disabled" disabled="true">SUBMIT</button> </div> </div></div>
<br><div class="row"> <div class="col-lg-12 text-center"> <div id="feedback"></div></div></div><div class="overlay"><div style="width:400px;margin:auto;text-align: center;"> <img class="load" src="../wp-content/themes/commonwell-corp/images/loading.svg"/><br><h2>Processing...</h2></div></div>';
return $bambora;
}
add_action('wp_ajax_submited', 'submited');
add_action('wp_ajax_nopriv_submited', 'submited');
function submited()
{
$new_post = array(
'post_title' => $_POST['policy_number'].'_'.date('Y-m-d H:i:s'),
'post_content' => '',
'post_status' => 'publish',
'post_type' => 'invoices',
'post_category' => array(0)
);
$post_id = wp_insert_post($new_post);
update_post_meta($post_id, 'approved_declined','submited');
update_post_meta($post_id, 'policy_holders_name',$_POST['policy_holders_name'] );
update_post_meta($post_id, 'card_holder',$_POST['card_holder'] );
update_post_meta($post_id, 'policy_number',$_POST['policy_number'] );
update_post_meta($post_id, 'payment_amount',$_POST['payment_amount'] );
update_post_meta($post_id, 'user_email',$_POST['user_email'] );
update_post_meta($post_id, 'user_phone',$_POST['user_phone'] );
$return = array(
'ID' => $post_id
);
wp_send_json_success($return);
exit;
}
add_action('wpcf7_before_send_mail', 'send_payment_information', 10, 1);
function send_payment_information($contact_form)
{
$form_id = $contact_form->id();
if ($form_id == 65254)
{
$wpcf7 = WPCF7_ContactForm::get_current();
$submission = WPCF7_Submission::get_instance();
$data = $submission->get_posted_data();
save_payment_data($data);
send_payment_email($data);
}
}
function save_payment_data($data)
{
$post_id = $data['postId'];
if(empty($post_id)){
$new_post = array(
'post_title' => $data['policy_number'].'_'.date('Y-m-d H:i:s'),
'post_content' => '',
'post_status' => 'publish',
'post_type' => 'invoices',
'post_category' => array(0)
);
$post_id = wp_insert_post($new_post);
update_post_meta($post_id, 'policy_holders_name',$data['policy_holders_name'] );
update_post_meta($post_id, 'card_holder',$data['card_holder'] );
update_post_meta($post_id, 'policy_number',$data['policy_number'] );
update_post_meta($post_id, 'payment_amount',$data['payment_amount'] );
update_post_meta($post_id, 'user_email',$data['user_email'] );
update_post_meta($post_id, 'user_phone',$data['user_phone'] );
update_post_meta($post_id, 'payment_amount',$data['payment_amount'] );
}
update_post_meta($post_id, 'approved_declined','approved' );
update_post_meta($post_id, 'payment_confirmed',$data['payment_confirmed'] );
update_post_meta($post_id, 'transId',$data['transId'] );
update_post_meta($post_id, 'response_message', 'Approved');
}
function send_payment_email($data)
{
if(!empty($data['user_email'])){
$currency = 'CAD';
$locale = 'en_CA';
$fmt = new \NumberFormatter( $locale, \NumberFormatter::CURRENCY );
$to = $data['user_email'];
$subject = 'Payment Confirmation';
$headers = array('Content-Type: text/html; charset=UTF-8', 'From: noreply@thecommonwell.ca <noreply@thecommonwell.ca>');
$body ='
<style>.bold{font-weight:bold;}</style>
<h2>Your transaction has been approved</h2>
<table>
<tr><td class="bold">Policyholder’s Name</td><td>'.$data['policy_holders_name'].'</td></tr>
<tr><td class="bold">Policy Number</td><td>'.$data['policy_number'].'</td></tr>
<tr><td class="bold">Authorization Number</td><td>'.$data['transId'].'</td></tr>
<tr><td class="bold">Amount Paid</td><td>'.$fmt->formatCurrency($data['payment_amount'], $currency).'</td></tr>
<tr><td class="bold">Date</td><td>'. get_the_date( 'Y-m-d g:i a', $data['postId'] ).'</td></tr>
</table>';
wp_mail($to, $subject, $body, $headers);
}
}
add_action('wp_ajax_submit_declined', 'submit_declined');
add_action('wp_ajax_nopriv_submit_declined', 'submit_declined');
function submit_declined()
{
$post_id = $_POST['postId'];
if(empty($post_id)){
$new_post = array(
'post_title' => $data['policy_number'].'_'.date('Y-m-d H:i:s'),
'post_content' => '',
'post_status' => 'publish',
'post_type' => 'invoices',
'post_category' => array(0)
);
$post_id = wp_insert_post($new_post);
update_post_meta($post_id, 'policy_holders_name',$_POST['policy_holders_name'] );
update_post_meta($post_id, 'card_holder',$_POST['card_holder'] );
update_post_meta($post_id, 'policy_number',$_POST['policy_number'] );
update_post_meta($post_id, 'payment_amount',$_POST['payment_amount'] );
update_post_meta($post_id, 'user_email',$_POST['user_email'] );
update_post_meta($post_id, 'user_phone',$_POST['user_phone'] );
update_post_meta($post_id, 'payment_amount',$_POST['payment_amount'] );
}
update_post_meta($post_id, 'transId',$_POST['transId'] );
update_post_meta($post_id, 'approved_declined','declined');
update_post_meta($post_id, 'response_message',$_POST['response_message'] );
send_payment_declined($_POST);
wp_send_json_success();
exit;
}
function send_payment_declined($data)
{
if(!empty($data['user_email'])){
$currency = 'CAD';
$locale = 'en_CA';
$fmt = new \NumberFormatter( $locale, \NumberFormatter::CURRENCY );
$to = $data['user_email'];
$subject = 'Payment Declined';
$headers = array('Content-Type: text/html; charset=UTF-8', 'From: noreply@thecommonwell.ca <noreply@thecommonwell.ca>');
$body ='
<style>.bold{font-weight:bold;}</style>
<h2>Your transaction has been declined</h2>
<p>The following transaction has been declined. Please try again later. If the problem persists please call our billing department at 1-844-267-7577.<p>
<table>
<tr><td class="bold">Policyholder’s Name</td><td>'.$data['policy_holders_name'].'</td></tr>
<tr><td class="bold">Policy Number</td><td>'.$data['policy_number'].'</td></tr>
<tr><td class="bold">Amount</td><td>'.$fmt->formatCurrency($data['payment_amount'], $currency).'</td></tr>
<tr><td class="bold">Date</td><td>'. get_the_date( 'Y-m-d g:i a', $data['postId'] ).'</td></tr>
</table>';
wp_mail($to, $subject, $body, $headers);
}
}
function get_oauth_token()
{
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => getenv('external_payment_token'),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 3,
CURLOPT_CONNECTTIMEOUT => 1,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"client_id": "'.getenv('external_payment_client_id').'",
"client_secret": "'.getenv('external_payment_client_secret').'",
"audience": "'.getenv('external_payment_audience').'",
"grant_type": "client_credentials"
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Cookie: did=s%3Av0%3Ac0a3ada0-4f00-11ed-976f-adb722eaf863.QGVoTtXe6a3%2Fy3972nHfTp%2FYiqbnA1BVT0X1%2F3lhHhg; did_compat=s%3Av0%3Ac0a3ada0-4f00-11ed-976f-adb722eaf863.QGVoTtXe6a3%2Fy3972nHfTp%2FYiqbnA1BVT0X1%2F3lhHhg'
),
));
$response = curl_exec($curl);
error_log(print_r($response, true));
curl_close($curl);
$data_obj = json_decode($response);
update_option( 'payment_service_access_token', $data_obj->{"access_token"}, true );
return $response;
}
function send_confirm_payment($data)
{
error_log('send_confirm_payment Guidewire');
$curl = curl_init();
$access_token = get_option( 'payment_service_access_token' );
curl_setopt_array($curl, array(
CURLOPT_URL => getenv('external_payment'),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 3,
CURLOPT_CONNECTTIMEOUT => 1,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"requestUID" : "'.$data['transId'].'",
"requestApplicationName" : "Tenzing",
"policyNumber" : "'.$data['policy_number'].'",
"amount": "'.$data['payment_amount'].'",
"paymentDate": "'.date('Y-m-d H:i:s').'",
"paymentReceivedDate": "'.date('Y-m-d H:i:s').'",
"paymentMethod": "singlecreditcard_tcw",
"receiptType": "DIRECTBILLMONEYDETAILS",
"customerName" :"'.$data['policy_holders_name'].'"
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: Bearer '.$access_token.''
),
));
$response = curl_exec($curl);
curl_close($curl);
error_log(print_r($response, true));
$data_obj = json_decode($response);
$paymentId = $data_obj->{"paymentId"};
if(!empty($data_obj->{"paymentId"})){
update_post_meta($data['postId'], 'sent_confirm', true );
update_post_meta($data['postId'], 'response_paymentId', $paymentId );
update_post_meta($data['postId'], 'sent_confirm_response', $response );
}else if($data_obj->{"error"} == 'Unauthorized'){
get_oauth_token();
send_confirm_payment($data);
}else{
error_log('curl send_confirm_payment fail');
send_confirm_payment_fail($data);
}
}
function send_confirm_payment_fail($data)
{
error_log('mail send_confirm_payment fail');
$currency = 'CAD';
$locale = 'en_CA';
$fmt = new \NumberFormatter( $locale, \NumberFormatter::CURRENCY );
$to = get_field('send_confirm_payment_fail', 'option');
$subject = 'Failed Guidewire Call';
$headers = array('Content-Type: text/html; charset=UTF-8', 'From: noreply@thecommonwell.ca <noreply@thecommonwell.ca>');
$body ='
<style>.bold{font-weight:bold;}</style>
<h2>Failed to send transaction to Guidewire</h2>
<table>
<tr><td class="bold">Trans ID</td><td>'.$data['transId'].'</td></tr>
<tr><td class="bold">Policyholder’s Name</td><td>'.$data['policy_holders_name'].'</td></tr>
<tr><td class="bold">Policy Number</td><td>'.$data['policy_number'].'</td></tr>
<tr><td class="bold">Authorization Number</td><td>'.$data['transId'].'</td></tr>
<tr><td class="bold">Amount Paid</td><td>'.$fmt->formatCurrency($data['payment_amount'], $currency).'</td></tr>
<tr><td class="bold">Date</td><td>'. get_the_date( 'Y-m-d g:i a', $data['postId'] ).'</td></tr>
</table>';
wp_mail($to, $subject, $body, $headers);
}
add_shortcode( 'payment_form', 'payment_form' );
function payment_form()
{
if(is_admin()){
return false;
}
ob_start();
if(ip_visitor_country() == "CA"
|| ip_visitor_country() == "US"
|| ip_visitor_country() == "Unknown"
){
if(get_field('payment_on', 'option') == 'true'){
?>
<?php echo do_shortcode('[contact-form-7 id="65254" title="Payment" html_id="GeneratedTable_wrapper" ]');?>
<?php
}else{
?>
<div class="pay-closed alert alert-danger" style="color:#68696D;" role="alert"><?php the_field('payment_closed', 'option'); ?></div>
<?php echo do_shortcode('[contact-form-7 id="65254" title="Payment" html_id="GeneratedTable_wrapper" ]');
}
}else{
?><div class="pay-closed alert alert-danger" style="color:#68696D;" role="alert"><?php the_field('payment_location_closed', 'option'); ?></div><?php
}
$output = ob_get_clean();
return $output;
}
function rudr_submenu(){
add_submenu_page(
'options-general.php', // parent page slug
'Payment Report',
'Payment Report',
'manage_options',
'payment_report',
'payment_report',
4 // menu position
);
}
//add_shortcode( 'payment_report', 'payment_report' );
add_action( 'admin_enqueue_scripts', 'enqueue_custom_admin' );
function enqueue_custom_admin(){
wp_enqueue_script( 'customcheckout', get_stylesheet_directory_uri().'/scripts/customcheckout.js', array(), '0.0.24', true );
wp_enqueue_style('datatables', '//cdn.datatables.net/1.13.1/css/jquery.dataTables.min.css', [], "0.0.1");
wp_enqueue_script('datatables', '//cdn.datatables.net/1.13.1/js/jquery.dataTables.min.js',['jquery'], '0.0.1',true );
wp_enqueue_script('dataTables_buttons', '//cdn.datatables.net/buttons/2.3.2/js/dataTables.buttons.min.js',['jquery'], '0.0.1',true );
wp_enqueue_script('dataTables_buttons_html5', '//cdn.datatables.net/buttons/2.3.2/js/buttons.html5.min.js',['jquery'], '0.0.1',true );
}
function payment_report()
{
if(is_admin()){
// return false;
}
$args = array(
'post_type' => 'invoices',
'post_status' => 'publish',
'posts_per_page' => -1,
);
$content = "<style>
.dataTables_wrapper {
position: relative;
clear: both;
width: 100%;
margin-top:40px;
overflow:scroll;
background-color:#fff;
padding:10px;
}
div.dataTables_wrapper div.dataTables_filter {
margin-top:20px;
text-align: right;
width: 95%;
float: left;
}
.status-dropdown{
width:200px;
float:left;
}
</style>";
$posts = new WP_Query( $args );
if ( $posts->have_posts() ) :
$content .= '<select class="form-control status-dropdown"><option value="">All</option><option value="submited">submited</option> <option value="approved">approved</option> <option value="declined">declined</option></select>';
$content .= '<table id="payments">';
$content .= '<thead><tr>
<th>Trans ID</th>
<th>Status</th>
<th>Date</th>
<th>Policyholder\'s Name</th>
<th>Policy Number</th>
<th>Payment Amount</th>
<th>Email Address</th>
<th>Phone Number</th>
<th>Payment Confirmed</th>
<th>Response Message</th>
<th>Guidewire Response</th>
</tr></thead>';
while ( $posts->have_posts() ) :$posts->the_post();
$post_id = get_the_ID();
$post_date = get_the_date( 'Y-m-d H:i:s' );
$content .= '<tr>';
$content .= '<td>' . get_post_meta( $post_id , 'transId',true ). '</td>';
$content .= '<td>' . get_post_meta( $post_id , 'approved_declined',true ). '</td>';
$content .= '<td>'.$post_date.'</td>';
$content .= '<td>' . get_post_meta( $post_id , 'policy_holders_name',true ). '</td>';
$content .= '<td>' . get_post_meta( $post_id , 'policy_number',true ). '</td>';
$content .= '<td>' . get_post_meta( $post_id , 'payment_amount',true ). '</td>';
$content .= '<td>' . get_post_meta( $post_id , 'user_email',true ). '</td>';
$content .= '<td>' . get_post_meta( $post_id , 'user_phone',true ). '</td>';
$content .= '<td>' . get_post_meta( $post_id , 'payment_confirmed',true ). '</td>';
$content .= '<td>' . get_post_meta( $post_id , 'response_message' ,true ). '</td>';
$content .= '<td>' . get_post_meta( $post_id , 'sent_confirm_response' ,true ). '</td>';
$content .= '</tr>';
endwhile;
$content .= '</table>';
echo $content;
endif;
}
//add_action('init','clean_up_invoices');
function clean_up_invoices()
{
global $wpdb;
$wpdb->query("
delete
p,pm
from wp_posts p
join wp_postmeta pm on pm.post_id = p.id
where p.post_type = 'invoices'
and p.post_date < now() - INTERVAL 90 DAY
");
}
function ip_visitor_country()
{
$client = @$_SERVER['HTTP_CLIENT_IP'];
$forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
$remote = $_SERVER['REMOTE_ADDR'];
$country = "Unknown";
if(filter_var($client, FILTER_VALIDATE_IP))
{
$ip = $client;
}
elseif(filter_var($forward, FILTER_VALIDATE_IP))
{
$ip = $forward;
}
else
{
$ip = $remote;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.geoplugin.net/json.gp?ip=".$ip);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$ip_data_in = curl_exec($ch); // string
curl_close($ch);
$ip_data = json_decode($ip_data_in,true);
$ip_data = str_replace('&quot;', '"', $ip_data); // for PHP 5.2 see stackoverflow.com/questions/3110487/
if($ip_data && $ip_data['geoplugin_countryCode'] != null) {
$country = $ip_data['geoplugin_countryCode'];
}
return $country;
}
add_action("init","get_post_pram");
function get_post_pram(){
if(isset($_POST) && isset($_POST['trnApproved']) && !empty($_POST['ref3'])){
error_log(print_r($_POST, true));
if($_POST['trnApproved'] == '1'){
$id = $_POST['ref3'];
if(get_post_meta($id , 'approved_declined', true) != 'approved'){
update_post_meta($id, 'approved_declined', 'approved');
update_post_meta($id, 'payment_confirmed',$_POST['trnApproved'] );
update_post_meta($id, 'transId',$_POST['trnId'] );
update_post_meta($id, 'response_message', 'Approved');
}
$data = array('transId'=> $_POST['trnId'], 'policy_holders_name'=> $_POST['ref2'], 'policy_number'=> $_POST['ref1'], 'payment_amount'=> $_POST['trnAmount'],'postId'=> $_POST['ref3']);
send_confirm_payment($data);
}elseif($_POST['trnApproved'] == '0'){
$id = $_POST['ref3'];
if(get_post_meta($id , 'approved_declined', true) != 'declined'){
update_post_meta($id, 'approved_declined','declined');
update_post_meta($id, 'transId',$_POST['trnId'] );
update_post_meta($id, 'response_message',$_POST['response_message']);
}
}
}
}
?>
\ No newline at end of file
<?php
/**
* Add custom user profile fields
*/
add_action('show_user_profile', 'add_custom_fields');
add_action('edit_user_profile', 'add_custom_fields');
add_action("user_new_form", "add_custom_fields");
function add_custom_fields($user)
{
$brokerList = getBrokerageList();
$userBrokerId = esc_attr(get_the_author_meta('broker_id', $user->ID));
?>
<div class="broker-group">
<h3>Broker</h3>
<table class="form-table form-broker_id">
<tr class="form-field">
<th><label for="broker_id">Brokerage <span class="description">(required)</span></label></th>
<td>
<input type="text" style="position: absolute; opacity: 0; z-index: -1;" />
<select name="broker_id" id="broker_id">
<option value="">Select Broker</option>
<?php foreach ($brokerList as $broker): ?>
<?php
$isSelected = $userBrokerId === $broker['broker_id'] ? 'selected="selected"' : '';
?>
<option value="<?php echo $broker['broker_id']; ?>" <?php echo $isSelected; ?>><?php echo $broker['brokerage']; ?></option>
<?php endforeach;?>
</select>
</td>
</tr>
</table>
</div>
<?php
}
/**
* Save additional profile field
*/
add_action('personal_options_update', 'save_custom_fields');
add_action('edit_user_profile_update', 'save_custom_fields');
add_action('user_register', 'save_custom_fields');
function save_custom_fields($user_id)
{
# again do this only if you can
if (!current_user_can('administrator', $user_id)) {
return false;
}
$brokerList = getBrokerageList();
$brokerage = false;
foreach ($brokerList as $broker) {
if ($_POST['broker_id'] == $broker['broker_id']) {
$brokerage = $broker['brokerage'];
}
}
if ($brokerage) {
update_user_meta($user_id, 'brokerage', sanitize_text_field($brokerage));
}
update_user_meta($user_id, 'broker_id', sanitize_text_field($_POST['broker_id']));
}
add_action('admin_footer-user-new.php', 'addUAMField');
/**
* Add UAM field into a user registration form
*
* @param $user
*/
function addUAMField($user)
{
try {
global $userAccessManager, $wpdb;
$aUamUserGroups = $userAccessManager->getAccessHandler()->getUserGroups();
} catch(Throwable $e) {
error_log($e->getMessage());
return;
}
?>
<h3><?php echo TXT_UAM_GROUPS; ?></h3>
<table class="form-table">
<tbody>
<tr>
<th>
<label for="usergroups"><?php echo TXT_UAM_SET_UP_USERGROUPS; ?></label>
</th>
<td>
<input type="hidden" name="uam_update_groups" value="true" />
<ul class="uam_group_selection">
<?php
if (
!isset($sGroupsFormName)
|| $sGroupsFormName === null
) {
$sGroupsFormName = 'uam_usergroups';
}
foreach ($aUamUserGroups as $oUamUserGroup) {
$sAddition = '';
$sAttributes = '';
?>
<li>
<input type="checkbox" id="<?php echo $sGroupsFormName; ?>-<?php echo $oUamUserGroup->getId(); ?>" <?php echo $sAttributes; ?> value="<?php echo $oUamUserGroup->getId(); ?>" name="<?php echo $sGroupsFormName; ?>[]" data-name="<?php echo strtolower($oUamUserGroup->getGroupName()); ?>" />
<label for="<?php echo $sGroupsFormName; ?>-<?php echo $oUamUserGroup->getId(); ?>" class="selectit" style="display:inline;">
<?php echo $oUamUserGroup->getGroupName() . $sAddition; ?>
</label>
<a class="uam_group_info_link">(<?php echo TXT_UAM_INFO; ?>)</a>
<!-- Tool tip content-->
<div class="tooltip">
<ul class="uam_group_info">
<?php
global $userAccessManager;
foreach ($userAccessManager->getAccessHandler()->getAllObjectTypes() as $sCurObjectType) {
if (isset($aUserGroups[$oUamUserGroup->getId()])) {
$aRecursiveMembership = $aUserGroups[$oUamUserGroup->getId()]->getRecursiveMembershipForObjectType(
$sObjectType,
$iObjectId,
$sCurObjectType
);
if (count($aRecursiveMembership) > 0) {
?>
<li class="uam_group_info_head">
<?php echo constant(
'TXT_UAM_GROUP_MEMBERSHIP_BY_' . strtoupper($sCurObjectType)
); ?>:
<ul>
<?php
foreach ($aRecursiveMembership as $oObject) {
?>
<li class="recusiveTree"><?php echo walkPath(
$oObject,
$sCurObjectType
); ?></li>
<?php
}
?>
</ul>
</li>
<?php
}
}
}
?>
<li class="uam_group_info_head"><?php echo TXT_UAM_GROUP_INFO; ?>:
<ul>
<li><?php echo TXT_UAM_READ_ACCESS; ?>:
<?php
if ($oUamUserGroup->getReadAccess() == "all") {
echo TXT_UAM_ALL;
} elseif ($oUamUserGroup->getReadAccess() == "group") {
echo TXT_UAM_ONLY_GROUP_USERS;
}
?>
</li>
<li><?php echo TXT_UAM_WRITE_ACCESS; ?>:
<?php
if ($oUamUserGroup->getWriteAccess() == "all") {
echo TXT_UAM_ALL;
} elseif ($oUamUserGroup->getWriteAccess() == "group") {
echo TXT_UAM_ONLY_GROUP_USERS;
}
?>
</li>
<li>
<?php echo TXT_UAM_GROUP_ROLE; ?>: <?php
if ($oUamUserGroup->getObjectsFromType('role')) {
$sOut = '';
foreach ($oUamUserGroup->getObjectsFromType(
'role'
) as $sKey => $sRole) {
$sOut .= trim($sKey) . ', ';
}
echo rtrim($sOut, ', ');
} else {
echo TXT_UAM_NONE;
}
?>
</li>
</ul>
</li>
</ul>
</div>
</li>
<?php
}
?>
</ul>
</td>
</tr>
</tbody>
</table>
<?php
}
add_action('user_register', 'saveUAMField');
/**
* Save the UAM field value
*
* @return bool
*/
function saveUAMField($user_id)
{
try {
# again do this only if you can
if (!current_user_can('administrator', $user_id)) {
return false;
}
global $userAccessManager;
$uamAccessHandler = $userAccessManager->getAccessHandler();
$aUserGroups = null;
$aFormData = array();
if (isset($_POST['uam_update_groups'])) {
$aFormData = $_POST;
} elseif (isset($_GET['uam_update_groups'])) {
$aFormData = $_GET;
}
if (isset($aFormData['uam_update_groups'])) {
if ($aUserGroups === null) {
$aUserGroups = isset($aFormData['uam_user_groups']) ? $aFormData['uam_user_groups'] : array();
}
foreach ($aUserGroups as $key => $value) {
if (isset($aUserGroups[$key]['id'])) {
$uamUserGroups = $uamAccessHandler->getUserGroups();
$uamUserGroup = $uamUserGroups[$key];
$uamUserGroup->addObject('_user_', $user_id);
$uamUserGroup->save();
}
}
}
} catch(Throwable $e) {
error_log("saveUAMField Error " . $e->getMessage() . ", for user_id = " . $user_id . " while updating group(s) " . $_REQUEST['uam_update_groups']);
}
}
/**
* Remove roles
*
* Author, Editor, Contributor
*
*/
$wp_roles = new WP_Roles();
$wp_roles->remove_role("author");
$wp_roles->remove_role("editor");
$wp_roles->remove_role("contributor");
/**
* Admin init function
*/
add_action('admin_footer-user-new.php', 'setUserProfileLogicNewUser');
add_action('admin_footer-user-edit.php', 'setUserProfileLogicEditUser');
function setUserProfileLogicNewUser($hook)
{
?>
<script>
(function($) {
var addNewUserForm = $('#createuser');
var roleSelectBox = $('#role');
var brokerIdSelectBox = $('#broker_id');
var brokerIdFormField = $('.form-broker_id .form-field');
var brokerCheckbox = $('.uam_group_selection input[type="checkbox"][id="uam_usergroups-1"]');
var brokerGroup = $('.broker-group');
// Role select
roleSelectBox.on(
'change',
function(e) {
var userRole = e.target.value;
// If broker is selected
// Check "Broker" user group
if (userRole === 'subscriber') {
brokerCheckbox[0].checked = true;
brokerGroup.slideDown(100);
} else {
brokerCheckbox[0].checked = false;
brokerGroup.slideUp(100);
brokerIdSelectBox[0].selectedIndex = 0;
brokerIdFormField.removeClass('form-required');
brokerIdFormField.removeClass('form-invalid');
}
}
).trigger('change');
// Organization
brokerIdSelectBox.on('change', function() {
var userRole = roleSelectBox.val();
// If Broker is selected, org is empty
// Show error message
if (userRole === 'subscriber') {
if (brokerIdSelectBox[0].selectedIndex !== 0) {
brokerIdFormField.removeClass('form-required');
brokerIdFormField.removeClass('form-invalid');
}
}
});
addNewUserForm.on('submit', function(e) {
var userRole = roleSelectBox.val();
// If Broker is selected, org is empty
// Show error message
if (userRole === 'subscriber') {
if (brokerIdSelectBox[0].selectedIndex == 0) {
brokerIdFormField.addClass('form-required');
} else {
brokerIdFormField.removeClass('form-required');
brokerIdFormField.removeClass('form-invalid');
}
} else {
brokerIdFormField.removeClass('form-required');
brokerIdFormField.removeClass('form-invalid');
}
});
})(jQuery);
</script>
<?php
}
function setUserProfileLogicEditUser($hook)
{
?>
<script>
(function($) {
var addEditUserForm = $('#your-profile');
var roleSelectBox = $('#role');
var brokerCheckbox = $('.uam_group_selection input[type="checkbox"][id="uam_usergroups-1"]');
var brokerIdFormField = $('.form-broker_id .form-field');
var brokerGroup = $('.broker-group');
var brokerSelectBox = $('#broker_id');
roleSelectBox.on(
'change',
function(e) {
var targetValue = e.target.value;
// If broker is selected
// Check "Broker" user group
if (targetValue === 'subscriber') {
brokerCheckbox[0].checked = true;
brokerGroup.slideDown(100);
} else {
brokerCheckbox[0].checked = false;
brokerGroup.slideUp(100);
brokerSelectBox[0].selectedIndex = 0;
brokerIdFormField.removeClass('form-required');
brokerIdFormField.removeClass('form-invalid');
}
}
).trigger('change');
// Organization
brokerSelectBox.on('change', function() {
var userRole = roleSelectBox.val();
// If Broker is selected, org is empty
// Show error message
if (userRole === 'subscriber') {
if (brokerSelectBox[0].selectedIndex !== 0) {
brokerIdFormField.removeClass('form-required');
brokerIdFormField.removeClass('form-invalid');
}
}
});
addEditUserForm.on('submit', function(e) {
var userRole = roleSelectBox.val();
// If Broker is selected, org is empty
// Show error message
if (userRole === 'subscriber') {
if (brokerSelectBox[0].selectedIndex == 0) {
brokerIdFormField.addClass('form-required');
brokerIdFormField.addClass('form-invalid');
return false;
} else {
brokerIdFormField.removeClass('form-required');
brokerIdFormField.removeClass('form-invalid');
return true;
}
} else {
brokerIdFormField.removeClass('form-required');
brokerIdFormField.removeClass('form-invalid');
return true;
}
});
})(jQuery);
</script>
<?php
}
add_action('show_user_profile', 'my_show_extra_profile_fields');
add_action('edit_user_profile', 'my_show_extra_profile_fields');
function my_show_extra_profile_fields($user)
{
$user_id = $_GET['user_id'];
if (user_can($user_id, 'cwl_staff')) {
include_once $_SERVER['DOCUMENT_ROOT'] . '/wordpress/wp-config.php';
global $wpdb;
$query = get_option('broker_list') ? unserialize(get_option('broker_list')) : [];
foreach ($query as $key => $row) {
$brokers[$row['id']]['id'] = $row['id'];
$brokers[$row['id']]['broker_id'] = $row['broker_id'];
$brokers[$row['id']]['name'] = $row['brokerage'];
}
$brokersSelected = 'select broker_id from wp_broker_staff where staff_id =' . $user_id;
foreach ($wpdb->get_results($brokersSelected) as $row) {
$brokersPicked[] = $row->broker_id;
unset($brokers[$row->broker_id]);
}
;
$brokersLeft = $brokers;
?>
<table class="form-table">
<form>
<fieldset>
<tr>
<th><label>Brokers Served</label></th>
</tr>
<tr>
<td width="30%" align="center">
  YOUR LIST
<select style="width:100%;" name="brokerselected[]" id="select-to" multiple="multiple" size="5">
<?php
foreach ($query as $key => $row) {
//error_log(print_r($brokerPicked,true));
if (in_array($row['broker_id'], $brokersPicked)) {
?>
<option selected="selected" value="<?php echo $row['broker_id']; ?>"><?php echo $row['brokerage']; ?></option>
<?php }
}?>
</select>
</td>
<td width="20%">
<a href="JavaScript:void(0);" style="float:left;" id="btn-remove">Remove &raquo;</a>
<a href="JavaScript:void(0);" style="float:right;" id="btn-add">&laquo; Add </a>
</td>
<td width="30%" align="center">
BROKERS
<select style="width:100%;" name="selectfrom" id="select-from" multiple size="5">
<?php foreach ($brokersLeft as $brokerLeft) {?>
<option value="<?php echo $brokerLeft['broker_id']; ?>"><?php echo $brokerLeft['name']; ?></option>
<?php }?>
</select>
<td>
</tr>
</fieldset>
</form>
</td>
</tr>
</table>
<script>
jQuery(document).ready(
function($) {
$('#btn-add').click(
function() {
$('#select-from option:selected').each(
function() {
$('#select-to').append("<option selected='selected' value='" + $(this).val() + "'>" + $(this).text() + "</option>");
$(this).remove();
}
);
}
);
$('#btn-remove').click(
function() {
$('#select-to option:selected').each(
function() {
$('#select-from').append("<option value='" + $(this).val() + "'>" + $(this).text() + "</option>");
$(this).remove();
}
);
}
);
$(document).on(
'submit', '#your-profile',
function() {
$('#select-to option').each(
function() {
$(this).attr("selected", 1);
}
);
}
);
}
);
</script>
<?php }
}
add_action('personal_options_update', 'my_save_extra_profile_fields');
add_action('edit_user_profile_update', 'my_save_extra_profile_fields');
function my_save_extra_profile_fields()
{
global $wpdb;
global $user_id;
$wpdb->delete(
'wp_broker_staff',
array('staff_id' => $user_id)
);
foreach ($_POST['brokerselected'] as $brokerselected) {
//error_log($brokerselected);
$wpdb->insert(
'wp_broker_staff',
array(
'staff_id' => $user_id,
'broker_id' => $brokerselected,
)
);
}
}
......@@ -10,7 +10,7 @@
<div id="container">
<?php if (is_user_logged_in()):
?>
<script>window.location.replace("<?php echo site_url('/broker-landing-page'); ?>");</script>
<script>window.location.replace("<?php echo site_url(); ?>");</script>
<?php global $current_user;
get_currentuserinfo();
?>
......@@ -50,7 +50,7 @@ if ($children) {?>
<p><a href="<?php echo wp_logout_url(home_url()); ?>" title="Logout">>> Member Logout</a></p>
<?php else: ?>
<h2>Broker Login</h2>
<?php $args = array('redirect' => site_url('/broker-landing-page'));
<?php $args = array('redirect' => site_url());
if (isset($_GET['action'])): ?>
<div class="success">
......