I write this post only in case someone will want to sell subscriptions for 1-2-3 years and showing to customers in days might not look so nice.
I didn't liked the way the user have the options to buy membership, I mean the price table.
There is mentioned membership period in days, which might be fine for websites who want to sell membership/subscription for 30/60/90/120/etc days.
But in my case I want to have 6 months / 1 year / 2 years / 3 years. If I leave the original code will look like 183 days / 366 days / 732 days / 1098 days which is ugly (the user I bet will prefere 3 years instead of 1098 days
So I altered group.php and user.js to look like images bellow. If someone want the same, can try:
1. in group.php
ORIGINAL line:
<div class="osp-cost">/ <?php _e('user', 'osclass_pay'); ?> / <span><?php echo $g['i_days'] . '</span> ' . __('days', 'osclass_pay'); ?></div>
MODIFIED:
<div class="osp-cost"><span><?php
if ($g['i_days'] < 365) {
echo round($g['i_days'] / 30) . '</span> <i>' . substr(__('%d months', 'osclass_pay'), 2) . '</i>';
}
else {
echo round($g['i_days'] / 365) . '</span> <i>' . substr(__('%d years', 'osclass_pay'), 2) . '</i>';
}
?></div>
Note: due the fact that in .po file for language translation there is not "months" and "years" individually, I taken from there the "%d months" and "%d years" as already being translated and stripped with php function substr() the first 2 characters, I mean the %d. Other way is to add manually these 2 words in original en_US module .po file and translate it.
2. In user.js
The line which replace the days numbers when user click on drop-down list, were:
//$('.osp-group[data-group="' + group + '"]').find('.osp-cost > span').text(days);
(as can be seen, I commented it out)
Instead, I replaced with:
var monthsNumber = Math.round(days / 30);
var yearsNumber = Math.round(days / 365);
var monthsText = 'luni';
var yearsText = 'ani';
if (days < 365) {
$('.osp-group[data-group="' + group + '"]').find('.osp-cost > span').text(monthsNumber);
//this one bellow will change the default text/name (days) to months
$('.osp-group[data-group="' + group + '"]').find('.osp-cost > i').text(monthsText);
}
else {
$('.osp-group[data-group="' + group + '"]').find('.osp-cost > span').text(yearsNumber);
//this one bellow will change the default text/name (days) to YEARS
$('.osp-group[data-group="' + group + '"]').find('.osp-cost > i').text(yearsText);
}
The only problem is that name / text of months and years I defined myself (luni, ani) into 2 variables, monthsText and yearsText because I couldn't find from where to instruct javascript to read them. But if your webiste is only 1 language then might be fine.
Of course, any update of plugin will overwrite your changes so will need to do them again