/** * * * @param string $ps_field * @param */ public function getMediaReplicationStatus($ps_field, $ps_target) { $va_media_info = $this->getMediaInfo($ps_field); if (!isset($va_media_info['REPLICATION_STATUS'][$ps_target])) { return null; } $va_targets = $this->getMediaReplicationTargets($ps_field, 'original'); $va_target_info = $va_targets[$ps_target]; $vn_current_status = $va_media_info['REPLICATION_STATUS'][$ps_target]; $vs_repl_key = isset($va_media_info['REPLICATION_KEYS']) && isset($va_media_info['REPLICATION_KEYS'][$ps_target]) ? $va_media_info['REPLICATION_KEYS'][$ps_target] : ""; switch ($vn_current_status) { case __CA_MEDIA_REPLICATION_STATE_PENDING__: $va_status_info = array('code' => __CA_MEDIA_REPLICATION_STATE_PENDING__, 'key' => $vs_repl_key, 'status' => _t('Replication pending')); break; case __CA_MEDIA_REPLICATION_STATE_UPLOADING__: $va_status_info = array('code' => __CA_MEDIA_REPLICATION_STATE_UPLOADING__, 'key' => $vs_repl_key, 'status' => _t('Uploading media')); break; case __CA_MEDIA_REPLICATION_STATE_PROCESSING__: $o_replicator = new MediaReplicator(); if (($vn_status = $o_replicator->getReplicationStatus($va_target_info, $va_media_info['REPLICATION_KEYS'][$ps_target])) != __CA_MEDIA_REPLICATION_STATE_PROCESSING__) { // set to new status $va_media_info = $this->getMediaInfo($ps_field); $va_media_info['REPLICATION_STATUS'][$ps_target] = $vn_status; $va_media_info['REPLICATION_LOG'][$ps_target][] = array('STATUS' => $vn_status, 'DATETIME' => time()); $this->setMode(ACCESS_WRITE); $this->setMediaInfo($ps_field, $va_media_info); $this->update(); return $this->getMediaReplicationStatus($ps_field, $ps_target); } $va_status_info = array('code' => __CA_MEDIA_REPLICATION_STATE_PROCESSING__, 'key' => $vs_repl_key, 'status' => _t('Media is being processed by replication target')); break; case __CA_MEDIA_REPLICATION_STATE_COMPLETE__: $va_status_info = array('code' => __CA_MEDIA_REPLICATION_STATE_COMPLETE__, 'key' => $vs_repl_key, 'status' => _t('Replication complete')); break; case __CA_MEDIA_REPLICATION_STATE_ERROR__: $va_status_info = array('code' => __CA_MEDIA_REPLICATION_STATE_ERROR__, 'key' => $vs_repl_key, 'status' => _t('Replication failed')); break; default: $va_status_info = array('code' => 0, 'key' => $vs_repl_key, 'status' => _t('Status unknown')); break; } return $va_status_info; }
public function process($pa_parameters) { // Check status of replication and either (a) start replication (b) check replication // if checking replication and it's done then write data back to database $va_report = array(); $o_eventlog = new EventLog(); $o_replicator = new MediaReplicator(); $o_dm = Datamodel::load(); if (!($t_instance = $o_dm->getInstanceByTableName($pa_parameters['TABLE'], true))) { $o_eventlog->log(array("CODE" => "ERR", "SOURCE" => "TaskQueue->mediaReplication->process()", "MESSAGE" => _t("Table %1 is invalid", $pa_parameters['TABLE']))); $va_report['errors'][] = _t("Table %1 is invalid", $pa_parameters['TABLE']); return false; } if (!$t_instance->load($pa_parameters['PK_VAL'])) { $o_eventlog->log(array("CODE" => "ERR", "SOURCE" => "TaskQueue->mediaReplication->process()", "MESSAGE" => _t("Row_id %1 is invalid for table %2", $pa_parameters['PK_VAL'], $pa_parameters['TABLE']))); $va_report['errors'][] = _t("Row_id %1 is invalid for table %2", $pa_parameters['PK_VAL'], $pa_parameters['TABLE']); return false; } $ps_field = $pa_parameters['FIELD']; $ps_target = $pa_parameters['TARGET']; $ps_version = $pa_parameters['VERSION']; $pa_target_info = $pa_parameters['TARGET_INFO']; $pa_data = $pa_parameters['DATA']; $va_media_info = $t_instance->getMediaInfo($ps_field); $va_media_info['REPLICATION_STATUS'][$ps_target] = __CA_MEDIA_REPLICATION_STATE_UPLOADING__; $va_media_info['REPLICATION_LOG'][$ps_target][] = array('STATUS' => __CA_MEDIA_REPLICATION_STATE_UPLOADING__, 'DATETIME' => time()); $va_media_info['REPLICATION_KEYS'][$ps_target] = null; $t_instance->setMediaInfo($ps_field, $va_media_info); $t_instance->setMode(ACCESS_WRITE); $t_instance->update(array('processingMediaForReplication' => true)); if (!is_array($va_media_desc = $t_instance->_FIELD_VALUES[$ps_field])) { $o_eventlog->log(array("CODE" => "ERR", "SOURCE" => "TaskQueue->mediaReplication->process()", "MESSAGE" => _t("Could not record replication status: %1 has no media description data", $ps_field))); $va_report['errors'][] = _t("Could not record replication status: %1 has no media description data", $ps_field); return false; } try { if ($vs_key = $o_replicator->replicateMedia($t_instance->getMediaPath($ps_field, $ps_version), $pa_target_info, $pa_data)) { $va_media_info['REPLICATION_STATUS'][$ps_target] = __CA_MEDIA_REPLICATION_STATE_PROCESSING__; $va_media_info['REPLICATION_LOG'][$ps_target][] = array('STATUS' => __CA_MEDIA_REPLICATION_STATE_PROCESSING__, 'DATETIME' => time()); $va_media_info['REPLICATION_KEYS'][$ps_target] = $vs_key; $t_instance->setMediaInfo($ps_field, $va_media_info); $t_instance->update(array('processingMediaForReplication' => true)); $o_eventlog->log(array("CODE" => "DEBG", "SOURCE" => "TaskQueue->mediaReplication->process()", "MESSAGE" => _t('Media replicated to %1 for processing', $pa_target_info['name']))); $va_report['notes'][] = _t('Media replicated to %1 for processing', $pa_target_info['name']); } else { $va_media_info['REPLICATION_STATUS'][$ps_target] = __CA_MEDIA_REPLICATION_STATE_ERROR__; $va_media_info['REPLICATION_LOG'][$ps_target][] = array('STATUS' => __CA_MEDIA_REPLICATION_STATE_ERROR__, 'DATETIME' => time()); $va_media_info['REPLICATION_KEYS'][$ps_target] = null; $t_instance->setMediaInfo($ps_field, $va_media_info); $t_instance->update(array('processingMediaForReplication' => true)); $o_eventlog->log(array("CODE" => "ERR", "SOURCE" => "TaskQueue->mediaReplication->process()", "MESSAGE" => _t('Media replication for %1 failed', $pa_target_info['name']))); $va_report['errors'][] = _t('Media replication for %1 failed', $pa_target_info['name']); } } catch (Exception $e) { $va_media_info['REPLICATION_STATUS'][$ps_target] = __CA_MEDIA_REPLICATION_STATE_ERROR__; $va_media_info['REPLICATION_LOG'][$ps_target][] = array('STATUS' => __CA_MEDIA_REPLICATION_STATE_ERROR__, 'DATETIME' => time()); $va_media_info['REPLICATION_KEYS'][$ps_target] = null; $t_instance->setMediaInfo($ps_field, $va_media_info); $t_instance->update(array('processingMediaForReplication' => true)); $o_eventlog->log(array("CODE" => "ERR", "SOURCE" => "TaskQueue->mediaReplication->process()", "MESSAGE" => _t('Media replication for %1 failed: %2', $pa_target_info['name'], $e->getMessage()))); $va_report['errors'][] = _t('Media replication for %1 failed: %2', $pa_target_info['name'], $e->getMessage()); } return $va_report; }
?> _is_primary_' + id).val('1'); jQuery('.caObjectRepresentationPrimaryIndicator').hide(); if (id != <?php print (int) $vn_primary_id; ?> ) { jQuery('#<?php print $vs_id_prefix; ?> _is_primary_indicator_' + id).show(); } } var caMediaReplicationMimeTypes = <?php print json_encode(MediaReplicator::getMediaReplicationMimeTypes()); ?> ; var caAnnoEditor<?php print $vs_id_prefix; ?> ; var caImageCenterEditor<?php print $vs_id_prefix; ?> ; var caRelationBundle<?php print $vs_id_prefix; ?> ;
/** * Returns list of available visualization plugins * * @return array */ public static function getAvailableMediaReplicationPlugins() { if (is_array(MediaReplicator::$s_plugin_names)) { return MediaReplicator::$s_plugin_names; } $o_viz = new MediaReplicator(); MediaReplicator::$s_plugin_names = array(); $r_dir = opendir(__CA_APP_DIR__ . '/core/Plugins/MediaReplication'); while (($vs_plugin = readdir($r_dir)) !== false) { if ($vs_plugin == "BaseMediaReplicationPlugin.php") { continue; } if (preg_match("/^([A-Za-z_]+[A-Za-z0-9_]*).php\$/", $vs_plugin, $va_matches)) { MediaReplicator::$s_plugin_names[] = $va_matches[1]; } } sort(MediaReplicator::$s_plugin_names); return MediaReplicator::$s_plugin_names; }