/** * Add bulk upload job * @param DropFolder $folder * @param DropFolderFile $leadDropFolderFile * @throws Exception */ private function addXMLBulkUploadJob(DropFolder $folder, DropFolderFile $leadDropFolderFile) { /* @var $leadDropFolderFile FeedDropFolderFile */ KalturaLog::info('Adding BulkUpload job'); try { $coreBulkUploadType = BulkUploadXmlPlugin::getBulkUploadTypeCoreValue(BulkUploadXmlType::XML); $objectId = $leadDropFolderFile->getId(); $objectType = DropFolderXmlBulkUploadPlugin::getBatchJobObjectTypeCoreValue(DropFolderBatchJobObjectType::DROP_FOLDER_FILE); $partner = PartnerPeer::retrieveByPK($folder->getPartnerId()); $data = KalturaPluginManager::loadObject('kBulkUploadJobData', $coreBulkUploadType); /* @var $data kBulkUploadJobData */ $data->setUploadedBy(kDropFolderXmlEventsConsumer::UPLOADED_BY); KalturaLog::info("Feed XML path: " . $leadDropFolderFile->getFeedXmlPath()); $data->setFilePath($leadDropFolderFile->getFeedXmlPath()); $data->setFileName(basename($data->getFilePath()) . '.xml'); $objectData = new kBulkUploadEntryData(); KalturaLog::info('Conversion profile id: ' . $folder->getConversionProfileId()); $objectData->setConversionProfileId($folder->getConversionProfileId()); $data->setObjectData($objectData); $job = kJobsManager::addBulkUploadJob($partner, $data, $coreBulkUploadType, $objectId, $objectType); $this->setFileToProcessing($leadDropFolderFile); return $job; } catch (Exception $e) { KalturaLog::err("Error adding BulkUpload job -" . $e->getMessage()); throw new Exception(DropFolderXmlBulkUploadPlugin::ERROR_ADDING_BULK_UPLOAD_MESSAGE, DropFolderXmlBulkUploadPlugin::getErrorCodeCoreValue(DropFolderXmlBulkUploadErrorCode::ERROR_ADDING_BULK_UPLOAD)); } }
private function setParsedSlugFlavor(DropFolder $folder, DropFolderFile $file) { $parsedSlug = null; $parsedFlavor = null; $parsedUserId = null; $isMatch = $this->parseRegex($folder->getFileHandlerConfig(), $file->getNameForParsing(), $parsedSlug, $parsedFlavor, $parsedUserId); if ($isMatch) { $file->setParsedSlug($parsedSlug); $file->setParsedFlavor($parsedFlavor); $file->setParsedUserId($parsedUserId); $file->save(); return $file; } else { return null; } }
/** * Validate if all the files ready: * 1. Yes: add BulkUpload job * 2. No: set status to Waiting * @param DropFolder $folder * @param DropFolderFile $file */ private function onXmlDropFolderFileStatusChangedToPending(DropFolder $folder, DropFolderFile $file) { KalturaLog::debug('in onXmlDropFolderFileStatusChangedToPending file id [' . $file->getId() . '] folder id [' . $folder->getId() . ']'); $relatedFiles = array(); try { $xmlFileHandler = kDropFolderXmlFileHandler::getHandlerInstance($folder->getType()); $xmlFileHandler->handlePendingDropFolderFile($folder, $file); } catch (Exception $e) { KalturaLog::err("Error in onXmlDropFolderFileStatusChangedToPending -" . $e->getMessage()); if ($e->getCode() == DropFolderXmlBulkUploadPlugin::getErrorCodeCoreValue(DropFolderXmlBulkUploadErrorCode::ERROR_ADDING_BULK_UPLOAD)) { foreach ($relatedFiles as $relatedFile) { $this->setFileError($relatedFile, DropFolderFileStatus::ERROR_HANDLING, $e->getCode(), $e->getMessage()); } } else { $this->setFileError($file, DropFolderFileStatus::ERROR_HANDLING, $e->getCode(), $e->getMessage()); } } }
/** * Adds an object to the instance pool. * * Propel keeps cached copies of objects in an instance pool when they are retrieved * from the database. In some cases -- especially when you override doSelect*() * methods in your stub classes -- you may need to explicitly add objects * to the cache in order to ensure that the same objects are always returned by doSelect*() * and retrieveByPK*() calls. * * @param DropFolder $value A DropFolder object. * @param string $key (optional) key to use for instance map (for performance boost if key was already calculated externally). */ public static function addInstanceToPool(DropFolder $obj, $key = null) { if (Propel::isInstancePoolingEnabled()) { if ($key === null) { $key = (string) $obj->getId(); } // if key === null self::$instances[$key] = $obj; } }
/** * Check if file is XML according to the file pattern set on the drop folder * The comparison is case insensitive * @param string $fileName * @param DropFolder $folder */ private function isXmlFile($fileName, DropFolder $folder) { KalturaLog::debug('checking if file ' . $fileName . ' is XML'); $isXml = false; $fileNamePatterns = trim($folder->getFileNamePatterns(), ' *'); KalturaLog::debug('file name pattern [ ' . $fileNamePatterns . ']'); if ($fileNamePatterns) { $isXml = stristr($fileName, $fileNamePatterns); } else { $isXml = true; } return $isXml; }
/** * Adds an object to the instance pool. * * Propel keeps cached copies of objects in an instance pool when they are retrieved * from the database. In some cases -- especially when you override doSelect*() * methods in your stub classes -- you may need to explicitly add objects * to the cache in order to ensure that the same objects are always returned by doSelect*() * and retrieveByPK*() calls. * * @param DropFolder $value A DropFolder object. * @param string $key (optional) key to use for instance map (for performance boost if key was already calculated externally). */ public static function addInstanceToPool(DropFolder $obj, $key = null) { if (Propel::isInstancePoolingEnabled()) { if ($key === null) { $key = (string) $obj->getId(); } if (isset(self::$instances[$key]) || count(self::$instances) < kConf::get('max_num_instances_in_pool')) { self::$instances[$key] = $obj; kMemoryManager::registerPeer('DropFolderPeer'); } } }
public function setData(DropFolder $folder, DropFolderFile $dropFolderFileForObject, $dropFolderFileIds) { $this->dropFolderId = $folder->getId(); $this->setConversionProfileId($folder->getConversionProfileId()); $this->setParsedSlug($dropFolderFileForObject->getParsedSlug()); $this->setContentMatchPolicy($folder->getFileHandlerConfig()->getContentMatchPolicy()); $this->setDropFolderFileIds($dropFolderFileIds); if ($dropFolderFileForObject->getParsedUserId()) { $this->setParsedUserId($dropFolderFileForObject->getParsedUserId()); } }
/** * Check if file is XML according to the file pattern set on the drop folder * The comparison is case insensitive * @param string $fileName * @param DropFolder $folder */ private function isXmlFile($fileName, DropFolder $folder) { $isXml = false; $fileNamePatterns = trim($folder->getFileNamePatterns(), ' *'); if ($fileNamePatterns) { $isXml = stristr($fileName, $fileNamePatterns); } else { $isXml = true; } return $isXml; }