Przeglądaj źródła

UNA Market like on Boonex site.

AntonLV 10 lat temu
rodzic
commit
0f3d2a8abd

+ 55 - 3
modules/boonex/market/classes/BxMarketDb.php

@@ -47,6 +47,14 @@ class BxMarketDb extends BxBaseModTextDb
     	}
 
 		switch($aParams['type']) {
+			case 'file_id':
+				$aMethod['name'] = 'getRow';
+				$sFieldsClause .= "";
+				$sJoinClause .= "";
+				$sWhereClause .= $this->prepareAsString(" AND `te`.`" . $CNF['FIELD_PACKAGE'] . "`=? ", $aParams['value']);
+				$sOrderClause .= "";
+				break;
+
 			case 'latest':
 				$sFieldsClause .= "";
 				$sJoinClause .= "";
@@ -200,9 +208,10 @@ class BxMarketDb extends BxBaseModTextDb
      */
 	public function getLicense($aParams = array())
     {
+    	$CNF = &$this->_oConfig->CNF;
     	$aMethod = array('name' => 'getAll', 'params' => array(0 => 'query'));
-    	
-    	$sWhereClause = "";
+
+    	$sJoinClause = $sWhereClause = "";
         switch($aParams['type']) {
             case 'id':
             	$aMethod['name'] = 'getRow';
@@ -220,11 +229,36 @@ class BxMarketDb extends BxBaseModTextDb
 
                 $sWhereClause = " AND `tl`.`profile_id`=:profile_id AND `tl`.`domain`=''";
                 break;
+
+			case 'profile_id':
+				$aMethod['params'][1] = array(
+                	'profile_id' => $aParams['profile_id']
+                );
+
+				$sWhereClause = " AND `tl`.`profile_id`=:profile_id";
+
+				if(!empty($aParams['product_id'])) {
+					$aMethod['params'][1]['product_id'] = $aParams['product_id'];
+					$sWhereClause .= " AND `tl`.`product_id`=:product_id";
+				}
+				break;
+
+			case 'profile_id_file_id_key':
+				$aMethod['name'] = "getRow";
+				$aMethod['params'][1] = array(
+                	'profile_id' => $aParams['profile_id'],
+					'file_id' => $aParams['file_id'],
+					'key' => $aParams['key']
+                );
+
+				$sJoinClause .= " LEFT JOIN `" . $this->_oConfig->CNF['TABLE_ENTRIES'] . "` AS `te` ON `tl`.`product_id`=`te`.`" . $CNF['FIELD_ID'] . "`";
+				$sWhereClause .= " AND `tl`.`profile_id`=:profile_id AND `te`.`" . $CNF['FIELD_PACKAGE'] . "`=:file_id AND (`tl`.`domain`='' OR `tl`.`domain`=:key)";
+				break;
         }
 
         $aMethod['params'][0] = "SELECT
         		`tl`.*
-            FROM `" . $this->_oConfig->CNF['TABLE_LICENSES'] . "` AS `tl`
+            FROM `" . $this->_oConfig->CNF['TABLE_LICENSES'] . "` AS `tl`" . $sJoinClause . "
             WHERE 1" . $sWhereClause;
 
         return call_user_func_array(array($this, $aMethod['name']), $aMethod['params']);
@@ -362,6 +396,24 @@ class BxMarketDb extends BxBaseModTextDb
 
                 $sWhereClause = " AND `tfe`.`content_id`=:content_id";
                 break;
+
+			case 'content_id_and_type':
+				$aMethod['name'] = 'getAll';
+            	$aMethod['params'][1] = array(
+                	'content_id' => $aParams['content_id'],
+            		'type' => $aParams['file_type']
+                );
+
+                $sFieldsClause .= ", `tf`.`file_name`, `tf`.`size` AS `file_size`";
+                $sJoinClause = " LEFT JOIN `" . $this->_oConfig->CNF['TABLE_FILES'] . "` AS `tf` ON `tfe`.`file_id`=`tf`.`id` ";
+                $sWhereClause = " AND `tfe`.`content_id`=:content_id AND `tfe`.`type`=:type";
+
+                if(!empty($aParams['version'])) {
+                	$aMethod['name'] = 'getRow';
+                	$aMethod['params'][1]['version'] = $aParams['version'];
+                	$sWhereClause .= " AND `tfe`.`version`=:version";
+                }
+            	break;
         }
 
         $aMethod['params'][0] = "SELECT

+ 24 - 0
modules/boonex/market/classes/BxMarketModule.php

@@ -123,6 +123,11 @@ class BxMarketModule extends BxBaseModTextModule
     	return $this->_oDb->hasLicense($iProfileId, $iProductId, $sDomain);
     }
 
+    public function serviceGetLicense ($aParams)
+    {
+    	return $this->_oDb->getLicense($aParams);
+    }
+
     public function serviceUpdateLicense ($aSet, $aWhere)
     {
     	return $this->_oDb->updateLicense($aSet, $aWhere);
@@ -169,6 +174,25 @@ class BxMarketModule extends BxBaseModTextModule
     	return $aFile;
     }
 
+	public function serviceGetUpdates($iContentId, $sVersion = '')
+    {
+    	$CNF = &$this->_oConfig->CNF;
+
+    	$aFile = $this->_oDb->getFile(array(
+    		'type' => 'content_id_and_type', 
+    		'content_id' => $iContentId, 
+    		'file_type' => 'update',
+    		'version' => $sVersion
+    	));
+
+    	if(!empty($aFile) && is_array($aFile)) {
+	    	$oStorage = BxDolStorage::getObjectInstance($CNF['OBJECT_STORAGE_FILES']);
+	    	$aFile['file_url'] = $oStorage ? $oStorage->getFileUrlById($aFile['file_id']) : '';
+    	}
+
+    	return $aFile;
+    }
+
     public function serviceGetScreenshots($iItemId)
     {
     	$CNF = &$this->_oConfig->CNF;

+ 3 - 3
modules/boonex/market/install/sql/uninstall.sql

@@ -6,9 +6,9 @@ DROP TABLE IF EXISTS `bx_market_products`, `bx_market_licenses`, `bx_market_file
 DELETE FROM `sys_objects_storage` WHERE `object` IN('bx_market_files', 'bx_market_photos', 'bx_market_photos_resized');
 DELETE FROM `sys_storage_tokens` WHERE `object` IN('bx_market_files', 'bx_market_photos', 'bx_market_photos_resized');
 
-DELETE FROM `sys_objects_transcoder` WHERE `object` IN('bx_market_preview', 'bx_market_screenshot', 'bx_market_gallery');
-DELETE FROM `sys_transcoder_filters` WHERE `transcoder_object` IN('bx_market_preview', 'bx_market_screenshot', 'bx_market_gallery');
-DELETE FROM `sys_transcoder_images_files` WHERE `transcoder_object` IN('bx_market_preview',  'bx_market_screenshot', 'bx_market_gallery');
+DELETE FROM `sys_objects_transcoder` WHERE `object` IN('bx_market_preview', 'bx_market_cover', 'bx_market_screenshot', 'bx_market_gallery');
+DELETE FROM `sys_transcoder_filters` WHERE `transcoder_object` IN('bx_market_preview', 'bx_market_cover', 'bx_market_screenshot', 'bx_market_gallery');
+DELETE FROM `sys_transcoder_images_files` WHERE `transcoder_object` IN('bx_market_preview', 'bx_market_cover', 'bx_market_screenshot', 'bx_market_gallery');
 
 -- FORMS
 DELETE FROM `sys_objects_form` WHERE `module` = 'bx_market';