Changeset 4769
- Timestamp:
- 08/01/07 00:28:57 (1 year ago)
- Files:
-
- plugins/sfISBNPlugin/lib/BasesfISBN.class.php (modified) (5 diffs)
- plugins/sfISBNPlugin/lib/sfISBNCommissionJunctionDriver.class.php (modified) (1 diff)
- plugins/sfISBNPlugin/lib/sfISBNNumber.class.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
plugins/sfISBNPlugin/lib/BasesfISBN.class.php
r4736 r4769 18 18 class BasesfISBN 19 19 { 20 protected $amazon AWS = null,21 $ sellers= array('CommissionJunction');20 protected $amazonECS = null, 21 $apis = array('CommissionJunction'); 22 22 23 23 public function __construct() … … 30 30 } 31 31 32 $this->amazon AWS = new sfAmazonECS($config['access_key_id']);32 $this->amazonECS = new sfAmazonECS($config['access_key_id']); 33 33 } 34 34 35 public function get ISBN($isbn)35 public function getAmazonECS() 36 36 { 37 $result = $this->amazonAWS->ItemLookup($isbn, null, null, 'Large'); 37 return $this->amazonECS; 38 } 39 40 public function findByISBN($isbn) 41 { 42 // Convert from 10 to 13 if necessary 43 $isbn = sfISBNNumber::convert($isbn, 10, 13); 38 44 39 return $result->Items->Item; 45 $result = $this->amazonECS->ItemLookup($isbn, 'ISBN', 'Books', 'Large'); 46 47 if( isset($result->Items->Item) ) 48 { 49 return $result->Items->Item; 50 } 40 51 } 41 52 … … 46 57 $params['Sort'] = $sort; 47 58 48 $result = $this->amazon AWS->ItemSearch($keywords, 'Books', $page, 'Large', $params);59 $result = $this->amazonECS->ItemSearch($keywords, 'Books', $page, 'Large', $params); 49 60 50 61 if( isset($result->Items) ) … … 56 67 } 57 68 58 public function getOffers($isbn )69 public function getOffers($isbn, $apis = array(), $params = array()) 59 70 { 60 $isbnInfo = $this-> getIsbn($isbn);71 $isbnInfo = $this->findByISBN($isbn); 61 72 62 73 $offers = array(); 63 $offers['amazon'] = $isbnInfo->Offers; 74 $amazonOffers = isset($isbnInfo->Offers->Offer) ? $isbnInfo->Offers->Offer:array(); 75 $offers['Amazon'] = !is_array($amazonOffers) ? array($amazonOffers):$amazonOffers; 64 76 65 foreach($this-> sellers AS $seller)77 foreach($this->apis AS $api) 66 78 { 67 $sellerDriver = self::getSellerDriver($seller); 79 // If an array of apis was passed then lets skip all apis that are not in the array 80 // This is so you can specify what all apis you wish to get the offers from 81 if( !empty($apis) && !in_array($api, $apis) ) 82 { 83 continue; 84 } 68 85 69 $offers[$seller] = $sellerDriver->getOffers($isbn); 86 $apiDriver = self::getApiDriver($api); 87 88 $apiParams = isset($params[$api]) ? $params[$api]:array(); 89 90 $offers[$api] = $apiDriver->getOffers($isbn, $apiParams); 70 91 } 71 92 … … 73 94 } 74 95 75 static protected function get SellerDriver($seller)96 static protected function getApiDriver($api) 76 97 { 77 $className = 'sfISBN'.$ seller.'Driver';78 $ sellerConfig = sfInflector::underscore($seller);98 $className = 'sfISBN'.$api.'Driver'; 99 $apiConfig = sfInflector::underscore($api); 79 100 80 return new $className(sfConfig::get('app_isbn_'.$ sellerConfig));101 return new $className(sfConfig::get('app_isbn_'.$apiConfig)); 81 102 } 82 103 } plugins/sfISBNPlugin/lib/sfISBNCommissionJunctionDriver.class.php
r4736 r4769 27 27 } 28 28 29 public function getOffers($isbn )29 public function getOffers($isbn, $params = array()) 30 30 { 31 $result = $this->commissionJunction->bookLookup($isbn); 31 // Make sure the isbn is 10 digits if 13 is passed 32 $isbn = sfISBNNumber::convert($isbn, 13, 10); 32 33 33 return $result->out->products->Product; 34 $result = $this->commissionJunction->bookLookup($isbn, $params); 35 36 if( isset($result->out->products->Product) ) 37 { 38 $offers = $result->out->products->Product; 39 $offers = !is_array($offers) ? array($offers):$offers; 40 41 return $offers; 42 } else { 43 return array(); 44 } 34 45 } 35 46 } plugins/sfISBNPlugin/lib/sfISBNNumber.class.php
r4736 r4769 18 18 class sfISBNNumber 19 19 { 20 static public function convert($isbn, $from, $to) 21 { 22 if( self::getISBNType($isbn) == 13 AND $from == 13 AND $to == 10 ) 23 { 24 $isbn = self::thirteenToTen($isbn); 25 } 26 27 if( self::getISBNType($isbn) == 10 AND $from == 10 AND $to == 13 ) 28 { 29 $isbn = self::tenToThirteen($isbn); 30 } 31 32 return $isbn; 33 } 34 20 35 static public function thirteenToTen($isbn13) 21 36 {