Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中从另一个函数初始化变量_Php_Variables_Drupal_Drupal 7_Drupal Rules - Fatal编程技术网

如何在php中从另一个函数初始化变量

如何在php中从另一个函数初始化变量,php,variables,drupal,drupal-7,drupal-rules,Php,Variables,Drupal,Drupal 7,Drupal Rules,我正在为Drupal建立一个自定义规则,以便在容量达到极限时发送电子邮件。是的,我在Drupal Stackexchange中问过这个问题,但是他们说这是php问题。由于我一直都在思考这个问题,而不是作为一名开发人员,我需要寻求帮助。希望我能正确解释 我的问题是我不确定如何将事件总容量的值从事件中拉入变量$registration 我将附上我的规则以向您显示该代码。我已经初始化了变量,但是,我知道我需要以某种方式将该值拉入规则中的变量或规则的脚本/文件中。一旦我得到了这个值,我就应该能够判断是真

我正在为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;
  }
}
我真的认为我需要连接到事件,以便它知道如何提取该值。然而,我不完全确定要看什么才能得到这个。我读过关于设置变量的书,但是我没有发现任何东西可以帮助我从我正在构建的脚本/文件之外的其他位置提取变量

希望我能清楚地知道一些有用的方向。谢谢大家!

编辑*********添加注册\事件\计数()函数

function registration\u event\u count($entity\u type,$entity\u id,$registration\u id=NULL,$reset=FALSE){
$count=&drupal\u static(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
如果(!$count | |$reset){
$query=db_select('registration','r');
$query->addExpression('sum(count)','count');
$query->condition('entity\u id',$entity\u id);
$query->condition('entity\u type',$entity\u type);
如果($registration\u id!=NULL){
$query->condition('registration\u id',$registration\u id',);
}
$query->condition('state',registration\u get\u active\u states(),'IN');
$result=$query->execute();
$count=$result->fetchField();
$count=($count='')-0:$count;
}
//允许其他MOD覆盖计数。
$settings=注册\实体\设置($entity\类型,$entity\ id);
$context=array(
“实体类型”=>$实体类型,
“实体id”=>$entity\u id,
'registration\u id'=>$registration\u id,
“设置”=>$settings,
);
drupal\u alter('registration\u event\u count',$count,$context);
返回$count;
}

如果有人看到这个,我可以得到返回为“1”或true的值。我现在只需要获取if语句来触发rules操作。一旦我弄明白了,我就发布。

你能发布函数
注册\u事件\u计数()的代码吗?
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;
}