public function execute() { $jobId = $this->getRequestParameter("id"); $partnerId = $this->getRequestParameter("pid"); $type = $this->getRequestParameter("type"); $c = new Criteria(); $c->addAnd(BatchJobPeer::ID, $jobId); $c->addAnd(BatchJobPeer::PARTNER_ID, $partnerId); $c->addAnd(BatchJobPeer::JOB_TYPE, BatchJobType::BULKUPLOAD); $batchJob = BatchJobPeer::doSelectOne($c); if (!$batchJob) { die("File not found"); } header("Content-Type: text/plain; charset=UTF-8"); if ($type == "log") { $bulkUploadResults = BulkUploadResultPeer::retrieveByBulkUploadId($jobId); if (!count($bulkUploadResults)) { $syncKey = $batchJob->getSyncKey(BatchJob::FILE_SYNC_BATCHJOB_SUB_TYPE_BULKUPLOADLOG); if (kFileSyncUtils::file_exists($syncKey, true)) { $content = kFileSyncUtils::file_get_contents($syncKey, true); echo $content; die; } die("Log file is not ready"); } $STDOUT = fopen('php://output', 'w'); $data = $batchJob->getData(); foreach ($bulkUploadResults as $bulkUploadResult) { $values = array($bulkUploadResult->getTitle(), $bulkUploadResult->getDescription(), $bulkUploadResult->getTags(), $bulkUploadResult->getUrl(), $bulkUploadResult->getContentType()); if ($data instanceof kBulkUploadJobData && $data->getCsvVersion() > kBulkUploadJobData::BULK_UPLOAD_CSV_VERSION_V1) { $values[] = $bulkUploadResult->getConversionProfileId(); $values[] = $bulkUploadResult->getAccessControlProfileId(); $values[] = $bulkUploadResult->getCategory(); $values[] = $bulkUploadResult->getScheduleStartDate('Y-m-d\\TH:i:s'); $values[] = $bulkUploadResult->getScheduleEndDate('Y-m-d\\TH:i:s'); $values[] = $bulkUploadResult->getThumbnailUrl(); $values[] = $bulkUploadResult->getPartnerData(); } $values[] = $bulkUploadResult->getEntryId(); $values[] = $bulkUploadResult->getEntryStatus(); $values[] = $bulkUploadResult->getErrorDescription(); fputcsv($STDOUT, $values); } fclose($STDOUT); } else { $syncKey = $batchJob->getSyncKey(BatchJob::FILE_SYNC_BATCHJOB_SUB_TYPE_BULKUPLOADCSV); if (kFileSyncUtils::file_exists($syncKey, true)) { $content = kFileSyncUtils::file_get_contents($syncKey, true); echo $content; die; } else { die("File not found"); } } die; // no template needed }
/** * batch updateBulkUploadResults action adds KalturaBulkUploadResult to the DB * * @action updateBulkUploadResults * @param int $bulkUploadJobId The id of the bulk upload job * @return int the number of unclosed entries */ function updateBulkUploadResultsAction($bulkUploadJobId) { $unclosedEntriesCount = 0; $errorObjects = 0; $unclosedEntries = array(); $bulkUploadResults = BulkUploadResultPeer::retrieveByBulkUploadId($bulkUploadJobId); $bulkUpload = BatchJobPeer::retrieveByPK($bulkUploadJobId); if ($bulkUpload) { foreach ($bulkUploadResults as $bulkUploadResult) { /* @var $bulkUploadResult BulkUploadResult */ $status = $bulkUploadResult->updateStatusFromObject(); if ($status == BulkUploadResultStatus::IN_PROGRESS) { $unclosedEntriesCount++; } if ($status == BulkUploadResultStatus::ERROR) { $errorObjects++; } } $data = $bulkUpload->getData(); if ($data && $data instanceof kBulkUploadJobData) { //TODO: find some better alternative, find out why the bulk upload result which reports error is // returning objectId "null" for failed entry assets, rather than the entryId to which they pertain. //$data->setNumOfEntries(BulkUploadResultPeer::countWithEntryByBulkUploadId($bulkUploadJobId)); $data->setNumOfObjects(BulkUploadResultPeer::countWithObjectTypeByBulkUploadId($bulkUploadJobId, $data->getBulkUploadObjectType())); $data->setNumOfErrorObjects($errorObjects); $bulkUpload->setData($data); $bulkUpload->save(); } } return $unclosedEntriesCount; }
/** * Returns the log file for bulk upload job * @param BatchJob $batchJob bulk upload batchjob * @return SimpleXMLElement */ public static function getBulkUploadMrssXml($batchJob) { $actionsMap = array(BulkUploadAction::ADD => 'add', BulkUploadAction::UPDATE => 'update', BulkUploadAction::DELETE => 'delete'); $bulkUploadResults = BulkUploadResultPeer::retrieveByBulkUploadId($batchJob->getId()); if (!count($bulkUploadResults)) { return null; } header("Content-Type: text/xml; charset=UTF-8"); $data = $batchJob->getData(); $xmlElement = new SimpleXMLElement('<mrss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>'); $xmlElement->addAttribute('version', '2.0'); // $xmlElement->addAttribute('xmlns:content', 'http://www.w3.org/2001/XMLSchema-instance'); // $xmlElement->addAttribute('xmlns', 'http://' . kConf::get('www_host') . '/' . SchemaType::SYNDICATION); // $xmlElement->addAttribute('xsi:noNamespaceSchemaLocation', 'http://' . kConf::get('cdn_host') . '/api_v3/service/schema/action/serve/type/' . SchemaType::SYNDICATION); $channel = $xmlElement->addChild('channel'); // insert all entries to instance pool $pks = array(); foreach ($bulkUploadResults as $bulkUploadResult) { /* @var $bulkUploadResult BulkUploadResult */ $pks[] = $bulkUploadResult->getEntryId(); } entryPeer::retrieveByPKs($pks); foreach ($bulkUploadResults as $bulkUploadResult) { /* @var $bulkUploadResult BulkUploadResult */ $item = $channel->addChild('item'); $result = $item->addChild('result'); $result->addChild('errorDescription', self::stringToSafeXml($bulkUploadResult->getErrorDescription())); // $result->addChild('entryStatus', self::stringToSafeXml($bulkUploadResult->getEntryStatus())); // $result->addChild('entryStatusName', self::stringToSafeXml($title)); $action = isset($actionsMap[$bulkUploadResult->getAction()]) ? $actionsMap[$bulkUploadResult->getAction()] : $actionsMap[BulkUploadAction::ADD]; $item->addChild('action', $action); $entry = $bulkUploadResult->getObject(); if (!$entry) { continue; } kMrssManager::getEntryMrssXml($entry, $item); } return $xmlElement; }
/** * batch updateBulkUploadResults action adds KalturaBulkUploadResult to the DB * * @action updateBulkUploadResults * @param int $bulkUploadJobId The id of the bulk upload job * @return int the number of unclosed entries */ function updateBulkUploadResultsAction($bulkUploadJobId) { $closedStatuses = array(KalturaEntryStatus::ERROR_IMPORTING, KalturaEntryStatus::ERROR_CONVERTING, KalturaEntryStatus::READY, KalturaEntryStatus::DELETED); $unclosedEntries = array(); $bulkUploadResults = BulkUploadResultPeer::retrieveByBulkUploadId($bulkUploadJobId); $bulkUpload = BatchJobPeer::retrieveByPK($bulkUploadJobId); if ($bulkUpload) { $data = $bulkUpload->getData(); if ($data && $data instanceof kBulkUploadJobData) { $data->setNumOfEntries(count($bulkUploadResults)); $bulkUpload->setData($data); $bulkUpload->save(); } } foreach ($bulkUploadResults as $bulkUploadResult) { $status = $bulkUploadResult->updateStatusFromEntry(); if (in_array($bulkUploadResult->getEntryStatus(), $closedStatuses)) { $this->updateEntryThumbnail($bulkUploadResult); continue; } if (in_array($status, $closedStatuses)) { continue; } $unclosedEntries[$bulkUploadResult->getEntryId()] = $status; } return count($unclosedEntries); }
/** * Returns the log file for bulk upload job * @param BatchJob $batchJob bulk upload batchjob * @param bool $addHeaderRow flag signifying whether the header row should be added to the CSV. Default value is false. */ public static function writeBulkUploadLogFile($batchJob, $addHeaderRow = false) { if ($batchJob->getJobSubType() != null && $batchJob->getJobSubType() != self::getBulkUploadTypeCoreValue(BulkUploadCsvType::CSV)) { return; } header("Content-Type: text/plain; charset=UTF-8"); $bulkUploadResults = BulkUploadResultPeer::retrieveByBulkUploadId($batchJob->getId()); if (!count($bulkUploadResults)) { die("Log file is not ready"); } $STDOUT = fopen('php://output', 'w'); $data = $batchJob->getData(); /* @var $data kBulkUploadJobData */ //Add header row to the output CSV if ($addHeaderRow) { $headerRow = self::getHeaderRow($data->getBulkUploadObjectType()); $headerRow[] = "action"; $headerRow[] = "resultStatus"; $headerRow[] = "objectId"; $headerRow[] = "objectStatus"; $headerRow[] = "errorDescription"; fputcsv($STDOUT, $headerRow); } foreach ($bulkUploadResults as $bulkUploadResult) { /* @var $bulkUploadResult BulkUploadResult */ switch ($bulkUploadResult->getObjectType()) { case BulkUploadObjectType::ENTRY: $values = self::writeEntryBulkUploadResults($bulkUploadResult, $data); break; case BulkUploadObjectType::CATEGORY: $values = self::writeCategoryBulkUploadResults($bulkUploadResult, $data); break; case BulkUploadObjectType::CATEGORY_USER: $values = self::writeCategoryUserBulkUploadResults($bulkUploadResult, $data); break; case BulkUploadObjectType::USER: $values = self::writeUserBulkUploadResults($bulkUploadResult, $data); break; default: break; } $values[] = $bulkUploadResult->getAction(); $values[] = $bulkUploadResult->getStatus(); $values[] = $bulkUploadResult->getObjectId(); $values[] = $bulkUploadResult->getObjectStatus(); $values[] = preg_replace('/[\\n\\r\\t]/', ' ', $bulkUploadResult->getErrorDescription()); fputcsv($STDOUT, $values); } fclose($STDOUT); kFile::closeDbConnections(); exit; }