Kaynağa Gözat

Ticket #2997 - Core changes and usage in Market.

AntonLV 6 yıl önce
ebeveyn
işleme
05c57fdce7

+ 12 - 4
inc/classes/BxDolPayments.php

@@ -45,18 +45,26 @@ class BxDolPayments extends BxDolFactory implements iBxDolSingleton
     public function isActive()
     public function isActive()
     {
     {
     	if(empty($this->_sActive))
     	if(empty($this->_sActive))
-    		return false;
+            return false;
 
 
     	if(!BxDolModuleQuery::getInstance()->isModuleByName($this->_sActive))
     	if(!BxDolModuleQuery::getInstance()->isModuleByName($this->_sActive))
-    		return false;
+            return false;
 
 
     	return true;
     	return true;
     }
     }
 
 
-	public function getDetailsUrl()
+    public function isCreditsOnly()
+    {
+    	if(empty($this->_sActive) || !BxDolRequest::serviceExists($this->_sActive, 'is_credits_only'))
+            return false;
+
+        return bx_srv($this->_sActive, 'is_credits_only');
+    }
+
+    public function getDetailsUrl()
     {
     {
     	if(!BxDolRequest::serviceExists($this->_sActive, 'get_details_url', 'Details'))
     	if(!BxDolRequest::serviceExists($this->_sActive, 'get_details_url', 'Details'))
-    		return '';
+            return '';
 
 
     	return BxDolService::call($this->_sActive, 'get_details_url', array(), 'Details');
     	return BxDolService::call($this->_sActive, 'get_details_url', array(), 'Details');
     }
     }

+ 54 - 47
modules/boonex/market/classes/BxMarketMenuView.php

@@ -20,7 +20,7 @@ class BxMarketMenuView extends BxBaseModTextMenuView
         parent::__construct($aObject, $oTemplate);
         parent::__construct($aObject, $oTemplate);
 
 
         $this->addMarkers(array(
         $this->addMarkers(array(
-        	'js_object' => $this->_oModule->_oConfig->getJsObject('entry')
+            'js_object' => $this->_oModule->_oConfig->getJsObject('entry')
         ));
         ));
     }
     }
 
 
