/** * Listen to the minute cron in order to sync data to ElasticSearch * * @param string $hook the name of the hook * @param string $type the type of the hook * @param string $returnvalue current return value * @param array $params supplied params * * @return void */ public static function minuteSync($hook, $type, $returnvalue, $params) { $setting = elasticsearch_get_setting('sync'); if ($setting !== 'yes') { // sync not enabled return; } $client = elasticsearch_get_client(); if (empty($client)) { return; } $starttime = (int) elgg_extract('time', $params, time()); // delete first $client->bulkDeleteDocuments(); $update_actions = array('no_index_ts', 'update', 'reindex'); foreach ($update_actions as $action) { $options = elasticsearch_get_bulk_options($action); if (empty($options)) { continue; } $getter = ''; if ($action === 'no_index_ts') { $getter = 'elgg_get_entities'; } $time_left = self::batchSync($options, $starttime, $getter); if ($time_left === false) { return; } } }
$options['count'] = true; $count = elgg_get_entities($options); $content .= '<tr>'; $content .= '<td>' . elgg_echo('elasticsearch:stats:elgg:no_index_ts') . '</td>'; $content .= "<td>{$count}</td>"; $content .= '</tr>'; // content to update $options = elasticsearch_get_bulk_options('update'); $options['count'] = true; $count = elgg_get_entities_from_private_settings($options); $content .= '<tr>'; $content .= '<td>' . elgg_echo('elasticsearch:stats:elgg:update') . '</td>'; $content .= "<td>{$count}</td>"; $content .= '</tr>'; // content to reindex $options = elasticsearch_get_bulk_options('reindex'); $count = 0; if (!empty($options)) { $options['count'] = true; $count = elgg_get_entities_from_private_settings($options); } $content .= '<tr>'; $content .= '<td>' . elgg_echo('elasticsearch:stats:elgg:reindex'); $reindex_title = elgg_echo('elasticsearch:stats:elgg:reindex:action'); $last_ts = (int) elasticsearch_get_setting('reindex_ts'); if (!empty($last_ts)) { $reindex_title .= ' ' . elgg_echo('elasticsearch:stats:elgg:reindex:last_ts', [date('c', $last_ts)]); } $content .= elgg_view('output/url', ['confirm' => true, 'href' => 'action/elasticsearch/admin/reindex', 'text' => elgg_view_icon('refresh'), 'title' => $reindex_title, 'class' => 'mlm']); $content .= '</td>'; $content .= "<td>{$count}</td>";