/** 
  *	Get Set
  *
  *	Displays details for the sets specified.
  *	More than one set can be specified by seperating set numbers by a comma.
  *	e.g. 1380,10240
  *
  *	@author		Nate Jacobs
  *	@date		2/15/13
  *	@since		1.0
  *
  *	@param		array
  */
 public function get_set($atts)
 {
     extract(shortcode_atts(array('number' => ''), $atts, 'bs_set'));
     $brickset = parent::get_by_number($number);
     if (is_wp_error($brickset)) {
         return $brickset->get_error_message();
     } else {
         global $brickset_api_utilities;
         $settings = $brickset_api_utilities->get_settings_rules();
         $number = '';
         $numberVariant = '';
         if (true === $settings['bricklink']) {
             $bricklink = '<strong>' . __('BrickLink', 'bs_api') . ': </strong><a href=http://www.bricklink.com/catalogItem.asp?S=' . $number . '-' . $numberVariant . '>BrickLink</a><br><hr>';
         } elseif (false === $settings['bricklink']) {
             $bricklink = '';
         }
         $return = '';
         foreach ($brickset as $result) {
             $number = sanitize_text_field($result->number);
             $numberVariant = sanitize_text_field($result->numberVariant);
             if (empty($result->{$settings}['currency_key']) && 'unk' === $settings['currency_unknown']) {
                 $result->{$settings}['currency_key'] = __(' Unknown', 'bs_api');
             }
             if (empty($result->{$settings}['currency_key']) && 'us' === $settings['currency_unknown']) {
                 $settings['currency'] = 'US';
                 $settings['currency_key'] = 'USRetailPrice';
                 $settings['currency_symbol'] = '&#36;';
             }
             $return .= '<img src="' . $result->imageURL . '"><br>';
             $return .= '<strong>' . __('Set Name', 'bs_api') . ': </strong>' . sanitize_text_field($result->setName) . '<br>';
             $return .= '<strong>' . __('Set Number', 'bs_api') . ': </strong>' . $number . '-' . $numberVariant . '<br>';
             $return .= '<strong>' . __('Year', 'bs_api') . ': </strong>' . sanitize_text_field($result->year) . '<br>';
             $return .= '<strong>' . __('Theme', 'bs_api') . ': </strong>' . sanitize_text_field($result->theme) . '<br>';
             $return .= '<strong>' . __('Subtheme', 'bs_api') . ': </strong>' . sanitize_text_field($result->subtheme) . '<br>';
             $return .= '<strong>' . sprintf(__('%s Retail Price', 'bs_api'), $settings['currency']) . ': </strong>' . $settings['currency_symbol'] . sanitize_text_field($result->{$settings}['currency_key']) . '<br>';
             $return .= '<strong>' . __('Pieces', 'bs_api') . ': </strong>' . sanitize_text_field($result->pieces) . '<br>';
             $return .= '<strong>' . __('Minifigs', 'bs_api') . ': </strong>' . sanitize_text_field($result->minifigs) . '<br>';
             $return .= '<strong>' . __('Set Guide', 'bs_api') . ': </strong><a href=' . esc_url($result->bricksetURL) . '>Brickset</a><br>';
             $return .= $bricklink;
         }
         return $return;
     }
 }
 /** 
  *	Generates the widget that displays the set details.
  *
  *	@author		Nate Jacobs
  *	@date		6/9/13
  *	@since		1.0
  *
  *	@param		array
  *	@param		array
  */
 public function widget($args, $instance)
 {
     extract($args);
     $title = apply_filters('widget_title', $instance['set_number']);
     echo $before_widget;
     if ($title) {
         echo $before_title . 'Set Number: ' . $title . $after_title;
     }
     //call functions class and use get method to retrieve list of themes
     $brickset = new BricksetAPISearch();
     $set = $brickset->get_by_number($instance['set_number']);
     // check for errors
     if (is_wp_error($brickset)) {
         echo $brickset->get_error_message();
     } else {
         global $brickset_api_utilities;
         $settings = $brickset_api_utilities->get_settings_rules();
         $number = '';
         $numberVariant = '';
         foreach ($set as $result) {
             $number = sanitize_text_field($result->number);
             $numberVariant = sanitize_text_field($result->numberVariant);
             if (true === $settings['bricklink']) {
                 $bricklink = '<strong>' . __('BrickLink', 'bs_api') . ': </strong><a href=http://www.bricklink.com/catalogItem.asp?S=' . $number . '-' . $numberVariant . '>BrickLink</a><br><hr>';
             } elseif (false === $settings['bricklink']) {
                 $bricklink = '';
             }
             if (empty($result->{$settings}['currency_key']) && 'unk' === $settings['currency_unknown']) {
                 $result->{$settings}['currency_key'] = __(' Unknown', 'bs_api');
             }
             if (empty($result->{$settings}['currency_key']) && 'us' === $settings['currency_unknown']) {
                 $settings['currency'] = 'US';
                 $settings['currency_key'] = 'USRetailPrice';
                 $settings['currency_symbol'] = '&#36;';
             }
             echo '<img src="' . $result->imageURL . '"><br>';
             echo '<strong>' . __('Set Name', 'bs_api') . ': </strong>' . sanitize_text_field($result->setName) . '<br>';
             echo '<strong>' . __('Set Number', 'bs_api') . ': </strong>' . $number . '-' . $numberVariant . '<br>';
             echo '<strong>' . __('Year', 'bs_api') . ': </strong>' . sanitize_text_field($result->year) . '<br>';
             echo '<strong>' . __('Theme', 'bs_api') . ': </strong>' . sanitize_text_field($result->theme) . '<br>';
             echo '<strong>' . __('Subtheme', 'bs_api') . ': </strong>' . sanitize_text_field($result->subtheme) . '<br>';
             echo '<strong>' . sprintf(__('%s Retail Price', 'bs_api'), $settings['currency']) . ': </strong>' . $settings['currency_symbol'] . sanitize_text_field($result->{$settings}['currency_key']) . '<br>';
             echo '<strong>' . __('Pieces', 'bs_api') . ': </strong>' . sanitize_text_field($result->pieces) . '<br>';
             echo '<strong>' . __('Minifigs', 'bs_api') . ': </strong>' . sanitize_text_field($result->minifigs) . '<br>';
             echo '<strong>' . __('Set Guide', 'bs_api') . ': </strong><a href=' . esc_url($result->bricksetURL) . '>Brickset</a><br>';
             echo $bricklink;
         }
         echo $after_widget;
     }
 }
 /** 
  *	Takes a set number from the Brickset URL and displays information about the set
  *
  *	@author		Nate Jacobs
  *	@date		3/10/13
  *	@since		1.0
  *
  *	@param		string	the set number to display information about
  */
 public function oembed_set($set_number)
 {
     // Call the API function
     $brickset = parent::get_by_number($set_number);
     // Build the Oembed class
     $response = new stdClass();
     $response->type = 'rich';
     $response->width = '10';
     $response->height = '10';
     $response->version = '1.0';
     $response->title = $brickset->setData->setName;
     $response->html = '<div class="brickset-oembed-set">';
     // Check for errors
     if (is_wp_error($brickset)) {
         $response->html .= '<p>' . $brickset->get_error_message() . '</p>';
     } else {
         global $brickset_api_utilities;
         $settings = $brickset_api_utilities->get_settings_rules();
         $number = '';
         $numberVariant = '';
         if (true === $settings['bricklink']) {
             $bricklink = '<strong>' . __('BrickLink', 'bs_api') . ': </strong><a href=http://www.bricklink.com/catalogItem.asp?S=' . $number . '-' . $numberVariant . '>BrickLink</a><br><hr>';
         } elseif (false === $settings['bricklink']) {
             $bricklink = '';
         }
         // Loop through and display the set information
         foreach ($brickset as $result) {
             $number = sanitize_text_field($result->number);
             $numberVariant = sanitize_text_field($result->numberVariant);
             if (empty($result->{$settings}['currency_key']) && 'unk' === $settings['currency_unknown']) {
                 $result->{$settings}['currency_key'] = __(' Unknown', 'bs_api');
             }
             if (empty($result->{$settings}['currency_key']) && 'us' === $settings['currency_unknown']) {
                 $settings['currency'] = 'US';
                 $settings['currency_key'] = 'USRetailPrice';
                 $settings['currency_symbol'] = '&#36;';
             }
             $response->html .= '<img src="' . $result->imageURL . '"><br>';
             $response->html .= '<strong>' . __('Set Name', 'bs_api') . ': </strong>' . sanitize_text_field($result->setName) . '<br>';
             $response->html .= '<strong>' . __('Set Number', 'bs_api') . ': </strong>' . $number . '-' . $numberVariant . '<br>';
             $response->html .= '<strong>' . __('Year', 'bs_api') . ': </strong>' . sanitize_text_field($result->year) . '<br>';
             $response->html .= '<strong>' . __('Theme', 'bs_api') . ': </strong>' . sanitize_text_field($result->theme) . '<br>';
             $response->html .= '<strong>' . __('Subtheme', 'bs_api') . ': </strong>' . sanitize_text_field($result->subtheme) . '<br>';
             $response->html .= '<strong>' . sprintf(__('%s Retail Price', 'bs_api'), $settings['currency']) . ': </strong>' . $settings['currency_symbol'] . sanitize_text_field($result->{$settings}['currency_key']) . '<br>';
             $response->html .= '<strong>' . __('Pieces', 'bs_api') . ': </strong>' . sanitize_text_field($result->pieces) . '<br>';
             $response->html .= '<strong>' . __('Minifigs', 'bs_api') . ': </strong>' . sanitize_text_field($result->minifigs) . '<br>';
             $response->html .= '<strong>' . __('Set Guide', 'bs_api') . ': </strong><a href=' . esc_url($result->bricksetURL) . '>Brickset</a><br>';
             $response->html .= $bricklink;
         }
     }
     $response->html .= '</div>';
     header('Content-Type: application/json');
     echo json_encode($response);
     die;
 }