if (!defined('FW')) die('Forbidden'); /** * @since 2.0.0 */ final class FW_Ext_Backups_Task_Collection { /** * @var string * @since 2.0.0 */ private $id; /** * @var string * @since 2.0.0 */ private $title; /** * @var FW_Ext_Backups_Task[] * @since 2.0.0 */ private $tasks = array(); /** * @param string $id */ public function __construct($id = null) { $this->id = (string)(is_null($id) ? fw_rand_md5() : $id); } /** * @param FW_Ext_Backups_Task $task * * @return bool * @since 2.0.0 */ public function add_task(FW_Ext_Backups_Task $task) { if (in_array($task, $this->tasks, true)) { return false; } else { foreach ($this->tasks as $_task) { if ($_task->get_id() === $task->get_id()) { return false; } } $this->tasks[] = $task; return true; } } /** * @return string * @since 2.0.0 */ public function get_id() { return $this->id; } public function get_title() { if (is_null($this->title)) { return fw_id_to_title($this->id); } else { return $this->title; } } public function set_title($title) { $this->title = $title; return $this; } /** * @return FW_Ext_Backups_Task[] * @since 2.0.0 */ public function get_tasks() { return $this->tasks; } /** * Empty out the collection internal state and return the deleted tasks * * @return FW_Ext_Backups_Task[] * @since 2.0.17 */ public function empty_collection() { $tmp = $this->tasks; $this->tasks = array(); return $tmp; } /** * @param string $id * * @return FW_Ext_Backups_Task|null * @since 2.0.0 * * Note: The returned instance will be changed by reference https://3v4l.org/Ps5hs (use `clone $instance`) */ public function get_task($id) { if (empty($this->tasks)) { return null; } foreach ($this->tasks as $task) { if ($task->get_id() === $id) { return $task; } } return null; } /** * If the collection is in a state that can be Cancelled/Aborted * @return bool */ public function is_cancelable() { $tasks = $this->get_tasks(); if ( ($first_task = reset($tasks)) && !$first_task->get_last_execution_start_time() ) { return true; // The execution haven't started } foreach ($tasks as $task) { if ( ! $task->get_last_execution_start_time() ) { return false; // We reached a pending task } elseif ( ! $task->get_last_execution_end_time() ) { /** @var FW_Extension_Backups $ext */ $ext = fw_ext('backups'); if (($task->get_last_execution_start_time() + $ext->get_task_step_execution_threshold()) < time()) { return true; // The task is execution for a too long time } else { return false; } } } return false; } /** * @return array * @since 2.0.0 */ public function to_array() { $tasks = array(); foreach ($this->get_tasks() as $task) { $tasks[] = $task->to_array(); } return array( 'id' => $this->get_id(), 'title' => $this->title, 'tasks' => $tasks, ); } /** * @param array $c * * @return FW_Ext_Backups_Task_Collection * @since 2.0.0 */ public static function from_array(array $c) { if (empty($c)) { return null; } $collection = new self($c['id']); if (isset($c['title'])) { $collection->set_title($c['title']); } foreach ($c['tasks'] as $t) { $collection->add_task( FW_Ext_Backups_Task::from_array($t) ); } return $collection; } } if (!defined('FW')) die('Forbidden'); /** * @internal */ class _FW_Ext_Backups_Log { /** * @var FW_Access_Key|null */ private static $access_key; /** * @return FW_Access_Key|null */ private static function get_access_key() { if (empty(self::$access_key)) { self::$access_key = new FW_Access_Key('fw:ext:backups:log'); } return self::$access_key; } /** * @return FW_Extension_Backups */ private static function backups() { return fw_ext('backups'); } private static $wp_option = 'fw:ext:backups:log'; private static $log_limit = 30; public function __construct() { add_action('fw:ext:backups:task:fail', array($this, '_action_task_fail')); add_action('fw:ext:backups:tasks:success', array($this, '_action_tasks_success')); add_action('fw_ext_backups_page_footer', array($this, '_action_page_footer')); add_action('fw:ext:backups:enqueue_scripts', array($this, '_action_enqueue_scripts')); add_filter( 'fw_ext_backups_db_export_exclude_option', array($this, '_filter_fw_ext_backups_db_export_exclude_option'), 10, 3 ); add_filter( 'fw_ext_backups_db_restore_keep_options', array($this, '_filter_fw_ext_backups_db_restore_keep_options') ); add_filter( 'fw_ext_backups_ajax_status_extra_response', array($this, '_filter_fw_ext_backups_ajax_status_extra_response') ); } private function get_log() { return get_option(self::$wp_option, array()); } private function set_log($log) { while (count($log) > self::$log_limit) { array_pop($log); } return update_option(self::$wp_option, $log, false); } private function add_log($type, $title, array $data = array()) { if (!in_array($type, array('success', 'info', 'warning', 'error'))) { trigger_error('Invalid log type: '. $type, E_USER_WARNING); } $log = $this->get_log(); array_unshift($log, array( 'type' => $type, 'title' => $title, 'data' => $data, 'time' => time(), )); $this->set_log($log); } private function render_log() { return fw_render_view(dirname(__FILE__) .'/view.php', array( 'log' => $this->get_log() )); } /** * @param FW_Ext_Backups_Task $task * @internal */ public function _action_task_fail(FW_Ext_Backups_Task $task) { $this->add_log( 'error', self::backups()->tasks()->get_task_type_title($task->get_type()) . (is_wp_error($task->get_result()) ? ': '. $task->get_result()->get_error_message() : ''), is_wp_error($task->get_result()) ? (array)$task->get_result()->get_error_data() : array() ); } /** * @param FW_Ext_Backups_Task_Collection $tasks * @internal */ public function _action_tasks_success(FW_Ext_Backups_Task_Collection $tasks) { $this->add_log( 'success', $tasks->get_title() ); } /** * @param array $options {option_name: true} * @return array */ public function _filter_fw_ext_backups_db_restore_keep_options($options) { $options[ self::$wp_option] = true; return $options; } /** * @param bool $exclude * @param string $option_name * @param bool $is_full_backup * @return bool */ public function _filter_fw_ext_backups_db_export_exclude_option($exclude, $option_name, $is_full_backup) { if (!$is_full_backup && $option_name === self::$wp_option) { return true; } return $exclude; } /** * @internal */ public function _action_page_footer() { echo '
'; } /** * @param $data * @return mixed * @internal */ public function _filter_fw_ext_backups_ajax_status_extra_response($data) { $data['log'] = array( 'html' => $this->render_log(), ); return $data; } /** * @internal */ public function _action_enqueue_scripts() { wp_enqueue_style( 'fw-ext-backups-log', self::backups()->get_uri('/includes/log/styles.css'), array(), self::backups()->manifest->get_version() ); wp_enqueue_script( 'fw-ext-backups-log', self::backups()->get_uri('/includes/log/scripts.js'), array('fw'), self::backups()->manifest->get_version() ); } } new _FW_Ext_Backups_Log(); Encuentro AgroTech Maule

¡MUCHAS GRACIAS POR PARTICIPAR!

00
Days
:
00
Hours
:
00
Minutes
:
00
Seconds
Reproducir vídeo

ENCUENTRO AGROTECH MAULE 2022

Por cuarto año consecutivo Maule Alimenta y el Programa Fortalece Pyme Maule, llevarán a cabo AgroTech Maule, punto de encuentro para el sector agrícola y agroindustrial de la región que en su versión 2022, vuelve a la presencialidad desde 2019 para vincular las necesidades tecnológicas privados, con la oferta de productos y servicios disponibles en el mercado nacional.

Presentaciones

1

Networking

3

Sala de exhibición

2

Virtual

4

 

El evento gratuito al público tendrá lugar el próximo jueves 17 de noviembre en la Facultad de Ingeniería de la Universidad de Talca, en su campus Curicó, y contará con 3 instancias; un gran pabellón con stands de proveedores de tecnologías, un salón para charlas y exposiciones y un sector de foodtrucks para la alimentación de los participantes.

DETALLE DEL EVENTO Programa del evento

10:30 hrs

Ceremonia de Inauguración

speaker-1

Paula Gajardo

speaker-2

Felipe Torti

12:00 hrs

La revolución de los datos. Agricultura Digital

speaker-1

Dr. Daniel Aguayo Villegas

13:00 hrs

Patio de Comidas: Sector Food Trucks habilitado para almuerzo.

14:30 hrs

Valorización de residuos, generación de energía y reciclaje de nutrientes

Ricardo Jesús Velásquez Parra

15:00 hrs

Desarrollo de tecnología de telemetría y telecontrol para la gestión eficiente del recurso hídrico

speaker-1

Gastón Sagredo Tapia

15:30 hrs

Investigación, desarrollo e innovación a medida para la industria de los alimentos

speaker-1

Freddy Barrientos Gómez

16:00 hrs

Avances tecnológicos desde la telemetría para el agro

speaker-1

Martin Lopez

16:30 hrs

Manufactura avanzada para la mejora en la productividad industrial

speaker-1

Rodrigo Salas Rivera

16:30 hrs

Demostración de Agricultura de Precisión de Piloto con Monitor 2630, piloto Automático y del ecosistema conectado John Deere con JDLink y Operations Center

speaker-1

Dr. Daniel Aguayo Villegas

17:00 hrs

Valorización de Residuos Orgánicos por medio de la Biotecnología de la Mosca Soldado Negro

speaker-1

María Cristina Au

17:30 hrs

¿Por qué los emprendedores en alimentos deben innovar en sus productos? TIPS para emprendedores en el desarrollo de productos.

Alejandro Osses

18:30 hrs

Cierre evento

TE PERDISTE ALGUNA PRESENTACIÓN Presentaciones AgroTech Maule 2020

CONOCE A NUESTROS Relatores

María Cristina Au

Gerente Desarrollo F4F

Dr. Daniel Aguayo Villegas

Jefe Agricultura Digital, Salfa Agrícola.

Freddy Barrientos Gómez

Responsable Servicios Tecnológicos CEAP

Gastón Sagredo Tapia

Gerente Comercial de Rubicon Water

CONOCE AQUELLOS QUE ESTARÁN CON NOSOTROS Proveedores Tecnológicos

QUIERES SABER MÁS Últimas Noticias

Encuentro AgroTech Maule 2022 acerca soluciones tecnológicas a la

Por cuarto año consecutivo Maule Alimenta y el Programa

https://www.agrotechmaule.cl/author/epoblete/

Atención Emprendedores:  Buscamos los mejores Food Truck para AgroTech Maule

Manifiesta tu interés en  https://forms.gle/15a7mrX1WPD275z48¡Sé parte de nuestro patio de

https://www.agrotechmaule.cl/author/sortega/

Anuncian realización de tercera versión del encuentro Agrotech Maule

Vincular las necesidades tecnológicas de las empresas agrícolas y

https://www.agrotechmaule.cl/author/sortega/

AgroTech Maule conectó al sector con 36 organizaciones vinculadas

Fomentar el intercambio de experiencias como un pilar de

https://www.agrotechmaule.cl/author/sortega/

UTalca y Corfo realizaron primera versión de “Feria AgroTech

Autoridades regionales y universitarias participaron en la Inauguración de

https://www.agrotechmaule.cl/author/sortega/

Fortalecimiento a la Agroindustria de la Región del Maule

A través de alianza entre Maule Alimenta y Thinkagro,

CONOCE LA EXPERIENCIA

Revisa la AgroTech Maule 2021

Durante su segundo año de realización la propuesta  de Agrotech Maule  tuvo excelente respuesta del público, asistiendo un total de 426 personas las que se inscribieron para participar en; la sala de exposición con 37 stands,  2 salones de conferencias en torno a la gestión del agua, espacios para compartir información con potenciales clientes (networking) y ocio mediante una divertida trivia del agro. Los ciber asistentes  concretaron 1.620 visitas a stands de organizaciones vinculadas a soluciones tecnológicas que expusieron sus servicios.

ESTEMOS EN CONTACTO Get Direction to the Event Hall

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam diam sem, iaculis molestie urna eu, facilisis eleifend felis. Vestibulum vestibulum urna velit, a molestie mi condimentum eget. Vestibulum euismod est et lectus elementum, at euismod orci hendrerit. Duis imperdiet id lectus iaculis feugiat. Donec consectetur erat sed dolor lobortis, vitae ultricies est fringilla. Fusce eleifend orci odio, quis auctor augue facilisis sit amet.

    ¡TE ESPERAMOS!

    Organizan

    Apoyan

    Colaboran