PageRenderTime 51ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/classes/aa_item.php

https://github.com/harz87/Amazon-Affialiate
PHP | 227 lines | 198 code | 19 blank | 10 comment | 27 complexity | 4131b18efe548686dfa2de6f5850c7c3 MD5 | raw file
  1. <?php
  2. /*
  3. * To change this template, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. /**
  7. * Description of aa_item
  8. *
  9. * @author h_titz
  10. */
  11. class AA_Item{
  12. function output($item, $format, $target='html'){
  13. $output = $format;
  14. preg_match_all("/#@?_?[A-Za-z0-9]+/", $format, $placeholders);
  15. foreach($placeholders[0] as $result){
  16. $replace = '';
  17. switch( $result ){
  18. case '#_NAME':
  19. $replace = $item->item_title;
  20. break;
  21. case '#_DESCRIBITION':
  22. $replace = $item->item_describition;
  23. break;
  24. case '#_PRICE':
  25. $replace = preg_replace('/EUR/','€',$item->item_price);
  26. break;
  27. case '#_AMAZONURL':
  28. $replace = "<a href='{$item->item_url}' title='{$item->item_title}'>Zum Shop</a>";
  29. break;
  30. case '#_ASIN':
  31. $replace = $item->item_asin;
  32. break;
  33. case '#_EAN':
  34. $replace = $item->item_ean;
  35. break;
  36. case '#_LABEL':
  37. $replace = $item->item_label;
  38. break;
  39. case '#_MANUFACTURER':
  40. $replace = $item->item_manufacturer;
  41. break;
  42. case '#_PRODUCTGROUP':
  43. $replace = $item->item_productGroup;
  44. break;
  45. case '#_PUBLISHER':
  46. $replace = $item->item_publisher;
  47. break;
  48. case '#_STUDIO':
  49. $replace = $item->item_studio;
  50. break;
  51. case '#_AUTHOR':
  52. $replace = $item->item_author;
  53. break;
  54. case '#_ITEMLINK':
  55. $AA_URI = AA_URI;
  56. $joiner = (stristr($AA_URI, "?")) ? "&amp;" : "?";
  57. $item_link = $AA_URI.$joiner."item_id=".$item->item_id;
  58. //$item_link = AA_URI . $item->item_post_name;
  59. $replace = "<a href='{$item_link}' title='{$item->item_title}'>$item->item_title</a>";
  60. break;
  61. case '#_FEATURELIST':
  62. $replace = "<ul>";
  63. foreach ($item->features as $feature){
  64. if($feature != ''){
  65. $replace .= '<li>'.$feature.'</li>';
  66. }
  67. }
  68. $replace .= "</ul>";
  69. break;
  70. case '#_MAINPICTURE':
  71. foreach ($item->pictures as $key => $value) {
  72. $replace = "<img src='".WP_PLUGIN_URL. get_option('dbaa_images_path') . $key . "' title='$value'/>";
  73. break;
  74. }
  75. break;
  76. case '#_PICTURELINK':
  77. $AA_URI = AA_URI;
  78. $joiner = (stristr($AA_URI, "?")) ? "&amp;" : "?";
  79. $item_link = $AA_URI.$joiner."item_id=".$item->item_id;
  80. foreach ($item->pictures as $key => $value) {
  81. $replace = "<a href='{$item_link}'><img src='".WP_PLUGIN_URL. get_option('dbaa_images_path') . $key . "' title='$value'/></a>";
  82. break;
  83. }
  84. break;
  85. case '#_ALTERNATIVEPICTURE':
  86. $first = true;
  87. foreach ($item->pictures as $key => $value) {
  88. if (!$first){
  89. $replace .= "<img src='" .WP_PLUGIN_URL. get_option('dbaa_images_path'). $key . "' title='$value'/>";
  90. }
  91. else{
  92. $first = false;
  93. continue;
  94. }
  95. }
  96. break;
  97. }
  98. $replace = apply_filters('aa_item_output_placeholder', $replace, $item, $result, $target);
  99. $output = str_replace($result, $replace , $output );
  100. }
  101. return $output;
  102. }
  103. function getSingleItemByID($item_id){
  104. global $wpdb;
  105. $itemsTable = AA_ITEMS_TABLE;
  106. $featuresTable = AA_FEATURES_TABLE;
  107. $picturesTable = AA_PICTURES_TABLE;
  108. $sqlItem = 'SELECT i.* FROM ' .$itemsTable .' i WHERE i.item_id='.$item_id;
  109. $item = $wpdb->get_row($sqlItem);
  110. $sqlFeatures = 'SELECT * FROM ' .$featuresTable . ' WHERE item_id='.$item_id;
  111. $resultFeatures = $wpdb->get_results($sqlFeatures);
  112. $sqlPictures = 'SELECT item_id, picture_filename, picture_title FROM ' .$picturesTable . ' WHERE item_id='.$item_id;
  113. $resultPictures = $wpdb->get_results($sqlPictures);
  114. $item->features = array();
  115. $item->pictures = array();
  116. foreach ($resultFeatures as $feature) {
  117. if ($feature->item_id == $item->item_id){
  118. $item->features[$feature->feature_id] = $feature->feature_text;
  119. }
  120. }
  121. foreach ($resultPictures as $picture) {
  122. if ($picture->item_id == $item->item_id){
  123. $item->pictures[$picture->picture_filename] = $picture->picture_title;
  124. }
  125. }
  126. return $item;
  127. }
  128. function getSingleItemBySlug($item_slug){
  129. global $wpdb;
  130. $itemsTable = AA_ITEMS_TABLE;
  131. $featuresTable = AA_FEATURES_TABLE;
  132. $picturesTable = AA_PICTURES_TABLE;
  133. $sqlItem = 'SELECT i.* FROM ' .$itemsTable .' i WHERE i.item_slug="'.$item_slug.'"';
  134. $item = $wpdb->get_row($sqlItem);
  135. $sqlFeatures = 'SELECT * FROM ' .$featuresTable . ' WHERE item_id='.$item->item_id;
  136. $resultFeatures = $wpdb->get_results($sqlFeatures);
  137. $sqlPictures = 'SELECT item_id, picture_filename, picture_title FROM ' .$picturesTable . ' WHERE item_id='.$item->item_id;
  138. $resultPictures = $wpdb->get_results($sqlPictures);
  139. $item->features = array();
  140. $item->pictures = array();
  141. foreach ($resultFeatures as $feature) {
  142. if ($feature->item_id == $item->item_id){
  143. $item->features[$feature->feature_id] = $feature->feature_text;
  144. }
  145. }
  146. foreach ($resultPictures as $picture) {
  147. if ($picture->item_id == $item->item_id){
  148. $item->pictures[$picture->picture_filename] = $picture->picture_title;
  149. }
  150. }
  151. return $item;
  152. }
  153. function output_single($item_id, $format){
  154. $item = self::getSingleItemByID($item_id);
  155. $output = self::output($item, $format);
  156. return $output;
  157. }
  158. function output_single_slug($slug, $format){
  159. $item = self::getSingleItemBySlug($slug);
  160. $output = self::output($item, $format);
  161. return $output;
  162. }
  163. function update($item){
  164. global $wpdb;
  165. $itemsTable = AA_ITEMS_TABLE;
  166. $featuresTable = AA_FEATURES_TABLE;
  167. $data = self::item2Array($item);
  168. $wpdb->update($itemsTable,$data,array('item_id' => $item->item_id),
  169. array('%d','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s'),'%d');
  170. }
  171. function item2Array($item) {
  172. if (is_object($item)) {
  173. foreach ($item as $key => $value) {
  174. if( substr($key, 0, 5) == 'item_' && $key != 'item_id'){
  175. $array[$key] = $value;
  176. }
  177. elseif($key=='category_id'){
  178. $array[$key]=$value;
  179. }
  180. }
  181. return $array;
  182. }
  183. }
  184. function updatePrice($price, $item_id){
  185. global $wpdb;
  186. $itemsTable = AA_ITEMS_TABLE;
  187. $wpdb->update($itemsTable,array('item_price'=>$price),array('item_id' => $item_id),'%s','%d');
  188. }
  189. function addNewFeature($feature, $item_id){
  190. global $wpdb;
  191. $table = AA_FEATURES_TABLE;
  192. if($feature != '' && $feature != null){
  193. $wpdb->insert($table,array('item_id'=>$item_id, 'feature_text'=>$feature),array('%d','%s'));
  194. }
  195. }
  196. function updateFeature($feature, $feature_id, $item_id){
  197. global $wpdb;
  198. $table = AA_FEATURES_TABLE;
  199. if($feature != '' && $feature != null){
  200. $wpdb->update($table,array('feature_text'=>$feature),array('item_id'=>$item_id, 'feature_id'=>$feature_id),'%s','%d');
  201. }
  202. elseif($feature == '' && $feature == null) {
  203. $sql = 'DELETE FROM '. $table . ' WHERE feature_id='.$feature_id;
  204. $wpdb->query($sql);
  205. }
  206. }
  207. }
  208. ?>