/**
 * add row to users list
 *
 * @param mixed $column_data
 * @param string $column
 * @param int $user_id
 * @return void
 */
function mgm_manage_users_custom_column($column_data, $column, $user_id)
{
    // column
    switch ($column) {
        case 'subscription':
            // nothing for admin
            if (is_super_admin($user_id)) {
                return __('n/a', 'mgm');
            }
            // date format
            $date_format = mgm_get_date_format('date_format');
            // user object
            $user = get_userdata($user_id);
            // member
            $member = mgm_get_member($user_id);
            // packs
            $packs = mgm_get_class('subscription_packs');
            // pack
            if (isset($member->pack_id)) {
                $membership = $packs->get_pack_desc($packs->get_pack($member->pack_id));
            } else {
                $membership = __('Guest', 'mgm');
            }
            // set
            $subscription = sprintf('<div>%s</div>', $membership);
            $subscription .= sprintf('<div><span class="overline">%s:</span> %s</div>', __('REGISTER', 'mgm'), date($date_format, strtotime($user->user_registered)));
            $subscription .= sprintf('<div><span class="mgm_color_gray">%s:</span> %s</div>', __('EXPIRY', 'mgm'), empty($member->expire_date) ? __('N/A', 'mgm') : date($date_format, strtotime($member->expire_date)));
            $subscription .= sprintf('<div><span class="mgm_color_gray">%s:</span> %s</div>', __('PACK JOIN', 'mgm'), empty($member->join_date) ? __('N/A', 'mgm') : date($date_format, $member->join_date));
            $subscription .= sprintf('<div><span class="mgm_color_gray">%s:</span> <span class="%s"><b>%s</b></span> %s</div>', __('STATUS', 'mgm'), mgm_get_status_css_class($member->status), esc_html($member->status), !empty($member->status_str) ? '<br />' . esc_html($member->status_str) : '');
            $subscription .= sprintf('<div><span class="mgm_color_gray">%s:</span> %s</div>', __('LAST PAY', 'mgm'), empty($member->last_pay_date) ? __('N/A', 'mgm') : date($date_format, strtotime($member->last_pay_date)));
            // return
            return $subscription;
            break;
    }
    // return
    return $column_data;
}
         // desc
         $pack_desc_oth = $s_packs->get_pack_desc($pack_oth);
     }
     // hide old content
     if ($member_oth->hide_old_content && $member_oth->join_date) {
         $pack_desc_oth .= sprintf('<div><span class="mgm_color_gray">%s:</span> %s</div>', __('Limited PRE', 'mgm'), date($date_format, $member_oth->join_date));
     }
 }
 // pack join
 $pack_desc_oth .= sprintf('<div class="overline"><b>%s:</b> %s</div>', __('PACK JOIN', 'mgm'), empty($member_oth->join_date) ? __('N/A', 'mgm') : date($date_format_time, $member_oth->join_date));
 // register
 $register_date_oth = sprintf('<div><b>%s:</b> %s</div>', __('REGISTER', 'mgm'), date($date_format, strtotime($user->user_registered)));
 // expire
 $expire_date_oth = sprintf('<div><b>%s:</b> %s</div>', __('EXPIRY', 'mgm'), empty($member_oth->expire_date) ? __('N/A', 'mgm') : date($date_format_time, strtotime($member_oth->expire_date)));
 // build status value
 $subs_status_oth = sprintf('<span class="%s"><b>%s</b></span>', mgm_get_status_css_class($member_oth->status), esc_html($member_oth->status));
 // status_str
 if (!empty($member_oth->status_str)) {
     $subs_status_oth .= '<br />' . esc_html($member_oth->status_str);
 }
 // last pay
 $subs_status_oth .= sprintf('<div class="overline"><span class="mgm_color_gray">%s:</span> %s</div>', __('LAST PAY', 'mgm'), empty($member_oth->last_pay_date) ? __('N/A', 'mgm') : date($date_format, strtotime($member_oth->last_pay_date)));
 // last transaction
 if (isset($member_oth->transaction_id) && (int) $member_oth->transaction_id > 0) {
     $subs_status_oth .= sprintf('<div class="overline"><span class="mgm_color_gray">%s#</span> %d</div>', __('TRANSACTION', 'mgm'), (int) $member_oth->transaction_id);
 }
 // module transaction info
 if (isset($member_oth->payment_info->module) && ($module_object = mgm_is_valid_module($member_oth->payment_info->module, 'payment', 'object'))) {
     $subs_status_oth .= $module_object->get_transaction_info($member_oth, $date_format);
 }
 ?>
/**
 * generate dashboard widget data
 * 
 * @param void
 * @return array
 * @since 2.7
 */
function mgm_set_dashboard_widget_data()
{
    // obj
    $mtypes_obj = mgm_get_class('membership_types');
    // get membership counts
    $membership_count = mgm_get_membershiptype_users_count();
    // init
    $memberships_c = array();
    // loop through and update $arr_membership with count
    foreach ($mtypes_obj->membership_types as $type_code => $type_name) {
        // store
        $memberships_c[] = array('count' => $membership_count[$type_code], 'name' => mgm_stripslashes_deep($type_name), 'code' => $type_code);
    }
    // Membership count ends
    // Status count starts
    // get status counts
    $statuses = mgm_get_subscription_statuses(true);
    $status_count = mgm_get_subscription_status_users_count($statuses);
    $statuses_c = array();
    // loop
    foreach ($statuses as $status) {
        // store
        $statuses_c[] = array('count' => isset($status_count[$status]) ? $status_count[$status] : 0, 'name' => $status, 'css_class' => mgm_get_status_css_class($status));
    }
    // Current time
    $time = mgm_get_current_datetime('Y-m-d H:i:s');
    // Form data
    return $widget_data = array('membership_count' => $memberships_c, 'status_count' => $statuses_c, 'updated_time' => $time['date']);
}