public function executeImpl($partner_id, $subp_id, $puser_id, $partner_prefix, $puser_kuser) { $fileField = "csv_file"; $profileId = $this->getP("profile_id"); if (count($_FILES) == 0) { $this->addError(APIErrors::NO_FILES_RECEIVED); return; } if (!@$_FILES[$fileField]) { $this->addError(APIErrors::INVALID_FILE_FIELD, $fileField); return; } // first we copy the file to "content/batchfiles/[partner_id]/" $origFilename = $_FILES[$fileField]['name']; $fileInfo = pathinfo($origFilename); $extension = strtolower($fileInfo['extension']); if ($extension != "csv") { $this->addError(APIErrors::INVALID_FILE_EXTENSION); return; } $job = new BatchJob(); $job->setPartnerId($partner_id); $job->save(); $syncKey = $job->getSyncKey(BatchJob::FILE_SYNC_BATCHJOB_SUB_TYPE_BULKUPLOADCSV); // kFileSyncUtils::file_put_contents($syncKey, file_get_contents($csvFileData["tmp_name"])); try { kFileSyncUtils::moveFromFile($_FILES[$fileField]['tmp_name'], $syncKey, true); } catch (Exception $e) { throw new KalturaAPIException(KalturaErrors::BULK_UPLOAD_CREATE_CSV_FILE_SYNC_ERROR); } $csvPath = kFileSyncUtils::getLocalFilePathForKey($syncKey); $data = new kBulkUploadJobData(); $data->setCsvFilePath($csvPath); $data->setUserId($puser_kuser->getPuserId()); $data->setUploadedBy($puser_kuser->getPuserName()); $data->setConversionProfileId($profileId); kJobsManager::addJob($job, $data, BatchJobType::BULKUPLOAD); $this->addMsg("status", "ok"); }
/** * Function adds bulk upload job to the queue * @param Partner $partner * @param kBulkUploadJobData $jobData * @param string $bulkUploadType * @throws APIException * @return BatchJob */ public static function addBulkUploadJob(Partner $partner, kBulkUploadJobData $jobData, $bulkUploadType = null) { $job = new BatchJob(); $job->setPartnerId($partner->getId()); $job->setJobType(BatchJobType::BULKUPLOAD); $job->setJobSubType($bulkUploadType); $job->save(); $syncKey = $job->getSyncKey(BatchJob::FILE_SYNC_BATCHJOB_SUB_TYPE_BULKUPLOAD); // kFileSyncUtils::file_put_contents($syncKey, file_get_contents($csvFileData["tmp_name"])); try { kFileSyncUtils::moveFromFile($jobData->getFilePath(), $syncKey, true); } catch (Exception $e) { throw new APIException(APIErrors::BULK_UPLOAD_CREATE_CSV_FILE_SYNC_ERROR); } $filePath = kFileSyncUtils::getLocalFilePathForKey($syncKey); if (is_null($jobData)) { throw new APIException(APIErrors::BULK_UPLOAD_BULK_UPLOAD_TYPE_NOT_VALID, $bulkUploadType); } if (!$jobData->getBulkUploadObjectType()) { $jobData->setBulkUploadObjectType(BulkUploadObjectType::ENTRY); } $jobData->setFilePath($filePath); if ($jobData->getBulkUploadObjectType() == BulkUploadObjectType::ENTRY && !$jobData->getObjectData()->getConversionProfileId()) { $jobData->setConversionProfileId($partner->getDefaultConversionProfileId()); $kmcVersion = $partner->getKmcVersion(); $check = null; if ($kmcVersion < 2) { $check = ConversionProfilePeer::retrieveByPK($jobData->getConversionProfileId()); } else { $check = conversionProfile2Peer::retrieveByPK($jobData->getConversionProfileId()); } if (!$check) { throw new APIException(APIErrors::CONVERSION_PROFILE_ID_NOT_FOUND, $jobData->getConversionProfileId()); } } return kJobsManager::addJob($job, $jobData, BatchJobType::BULKUPLOAD, kPluginableEnumsManager::apiToCore("BulkUploadType", $bulkUploadType)); }