/** * Retrieve multiple objects by pkey. * * @param array $pks List of primary keys * @param PropelPDO $con the connection to use * @throws PropelException Any exceptions caught during processing will be * rethrown wrapped into a PropelException. */ public static function retrieveByPKs($pks, PropelPDO $con = null) { $objs = null; if (empty($pks)) { $objs = array(); } else { $criteria = new Criteria(BulkUploadResultPeer::DATABASE_NAME); $criteria->add(BulkUploadResultPeer::ID, $pks, Criteria::IN); $objs = BulkUploadResultPeer::doSelect($criteria, $con); } return $objs; }
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") { $criteria = new Criteria(); $criteria->add(BulkUploadResultPeer::BULK_UPLOAD_JOB_ID, $jobId); $criteria->addAscendingOrderByColumn(BulkUploadResultPeer::LINE_INDEX); $criteria->setLimit(100); $bulkUploadResults = BulkUploadResultPeer::doSelect($criteria); if (!count($bulkUploadResults)) { die("Log file is not ready"); } $STDOUT = fopen('php://output', 'w'); $data = $batchJob->getData(); $handledResults = 0; while (count($bulkUploadResults)) { $handledResults += count($bulkUploadResults); foreach ($bulkUploadResults as $bulkUploadResult) { $values = array($bulkUploadResult->getTitle(), $bulkUploadResult->getDescription(), $bulkUploadResult->getTags(), $bulkUploadResult->getUrl(), $bulkUploadResult->getContentType()); if ($data instanceof kBulkUploadCsvJobData && $data->getCsvVersion() > 1) { $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); } if (count($bulkUploadResults) < $criteria->getLimit()) { break; } kMemoryManager::clearMemory(); $criteria->setOffset($handledResults); $bulkUploadResults = BulkUploadResultPeer::doSelect($criteria); } fclose($STDOUT); } else { $syncKey = $batchJob->getSyncKey(BatchJob::FILE_SYNC_BATCHJOB_SUB_TYPE_BULKUPLOAD); 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 }
/** * Returns the log file for bulk upload job * @param BatchJob $batchJob bulk upload batchjob */ public static function writeBulkUploadLogFile($batchJob) { if ($batchJob->getJobSubType() && $batchJob->getJobSubType() != self::getBulkUploadTypeCoreValue(BulkUploadCsvType::CSV)) { return; } header("Content-Type: text/plain; charset=UTF-8"); $criteria = new Criteria(); $criteria->add(BulkUploadResultPeer::BULK_UPLOAD_JOB_ID, $batchJob->getId()); $criteria->addAscendingOrderByColumn(BulkUploadResultPeer::LINE_INDEX); $criteria->setLimit(100); $bulkUploadResults = BulkUploadResultPeer::doSelect($criteria); 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 only if partner level permission for it exists $partnerId = kCurrentContext::$partner_id ? kCurrentContext::$partner_id : kCurrentContext::$ks_partner_id; if (PermissionPeer::isValidForPartner(self::FEATURE_CSV_HEADER_ROW, $partnerId)) { $headerRow = $data->getColumns(); $headerRow[] = "resultStatus"; $headerRow[] = "objectId"; $headerRow[] = "objectStatus"; $headerRow[] = "errorDescription"; fputcsv($STDOUT, $headerRow); } $handledResults = 0; while (count($bulkUploadResults)) { $handledResults += count($bulkUploadResults); foreach ($bulkUploadResults as $bulkUploadResult) { /* @var $bulkUploadResult BulkUploadResult */ $values = str_getcsv($bulkUploadResult->getRowData()); // 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->getStatus(); $values[] = $bulkUploadResult->getObjectId(); $values[] = $bulkUploadResult->getObjectStatus(); $values[] = preg_replace('/[\\n\\r\\t]/', ' ', $bulkUploadResult->getErrorDescription()); fputcsv($STDOUT, $values); } if (count($bulkUploadResults) < $criteria->getLimit()) { break; } kMemoryManager::clearMemory(); $criteria->setOffset($handledResults); $bulkUploadResults = BulkUploadResultPeer::doSelect($criteria); } fclose($STDOUT); kFile::closeDbConnections(); exit; }
/** * 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'); $criteria = new Criteria(); $criteria->add(BulkUploadResultPeer::BULK_UPLOAD_JOB_ID, $batchJob->getId()); $criteria->addAscendingOrderByColumn(BulkUploadResultPeer::LINE_INDEX); $criteria->setLimit(100); $bulkUploadResults = BulkUploadResultPeer::doSelect($criteria); 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'); $channel = $xmlElement->addChild('channel'); $handledResults = 0; while (count($bulkUploadResults)) { $handledResults += count($bulkUploadResults); // 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); } if (count($bulkUploadResults) < $criteria->getLimit()) { break; } kMemoryManager::clearMemory(); $criteria->setOffset($handledResults); $bulkUploadResults = BulkUploadResultPeer::doSelect($criteria); } 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) { $unclosedEntriesCount = 0; $errorObjects = 0; $unclosedEntries = array(); $criteria = new Criteria(); $criteria->add(BulkUploadResultPeer::BULK_UPLOAD_JOB_ID, $bulkUploadJobId); $criteria->addAscendingOrderByColumn(BulkUploadResultPeer::LINE_INDEX); $criteria->setLimit(100); $bulkUpload = BatchJobPeer::retrieveByPK($bulkUploadJobId); if ($bulkUpload) { $handledResults = 0; $bulkUploadResults = BulkUploadResultPeer::doSelect($criteria); while (count($bulkUploadResults)) { $handledResults += count($bulkUploadResults); foreach ($bulkUploadResults as $bulkUploadResult) { /* @var $bulkUploadResult BulkUploadResult */ $status = $bulkUploadResult->updateStatusFromObject(); if ($status == BulkUploadResultStatus::IN_PROGRESS) { $unclosedEntriesCount++; } if ($status == BulkUploadResultStatus::ERROR) { $errorObjects++; } } if (count($bulkUploadResults) < $criteria->getLimit()) { break; } kMemoryManager::clearMemory(); $criteria->setOffset($handledResults); $bulkUploadResults = BulkUploadResultPeer::doSelect($criteria); } $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; }
} if (isset($argv[3])) { $c->addAnd(BulkUploadResultPeer::UPDATED_AT, $argv[3], Criteria::GREATER_EQUAL); } $c->addAscendingOrderByColumn(BulkUploadResultPeer::UPDATED_AT); $c->setLimit($countLimitEachLoop); $bulkUploadResults = BulkUploadResultPeer::doSelect($c, $con); while ($bulkUploadResults && count($bulkUploadResults)) { foreach ($bulkUploadResults as $bulkUploadResult) { /* @var $bulkUploadResult BulkUploadResult */ $bulkUploadResult->putInCustomData("title", $bulkUploadResult->getTitle()); $bulkUploadResult->putInCustomData("description", $bulkUploadResult->getDescription()); $bulkUploadResult->putInCustomData("tags", $bulkUploadResult->getTags()); $bulkUploadResult->putInCustomData("category", $bulkUploadResult->getCategory()); $bulkUploadResult->putInCustomData("content_type", $bulkUploadResult->getContentType()); $bulkUploadResult->putInCustomData("conversion_profile_id", $bulkUploadResult->getConversionProfileId()); $bulkUploadResult->putInCustomData("access_control_profile_id", $bulkUploadResult->getAccessControlProfileId()); $bulkUploadResult->putInCustomData("url", $bulkUploadResult->getUrl()); $bulkUploadResult->putInCustomData("entry_status", $bulkUploadResult->getEntryStatus()); $bulkUploadResult->putInCustomData("thumbnail_url", $bulkUploadResult->getThumbnailUrl()); $bulkUploadResult->putInCustomData("thumbnail_saved", $bulkUploadResult->getThumbnailSaved()); $bulkUploadResult->putInCustomData("schedule_end_date", $bulkUploadResult->getScheduleEndDate()); $bulkUploadResult->putInCustomData("schedule_start_date", $bulkUploadResult->getScheduleStartDate()); $bulkUploadResult->save(); var_dump("Last handled id: " . $bulkUploadResult->getId()); } $countLimitEachLoop += $countLimitEachLoop; $c->setOffset($countLimitEachLoop); $bulkUploadResults = BulkUploadResultPeer::doSelect($c, $con); usleep(100); }
/** * Returns the log file for bulk upload job * @param BatchJob $batchJob bulk upload batchjob */ public static function writeBulkUploadLogFile($batchJob) { if ($batchJob->getJobSubType() && $batchJob->getJobSubType() != self::getBulkUploadTypeCoreValue(BulkUploadFilterType::FILTER)) { return; } //TODO: header("Content-Type: text/plain; charset=UTF-8"); $criteria = new Criteria(); $criteria->add(BulkUploadResultPeer::BULK_UPLOAD_JOB_ID, $batchJob->getId()); $criteria->addAscendingOrderByColumn(BulkUploadResultPeer::LINE_INDEX); $criteria->setLimit(100); $bulkUploadResults = BulkUploadResultPeer::doSelect($criteria); if (!count($bulkUploadResults)) { die("Log file is not ready"); } $STDOUT = fopen('php://output', 'w'); $data = $batchJob->getData(); /* @var $data kBulkUploadFilterJobData */ $handledResults = 0; while (count($bulkUploadResults)) { $handledResults += count($bulkUploadResults); foreach ($bulkUploadResults as $bulkUploadResult) { $values = array(); $values['bulkUploadResultStatus'] = $bulkUploadResult->getStatus(); $values['objectId'] = $bulkUploadResult->getObjectId(); $values['objectStatus'] = $bulkUploadResult->getObjectStatus(); $values['errorDescription'] = preg_replace('/[\\n\\r\\t]/', ' ', $bulkUploadResult->getErrorDescription()); fwrite($STDOUT, print_r($values, true)); } if (count($bulkUploadResults) < $criteria->getLimit()) { break; } kMemoryManager::clearMemory(); $criteria->setOffset($handledResults); $bulkUploadResults = BulkUploadResultPeer::doSelect($criteria); } fclose($STDOUT); kFile::closeDbConnections(); exit; }