/**
  * 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;
 }