Просмотр исходного кода

Ticket #3760 - Credits: Lifetime subscription issues.

AntonLV 4 лет назад
Родитель
Сommit
ed07608975
24 измененных файлов с 52 добавлено и 11 удалено
  1. 7 1
      modules/base/groups/classes/BxBaseModGroupsModule.php
  2. 1 0
      modules/boonex/courses/classes/BxCoursesConfig.php
  3. 1 0
      modules/boonex/courses/install/langs/en.xml
  4. 7 3
      modules/boonex/credits/classes/BxCreditsTemplate.php
  5. 2 1
      modules/boonex/credits/install/langs/en.xml
  6. 1 0
      modules/boonex/english/data/langs/system/en.xml
  7. 1 0
      modules/boonex/events/classes/BxEventsConfig.php
  8. 1 0
      modules/boonex/events/install/langs/en.xml
  9. 1 0
      modules/boonex/groups/classes/BxGroupsConfig.php
  10. 1 0
      modules/boonex/groups/install/langs/en.xml
  11. 1 0
      modules/boonex/organizations/classes/BxOrgsConfig.php
  12. 1 0
      modules/boonex/organizations/install/langs/en.xml
  13. 1 1
      modules/boonex/payment/classes/BxPaymentDb.php
  14. 3 1
      modules/boonex/payment/classes/BxPaymentGridSbsAdministration.php
  15. 12 4
      modules/boonex/payment/classes/BxPaymentSubscriptions.php
  16. 1 0
      modules/boonex/russian/data/langs/bx_courses/ru.xml
  17. 1 0
      modules/boonex/russian/data/langs/bx_credits/ru.xml
  18. 3 0
      modules/boonex/russian/data/langs/bx_events/ru.xml
  19. 1 0
      modules/boonex/russian/data/langs/bx_groups/ru.xml
  20. 1 0
      modules/boonex/russian/data/langs/bx_organizations/ru.xml
  21. 1 0
      modules/boonex/russian/data/langs/bx_spaces/ru.xml
  22. 1 0
      modules/boonex/russian/data/langs/system/ru.xml
  23. 1 0
      modules/boonex/spaces/classes/BxSpacesConfig.php
  24. 1 0
      modules/boonex/spaces/install/langs/en.xml

+ 7 - 1
modules/base/groups/classes/BxBaseModGroupsModule.php

@@ -795,11 +795,17 @@ class BxBaseModGroupsModule extends BxBaseModProfileModule
         
         $aRoles = BxDolFormQuery::getDataItems($CNF['OBJECT_PRE_LIST_ROLES']);
 
