/** * Modifies an element query * * @param DbCommand $query * @param mixed $value * @return null|false */ public function modifyElementsQuery(DbCommand $query, $value) { $handle = $this->model->handle; $query->addSelect('count(follows.id) AS ' . craft()->content->fieldColumnPrefix . $handle); $query->leftJoin('follows follows', 'follows.elementId = elements.id'); }
/** * Modifies an element query targeting elements of this type. * * @param DbCommand $query * @param ElementCriteriaModel $criteria * @return mixed */ public function modifyElementsQuery(DbCommand $query, ElementCriteriaModel $criteria) { $query->addSelect('forms.id, forms.fieldLayoutId, forms.groupId, forms.name, forms.handle, forms.titleFormat, forms.displaySectionTitles, forms.redirectUri, forms.submitAction, forms.submitButtonText, forms.notificationEnabled, forms.notificationRecipients, forms.notificationSubject, forms.notificationSenderName, forms.notificationSenderEmail, forms.notificationReplyToEmail ')->join('sproutforms_forms forms', 'forms.id = elements.id'); if ($criteria->totalEntries) { $query->addSelect('COUNT(entries.id) totalEntries'); $query->leftJoin('sproutforms_entries entries', 'entries.formId = forms.id'); } if ($criteria->numberOfFields) { $query->addSelect('COUNT(fields.id) numberOfFields'); $query->leftJoin('fieldlayoutfields fields', 'fields.layoutId = forms.fieldLayoutId'); } if ($criteria->handle) { $query->andWhere(DbHelper::parseParam('forms.handle', $criteria->handle, $query->params)); } if ($criteria->groupId) { $query->join('sproutforms_formgroups formgroups', 'formgroups.id = forms.groupId'); $query->andWhere(DbHelper::parseParam('forms.groupId', $criteria->groupId, $query->params)); } }