/**
  * 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
 }
예제 #3
0
 /**
  * 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;
 }
예제 #4
0
 /**
  * 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;
 }
예제 #5
0
 /**
  * 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);
}
예제 #7
0
 /**
  * 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;
 }