Пример #1
0
 /**
  * 
  *
  * @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;
 }
Пример #2
0
 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;
?>
;
Пример #4
0
 /**
  * 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;
 }