Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 5.2.2
    • Component/s: None
    • Labels:
      None

      Description

      To reproduce:

      • Install Domain Manager
      • Uninstall all registrar modules
      • Visit Billing > Services
      • See error

        PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ') AND `client_groups`.`company_id`='1' GROUP BY `services`.`id`)) AS `t_64614...' at line 1

      This is caused by the following code block in app/models/services.php:

      
              // Filter on type
              if (isset($filters['type']) && !is_null($filters['type'])) {
                  // Build a list of all the registrar modules
                  $registrar_modules = [];
                  $modules = $this->ModuleManager->getInstalled(['type' => 'registrar']);
      
                  foreach ($modules as $module) {
                      $registrar_modules[] = $module->id;
                  }
      
                  // Filter by domains
                  if ($filters['type'] == 'domains') {
                      $this->Record->where('packages.module_id', 'in', $registrar_modules);
                  }
      
                  // Filter by services
                  if ($filters['type'] == 'services') {
                      $this->Record->where('packages.module_id', 'not in', $registrar_modules);
                  }
              }
      

      Which causes an error when $registrar_modules is empty.

      A potential solution is to update to

              // Filter on type
              if (isset($filters['type']) && !is_null($filters['type'])) {
                  // Build a list of all the registrar modules
                  $registrar_modules = [];
                  $modules = $this->ModuleManager->getInstalled(['type' => 'registrar']);
      
                  foreach ($modules as $module) {
                      $registrar_modules[] = $module->id;
                  }
      
                  // Filter by domains
                  if ($filters['type'] == 'domains') {
                      $this->Record->where('packages.module_id', 'in', (empty($registrar_modules) ? [null] : $registrar_modules));
                  }
      
                  // Filter by services
                  if ($filters['type'] == 'services' && !empty($registrar_modules)) {
                      $this->Record->where('packages.module_id', 'not in', $registrar_modules);
                  }
              }
      

        Activity

        There are no comments yet on this issue.

          People

          • Assignee:
            jonathan Jonathan Reissmueller
            Reporter:
            jonathan Jonathan Reissmueller
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:
              Fix Release Date:
              14/Dec/21

              Time Tracking

              Estimated:
              Original Estimate - Not Specified
              Not Specified
              Remaining:
              Remaining Estimate - 0 minutes
              0m
              Logged:
              Time Spent - 32 minutes
              32m

                Agile