@@ -33,67 +33,74 @@ class BxMarketMenuView extends BxBaseModTextMenuView
     {
     {
     	$CNF = &$this->_oModule->_oConfig->CNF;
     	$CNF = &$this->_oModule->_oConfig->CNF;
 
 
-		if(!parent::_isVisible($a))
-			return false;
+        if(!parent::_isVisible($a))
+            return false;
 
 
-		$oPayment = BxDolPayments::getInstance();
+        $oPayment = BxDolPayments::getInstance();
 
 
-		$bResult = false;
-		switch ($a['name']) {
-			case 'download':
-                            if((int)$this->_aContentInfo[$CNF['FIELD_PACKAGE']] == 0) 
-                                break;
+        $bResult = false;
+        switch ($a['name']) {
+            case 'download':
+                if((int)$this->_aContentInfo[$CNF['FIELD_PACKAGE']] == 0) 
+                    break;
 
 
-                            $bResult = true;
-                            break;
+                $bResult = true;
+                break;
 
 
-			case 'add-to-cart':
-                            if((float)$this->_aContentInfo[$CNF['FIELD_PRICE_SINGLE']] == 0) 
-                                break;
+            case 'add-to-cart':
+                if((float)$this->_aContentInfo[$CNF['FIELD_PRICE_SINGLE']] == 0) 
+                    break;
 
 
-                            if(!BxDolPrivacy::getObjectInstance($CNF['OBJECT_PRIVACY_PURCHASE'])->check((int)$this->_aContentInfo[$CNF['FIELD_ID']]))
-                                break;
+                if(!BxDolPrivacy::getObjectInstance($CNF['OBJECT_PRIVACY_PURCHASE'])->check((int)$this->_aContentInfo[$CNF['FIELD_ID']]))
+                    break;
 
 
-                            $aJs = $oPayment->getAddToCartJs($this->_aContentInfo['author'], $this->MODULE, $this->_aContentInfo['id'], 1, true);
-                            if(empty($aJs) || !is_array($aJs))
-                                break;
+                $aJs = $oPayment->getAddToCartJs($this->_aContentInfo['author'], $this->MODULE, $this->_aContentInfo['id'], 1, true);
+                if(empty($aJs) || !is_array($aJs))
+                    break;
 
 
-                            list($sJsCode, $sJsMethod) = $aJs;
-                            $aCurrency = $this->_oModule->_oConfig->getCurrency();
+                list($sJsCode, $sJsMethod) = $aJs;
+                $aCurrency = $this->_oModule->_oConfig->getCurrency();
 
 
-                            $bResult = true;
-                            $this->addMarkers(array(
-                                'add_to_cart_title' => _t('_bx_market_menu_item_title_add_to_cart', $aCurrency['sign'], $this->_aContentInfo[$CNF['FIELD_PRICE_SINGLE']]),
-                                'add_to_cart_onclick' => $sJsMethod
-                            ));
-                            break;
+                $bResult = true;
+                $this->addMarkers(array(
+                    'add_to_cart_title' => _t('_bx_market_menu_item_title_add_to_cart', $aCurrency['sign'], $this->_aContentInfo[$CNF['FIELD_PRICE_SINGLE']]),
+                    'add_to_cart_onclick' => $sJsMethod
+                ));
+                break;
 
 
-			case 'subscribe':
-                            if((float)$this->_aContentInfo[$CNF['FIELD_PRICE_RECURRING']] == 0) 
-                                break;
+            case 'subscribe':
+                if((float)$this->_aContentInfo[$CNF['FIELD_PRICE_RECURRING']] == 0) 
+                    break;
 
 
-                            if(!BxDolPrivacy::getObjectInstance($CNF['OBJECT_PRIVACY_PURCHASE'])->check((int)$this->_aContentInfo[$CNF['FIELD_ID']]))
-                                break;
+                if(!BxDolPrivacy::getObjectInstance($CNF['OBJECT_PRIVACY_PURCHASE'])->check((int)$this->_aContentInfo[$CNF['FIELD_ID']]))
+                    break;
 
 
-                            $aJs = $oPayment->getSubscribeJs($this->_aContentInfo['author'], '', $this->MODULE, $this->_aContentInfo['id'], 1);
-                            if(empty($aJs) || !is_array($aJs))
-                                break;
+                /**
+                 * Current version of Credits module 
+                 * doesn't support Subscription payments.
+                 */
+                if($oPayment->isCreditsOnly())
+                    break;
 
 
-                            list($sJsCode, $sJsMethod) = $aJs;
-                            $aCurrency = $this->_oModule->_oConfig->getCurrency();
+                $aJs = $oPayment->getSubscribeJs($this->_aContentInfo['author'], '', $this->MODULE, $this->_aContentInfo['id'], 1);
+                if(empty($aJs) || !is_array($aJs))
+                    break;
 
 
-                            $bResult = true;
-                            $this->addMarkers(array(
-                                'subscribe_title' => _t('_bx_market_menu_item_title_subscribe', $aCurrency['sign'], $this->_aContentInfo[$CNF['FIELD_PRICE_RECURRING']], _t('_bx_market_txt_per_' . $this->_aContentInfo[$CNF['FIELD_DURATION_RECURRING']])),
-                                'subscribe_onclick' => $sJsMethod
-                            )); 
-                            break;
+                list($sJsCode, $sJsMethod) = $aJs;
+                $aCurrency = $this->_oModule->_oConfig->getCurrency();
 
 
-			default:
-                            $bResult = true;
-		}
+                $bResult = true;
+                $this->addMarkers(array(
+                    'subscribe_title' => _t('_bx_market_menu_item_title_subscribe', $aCurrency['sign'], $this->_aContentInfo[$CNF['FIELD_PRICE_RECURRING']], _t('_bx_market_txt_per_' . $this->_aContentInfo[$CNF['FIELD_DURATION_RECURRING']])),
+                    'subscribe_onclick' => $sJsMethod
+                )); 
+                break;
 
 
-		return $bResult;
+            default:
+                $bResult = true;
+        }
+
+        return $bResult;
     }
     }
 }
 }
 
 