+        $sTitle = '';
+        if(!empty($aItem['period']) && !empty($aItem['period_unit']))
+            $sTitle = _t($CNF['T']['txt_cart_item_title'], $oGroupProfile->getDisplayName(), $aRoles[$aItem['role_id']], $aItem['period'], $aItem['period_unit']);
+        else
+            $sTitle = _t($CNF['T']['txt_cart_item_title_lifetime'], $oGroupProfile->getDisplayName(), $aRoles[$aItem['role_id']]);
+
         return array (
             'id' => $aItem['id'],
             'author_id' => $aGroupProfile[$CNF['FIELD_AUTHOR']],
             'name' => $aItem['name'],
-            'title' => _t($CNF['T']['txt_cart_item_title'], $oGroupProfile->getDisplayName(), $aRoles[$aItem['role_id']], $aItem['period'], $aItem['period_unit']),
+            'title' => $sTitle,
             'description' => '',
             'url' => $oGroupProfile->getUrl(),
             'price_single' => $aItem['price'],

+ 1 - 0
modules/boonex/courses/classes/BxCoursesConfig.php

@@ -242,6 +242,7 @@ class BxCoursesConfig extends BxBaseModGroupsConfig
                 'txt_n_unit' => '_bx_courses_txt_n_unit',
                 'txt_buy_title' => '_bx_courses_grid_action_title_buy_title',
                 'txt_cart_item_title' => '_bx_courses_txt_cart_item_title',
+                'txt_cart_item_title_lifetime' => '_bx_courses_txt_cart_item_title_lifetime',
                 'txt_subscribe_title' => '_bx_courses_grid_action_title_subscribe_title',
                 'msg_performed' => '_bx_courses_msg_performed',
                 'popup_title_price_add' => '_bx_courses_popup_title_price_add',

+ 1 - 0
modules/boonex/courses/install/langs/en.xml

@@ -372,6 +372,7 @@
     <string name="_bx_courses_txt_invite_popup_error_invitation_wrong_user"><![CDATA[Sorry, an error has occurred. You can not join this course. This invitation cannot be used by you.]]></string>
     <string name="_bx_courses_txt_n_unit"><![CDATA[{0} ({1})]]></string>
     <string name="_bx_courses_txt_cart_item_title"><![CDATA[{0}: {1} ({2} {3})]]></string>
+    <string name="_bx_courses_txt_cart_item_title_lifetime"><![CDATA[{0}: {1} (lifetime)]]></string>    
 
     <string name="_bx_courses_msg_performed"><![CDATA[The action was successfully performed.]]></string>
     <string name="_bx_courses_err_price_duplicate"><![CDATA[Similar pricing plan is already exists.]]></string>

+ 7 - 3
modules/boonex/credits/classes/BxCreditsTemplate.php

@@ -150,9 +150,13 @@ class BxCreditsTemplate extends BxBaseModGeneralTemplate
         if(!empty($aData['currency']['sign']))
             $sCurrencySign = $aData['currency']['sign'];
 
-        $sPeriod = _t('_bx_credits_txt_subscribe_period_unit_' . $aData['period_unit']);
-        if((int)$aData['period'] > 1);
-            $sPeriod = _t('_bx_credits_txt_subscribe_period_mask', $aData['period'], $sPeriod);
+        if(!empty($aData['period']) && !empty($aData['period_unit'])) {
+            $sPeriod = _t('_bx_credits_txt_subscribe_period_unit_' . $aData['period_unit']);
+            if((int)$aData['period'] > 1);
+                $sPeriod = _t('_bx_credits_txt_subscribe_period_mask', $aData['period'], $sPeriod);
+        }
+        else
+            $sPeriod = _t('_bx_credits_txt_subscribe_lifetime');
 
         $sInclude = '';
         $sInclude .= $this->addJs(array('subscribe.js'), $bDynamic);

+ 2 - 1
modules/boonex/credits/install/langs/en.xml

@@ -251,7 +251,8 @@
 
     <!-- Subscribe process -->
     <string name="_bx_credits_txt_subscribe"><![CDATA[Subscribe]]></string>
-    <string name="_bx_credits_txt_subscribe_for"><![CDATA[Subscribe for:]]></string>    
+    <string name="_bx_credits_txt_subscribe_for"><![CDATA[Subscribe for:]]></string>
+    <string name="_bx_credits_txt_subscribe_lifetime"><![CDATA[lifetime]]></string>    
     <string name="_bx_credits_txt_subscribe_period_mask"><![CDATA[{0} {1}]]></string>
     <string name="_bx_credits_txt_subscribe_period_unit_year"><![CDATA[yr.]]></string>
     <string name="_bx_credits_txt_subscribe_period_unit_month"><![CDATA[mo.]]></string>

+ 1 - 0
modules/boonex/english/data/langs/system/en.xml

@@ -76,6 +76,7 @@
 	<string name="_N_points"><![CDATA[<span>{0}</span> pluses]]></string>
 	<string name="_Name"><![CDATA[Name]]></string>
 	<string name="_Name is required"><![CDATA[Name is required]]></string>
+        <string name="_never"><![CDATA[never]]></string>
 	<string name="_No"><![CDATA[No]]></string>
 	<string name="_None"><![CDATA[None]]></string>
 	<string name="_No actions allowed for this membership"><![CDATA[No actions allowed for this membership]]></string>

+ 1 - 0
modules/boonex/events/classes/BxEventsConfig.php

@@ -261,6 +261,7 @@ class BxEventsConfig extends BxBaseModGroupsConfig
                 'txt_n_unit' => '_bx_events_txt_n_unit',
                 'txt_buy_title' => '_bx_events_grid_action_title_buy_title',
                 'txt_cart_item_title' => '_bx_events_txt_cart_item_title',
+                'txt_cart_item_title_lifetime' => '_bx_events_txt_cart_item_title_lifetime',
                 'txt_subscribe_title' => '_bx_events_grid_action_title_subscribe_title',
                 'popup_title_price_add' => '_bx_events_popup_title_price_add',
                 'popup_title_price_edit' => '_bx_events_popup_title_price_edit',

+ 1 - 0
modules/boonex/events/install/langs/en.xml

@@ -431,6 +431,7 @@
     <string name="_bx_events_txt_invite_popup_error_invitation_wrong_user"><![CDATA[Sorry, an error has occurred. You can not join this event. This invitation cannot be used by you.]]></string>
     <string name="_bx_events_txt_n_unit"><![CDATA[{0} ({1})]]></string>
     <string name="_bx_events_txt_cart_item_title"><![CDATA[{0}: {1} ({2} {3})]]></string>
+    <string name="_bx_events_txt_cart_item_title_lifetime"><![CDATA[{0}: {1} (lifetime)]]></string>    
 
     <string name="_bx_events_msg_performed"><![CDATA[The action was successfully performed.]]></string>
     <string name="_bx_events_err_price_duplicate"><![CDATA[Similar pricing plan is already exists.]]></string>

+ 1 - 0
modules/boonex/groups/classes/BxGroupsConfig.php

@@ -246,6 +246,7 @@ class BxGroupsConfig extends BxBaseModGroupsConfig
                 'txt_n_unit' => '_bx_groups_txt_n_unit',
                 'txt_buy_title' => '_bx_groups_grid_action_title_buy_title',
                 'txt_cart_item_title' => '_bx_groups_txt_cart_item_title',
+                'txt_cart_item_title_lifetime' => '_bx_groups_txt_cart_item_title_lifetime',
                 'txt_subscribe_title' => '_bx_groups_grid_action_title_subscribe_title',
                 'popup_title_price_add' => '_bx_groups_popup_title_price_add',
                 'popup_title_price_edit' => '_bx_groups_popup_title_price_edit',

+ 1 - 0
modules/boonex/groups/install/langs/en.xml

@@ -376,6 +376,7 @@
     <string name="_bx_groups_txt_invite_popup_error_invitation_wrong_user"><![CDATA[Sorry, an error has occurred. You can not join this group. This invitation cannot be used by you.]]></string>
     <string name="_bx_groups_txt_n_unit"><![CDATA[{0} ({1})]]></string>
     <string name="_bx_groups_txt_cart_item_title"><![CDATA[{0}: {1} ({2} {3})]]></string>
+    <string name="_bx_groups_txt_cart_item_title_lifetime"><![CDATA[{0}: {1} (lifetime)]]></string>    
 
     <string name="_bx_groups_msg_performed"><![CDATA[The action was successfully performed.]]></string>
     <string name="_bx_groups_err_price_duplicate"><![CDATA[Similar pricing plan is already exists.]]></string>

+ 1 - 0
modules/boonex/organizations/classes/BxOrgsConfig.php

@@ -276,6 +276,7 @@ class BxOrgsConfig extends BxBaseModGroupsConfig
                 'txt_n_unit' => '_bx_orgs_txt_n_unit',
                 'txt_buy_title' => '_bx_orgs_grid_action_title_buy_title',
                 'txt_cart_item_title' => '_bx_orgs_txt_cart_item_title',
+                'txt_cart_item_title_lifetime' => '_bx_orgs_txt_cart_item_title_lifetime',
                 'txt_subscribe_title' => '_bx_orgs_grid_action_title_subscribe_title',
                 'popup_title_price_add' => '_bx_orgs_popup_title_price_add',
                 'popup_title_price_edit' => '_bx_orgs_popup_title_price_edit',

+ 1 - 0
modules/boonex/organizations/install/langs/en.xml

@@ -508,6 +508,7 @@
     <string name="_bx_orgs_ps_group_title_participants"><![CDATA[Employees]]></string>
     <string name="_bx_orgs_txt_n_unit"><![CDATA[{0} ({1})]]></string>
     <string name="_bx_orgs_txt_cart_item_title"><![CDATA[{0}: {1} ({2} {3})]]></string>
+    <string name="_bx_orgs_txt_cart_item_title_lifetime"><![CDATA[{0}: {1} (lifetime)]]></string>    
 
     <string name="_bx_orgs_msg_performed"><![CDATA[The action was successfully performed.]]></string>
     <string name="_bx_orgs_err_price_duplicate"><![CDATA[Similar pricing plan is already exists.]]></string>

+ 1 - 1
modules/boonex/payment/classes/BxPaymentDb.php

@@ -516,7 +516,7 @@ class BxPaymentDb extends BxBaseModPaymentDb
 
                 $sSelectClause .= ", `ttp`.`client_id`, `ttp`.`seller_id`, `ttp`.`type`, `ttp`.`provider`, `ttp`.`amount`, `ttp`.`order`";
                 $sJoinClause = "LEFT JOIN `" . $this->_sPrefix . "transactions_pending` AS `ttp` ON `ts`.`pending_id`=`ttp`.`id` INNER JOIN `" . $this->_sPrefix . "providers` AS `tp` ON `ttp`.`provider`=`tp`.`name` AND `tp`.`time_tracker`='1'";
-                $sWhereClause = " AND `ts`.`date_next`<=UNIX_TIMESTAMP() AND (`ts`.`status`=:status_active OR `ts`.`status`=:status_trial OR (`ts`.`status`=:status_unpaid AND `ts`.`pay_attempts`<:pay_attempts_max AND DATE_ADD(FROM_UNIXTIME(`ts`.`date_next`), INTERVAL `ts`.`pay_attempts`*:pay_attempts_interval SECOND)<=NOW()))";
+                $sWhereClause = " AND `ts`.`date_next`<>0 AND `ts`.`date_next`<=UNIX_TIMESTAMP() AND (`ts`.`status`=:status_active OR `ts`.`status`=:status_trial OR (`ts`.`status`=:status_unpaid AND `ts`.`pay_attempts`<:pay_attempts_max AND DATE_ADD(FROM_UNIXTIME(`ts`.`date_next`), INTERVAL `ts`.`pay_attempts`*:pay_attempts_interval SECOND)<=NOW()))";
                 break;
         }
 

