We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 52563
    • 12 Posts
    I am trying to modify the superbox select plugin to query a list of my extended user class (extUser) which simply adds a relation to a custom table to the user class.

    If I switch the 'classname' and 'displayfield' to the custom object I relate the users to, I can get a list of my custom objects just fine.

    If I try to switch the classname to 'extUser' (using username as a display field) I get no results.

    Here is a simple version of the getlist processor class.

    Can anyone tell me what I am missing?

    
    class SuperboxselectResourcesGetListProcessor extends modObjectGetListProcessor {
        public $classKey = 'extUser';
        public $languageTopics = array('superboxselect:default');
        public $defaultSortField = 'username';
        public $defaultSortDirection = 'DESC';
        public $objectType = 'resellers.extuser';
        
        public $displayField;
        
        public function prepareQueryBeforeCount(xPDOQuery $c) {
            
            // Get Properties
            $parents = explode(',', $this->getProperty('parents', '0'));
            $classKey = $this->getProperty('className', 'extUser');
            //$modx->log(3,'class key: ' . $classKey);
            $displayField = $this->getProperty('displayField', 'username');
            $this->displayField = $displayField;
            $resource_id = intval($this->getProperty('resource_id'));
            $context_key = $this->getProperty('context_key', false);
            $depth = $this->getProperty('depth', 10);
            $limitRelatedContext = $this->getProperty('limitRelatedContext', false);
            
            // Get the context of the current edited resource
            if (!$context_key) {
                $resource = $this->modx->getObject('modResource', $resource_id);
                $context_key = $resource->get('context_key');
            }
            
            $c->select(array('id', $displayField));
            
            $c->where(array(
                'deleted' => false,
                'published' => true
            ));
            return $c;
        }
        
        public function prepareQueryAfterCount(xPDOQuery $c) {
            $displayField = $this->getProperty('displayField', 'username');
            $c->sortby($displayField, 'ASC');
            return $c;
        }
    }
    
    return 'SuperboxselectResourcesGetListProcessor';
    

    This question has been answered by dmeganoski. See the first response.

    • discuss.answer
      • 52563
      • 12 Posts
      Quote from: dmeganoski at Aug 08, 2016, 08:24 PM
      I am trying to modify the superbox select plugin to query a list of my extended user class (extUser) which simply adds a relation to a custom table to the user class.

      If I switch the 'classname' and 'displayfield' to the custom object I relate the users to, I can get a list of my custom objects just fine.

      If I try to switch the classname to 'extUser' (using username as a display field) I get no results.

      Here is a simple version of the getlist processor class.

      Can anyone tell me what I am missing?

      
      class SuperboxselectResourcesGetListProcessor extends modObjectGetListProcessor {
          public $classKey = 'extUser';
          public $languageTopics = array('superboxselect:default');
          public $defaultSortField = 'username';
          public $defaultSortDirection = 'DESC';
          public $objectType = 'resellers.extuser';
          
          public $displayField;
          
          public function prepareQueryBeforeCount(xPDOQuery $c) {
              
              // Get Properties
              $parents = explode(',', $this->getProperty('parents', '0'));
              $classKey = $this->getProperty('className', 'extUser');
              //$modx->log(3,'class key: ' . $classKey);
              $displayField = $this->getProperty('displayField', 'username');
              $this->displayField = $displayField;
              $resource_id = intval($this->getProperty('resource_id'));
              $context_key = $this->getProperty('context_key', false);
              $depth = $this->getProperty('depth', 10);
              $limitRelatedContext = $this->getProperty('limitRelatedContext', false);
              
              // Get the context of the current edited resource
              if (!$context_key) {
                  $resource = $this->modx->getObject('modResource', $resource_id);
                  $context_key = $resource->get('context_key');
              }
              
              $c->select(array('id', $displayField));
              
              $c->where(array(
                  'deleted' => false,
                  'published' => true
              ));
              return $c;
          }
          
          public function prepareQueryAfterCount(xPDOQuery $c) {
              $displayField = $this->getProperty('displayField', 'username');
              $c->sortby($displayField, 'ASC');
              return $c;
          }
      }
      
      return 'SuperboxselectResourcesGetListProcessor';
      

      Edit: Ahhh I'm an idiot. Users don't have a 'deleted' or 'published' columns. of course.