Esempio n. 1
0
	/**
	 * Loads the enabled payment cards
	 *
	 * @since 1.1
	 *
	 * @return void
	 **/
	private function _loadcards () {
		if (empty($this->settings['cards'])) $this->settings['cards'] = $this->cards;
		if ($this->cards) {
			$cards = array();
			$pcs = Lookup::paycards();
			foreach ($this->cards as $card) {
				$card = strtolower($card);
				if (isset($pcs[$card])) $cards[] = $pcs[$card];
			}
			$this->cards = $cards;
		}
	}
Esempio n. 2
0
	/**
	 * Ecart 1.1.0 upgrades
	 * 
	 * @since 1.1
	 *
	 * @return void
	 **/
	function upgrade_110 () {
		$db =& DB::get();
		$meta_table = DatabaseObject::tablename('meta');
		$db->query("DELETE FROM $meta_table"); // Clear out previous meta

		// Update product status from the 'published' column
		$product_table = DatabaseObject::tablename('product');
		$db->query("UPDATE $product_table SET status=CAST(published AS unsigned)");

		// Set product publish date based on the 'created' date column
		$db->query("UPDATE $product_table SET publish=created WHERE status='publish'");

		// Update Catalog
		$catalog_table = DatabaseObject::tablename('catalog');
		$db->query("UPDATE $catalog_table set parent=IF(category!=0,category,tag),type=IF(category!=0,'category','tag')");

		// Update specs
		$meta_table = DatabaseObject::tablename('meta');
		$spec_table = DatabaseObject::tablename('spec');
		$db->query("INSERT INTO $meta_table (parent,context,type,name,value,numeral,sortorder,created,modified)
					SELECT product,'product','spec',name,content,numeral,sortorder,now(),now() FROM $spec_table");

		// Update purchase table
		$purchase_table = DatabaseObject::tablename('purchase');
		$db->query("UPDATE $purchase_table SET txnid=transactionid,txnstatus=transtatus");

		// Update image assets
		$meta_table = DatabaseObject::tablename('meta');
		$asset_table = DatabaseObject::tablename('asset');
		$db->query("INSERT INTO $meta_table (parent,context,type,name,value,numeral,sortorder,created,modified)
							SELECT parent,context,'image','processing',CONCAT_WS('::',id,name,value,size,properties,LENGTH(data)),'0',sortorder,created,modified FROM $asset_table WHERE datatype='image'");
		$records = $db->query("SELECT id,value FROM $meta_table WHERE type='image' AND name='processing'",AS_ARRAY);
		foreach ($records as $r) {
			list($src,$name,$value,$size,$properties,$datasize) = explode("::",$r->value);
			$p = unserialize($properties);
			$value = new StdClass();
			if (isset($p['width'])) $value->width = $p['width'];
			if (isset($p['height'])) $value->height = $p['height'];
			if (isset($p['alt'])) $value->alt = $p['alt'];
			if (isset($p['title'])) $value->title = $p['title'];
			$value->filename = $name;
			if (isset($p['mimetype'])) $value->mime = $p['mimetype'];
			$value->size = $size;
			error_log(serialize($value));
			if ($datasize > 0) {
				$value->storage = "DBStorage";
				$value->uri = $src;
			} else {
				$value->storage = "FSStorage";
				$value->uri = $name;
			}
			$value = mysql_real_escape_string(serialize($value));
			$db->query("UPDATE $meta_table set name='original',value='$value' WHERE id=$r->id");
		}

		// Update product downloads
		$meta_table = DatabaseObject::tablename('meta');
		$asset_table = DatabaseObject::tablename('asset');
		$query = "INSERT INTO $meta_table (parent,context,type,name,value,numeral,sortorder,created,modified)
					SELECT parent,context,'download','processing',CONCAT_WS('::',id,name,value,size,properties,LENGTH(data)),'0',sortorder,created,modified FROM $asset_table WHERE datatype='download' AND parent != 0";
		$db->query($query);
		$records = $db->query("SELECT id,value FROM $meta_table WHERE type='download' AND name='processing'",AS_ARRAY);
		foreach ($records as $r) {
			list($src,$name,$value,$size,$properties,$datasize) = explode("::",$r->value);
			$p = unserialize($properties);
			$value = new StdClass();
			$value->filename = $name;
			$value->mime = $p['mimetype'];
			$value->size = $size;
			if ($datasize > 0) {
				$value->storage = "DBStorage";
				$value->uri = $src;
			} else {
				$value->storage = "FSStorage";
				$value->uri = $name;
			}
			$value = mysql_real_escape_string(serialize($value));
			$db->query("UPDATE $meta_table set name='$name',value='$value' WHERE id=$r->id");
		}

		// Update promotions
		$promo_table = DatabaseObject::tablename('promo');
		$records = $db->query("UPDATE $promo_table SET target='Cart' WHERE scope='Order'",AS_ARRAY);

		$FSStorage = array('path' => array());
		// Migrate Asset storage settings
		$image_storage = $this->Settings->get('image_storage_pref');
		if ($image_storage == "fs") {
			$image_storage = "FSStorage";
			$FSStorage['path']['image'] = $this->Settings->get('image_path');
		} else $image_storage = "DBStorage";
		$this->Settings->save('image_storage',$image_storage);

		$product_storage = $this->Settings->get('product_storage_pref');
		if ($product_storage == "fs") {
			$product_storage = "FSStorage";
			$FSStorage['path']['download'] = $this->Settings->get('products_path');
		} else $product_storage = "DBStorage";
		$this->Settings->save('product_storage',$product_storage);

		if (!empty($FSStorage['path'])) $this->Settings->save('FSStorage',$FSStorage);

		// Preserve payment settings

		// Determine active gateways
		$active_gateways = array($this->Settings->get('payment_gateway'));
		$xco_gateways = (array)$this->Settings->get('xco_gateways');
		if (!empty($xco_gateways))
			$active_gateways = array_merge($active_gateways,$xco_gateways);

		// Load 1.0 payment gateway settings for active gateways
		$gateways = array();
		foreach ($active_gateways as $reference) {
			list($dir,$filename) = explode('/',$reference);
			$gateways[] = preg_replace('/[^\w+]/','',substr($filename,0,strrpos($filename,'.')));
		}

		$where = "name like '%".join("%' OR name like '%",$gateways)."%'";
		$query = "SELECT name,value FROM wp_ecart_setting WHERE $where";
		$result = $db->query($query,AS_ARRAY);
		require_once(ECART_MODEL_PATH.'/Lookup.php');
		$paycards = Lookup::paycards();

		// Convert settings to 1.1-compatible settings
		$active_gateways = array();
		foreach ($result as $_) {
			$active_gateways[] = $_->name;		// Add gateway to the active gateways list
			$setting = unserialize($_->value);	// Parse the settings

			// Get rid of legacy settings
			unset($setting['enabled'],$setting['path'],$setting['billing-required']);

			// Convert accepted payment cards
			$accepted = array();
			if (isset($setting['cards']) && is_array($setting['cards'])) {
				foreach ($setting['cards'] as $cardname) {
					// Normalize card names
					$cardname = str_replace(
						array(	"Discover",
								"Diner’s Club",
								"Diners"
						),
						array(	"Discover Card",
								"Diner's Club",
								"Diner's Club"
						),
						$cardname);

					foreach ($paycards as $card)
						if ($cardname == $card->name) $accepted[] = $card->symbol;
				}
				$setting['cards'] = $accepted;
			}
			$this->Settings->save($_->name,$setting); // Save the gateway settings
		}
		// Save the active gateways to populate the payment settings page
		$this->Settings->save('active_gateways',join(',',$active_gateways));

		// Preserve update key
		$oldkey = $this->Settings->get('updatekey');
		if (!empty($oldkey)) {
			$newkey = array(
				($oldkey['status'] == "activated"?1:0),
				$oldkey['key'],
				$oldkey['type']
			);
			$this->Settings->save('updatekey',$newkey);
		}

		$this->roles(); // Setup Roles and Capabilities

	}
Esempio n. 3
0
 /**
  * Gets a specified payment card
  *
  * @author Jonathan Davis
  * @since 1.1
  *
  * @return object PayCard object
  **/
 public static function paycard($card)
 {
     $cards = Lookup::paycards();
     if (isset($cards[strtolower($card)])) {
         return $cards[strtolower($card)];
     }
     return false;
 }
Esempio n. 4
0
 /**
  * Shopp 1.1.0 upgrades
  *
  * @author Jonathan Davis
  * @since 1.1
  *
  * @return void
  **/
 public function upgrade_110()
 {
     // 1.1 schema changes
     $db_version = ShoppSettings::dbversion();
     if ($db_version < 1100) {
         return;
     }
     // Skip db_version is not less than 1100
     $this->upschema('schema-110.sql');
     $meta_table = ShoppDatabaseObject::tablename('meta');
     $setting_table = ShoppDatabaseObject::tablename('setting');
     $product_table = ShoppDatabaseObject::tablename('product');
     // Update product status from the 'published' column
     sDB::query("UPDATE {$product_table} SET status=CAST(published AS unsigned)");
     // Set product publish date based on the 'created' date column
     sDB::query("UPDATE {$product_table} SET publish=created WHERE status='publish'");
     // Update Catalog
     $catalog_table = ShoppDatabaseObject::tablename('catalog');
     sDB::query("UPDATE {$catalog_table} set parent=IF(category!=0, category, tag), type=IF(category!=0, 'category', 'tag')");
     // Update specs
     $meta_table = ShoppDatabaseObject::tablename('meta');
     $spec_table = ShoppDatabaseObject::tablename('spec');
     $now = current_time('mysql');
     sDB::query("INSERT INTO {$meta_table} (parent, context, type, name, value, numeral, sortorder, created, modified)\n\t\t\t\t\tSELECT product, 'product', 'spec', name, content, numeral, sortorder, '{$now}', '{$now}' FROM {$spec_table}");
     // Update purchase table
     $purchase_table = ShoppDatabaseObject::tablename('purchase');
     sDB::query("UPDATE {$purchase_table} SET txnid=transactionid, txnstatus=transtatus");
     // Update image assets
     $meta_table = ShoppDatabaseObject::tablename('meta');
     $asset_table = ShoppDatabaseObject::tablename('asset');
     sDB::query("INSERT INTO {$meta_table} (parent, context, type, name, value, numeral, sortorder, created, modified)\n\t\t\t\t\t\t\tSELECT parent, context, 'image', 'processing', CONCAT_WS('::', id, name, value, size, properties, LENGTH(data)), '0', sortorder, created, modified FROM {$asset_table} WHERE datatype='image'");
     $records = sDB::query("SELECT id, value FROM {$meta_table} WHERE type='image' AND name='processing'", 'array');
     foreach ($records as $r) {
         list($src, $name, $value, $size, $properties, $datasize) = explode("::", $r->value);
         $p = unserialize($properties);
         $value = new StdClass();
         if (isset($p['width'])) {
             $value->width = $p['width'];
         }
         if (isset($p['height'])) {
             $value->height = $p['height'];
         }
         if (isset($p['alt'])) {
             $value->alt = $p['alt'];
         }
         if (isset($p['title'])) {
             $value->title = $p['title'];
         }
         $value->filename = $name;
         if (isset($p['mimetype'])) {
             $value->mime = $p['mimetype'];
         }
         $value->size = $size;
         if ($datasize > 0) {
             $value->storage = "DBStorage";
             $value->uri = $src;
         } else {
             $value->storage = "FSStorage";
             $value->uri = $name;
         }
         $value = mysqli_real_escape_string(sDB::get()->dbh, serialize($value));
         sDB::query("UPDATE {$meta_table} set name='original', value='{$value}' WHERE id={$r->id}");
     }
     // Update product downloads
     $meta_table = ShoppDatabaseObject::tablename('meta');
     $asset_table = ShoppDatabaseObject::tablename('asset');
     $query = "INSERT INTO {$meta_table} (parent, context, type, name, value, numeral, sortorder, created, modified)\n\t\t\t\t\tSELECT parent, context, 'download', 'processing', CONCAT_WS('::', id, name, value, size, properties, LENGTH(data)), '0', sortorder, created, modified FROM {$asset_table} WHERE datatype='download' AND parent != 0";
     sDB::query($query);
     $records = sDB::query("SELECT id, value FROM {$meta_table} WHERE type='download' AND name='processing'", 'array');
     foreach ($records as $r) {
         list($src, $name, $value, $size, $properties, $datasize) = explode("::", $r->value);
         $p = unserialize($properties);
         $value = new StdClass();
         $value->filename = $name;
         $value->mime = $p['mimetype'];
         $value->size = $size;
         if ($datasize > 0) {
             $value->storage = "DBStorage";
             $value->uri = $src;
         } else {
             $value->storage = "FSStorage";
             $value->uri = $name;
         }
         $value = mysqli_real_escape_string(sDB::get()->dbh, serialize($value));
         sDB::query("UPDATE {$meta_table} set name='{$name}', value='{$value}' WHERE id={$r->id}");
     }
     // Update promotions
     $promo_table = ShoppDatabaseObject::tablename('promo');
     $records = sDB::query("UPDATE {$promo_table} SET target='Cart' WHERE scope='Order'", 'array');
     $FSStorage = array('path' => array());
     // Migrate Asset storage settings
     $image_storage = shopp_setting('image_storage_pref');
     if ($image_storage == "fs") {
         $image_storage = "FSStorage";
         $FSStorage['path']['image'] = shopp_setting('image_path');
     } else {
         $image_storage = "DBStorage";
     }
     shopp_set_setting('image_storage', $image_storage);
     $product_storage = shopp_setting('product_storage_pref');
     if ($product_storage == "fs") {
         $product_storage = "FSStorage";
         $FSStorage['path']['download'] = shopp_setting('products_path');
     } else {
         $product_storage = "DBStorage";
     }
     shopp_set_setting('product_storage', $product_storage);
     if (!empty($FSStorage['path'])) {
         shopp_set_setting('FSStorage', $FSStorage);
     }
     // Preserve payment settings
     // Determine active gateways
     $active_gateways = array(shopp_setting('payment_gateway'));
     $xco_gateways = (array) shopp_setting('xco_gateways');
     if (!empty($xco_gateways)) {
         $active_gateways = array_merge($active_gateways, $xco_gateways);
     }
     // Load 1.0 payment gateway settings for active gateways
     $gateways = array();
     foreach ($active_gateways as $reference) {
         list($dir, $filename) = explode('/', $reference);
         $gateways[] = preg_replace('/[^\\w+]/', '', substr($filename, 0, strrpos($filename, '.')));
     }
     $where = "name like '%" . join("%' OR name like '%", $gateways) . "%'";
     $query = "SELECT name, value FROM {$setting_table} WHERE {$where}";
     $result = sDB::query($query, 'array');
     $paycards = Lookup::paycards();
     // Convert settings to 1.1-compatible settings
     $active_gateways = array();
     foreach ($result as $_) {
         $active_gateways[] = $_->name;
         // Add gateway to the active gateways list
         $setting = unserialize($_->value);
         // Parse the settings
         // Get rid of legacy settings
         unset($setting['enabled'], $setting['path'], $setting['billing-required']);
         // Convert accepted payment cards
         $accepted = array();
         if (isset($setting['cards']) && is_array($setting['cards'])) {
             foreach ($setting['cards'] as $cardname) {
                 // Normalize card names
                 $cardname = str_replace(array("Discover", "Diner’s Club", "Diners"), array("Discover Card", "Diner's Club", "Diner's Club"), $cardname);
                 foreach ($paycards as $card) {
                     if ($cardname == $card->name) {
                         $accepted[] = $card->symbol;
                     }
                 }
             }
             $setting['cards'] = $accepted;
         }
         shopp_set_setting($_->name, $setting);
         // Save the gateway settings
     }
     // Save the active gateways to populate the payment settings page
     shopp_set_setting('active_gateways', join(', ', $active_gateways));
     // Preserve update key
     $oldkey = shopp_setting('updatekey');
     if (!empty($oldkey)) {
         $newkey = array($oldkey['status'] == "activated" ? 1 : 0, $oldkey['key'], $oldkey['type']);
         shopp_set_setting('updatekey', $newkey);
     }
     $this->roles();
     // Setup Roles and Capabilities
 }