/core/components/migx/processors/mgr/resourcerelations/getlist.php

https://gitlab.com/haque.mdmanzurul/nga-loyaltymatters · PHP · 110 lines · 68 code · 26 blank · 16 comment · 16 complexity · 7ddb38b081568c9dc69a231921a226e7 MD5 · raw file

  1. <?php
  2. //if (!$modx->hasPermission('quip.thread_list')) return $modx->error->failure($modx->lexicon('access_denied'));
  3. $config = $modx->migx->customconfigs;
  4. $prefix = isset ($config['prefix']) && !empty($config['prefix']) ? $config['prefix'] : null;
  5. $packageName = $config['packageName'];
  6. $packagepath = $modx->getOption('core_path') . 'components/' . $packageName . '/';
  7. $modelpath = $packagepath . 'model/';
  8. $modx->addPackage($packageName, $modelpath, $prefix);
  9. $classname = $config['classname'];
  10. $joinalias = isset($config['join_alias']) ? $config['join_alias'] : '';
  11. if (!empty($joinalias)) {
  12. if ($fkMeta = $modx->getFKDefinition($classname, $joinalias)){
  13. $joinclass = $fkMeta['class'];
  14. }
  15. else{
  16. $joinalias = '';
  17. }
  18. }
  19. if ($this->modx->lexicon) {
  20. $this->modx->lexicon->load($packageName . ':default');
  21. }
  22. /* setup default properties */
  23. $isLimit = !empty($scriptProperties['limit']);
  24. $isCombo = !empty($scriptProperties['combo']);
  25. $start = $modx->getOption('start', $scriptProperties, 0);
  26. $limit = $modx->getOption('limit', $scriptProperties, 20);
  27. $sort = $modx->getOption('sort', $scriptProperties, 'id');
  28. $dir = $modx->getOption('dir', $scriptProperties, 'ASC');
  29. $showtrash = $modx->getOption('showtrash', $scriptProperties, '');
  30. $resource_id = $modx->getOption('resource_id', $scriptProperties, false);
  31. $c = $modx->newQuery($classname);
  32. $c->select($modx->getSelectColumns($classname, $classname));
  33. if (!empty($joinalias)) {
  34. /*
  35. if ($joinFkMeta = $modx->getFKDefinition($joinclass, 'Resource')){
  36. $localkey = $joinFkMeta['local'];
  37. }
  38. */
  39. $c->leftjoin($joinclass, $joinalias);
  40. $c->select($modx->getSelectColumns($joinclass, $joinalias, 'Joined_'));
  41. }
  42. /*
  43. $c->leftjoin('poProduktFormat','ProduktFormat', 'format_id = poFormat.id AND product_id ='.$scriptProperties['object_id']);
  44. //$c->select($classname.'.*');
  45. $c->select('ProduktFormat.format_id,ProduktFormat.calctype,ProduktFormat.price,ProduktFormat.published AS pof_published');
  46. */
  47. //print_r($config['gridfilters']);
  48. if (isset($config['gridfilters']) && count($config['gridfilters']) > 0) {
  49. foreach ($config['gridfilters'] as $filter) {
  50. if (!empty($filter['getlistwhere'])) {
  51. $requestvalue = $modx->getOption($filter['name'], $scriptProperties, 'all');
  52. if (isset($scriptProperties[$filter['name']]) && $requestvalue != 'all') {
  53. $chunk = $modx->newObject('modChunk');
  54. $chunk->setCacheable(false);
  55. $chunk->setContent($filter['getlistwhere']);
  56. $where = $chunk->process($scriptProperties);
  57. $where = strpos($where, '{') === 0 ? $modx->fromJson($where) : $where;
  58. $c->where($where);
  59. }
  60. }
  61. }
  62. }
  63. if ($modx->migx->checkForConnectedResource($resource_id, $config)) {
  64. if (!empty($joinalias)) {
  65. $c->where(array($joinalias . '.resource_id' => $resource_id));
  66. } else {
  67. $c->where(array($classname . '.resource_id' => $resource_id));
  68. }
  69. }
  70. $count = $modx->getCount($classname, $c);
  71. $c->sortby('source_id', $dir);
  72. $c->sortby('target_id', $dir);
  73. if ($isCombo || $isLimit) {
  74. $c->limit($limit, $start);
  75. }
  76. //$c->sortby($sort,$dir);
  77. //$c->prepare();echo $c->toSql();
  78. $collection = $modx->getCollection($classname, $c);
  79. $rows = array();
  80. foreach ($collection as $object) {
  81. $row = $object->toArray();
  82. $rows[] = $row;
  83. }