KataoProductPeer.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  1. <?php
  2. class KataoProductPeer extends BaseKataoProductPeer {
  3. public static function getSelectedProducts($katao_suppliers_ids = array(), $katao_period_id = false, $katao_node_id = false) {
  4. $return = array();
  5. $return['list'] = self::getAllGroupedBySupplier($katao_suppliers_ids, $katao_period_id, $katao_node_id);
  6. $return['selected'] = array();
  7. if ($katao_node_id) {
  8. $criteria = new Criteria();
  9. $criteria->addSelectColumn(KataoNodeProductPeer::KATAO_PRODUCT_ID);
  10. $criteria->addJoin(KataoNodeProductPeer::KATAO_PRODUCT_ID, self::ID);
  11. $criterion = $criteria->getNewCriterion(self::IS_ARCHIVED, null);
  12. $criterion->addOr($criteria->getNewCriterion(self::IS_ARCHIVED, false));
  13. $criteria->addAnd($criterion);
  14. $criteria->add(KataoNodeProductPeer::KATAO_NODE_ID, $katao_node_id);
  15. $rs = self::doSelectRS($criteria);
  16. while ($rs->next()) {
  17. $return['selected'][] = $rs->getInt(1);
  18. }
  19. } elseif ($katao_period_id) {
  20. $criteria = new Criteria();
  21. $criteria->addSelectColumn(KataoPeriodProductPeer::KATAO_PRODUCT_ID);
  22. $criteria->addJoin(KataoPeriodProductPeer::KATAO_PRODUCT_ID, self::ID);
  23. $criterion = $criteria->getNewCriterion(self::IS_ARCHIVED, null);
  24. $criterion->addOr($criteria->getNewCriterion(self::IS_ARCHIVED, false));
  25. $criteria->addAnd($criterion);
  26. $criteria->add(KataoPeriodProductPeer::KATAO_PERIOD_ID, $katao_period_id);
  27. $rs = self::doSelectRS($criteria);
  28. while ($rs->next()) {
  29. $return['selected'][] = $rs->getInt(1);
  30. }
  31. }
  32. return $return;
  33. }
  34. public static function getAllGroupedBySupplier($katao_suppliers_ids = array(), $katao_period_id = false, $katao_node_id = false) {
  35. $return = array();
  36. if (0 < count($katao_suppliers_ids)) {
  37. if ($katao_node_id && $katao_period_id) {
  38. $criteria = new Criteria();
  39. $criteria->addSelectColumn(KataoPeriodSupplierPeer::KATAO_SUPPLIER_ID);
  40. $criteria->addSelectColumn(KataoPeriodSupplierPeer::INCLUDE_ALL_PRODUCTS);
  41. $criteria->add(KataoPeriodSupplierPeer::KATAO_PERIOD_ID, $katao_period_id);
  42. $criteria->add(KataoPeriodSupplierPeer::KATAO_SUPPLIER_ID, $katao_suppliers_ids, Criteria::IN);
  43. $rs = self::doSelectRS($criteria);
  44. $suppliers_with_all_products = array();
  45. $suppliers_with_some_products = array();
  46. while ($rs->next()) {
  47. if ($rs->getInt(2)) {
  48. $suppliers_with_all_products[] = $rs->getInt(1);
  49. } else {
  50. $suppliers_with_some_products[] = $rs->getInt(1);
  51. }
  52. }
  53. $criteria = new Criteria();
  54. $criteria->addSelectColumn(KataoSupplierNodePeer::KATAO_SUPPLIER_ID);
  55. $criteria->add(KataoSupplierNodePeer::KATAO_SUPPLIER_ID, $katao_suppliers_ids, Criteria::IN);
  56. $criteria->add(KataoSupplierNodePeer::KATAO_NODE_ID, $katao_node_id);
  57. $rs = self::doSelectRS($criteria);
  58. while ($rs->next()) {
  59. $suppliers_with_all_products[] = $rs->getInt(1);
  60. }
  61. if (0 < count($suppliers_with_some_products)) {
  62. /* retrieve all selected products for the current period */
  63. $criteria = new Criteria();
  64. $criteria->addSelectColumn(KataoSupplierPeer::NAME);
  65. $criteria->addSelectColumn(self::ID);
  66. $criteria->addSelectColumn(self::NAME);
  67. $criteria->addJoin(self::KATAO_SUPPLIER_ID, KataoSupplierPeer::ID);
  68. $criteria->addJoin(self::ID, KataoPeriodProductPeer::KATAO_PRODUCT_ID);
  69. $criterion = $criteria->getNewCriterion(self::IS_ARCHIVED, null);
  70. $criterion->addOr($criteria->getNewCriterion(self::IS_ARCHIVED, false));
  71. $criteria->addAnd($criterion);
  72. $criteria->add(KataoSupplierPeer::ID, $suppliers_with_some_products, Criteria::IN);
  73. $criteria->add(KataoPeriodProductPeer::KATAO_PERIOD_ID, $katao_period_id);
  74. $criteria->addAscendingOrderByColumn(KataoSupplierPeer::NAME);
  75. $criteria->addAscendingOrderByColumn(self::NAME);
  76. $rs = self::doSelectRS($criteria);
  77. while ($rs->next()) {
  78. $return[$rs->getString(1)][$rs->getInt(2)] = $rs->getString(3);
  79. }
  80. }
  81. if (0 < count($suppliers_with_all_products)) {
  82. /* retrieve all products from suppliers with all products for the current period */
  83. $criteria = new Criteria();
  84. $criteria->addSelectColumn(KataoSupplierPeer::NAME);
  85. $criteria->addSelectColumn(self::ID);
  86. $criteria->addSelectColumn(self::NAME);
  87. $criteria->addJoin(self::KATAO_SUPPLIER_ID, KataoSupplierPeer::ID);
  88. $criterion = $criteria->getNewCriterion(self::IS_ARCHIVED, null);
  89. $criterion->addOr($criteria->getNewCriterion(self::IS_ARCHIVED, false));
  90. $criteria->addAnd($criterion);
  91. $criteria->add(KataoSupplierPeer::ID, $suppliers_with_all_products, Criteria::IN);
  92. $criteria->addAscendingOrderByColumn(KataoSupplierPeer::NAME);
  93. $criteria->addAscendingOrderByColumn(self::NAME);
  94. $rs = self::doSelectRS($criteria);
  95. while ($rs->next()) {
  96. $return[$rs->getString(1)][$rs->getInt(2)] = $rs->getString(3);
  97. }
  98. }
  99. } else {
  100. $criteria = new Criteria();
  101. $criteria->addSelectColumn(KataoSupplierPeer::NAME);
  102. $criteria->addSelectColumn(self::ID);
  103. $criteria->addSelectColumn(self::NAME);
  104. $criteria->addJoin(self::KATAO_SUPPLIER_ID, KataoSupplierPeer::ID);
  105. $criterion = $criteria->getNewCriterion(self::IS_ARCHIVED, null);
  106. $criterion->addOr($criteria->getNewCriterion(self::IS_ARCHIVED, false));
  107. $criteria->addAnd($criterion);
  108. $criteria->add(KataoSupplierPeer::ID, $katao_suppliers_ids, Criteria::IN);
  109. $criteria->addAscendingOrderByColumn(KataoSupplierPeer::NAME);
  110. $criteria->addAscendingOrderByColumn(self::NAME);
  111. $rs = self::doSelectRS($criteria);
  112. while ($rs->next()) {
  113. $return[$rs->getString(1)][$rs->getInt(2)] = $rs->getString(3);
  114. }
  115. }
  116. }
  117. return $return;
  118. }
  119. /**
  120. * KataoProductPeer::retrieveByUrlIdentifier()
  121. *
  122. * @param string $url_identifier
  123. * @return KataoProduct
  124. */
  125. public static function retrieveByUrlIdentifier($url_identifier) {
  126. $criteria = new Criteria();
  127. $criteria->add(self::URL_IDENTIFIER, $url_identifier);
  128. return self::doSelectOne($criteria);
  129. }
  130. /**
  131. * KataoProductPeer::getPagerForAllByProductFamilyUrlIdentifier()
  132. *
  133. * @param string $url_identifier
  134. * @param integer $page
  135. * @return
  136. */
  137. public static function getPagerForAllByProductFamilyUrlIdentifier($url_identifier, $page = 1) {
  138. $sf_user = sfContext::getInstance()->getUser();
  139. $criteria = new Criteria();
  140. $criteria->addJoin(self::KATAO_PRODUCT_FAMILY_ID, KataoProductFamilyPeer::ID);
  141. $criteria->add(self::ID, sfContext::getInstance()->getUser()->getAvailableProducts(), Criteria::IN);
  142. $criterion = $criteria->getNewCriterion(self::IS_ARCHIVED, null);
  143. $criterion->addOr($criteria->getNewCriterion(self::IS_ARCHIVED, false));
  144. $criteria->addAnd($criterion);
  145. $criteria->add(KataoProductFamilyPeer::URL_IDENTIFIER, $url_identifier);
  146. $criteria->addAscendingOrderByColumn(self::NAME);
  147. $pager = new sfPropelPager('KataoProduct', sfConfig::get('app_katao_pager'));
  148. $pager->setCriteria($criteria);
  149. $pager->setPage($page);
  150. $pager->init();
  151. return $pager;
  152. }
  153. public static function getAllProductsTree() {
  154. $return = array();
  155. $sf_user = sfContext::getInstance()->getUser();
  156. $criteria = new Criteria();
  157. $criteria->addSelectColumn(self::NAME);
  158. $criteria->addSelectColumn(self::URL_IDENTIFIER);
  159. $criteria->addSelectColumn(KataoProductFamilyPeer::NAME);
  160. $criteria->addSelectColumn(KataoProductFamilyPeer::URL_IDENTIFIER);
  161. $criteria->addSelectColumn(KataoProductCategoryPeer::NAME);
  162. $criteria->addSelectColumn(KataoProductCategoryPeer::URL_IDENTIFIER);
  163. $criteria->addJoin(self::KATAO_PRODUCT_FAMILY_ID, KataoProductFamilyPeer::ID);
  164. $criteria->addJoin(KataoProductFamilyPeer::KATAO_PRODUCT_CATEGORY_ID, KataoProductCategoryPeer::ID);
  165. $criteria->add(self::ID, sfContext::getInstance()->getUser()->getAvailableProducts(), Criteria::IN);
  166. $criterion = $criteria->getNewCriterion(self::IS_ARCHIVED, null);
  167. $criterion->addOr($criteria->getNewCriterion(self::IS_ARCHIVED, false));
  168. $criteria->addAnd($criterion);
  169. $criteria->addAscendingOrderByColumn(KataoProductCategoryPeer::SORT_ORDER);
  170. $criteria->addAscendingOrderByColumn(KataoProductFamilyPeer::NAME);
  171. $criteria->addAscendingOrderByColumn(self::NAME);
  172. $rs = self::doSelectRS($criteria);
  173. while ($rs->next()) {
  174. $katao_product_category_name = $rs->getString(5);
  175. $katao_product_category_url = $rs->getString(6);
  176. $katao_product_family_name = $rs->getString(3);
  177. $katao_product_family_url = $rs->getString(4);
  178. $katao_product_name = $rs->getString(1);
  179. $katao_product_url = $rs->getString(2);
  180. $return[$katao_product_category_url]['name'] = $katao_product_category_name;
  181. $return[$katao_product_category_url]['families'][$katao_product_family_url]['name'] = $katao_product_family_name;
  182. $return[$katao_product_category_url]['families'][$katao_product_family_url]['products'][$katao_product_url] = $katao_product_name;
  183. }
  184. return $return;
  185. }
  186. /**
  187. * KataoProductPeer::getPagerForAllBySupplierUrlIdentifier()
  188. *
  189. * @param string $url_identifier
  190. * @param integer $page
  191. * @return sfPropelPager
  192. */
  193. public static function getPagerForAllBySupplierUrlIdentifier($url_identifier, $page = 1) {
  194. $criteria = new Criteria();
  195. $criteria->addJoin(self::KATAO_SUPPLIER_ID, KataoSupplierPeer::ID);
  196. $criteria->add(self::ID, sfContext::getInstance()->getUser()->getAvailableProducts(), Criteria::IN);
  197. $criterion = $criteria->getNewCriterion(self::IS_ARCHIVED, null);
  198. $criterion->addOr($criteria->getNewCriterion(self::IS_ARCHIVED, false));
  199. $criteria->addAnd($criterion);
  200. $criteria->add(KataoSupplierPeer::URL_IDENTIFIER, $url_identifier);
  201. $criteria->addAscendingOrderByColumn(self::NAME);
  202. $pager = new sfPropelPager('KataoProduct', sfConfig::get('app_katao_pager'));
  203. $pager->setCriteria($criteria);
  204. $pager->setPage($page);
  205. $pager->init();
  206. return $pager;
  207. }
  208. /**
  209. * KataoProductPeer::getPagerForAllByProductCategoryUrlIdentifier()
  210. *
  211. * @param string $url_identifier
  212. * @param integer $page
  213. * @return sfPropelPager
  214. */
  215. public static function getPagerForAllByProductCategoryUrlIdentifier($url_identifier, $page = 1) {
  216. $sf_user = sfContext::getInstance()->getUser();
  217. $criteria = new Criteria();
  218. $criteria->addJoin(self::KATAO_PRODUCT_FAMILY_ID, KataoProductFamilyPeer::ID);
  219. $criteria->addJoin(KataoProductFamilyPeer::KATAO_PRODUCT_CATEGORY_ID, KataoProductCategoryPeer::ID);
  220. $criteria->add(self::ID, sfContext::getInstance()->getUser()->getAvailableProducts(), Criteria::IN);
  221. $criterion = $criteria->getNewCriterion(self::IS_ARCHIVED, null);
  222. $criterion->addOr($criteria->getNewCriterion(self::IS_ARCHIVED, false));
  223. $criteria->addAnd($criterion);
  224. $criteria->add(KataoProductCategoryPeer::URL_IDENTIFIER, $url_identifier);
  225. $criteria->addAscendingOrderByColumn(self::NAME);
  226. $pager = new sfPropelPager('KataoProduct', sfConfig::get('app_katao_pager'));
  227. $pager->setCriteria($criteria);
  228. $pager->setPage($page);
  229. $pager->init();
  230. return $pager;
  231. }
  232. /**
  233. * KataoProductPeer::getPagerForSearch()
  234. *
  235. * @param string $search
  236. * @param integer $page
  237. * @return sfPropelPager
  238. */
  239. public static function getPagerForSearch($search, $page = 1) {
  240. $sf_user = sfContext::getInstance()->getUser();
  241. $criteria = new Criteria();
  242. $criteria->addJoin(self::KATAO_PRODUCT_FAMILY_ID, KataoProductFamilyPeer::ID);
  243. $criteria->addJoin(KataoProductFamilyPeer::KATAO_PRODUCT_CATEGORY_ID, KataoProductCategoryPeer::ID);
  244. $criteria->add(self::ID, sfContext::getInstance()->getUser()->getAvailableProducts(), Criteria::IN);
  245. $criterion = $criteria->getNewCriterion(self::IS_ARCHIVED, null);
  246. $criterion->addOr($criteria->getNewCriterion(self::IS_ARCHIVED, false));
  247. $criteria->addAnd($criterion);
  248. $search_like = sprintf('%%%s%%', $search);
  249. $criterion = $criteria->getNewCriterion(self::REFERENCE, $search_like, Criteria::LIKE);
  250. $criterion->addOr($criteria->getNewCriterion(self::NAME, $search_like, Criteria::LIKE));
  251. $criterion->addOr($criteria->getNewCriterion(self::DESCRIPTION, $search_like, Criteria::LIKE));
  252. $criterion->addOr($criteria->getNewCriterion(KataoProductFamilyPeer::NAME, $search_like, Criteria::LIKE));
  253. $criterion->addOr($criteria->getNewCriterion(KataoProductCategoryPeer::NAME, $search_like, Criteria::LIKE));
  254. $criteria->addAnd($criterion);
  255. $criteria->addAscendingOrderByColumn(self::NAME);
  256. $pager = new sfPropelPager('KataoProduct', sfConfig::get('app_katao_pager'));
  257. $pager->setCriteria($criteria);
  258. $pager->setPage($page);
  259. $pager->init();
  260. return $pager;
  261. }
  262. public static function getAll() {
  263. $criteria = new Criteria();
  264. $sf_user = sfContext::getInstance()->getUser();
  265. if ($sf_user->isJustSupplier()) {
  266. $criteria->add(self::KATAO_SUPPLIER_ID, $sf_user->getInstance()->getKataoSupplierId());
  267. } elseif ($sf_user->isJustReferer()) {
  268. $criteria->addJoin(self::KATAO_SUPPLIER_ID, KataoSupplierPeer::ID);
  269. $criteria->add(KataoSupplierPeer::REFERER_ID, $sf_user->getInstance()->getKataoMemberId());
  270. }
  271. $criteria->addAscendingOrderByColumn(self::NAME);
  272. return self::doSelect($criteria);
  273. }
  274. /**
  275. * KataoProductPeer::getPagerForAll()
  276. *
  277. * @return sfPropelPager
  278. */
  279. public static function getPagerForAll($category_id = false, $supplier_id = false) {
  280. $criteria = new Criteria();
  281. $criteria->add(self::ID, sfContext::getInstance()->getUser()->getAvailableProducts(), Criteria::IN);
  282. $criterion = $criteria->getNewCriterion(self::IS_ARCHIVED, null);
  283. $criterion->addOr($criteria->getNewCriterion(self::IS_ARCHIVED, false));
  284. $criteria->addAnd($criterion);
  285. $criteria->addAscendingOrderByColumn(self::NAME);
  286. if ($category_id) {
  287. $criteria->addJoin(self::KATAO_PRODUCT_FAMILY_ID, KataoProductFamilyPeer::ID);
  288. $criteria->add(KataoProductFamilyPeer::KATAO_PRODUCT_CATEGORY_ID, $category_id);
  289. }
  290. if ($supplier_id) {
  291. $criteria->add(self::KATAO_SUPPLIER_ID, $supplier_id);
  292. }
  293. $pager = new sfPropelPager('KataoProduct', 10000);
  294. $pager->setCriteria($criteria);
  295. $pager->setPage(1);
  296. $pager->init();
  297. return $pager;
  298. }
  299. }