/** * Funcion que se le pasa un array de viales especial y te devuelve solo los llenos * @param array $viales * @return boolean */ public static function getVialesLlenos($viales) { $vialesLlenos = array(); //Si quieren solo los viales llenos foreach ($viales as $idVial => $title) { //Vamos a buscar los viales que tienen fecha de extracción $query = db_select('node', 'n'); $query->join('field_data_field_vial_fecha_de_extracci_n', 'fvfe', 'n.nid = fvfe.entity_id'); $query->join('field_data_field_vial_tipo_de_vial', 'tipoVial', 'n.nid = tipoVial.entity_id'); $query->join('field_data_field_ayuntamiento', 'ayun', 'n.nid = ayun.entity_id'); $query->leftJoin('field_data_field_veterinario', 'veter', 'n.nid = veter.entity_id'); $result = $query->fields('n', array('nid'))->fields('tipoVial', array('field_vial_tipo_de_vial_value'))->fields('ayun', array('field_ayuntamiento_target_id'))->fields('veter', array('field_veterinario_target_id'))->condition('nid', $idVial, '=')->execute(); if ($result) { while ($record = $result->fetchAssoc()) { $vialesLlenos[$record['nid']]['titulo'] = $title; $vialesLlenos[$record['nid']]['tipoDeVial'] = $record['field_vial_tipo_de_vial_value']; $vialesLlenos[$record['nid']]['ayuntamiento'] = bbiLab_getUserById($record['field_ayuntamiento_target_id']); $vialesLlenos[$record['nid']]['veterinario'] = bbiLab_getUserById($record['field_veterinario_target_id']); } } else { //no tiene viales llenos return FALSE; } } return $vialesLlenos; }
public static function send_buffer_salida() { //Vamos a recorrer los conectores activos $serversNames = BbiConector::getServerNameActivos(); foreach ($serversNames as $uid => $serverName) { $queue = DrupalQueue::get('bufferSalida' . $serverName); $remote = new CodeServer($serverName); $remote->config->request_timeout = 20; //Tiempo de espera de lectura en segundos, especificado por un float (p.ej. 10.5).Por omisión se utiliza el valor del ajuste default_socket_timeout de php.ini. $time = microtime(TRUE); watchdog('pruebatiempo', 'inicio total ' . $time); $max = (int) BbiConector::getMaxTimeExecution(bbiLab_getUserById($uid)); while (($item = BbiBuffer::get_item_from_buffer($queue)) && microtime(TRUE) - $time < $max) { watchdog('pruebatiempo', 'inicio una prueba ' . (microtime(TRUE) - $time)); if ($item) { if ($remote->write_element_from_buffer(serialize($item))) { BbiBuffer::remove_item_from_buffer($queue, $item); //Lo ha metido, lo borramos del buffer de salida } else { $item = $item ? $item : 'no hay elemento'; BbiBuffer::insert_item_error_buffer($serverName, $item); // Ha fallado lo metemos en el buffer de errores de salida específico. } } } } }