You are here

public function TincanService::saveTincanPackageInfo in Opigno module 8

Same name and namespace in other branches
  1. 3.x ActivityTypes/opigno_tincan_activity/src/TincanService.php \Drupal\opigno_tincan_activity\TincanService::saveTincanPackageInfo()

Save tincan package.

Parameters

\Drupal\file\Entity\File $file: File object.

Return value

int Downloaded file $fid.

Overrides TincanServiceInterface::saveTincanPackageInfo

File

ActivityTypes/opigno_tincan_activity/src/TincanService.php, line 31

Class

TincanService
Class TincanService.

Namespace

Drupal\opigno_tincan_activity

Code

public function saveTincanPackageInfo(File $file) {
  if (!$file) {
    return FALSE;
  }

  // Unzip file.
  if (!file_exists(self::getExtractPath($file) . 'tincan.xml')) {
    try {
      self::unzipPackage($file);
    } catch (\Exception $e) {
      return $e;
    }
  }
  $package_info = self::getInfoFromExtractedPackage($file);
  if ($package_info === FALSE) {
    \Drupal::logger('opigno_tincan_activity')
      ->error('The package does not contain an activity ID or a launch file');
    return;
  }

  // Record data from extracted zip to DB.
  $fid = $file
    ->id();
  $activity_id = $package_info['id'];
  $launch_filename = $package_info['launch'];
  $connection = $this->connection;
  try {
    $connection
      ->insert('opigno_tincan_activity_type_properties')
      ->fields([
      'fid' => $fid,
      'activity_id' => $activity_id,
      'launch_filename' => $launch_filename,
    ])
      ->execute();
  } catch (\Exception $e) {
    return $e;
  }
}