getpairs.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. /**
  3. * Get product pairs for lite.
  4. *
  5. * @param string $mode
  6. * @param int $programID
  7. * @param string|array $append
  8. * @param string|int $shadow all | 0 | 1
  9. * @return array
  10. */
  11. public function getPairs($mode = '', $programID = 0, $append = '', $shadow = 0)
  12. {
  13. if(defined('TUTORIAL')) return $this->loadModel('tutorial')->getProductPairs();
  14. if($this->app->rawModule == 'feedback' && ($this->app->rawMethod == 'productsetting' || $this->app->rawMethod == 'products')) return parent::getPairs($mode, $programID, $append, $shadow);
  15. $projects = $this->loadModel('project')->getPairsByProgram();
  16. $projectIdList = array_keys($projects);
  17. $projectProducts = $this->dao->select('t1.branch, t1.plan, t2.*')
  18. ->from(TABLE_PROJECTPRODUCT)->alias('t1')
  19. ->leftJoin(TABLE_PRODUCT)->alias('t2')
  20. ->on('t1.product = t2.id')
  21. ->where('t2.deleted')->eq(0)
  22. ->andWhere('t1.project')->in($projectIdList)
  23. ->beginIF(!$this->app->user->admin and $this->config->vision == 'rnd')->andWhere('t2.id')->in($this->app->user->view->products)->fi()
  24. ->andWhere('t2.vision')->eq($this->config->vision)
  25. ->fetchPairs('id', 'id');
  26. $products = $this->dao->select("*, IF(INSTR(' closed', status) < 2, 0, 1) AS isClosed")
  27. ->from(TABLE_PRODUCT)
  28. ->where('1 = 1')
  29. ->beginIF(strpos($mode, 'all') === false)->andWhere('deleted')->eq(0)->fi()
  30. ->beginIF($programID)->andWhere('program')->eq($programID)->fi()
  31. ->beginIF(strpos($mode, 'noclosed') !== false)->andWhere('status')->ne('closed')->fi()
  32. ->beginIF(!$this->app->user->admin and $this->config->vision == 'rnd')->andWhere('id')->in($this->app->user->view->products)->fi()
  33. ->beginIF($shadow !== 'all')->andWhere('shadow')->eq((int)$shadow)->fi()
  34. ->andWhere('vision')->eq($this->config->vision)
  35. ->andWhere('id')->in($projectProducts)
  36. ->fetchPairs('id', 'name');
  37. return $products;
  38. }