function send_content_ready($token, $username, $format, $importdata, $fetchnow = false) { global $REMOTEWWWROOT; require_once get_config('docroot') . 'import/lib.php'; list($user, $authinstance) = find_remote_user($username, $REMOTEWWWROOT); if (!$user) { throw new ImportException(null, "Could not find user {$username} for {$REMOTEWWWROOT}"); } // go verify the token if (!($queue = get_record('import_queue', 'token', $token, 'host', $REMOTEWWWROOT))) { throw new ImportException(null, "Could not find queue record with given token for username {$username} for {$REMOTEWWWROOT}"); } if (strtotime($queue->expirytime) < time()) { throw new ImportException(null, "Queue record has expired"); } $class = null; try { $class = PluginImport::class_from_format($format); } catch (Exception $e) { throw new ImportException(null, "Invalid format {$format}"); } $queue->format = $format; if ($class == 'PluginImportLeap') { // don't import persondata over mnet // because it will just silently overwrite stuff // which is not really desirable. $queue->loglevel = get_config('leapovermnetloglevel'); $importdata['skippersondata'] = true; } $queue->data = serialize($importdata); update_record('import_queue', $queue); $tr = new MnetImporterTransport($queue); try { $tr->validate_import_data(); } catch (Exception $e) { throw new ImportException(null, 'Invalid importdata: ' . $e->getMessage()); } if (!array_key_exists('totalsize', $importdata)) { throw new ImportException(null, 'Invalid importdata: missing totalsize'); } if (!$user->quota_allowed($importdata['totalsize'])) { $e = new ImportException(null, 'Exceeded user quota'); $e->set_log_off(); throw $e; } $result = new StdClass(); if ($fetchnow && PluginImport::import_immediately_allowed()) { // either immediately spawn a curl request to go fetch the file $importer = PluginImport::create_importer($queue->id, $tr, $queue); $importer->prepare(); try { $importer->validate_transported_data($tr); } catch (Exception $e) { throw new ImportException(null, 'Invalid importdata: ' . $e->getMessage()); } $importer->process(); $importer->cleanup(); delete_records('import_queue', 'id', $queue->id); $result->status = true; $result->type = 'complete'; $returndata = $importer->get_return_data(); $result->querystring = '?'; foreach ($importer->get_return_data() as $k => $v) { $result->querystring .= $k . '=' . $v . '&'; } $importer->get('importertransport')->cleanup(); } else { // or set ready to 1 for the next cronjob to go fetch it. $result->status = set_field('import_queue', 'ready', 1, 'id', $queue->id); $result->type = 'queued'; } return $result; }