/** * Will return the first virus scan profile of the entry's partner, that defines an entry filter suitable for the given entry. * @param int $entryId * @return VirusScanProfile the suitable profile object, or null if none found */ public static function getSuitableProfile($entryId) { $entry = entryPeer::retrieveByPK($entryId); if (!$entry) { KalturaLog::err('Cannot find entry with id [' . $entryId . ']'); return null; } if ($entry->getSource() == entry::ENTRY_MEDIA_SOURCE_WEBCAM) { return null; } $cProfile = new Criteria(); $cProfile->addAnd(VirusScanProfilePeer::PARTNER_ID, $entry->getPartnerId()); $cProfile->addAnd(VirusScanProfilePeer::STATUS, VirusScanProfileStatus::ENABLED, Criteria::EQUAL); $profiles = VirusScanProfilePeer::doSelect($cProfile); if (!$profiles) { KalturaLog::debug('No virus scan profiles found for partner [' . $entry->getPartnerId() . ']'); return null; } foreach ($profiles as $profile) { $virusEntryFilter = $profile->getEntryFilterObject(); if ($virusEntryFilter->matches($entry)) { KalturaLog::debug('Returning profile with id [' . $profile->getId() . ']'); return $profile; } } return null; }
private function saveIfShouldScan($flavorAsset) { if (!PermissionPeer::isAllowedPlugin(VirusScanPlugin::PLUGIN_NAME, $flavorAsset->getPartnerId())) { return false; } if (isset(self::$flavorAssetIdsToScan[$flavorAsset->getId()])) { return true; } $profile = VirusScanProfilePeer::getSuitableProfile($flavorAsset->getEntryId()); if ($profile) { self::$flavorAssetIdsToScan[$flavorAsset->getId()] = $profile; return true; } return false; }
public function getFieldNameFromPeer($field_name) { $res = VirusScanProfilePeer::translateFieldName($field_name, $this->field_name_translation_type, BasePeer::TYPE_COLNAME); return $res; }
/** * Scan flavor asset according to virus scan profile * * @action scan * @param int $virusScanProfileId * @param string $flavorAssetId * @return int job id * * @throws KalturaErrors::INVALID_OBJECT_ID * @throws KalturaErrors::INVALID_FLAVOR_ASSET_ID * @throws KalturaErrors::INVALID_FILE_SYNC_ID */ function scanAction($flavorAssetId, $virusScanProfileId = null) { $dbFlavorAsset = assetPeer::retrieveById($flavorAssetId); if (!$dbFlavorAsset) { throw new KalturaAPIException(KalturaErrors::INVALID_FLAVOR_ASSET_ID, $flavorAssetId); } if ($virusScanProfileId) { $dbVirusScanProfile = VirusScanProfilePeer::retrieveByPK($virusScanProfileId); } else { $dbVirusScanProfile = VirusScanProfilePeer::getSuitableProfile($dbFlavorAsset->getEntryId()); } if (!$dbVirusScanProfile) { throw new KalturaAPIException(KalturaErrors::INVALID_OBJECT_ID, $virusScanProfileId); } $syncKey = $dbFlavorAsset->getSyncKey(flavorAsset::FILE_SYNC_FLAVOR_ASSET_SUB_TYPE_ASSET); $srcFilePath = kFileSyncUtils::getLocalFilePathForKey($syncKey); if (!$srcFilePath) { throw new KalturaAPIException(KalturaErrors::INVALID_FILE_SYNC_ID, $syncKey); } $job = kVirusScanJobsManager::addVirusScanJob(null, $dbFlavorAsset->getPartnerId(), $dbFlavorAsset->getEntryId(), $dbFlavorAsset->getId(), $srcFilePath, $dbVirusScanProfile->getEngineType(), $dbVirusScanProfile->getActionIfInfected()); return $job->getId(); }
/** * 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(VirusScanProfilePeer::DATABASE_NAME); $criteria->add(VirusScanProfilePeer::ID, $pks, Criteria::IN); $objs = VirusScanProfilePeer::doSelect($criteria, $con); } return $objs; }
/** * Populates the object using an array. * * This is particularly useful when populating an object from one of the * request arrays (e.g. $_POST). This method goes through the column * names, checking to see whether a matching key exists in populated * array. If so the setByName() method is called for that column. * * You can specify the key type of the array by additionally passing one * of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME, * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM. * The default key type is the column's phpname (e.g. 'AuthorId') * * @param array $arr An array to populate the object from. * @param string $keyType The type of keys the array uses. * @return void */ public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME) { $keys = VirusScanProfilePeer::getFieldNames($keyType); if (array_key_exists($keys[0], $arr)) { $this->setId($arr[$keys[0]]); } if (array_key_exists($keys[1], $arr)) { $this->setCreatedAt($arr[$keys[1]]); } if (array_key_exists($keys[2], $arr)) { $this->setUpdatedAt($arr[$keys[2]]); } if (array_key_exists($keys[3], $arr)) { $this->setPartnerId($arr[$keys[3]]); } if (array_key_exists($keys[4], $arr)) { $this->setName($arr[$keys[4]]); } if (array_key_exists($keys[5], $arr)) { $this->setStatus($arr[$keys[5]]); } if (array_key_exists($keys[6], $arr)) { $this->setEngineType($arr[$keys[6]]); } if (array_key_exists($keys[7], $arr)) { $this->setEntryFilter($arr[$keys[7]]); } if (array_key_exists($keys[8], $arr)) { $this->setActionIfInfected($arr[$keys[8]]); } if (array_key_exists($keys[9], $arr)) { $this->setCustomData($arr[$keys[9]]); } }
/** * Builds a Criteria object containing the primary key for this object. * * Unlike buildCriteria() this method includes the primary key values regardless * of whether or not they have been modified. * * @return Criteria The Criteria object containing value(s) for primary key(s). */ public function buildPkeyCriteria() { $criteria = new Criteria(VirusScanProfilePeer::DATABASE_NAME); $criteria->add(VirusScanProfilePeer::ID, $this->id); if ($this->alreadyInSave && count($this->modifiedColumns) == 2 && $this->isColumnModified(VirusScanProfilePeer::UPDATED_AT)) { $theModifiedColumn = null; foreach ($this->modifiedColumns as $modifiedColumn) { if ($modifiedColumn != VirusScanProfilePeer::UPDATED_AT) { $theModifiedColumn = $modifiedColumn; } } $atomicColumns = VirusScanProfilePeer::getAtomicColumns(); if (in_array($theModifiedColumn, $atomicColumns)) { $criteria->add($theModifiedColumn, $this->getByName($theModifiedColumn, BasePeer::TYPE_COLNAME), Criteria::NOT_EQUAL); } } return $criteria; }