+ 60 - 62
modules/boonex/market/classes/BxMarketTemplate.php

@@ -141,7 +141,7 @@ class BxMarketTemplate extends BxBaseModTextTemplate
 
 
     protected function getUnit ($aData, $aParams = array())
     protected function getUnit ($aData, $aParams = array())
     {
     {
-        $bTmplVarsSectionAuthor = false;
+        $bTmplVarsSectionAuthor = true;
         $bTmplVarsSectionPricing = false;
         $bTmplVarsSectionPricing = false;
         $bTmplVarsSectionVoting = true;
         $bTmplVarsSectionVoting = true;
 
 
@@ -170,21 +170,21 @@ class BxMarketTemplate extends BxBaseModTextTemplate
 
 
             //--- Actions
             //--- Actions
             $sActions = '';
             $sActions = '';
-        	$oActions = BxDolMenu::getObjectInstance($CNF['OBJECT_MENU_ACTIONS_SNIPPET']);
-        	if($oActions) {
-        	    $oActions->setContentId($aData[$CNF['FIELD_ID']]);
-        	    $sActions = $oActions->getCode();
-        	}
+            $oActions = BxDolMenu::getObjectInstance($CNF['OBJECT_MENU_ACTIONS_SNIPPET']);
+            if($oActions) {
+                $oActions->setContentId($aData[$CNF['FIELD_ID']]);
+                $sActions = $oActions->getCode();
+            }
 
 
             $sDate = $this->parseHtmlByName('snippet-date.html', array(
             $sDate = $this->parseHtmlByName('snippet-date.html', array(
                 'date' => bx_time_js($aData[$CNF['FIELD_ADDED']])
                 'date' => bx_time_js($aData[$CNF['FIELD_ADDED']])
             ));
             ));
 
 
-        	$aTmplVarsSectionAuthor = array(
+            $aTmplVarsSectionAuthor = array(
                 'actions' => $sActions,
                 'actions' => $sActions,
                 'author_unit' => $sAuthorUnitShort,
                 'author_unit' => $sAuthorUnitShort,
                 'author_width_date' => _t('_bx_market_txt_author_added_product', $sAuthorName, $sDate),
                 'author_width_date' => _t('_bx_market_txt_author_added_product', $sAuthorName, $sDate),
-	        );
+            );
         }
         }
 
 
         //--- Main Info
         //--- Main Info