+ 3 - 1
modules/boonex/payment/classes/BxPaymentGridSbsAdministration.php

@@ -77,7 +77,9 @@ class BxPaymentGridSbsAdministration extends BxBaseModPaymentGridOrders
     
     protected function _getCellDateNext($mixedValue, $sKey, $aField, $aRow)
     {
-        if(empty($mixedValue) || (is_numeric($mixedValue) && (int)$mixedValue < $this->_iNow))
+        if(empty($mixedValue))
+            return parent::_getCellDefault(_t('_never'), $sKey, $aField, $aRow);
+        else if(is_numeric($mixedValue) && (int)$mixedValue < $this->_iNow)
             return parent::_getCellDefault(_t('_uknown'), $sKey, $aField, $aRow);
 
         return $this->_getCellDefaultDateTime($mixedValue, $sKey, $aField, $aRow);

+ 12 - 4
modules/boonex/payment/classes/BxPaymentSubscriptions.php

@@ -383,14 +383,22 @@ class BxPaymentSubscriptions extends BxBaseModPaymentSubscriptions
             return false;
 
         $aItem = array_shift($aInfo['items']);
+        $iItemPeriod = (int)$aItem['period_recurring'];
+        $sItemPeriodUnit = $aItem['period_unit_recurring'];
 
-        $sInterval = $this->_getInterval((int)$aItem['period_recurring'], $aItem['period_unit_recurring']);
+        $iDateNext = 0;
+        if(!empty($iItemPeriod) && !empty($sItemPeriodUnit)) {
+            $sInterval = $this->_getInterval($iItemPeriod, $sItemPeriodUnit);
+            if(empty($sInterval))
+                return false;
 
-        $oDate = date_create('@' . $aSubscription['date_next']);
-        date_add($oDate, new DateInterval($sInterval));
+            $oDate = date_create('@' . $aSubscription['date_next']);
+            date_add($oDate, new DateInterval($sInterval));
+            $iDateNext = date_format($oDate, 'U');
+        }
 
         $this->_oModule->_oDb->updateSubscription(array_merge(array(
-            'date_next' => date_format($oDate, 'U'),
+            'date_next' => $iDateNext,
             'pay_attempts' => 0,
             'status' => BX_PAYMENT_SBS_STATUS_ACTIVE
         ), $aParams), array(

+ 1 - 0
modules/boonex/russian/data/langs/bx_courses/ru.xml

@@ -371,6 +371,7 @@
     <string name="_bx_courses_txt_invite_popup_error_invitation_wrong_user"><![CDATA[Извините, произошла ошибка. Вы не можете принять участие в курсе. Приглашение адресовано не Вам.]]></string>
     <string name="_bx_courses_txt_n_unit"><![CDATA[{0} ({1})]]></string>
     <string name="_bx_courses_txt_cart_item_title"><![CDATA[{0}: {1} ({2} {3})]]></string>
+    <string name="_bx_courses_txt_cart_item_title_lifetime"><![CDATA[{0}: {1} (пожизненно)]]></string>
 
     <string name="_bx_courses_msg_performed"><![CDATA[Действие было успешно выполнено.]]></string>
     <string name="_bx_courses_err_price_duplicate"><![CDATA[Аналогичный ценовой план уже существует.]]></string>

+ 1 - 0
modules/boonex/russian/data/langs/bx_credits/ru.xml

@@ -251,6 +251,7 @@
     <!-- Subscribe process -->
     <string name="_bx_credits_txt_subscribe"><![CDATA[Подписаться]]></string>
     <string name="_bx_credits_txt_subscribe_for"><![CDATA[Подписаться на:]]></string>
+    <string name="_bx_credits_txt_subscribe_lifetime"><![CDATA[пожизненно]]></string>  
     <string name="_bx_credits_txt_subscribe_period_mask"><![CDATA[{0} {1}]]></string>
     <string name="_bx_credits_txt_subscribe_period_unit_year"><![CDATA[гд.]]></string>
     <string name="_bx_credits_txt_subscribe_period_unit_month"><![CDATA[мес.]]></string>

+ 3 - 0
modules/boonex/russian/data/langs/bx_events/ru.xml

@@ -375,6 +375,9 @@
     <string name="_bx_events_txt_invite_popup_button_decline"><![CDATA[Отклонить]]></string>
     <string name="_bx_events_txt_invite_popup_error_invitation_absent"><![CDATA[Извините, произошла ошибка. Вы не можете присоединиться к этому событию. Приглашение устарело или удалено.]]></string>
     <string name="_bx_events_txt_invite_popup_error_invitation_wrong_user"><![CDATA[Извините, произошла ошибка. Вы не можете присоединиться к этому событию. Приглашение адресовано не Вам.]]></string>
+    <string name="_bx_events_txt_n_unit"><![CDATA[{0} ({1})]]></string>
+    <string name="_bx_events_txt_cart_item_title"><![CDATA[{0}: {1} ({2} {3})]]></string>
+    <string name="_bx_events_txt_cart_item_title_lifetime"><![CDATA[{0}: {1} (пожизненно)]]></string>
 
     <string name="_bx_events_alert_action_fan_added"><![CDATA[присоединение нового участника]]></string>
     <string name="_bx_events_txt_ntfs_fan_added"><![CDATA[У события <b class="bx-ntfs-content-profile">{owner_name}</b> новый участник <b class="bx-ntfs-content-entry">{subentry_sample}</b>]]></string>

+ 1 - 0
modules/boonex/russian/data/langs/bx_groups/ru.xml

@@ -373,6 +373,7 @@
     <string name="_bx_groups_txt_invite_popup_error_invitation_wrong_user"><![CDATA[Извините, произошла ошибка. Вы не можете вступить в эту группу. Приглашение адресовано не Вам.]]></string>
     <string name="_bx_groups_txt_n_unit"><![CDATA[{0} ({1})]]></string>
     <string name="_bx_groups_txt_cart_item_title"><![CDATA[{0}: {1} ({2} {3})]]></string>
+    <string name="_bx_groups_txt_cart_item_title_lifetime"><![CDATA[{0}: {1} (пожизненно)]]></string>
 
     <string name="_bx_groups_msg_performed"><![CDATA[Действие было успешно выполнено.]]></string>
     <string name="_bx_groups_err_price_duplicate"><![CDATA[Аналогичный ценовой план уже существует.]]></string>

+ 1 - 0
modules/boonex/russian/data/langs/bx_organizations/ru.xml

@@ -503,6 +503,7 @@
     <string name="_bx_orgs_ps_group_title_participants"><![CDATA[Сотрудники]]></string>
     <string name="_bx_orgs_txt_n_unit"><![CDATA[{0} ({1})]]></string>
     <string name="_bx_orgs_txt_cart_item_title"><![CDATA[{0}: {1} ({2} {3})]]></string>
+    <string name="_bx_orgs_txt_cart_item_title_lifetime"><![CDATA[{0}: {1} (пожизненно)]]></string>
 
     <string name="_bx_orgs_msg_performed"><![CDATA[Действие было успешно выполнено.]]></string>
     <string name="_bx_orgs_err_price_duplicate"><![CDATA[Аналогичный ценовой план уже существует.]]></string>

+ 1 - 0
modules/boonex/russian/data/langs/bx_spaces/ru.xml

@@ -361,6 +361,7 @@
     <string name="_bx_spaces_txt_invite_popup_error_invitation_wrong_user"><![CDATA[Извините, произошла ошибка. Вы не можете вступить в это пространство. Приглашение адресовано не Вам.]]></string>
     <string name="_bx_spaces_txt_n_unit"><![CDATA[{0} ({1})]]></string>
     <string name="_bx_spaces_txt_cart_item_title"><![CDATA[{0}: {1} ({2} {3})]]></string>
+    <string name="_bx_spaces_txt_cart_item_title_lifetime"><![CDATA[{0}: {1} (пожизненно)]]></string>
 
     <string name="_bx_spaces_msg_performed"><![CDATA[Действие было успешно выполнено.]]></string>
     <string name="_bx_spaces_err_price_duplicate"><![CDATA[Аналогичный ценовой план уже существует.]]></string>

+ 1 - 0
modules/boonex/russian/data/langs/system/ru.xml

@@ -76,6 +76,7 @@
 	<string name="_N_points"><![CDATA[<span>{0}</span> плюсов]]></string>
 	<string name="_Name"><![CDATA[Имя]]></string>
 	<string name="_Name is required"><![CDATA[Необходимо указать имя]]></string>
+        <string name="_never"><![CDATA[никогда]]></string>
 	<string name="_No"><![CDATA[Нет]]></string>
 	<string name="_None"><![CDATA[Никакой]]></string>
 	<string name="_No actions allowed for this membership"><![CDATA[Нет разрешённых действий для данного членства]]></string>

+ 1 - 0
modules/boonex/spaces/classes/BxSpacesConfig.php

@@ -242,6 +242,7 @@ class BxSpacesConfig extends BxBaseModGroupsConfig
                 'txt_n_unit' => '_bx_spaces_txt_n_unit',
                 'txt_buy_title' => '_bx_spaces_grid_action_title_buy_title',
                 'txt_cart_item_title' => '_bx_spaces_txt_cart_item_title',
+                'txt_cart_item_title_lifetime' => '_bx_spaces_txt_cart_item_title_lifetime',
                 'txt_subscribe_title' => '_bx_spaces_grid_action_title_subscribe_title',
                 'popup_title_price_add' => '_bx_spaces_popup_title_price_add',
                 'popup_title_price_edit' => '_bx_spaces_popup_title_price_edit',

+ 1 - 0
modules/boonex/spaces/install/langs/en.xml

@@ -365,6 +365,7 @@
     <string name="_bx_spaces_txt_invite_popup_error_invitation_wrong_user"><![CDATA[Sorry, an error has occurred. You can not join this space. This invitation cannot be used by you.]]></string>
     <string name="_bx_spaces_txt_n_unit"><![CDATA[{0} ({1})]]></string>
     <string name="_bx_spaces_txt_cart_item_title"><![CDATA[{0}: {1} ({2} {3})]]></string>
+    <string name="_bx_spaces_txt_cart_item_title_lifetime"><![CDATA[{0}: {1} (lifetime)]]></string>    
 
     <string name="_bx_spaces_msg_performed"><![CDATA[The action was successfully performed.]]></string>
     <string name="_bx_spaces_err_price_duplicate"><![CDATA[Similar pricing plan is already exists.]]></string>