private function _addExportCriteria(AmForms_ExportModel $export, &$criteria)
{
// Do we even have criteria?
if (!$export->criteria) {
return false;
}
// Get form
$form = craft()->amForms_forms->getFormById($export->formId);
if (!$form) {
return false;
}
// Gather related criteria
$relatedTo = array('or');
// Get fields
$fields = $this->getExportFields($form);
foreach ($fields as $field) {
if (is_array($field)) {
$field = (object) $field;
// Fix standard fields
}
// Is field set in criteria?
if (!isset($export->criteria[$field->id])) {
continue;
}
// Add criteria based on field type
switch ($field->type) {
case 'Assets':
case 'Entries':
foreach ($export->criteria[$field->id] as $criteriaValue) {
if (!empty($criteriaValue) && is_array($criteriaValue) && count($criteriaValue)) {
$relatedTo[] = $criteriaValue[0];
}
}
break;
case 'Checkboxes':
$setCriteria = array('or');
foreach ($export->criteria[$field->id] as $criteriaValue) {
if (!empty($criteriaValue)) {
foreach ($criteriaValue as $subCriteriaValue) {
$setCriteria[] = '*"' . $subCriteriaValue . '"*';
}
}
}
$criteria->{$field->handle} = $setCriteria;
break;
case 'Lightswitch':
$valueFound = false;
foreach ($export->criteria[$field->id] as $criteriaValue) {
if (!empty($criteriaValue)) {
$valueFound = true;
$criteria->{$field->handle} = $criteriaValue;
}
}
if (!$valueFound) {
$criteria->{$field->handle} = 'not 1';
}
break;
case 'Dropdown':
case 'PlainText':
case 'RadioButtons':
$setCriteria = array('or');
foreach ($export->criteria[$field->id] as $criteriaValue) {
if (!empty($criteriaValue)) {
$setCriteria[] = $criteriaValue;
}
}
$criteria->{$field->handle} = $setCriteria;
break;
}
}
// Set relations criteria
if (count($relatedTo) > 1) {
$criteria->relatedTo = $relatedTo;
}
}