function countReceivers($listids, $filters, $mailid = 0) { if (empty($listids)) { return 0; } JPluginHelper::importPlugin('acymailing'); $this->dispatcher = JDispatcher::getInstance(); $query = new acyQuery(); JArrayHelper::toInteger($listids); $query->from = '#__acymailing_listsub as listsub'; $query->join[] = '#__acymailing_subscriber as sub ON sub.subid = listsub.subid'; $query->where[] = 'listsub.listid IN (' . implode(',', $listids) . ') AND listsub.status=1'; $config = acymailing_config(); if ($config->get('require_confirmation')) { $query->where[] = 'sub.confirmed = 1'; } $query->where[] = 'sub.enabled = 1 AND sub.accept = 1'; if ($this->onlynew && !empty($mailid)) { $query->leftjoin[] = '#__acymailing_userstats as userstats ON sub.subid = userstats.subid AND userstats.mailid = ' . intval($mailid); $query->where[] = 'userstats.subid IS NULL'; } if (!empty($filters['type'])) { foreach ($filters['type'] as $num => $oneType) { if (empty($oneType)) { continue; } $this->dispatcher->trigger('onAcyProcessFilter_' . $oneType, array(&$query, $filters[$num][$oneType], $num)); } } return $query->count(); }
private function _getDataFromDB($field, $valueField, $titleField) { $tableName = acymailing_secureField($field->options['tableName']); $dbName = acymailing_secureField($field->options['dbName']); $whereCond = !empty($field->options['whereCond']) ? $field->options['whereCond'] : ''; $whereOp = !empty($field->options['whereOperator']) ? $field->options['whereOperator'] : ''; $whereValue = !empty($field->options['whereValue']) ? $field->options['whereValue'] : ''; $orderByField = !empty($field->options['orderField']) ? acymailing_secureField($field->options['orderField']) : ''; $orderByValue = !empty($field->options['orderValue']) ? acymailing_secureField($field->options['orderValue']) : ''; if ($dbName == 'current') { $this->database->setQuery('SELECT DATABASE()'); $dbName = $this->database->loadResult(); } $query = 'SELECT `' . $valueField . '`, `' . $titleField . '` FROM `' . $dbName . '`.`' . $tableName . '`'; $query .= ' WHERE `' . $valueField . '`<>\'\' AND `' . $titleField . '`<>\'\''; if (!empty($whereValue) && !empty($whereCond)) { $filterClass = acymailing_get('class.filter'); $queryClass = new acyQuery(); $query .= ' AND ' . $queryClass->convertQuery($tableName, $whereCond, $whereOp, $whereValue); } $query .= ' GROUP BY `' . $valueField . '`, `' . $titleField . '`'; $query .= !empty($orderByField) ? ' ORDER BY `' . $orderByField . '` ' . $orderByValue : ''; try { $this->database->setQuery($query); $res = $this->database->loadObjectList(); } catch (Exception $e) { acymailing_display($e->getMessage(), 'error'); $res = array(); } return $res; }