@@ -225,66 +225,66 @@ class BxMarketTemplate extends BxBaseModTextTemplate
         $aTmplVarsSectionPricing = array();
         $aTmplVarsSectionPricing = array();
         if($bTmplVarsSectionPricing) {
         if($bTmplVarsSectionPricing) {
             //--- Price Single
             //--- Price Single
-        	$bTmplVarsSingle = (float)$aData[$CNF['FIELD_PRICE_SINGLE']] != 0;
-        	$aTmplVarsSingle = array();
-        	if($bTmplVarsSingle) {
-        		$aJsSingle = $oPayment->getAddToCartJs($aData[$CNF['FIELD_AUTHOR']], $this->_oConfig->getName(), $aData[$CNF['FIELD_ID']], 1, true);
-        		if(!empty($aJsSingle) && is_array($aJsSingle)) {
-        			list($sJsCode, $sSingleOnclick) = $aJsSingle;
-        			
-    	    		$aTmplVarsSingle = array(
-    	    			'price_single_onclick' => $sSingleOnclick,
-    					'price_single' => _t('_bx_market_txt_price_single', $this->_aCurrency['sign'], $aData[$CNF['FIELD_PRICE_SINGLE']])
-    				);
-        		}
-        		else 
-        			$bTmplVarsSingle = false;
-        	}
-    
-        	//--- Price Recurring
-        	$bTmplVarsRecurring = (float)$aData[$CNF['FIELD_PRICE_RECURRING']] != 0;
-        	$aTmplVarsRecurring = array();
-        	if($bTmplVarsRecurring) {
-            	$aJsRecurring = $oPayment->getSubscribeJs($aData[$CNF['FIELD_AUTHOR']], '', $this->_oConfig->getName(), $aData[$CNF['FIELD_ID']], 1);
-            	if(!empty($aJsRecurring) && is_array($aJsRecurring)) {
-    				list($sJsCode, $sRecurringOnclick) = $aJsRecurring;
-    
-    	        	$aTmplVarsRecurring = array(
-    	        		'price_recurring_onclick' => $sRecurringOnclick,
-    					'price_recurring' => _t('_bx_market_txt_price_recurring', $this->_aCurrency['sign'], $aData[$CNF['FIELD_PRICE_RECURRING']], _t($CNF['T']['txt_per_' . $aData[$CNF['FIELD_DURATION_RECURRING']] . '_short']))
-    				);
-            	}
-            	else 
-            		$bTmplVarsRecurring = false;
-        	}
-
-        	$aTmplVarsSectionPricing = array(
-        	    'bx_if:show_single' => array(
-        			'condition' => $bTmplVarsSingle,
-        			'content' => $aTmplVarsSingle
-        		),
-        		'bx_if:show_recurring' => array(
-        			'condition' => $bTmplVarsRecurring,
-        			'content' => $aTmplVarsRecurring
-        		),
-        		'bx_if:show_free' => array(
-        			'condition' => !$bTmplVarsSingle && !$bTmplVarsRecurring,
-        			'content' => array(
-        		        'price_free_href' => $oPermalinks->permalink('page.php?i=' . $CNF['URI_DOWNLOAD_ENTRY'] . '&id=' . $aData[$CNF['FIELD_ID']])
-        		    )
-        		)
-        	);
+            $bTmplVarsSingle = (float)$aData[$CNF['FIELD_PRICE_SINGLE']] != 0;
+            $aTmplVarsSingle = array();
+            if($bTmplVarsSingle) {
+                $aJsSingle = $oPayment->getAddToCartJs($aData[$CNF['FIELD_AUTHOR']], $this->_oConfig->getName(), $aData[$CNF['FIELD_ID']], 1, true);
+                if(!empty($aJsSingle) && is_array($aJsSingle)) {
+                    list($sJsCode, $sSingleOnclick) = $aJsSingle;
+
+                    $aTmplVarsSingle = array(
+                        'price_single_onclick' => $sSingleOnclick,
+                        'price_single' => _t('_bx_market_txt_price_single', $this->_aCurrency['sign'], $aData[$CNF['FIELD_PRICE_SINGLE']])
+                    );
+                }
+                else 
+                    $bTmplVarsSingle = false;
+            }
+
+            //--- Price Recurring
+            $bTmplVarsRecurring = !$oPayment->isCreditsOnly() && (float)$aData[$CNF['FIELD_PRICE_RECURRING']] != 0;
+            $aTmplVarsRecurring = array();
+            if($bTmplVarsRecurring) {
+                $aJsRecurring = $oPayment->getSubscribeJs($aData[$CNF['FIELD_AUTHOR']], '', $this->_oConfig->getName(), $aData[$CNF['FIELD_ID']], 1);
+                if(!empty($aJsRecurring) && is_array($aJsRecurring)) {
+                    list($sJsCode, $sRecurringOnclick) = $aJsRecurring;
+
+                    $aTmplVarsRecurring = array(
+                        'price_recurring_onclick' => $sRecurringOnclick,
+                        'price_recurring' => _t('_bx_market_txt_price_recurring', $this->_aCurrency['sign'], $aData[$CNF['FIELD_PRICE_RECURRING']], _t($CNF['T']['txt_per_' . $aData[$CNF['FIELD_DURATION_RECURRING']] . '_short']))
+                    );
+                }
+                else 
+                    $bTmplVarsRecurring = false;
+            }
+
+            $aTmplVarsSectionPricing = array(
+                'bx_if:show_single' => array(
+                    'condition' => $bTmplVarsSingle,
+                    'content' => $aTmplVarsSingle
+                ),
+                'bx_if:show_recurring' => array(
+                    'condition' => $bTmplVarsRecurring,
+                    'content' => $aTmplVarsRecurring
+                ),
+                'bx_if:show_free' => array(
+                    'condition' => !$bTmplVarsSingle && !$bTmplVarsRecurring,
+                    'content' => array(
+                        'price_free_href' => $oPermalinks->permalink('page.php?i=' . $CNF['URI_DOWNLOAD_ENTRY'] . '&id=' . $aData[$CNF['FIELD_ID']])
+                    )
+                )
+            );
         }
         }
 
 
         $aTmplVarsSectionVoting = array();
         $aTmplVarsSectionVoting = array();
         if($bTmplVarsSectionVoting) {
         if($bTmplVarsSectionVoting) {
             $sVoting = '';
             $sVoting = '';
-        	$oVoting = BxDolVote::getObjectInstance($CNF['OBJECT_VOTES'], $aData[$CNF['FIELD_ID']]);
+            $oVoting = BxDolVote::getObjectInstance($CNF['OBJECT_VOTES'], $aData[$CNF['FIELD_ID']]);
             if($oVoting)
             if($oVoting)
-    			$sVoting = $oVoting->getElementBlock(array('show_counter' => false));
+                $sVoting = $oVoting->getElementBlock(array('show_counter' => false));
 
 
             $sPricing = "";
             $sPricing = "";
-            if((float)$aData[$CNF['FIELD_PRICE_RECURRING']] != 0)
+            if(!$oPayment->isCreditsOnly() && (float)$aData[$CNF['FIELD_PRICE_RECURRING']] != 0)
                 $sPricing = _t('_bx_market_txt_price_recurring_short', $this->_aCurrency['sign'], $aData[$CNF['FIELD_PRICE_RECURRING']], _t($CNF['T']['txt_per_' . $aData[$CNF['FIELD_DURATION_RECURRING']] . '_short']));
                 $sPricing = _t('_bx_market_txt_price_recurring_short', $this->_aCurrency['sign'], $aData[$CNF['FIELD_PRICE_RECURRING']], _t($CNF['T']['txt_per_' . $aData[$CNF['FIELD_DURATION_RECURRING']] . '_short']));
 
 
             if(empty($sPricing) && (float)$aData[$CNF['FIELD_PRICE_SINGLE']] != 0)
             if(empty($sPricing) && (float)$aData[$CNF['FIELD_PRICE_SINGLE']] != 0)
@@ -297,10 +297,8 @@ class BxMarketTemplate extends BxBaseModTextTemplate
                 'voting' => $sVoting,
                 'voting' => $sVoting,
                 'pricing' => $sPricing
                 'pricing' => $sPricing
             );
             );
