我正在为Drupal构建一个自定义规则,以便在容量达到限制时发送电子邮件。是的,我确实在Drupal Stackexchange中问过这个,但是他们说这是一个php问题。而且由于我不得不解决这个问题,而不是开发人员,我需要寻求帮助。希望我能正确解释。
我的问题是我不确定如何将事件总容量的值从事件中提取到变量$registration
。
我会附上我的规则来向您展示该代码。我有变量初始化,但是,我知道我需要以某种方式将该值拉入我的规则中的变量或我对规则的脚本/文件中。一旦我得到了价值,我应该能够确定真或假。
function registration_capacity_rules_condition_info() {
$conditions = array(
'registration_capacity_event_is_at_capacity' => array(
'label' => t('Event has reached maximum registrations'),
'group' => t('MY MODULE'),
'parameters' => array(
'registration' => array(
'type' => 'registration',
'label' => t('The registration event capacity'),
),
),
),
);
return $conditions;
}
function registration_capacity_event_is_at_capacity($registration) {
if ($registration == registration_event_count()) {
return TRUE;
}
}
我真的认为我需要连接到事件,因此它知道如何提取该值。但是,我不完全确定该怎么做才能得到这个。我已经阅读了有关设置变量的内容,但我找不到任何帮助我从我正在构建的脚本/文件之外的其他位置拉出它。
希望我对一些有用的方向足够清楚。谢谢!
编辑**********添加registration_event_count()函数
function registration_event_count($entity_type, $entity_id, $registration_id = NULL, $reset = FALSE) {
$count = &drupal_static(__FUNCTION__ . '_' . $entity_type . '_' . $entity_id . '_' . $registration_id, FALSE);
if (!$count || $reset) {
$query = db_select('registration', 'r');
$query->addExpression('sum(count)', 'count');
$query->condition('entity_id', $entity_id);
$query->condition('entity_type', $entity_type);
if ($registration_id != NULL) {
$query->condition('registration_id', $registration_id, '<>');
}
$query->condition('state', registration_get_active_states(), 'IN');
$result = $query->execute();
$count = $result->fetchField();
$count = ($count == '') ? 0 : $count;
}
// Allow other mods to override count.
$settings = registration_entity_settings($entity_type, $entity_id);
$context = array(
'entity_type' => $entity_type,
'entity_id' => $entity_id,
'registration_id' => $registration_id,
'settings' => $settings,
);
drupal_alter('registration_event_count', $count, $context);
return $count;
}
如果有人看过这个,我可以将值返回为“1”或者为真。我现在只需要获取if语句来触发规则操作。一旦我搞清楚,我会发布。