-            
         }
         }
 
 
-
     	$aUnit = array_merge($aUnit, array(
     	$aUnit = array_merge($aUnit, array(
     	    'bx_if:show_section_author' => array(
     	    'bx_if:show_section_author' => array(
     	        'condition' => $bTmplVarsSectionAuthor,
     	        'condition' => $bTmplVarsSectionAuthor,

+ 22 - 0
modules/boonex/payment/classes/BxPaymentModule.php

@@ -156,6 +156,28 @@ class BxPaymentModule extends BxBaseModPaymentModule
         ));
         ));
     }
     }
 
 
+    /**
+     * @page service Service Calls
+     * @section bx_payment Payment
+     * @subsection bx_payment-purchase_processing Purchase Processing
+     * @subsubsection bx_payment-is_credits_only is_credits_only
+     * 
+     * @code bx_srv('bx_payment', 'is_credits_only'); @endcode
+     * 
+     * Check whether the 'Credits Only' mode is enabled or not.
+     *
+     * @return boolean value determining the result of checking.
+     * 
+     * @see BxPaymentModule::serviceIsCreditsOnly
+     */
+    /** 
+     * @ref bx_payment-is_credits_only "is_credits_only"
+     */
+    public function serviceIsCreditsOnly()
+    {
+        return $this->_oConfig->isCreditsOnly();
+    }
+
     /**
     /**
      * @page service Service Calls
      * @page service Service Calls
      * @section bx_payment Payment
      * @section bx_payment Payment