Ejemplo n.º 1
0
 static function apply($query, $projectUuid)
 {
     // check for package name
     //
     $packageName = Input::get('package_name');
     if ($packageName != '') {
         $query = $query->where('package_name', '=', $packageName);
     }
     // check for package uuid
     //
     $packageUuid = Input::get('package_uuid');
     if ($packageUuid != '') {
         $packageVersions = PackageVersion::where('package_uuid', '=', $packageUuid)->get();
         $query = $query->where(function ($query) use($packageVersions) {
             for ($i = 0; $i < sizeof($packageVersions); $i++) {
                 if ($i == 0) {
                     $query->where('package_version_uuid', '=', $packageVersions[$i]->package_version_uuid);
                 } else {
                     $query->orWhere('package_version_uuid', '=', $packageVersions[$i]->package_version_uuid);
                 }
             }
         });
     }
     // check for package version
     //
     $packageVersion = Input::get('package_version');
     if ($packageVersion == 'latest') {
         $package = Package::where('package_uuid', '=', $packageUuid)->first();
         if ($package) {
             $latestVersion = $package->getLatestVersion($projectUuid);
             if ($latestVersion) {
                 $query = $query->where('package_version_uuid', '=', $latestVersion->package_version_uuid);
             }
         }
     } else {
         if ($packageVersion != '') {
             $query = $query->where('package_version_uuid', '=', $packageVersion);
         }
     }
     // check for package version uuid
     //
     $packageVersionUuid = Input::get('package_version_uuid');
     if ($packageVersionUuid == 'latest') {
         $package = Package::where('package_uuid', '=', $packageUuid)->first();
         if ($package) {
             $latestVersion = $package->getLatestVersion($projectUuid);
             if ($latestVersion) {
                 $query = $query->where('package_version_uuid', '=', $latestVersion->package_version_uuid);
             }
         }
     } else {
         if ($packageVersionUuid != '') {
             $query = $query->where('package_version_uuid', '=', $packageVersionUuid);
         }
     }
     return $query;
 }
Ejemplo n.º 2
0
 /**
  * accessor methods
  */
 public function getPackageAttribute()
 {
     $packageVersion = PackageVersion::where('package_version_uuid', '=', $this->package_version_uuid)->first();
     if ($packageVersion != null) {
         $package = Package::where('package_uuid', '=', $packageVersion->package_uuid)->first();
     } else {
         $package = null;
     }
     // get package info from results
     //
     if (!$package || !$packageVersion) {
         $assessmentResult = AssessmentResult::where('execution_record_uuid', '=', $this->execution_record_uuid)->first();
     }
     return array('name' => $package ? $package->name : ($assessmentResult ? $assessmentResult->package_name : ''), 'version_string' => $packageVersion ? $packageVersion->version_string : ($assessmentResult ? $assessmentResult->package_version : ''), 'package_uuid' => $package ? $package->package_uuid : '', 'package_version_uuid' => $packageVersion ? $packageVersion->package_version_uuid : '');
 }
Ejemplo n.º 3
0
 public function getLatestVersion($projectUuid)
 {
     if (!strpos($projectUuid, '+')) {
         // get by a single project
         //
         $packageVersionQuery = PackageVersion::where('package_uuid', '=', $this->package_uuid)->where(function ($query0) use($projectUuid) {
             $query0->whereRaw("upper(version_sharing_status)='PUBLIC'")->orWhere(function ($query1) use($projectUuid) {
                 $query1->whereRaw("upper(version_sharing_status)='PROTECTED'")->whereExists(function ($query2) use($projectUuid) {
                     $query2->select('package_version_uuid')->from('package_store.package_version_sharing')->whereRaw('package_store.package_version_sharing.package_version_uuid=package_version_uuid')->where('package_store.package_version_sharing.project_uuid', '=', $projectUuid);
                 });
             });
         });
     } else {
         // get by multiple projects
         //
         $projectUuids = explode('+', $projectUuid);
         foreach ($projectUuids as $projectUuid) {
             if (!isset($assessmentRunsQuery)) {
                 $packageVersionQuery = PackageVersion::where('package_uuid', '=', $this->package_uuid)->where(function ($query0) use($projectUuid) {
                     $query0->whereRaw("upper(version_sharing_status)='PUBLIC'")->orWhere(function ($query1) use($projectUuid) {
                         $query1->whereRaw("upper(version_sharing_status)='PROTECTED'")->whereExists(function ($query2) use($projectUuid) {
                             $query2->select('package_version_uuid')->from('package_store.package_version_sharing')->whereRaw('package_store.package_version_sharing.package_version_uuid=package_version_uuid')->where('package_store.package_version_sharing.project_uuid', '=', $projectUuid);
                         });
                     });
                 });
             } else {
                 $packageVersionQuery = $packageVersionQuery->orWhere('package_uuid', '=', $this->package_uuid)->where(function ($query0) use($projectUuid) {
                     $query0->whereRaw("upper(version_sharing_status)='PUBLIC'")->orWhere(function ($query1) use($projectUuid) {
                         $query1->whereRaw("upper(version_sharing_status)='PROTECTED'")->whereExists(function ($query2) use($projectUuid) {
                             $query2->select('package_version_uuid')->from('package_store.package_version_sharing')->whereRaw('package_store.package_version_sharing.package_version_uuid=package_version_uuid')->where('package_store.package_version_sharing.project_uuid', '=', $projectUuid);
                         });
                     });
                 });
             }
         }
     }
     // perform query
     //
     return $packageVersionQuery->orderBy('version_no', 'DESC')->first();
 }
 private function store()
 {
     $attributes = $this->getAttributes();
     $packagePath = $attributes['package_path'];
     $packageUuid = $attributes['package_uuid'];
     // create stored procedure call
     //
     $connection = DB::connection('package_store');
     $pdo = $connection->getPdo();
     $stmt = $pdo->prepare("CALL store_package_version(\n\t\t\t:packageUuidIn, :packagePathIn, @packagePathOut, @checksum, @returnStatus, @returnMsg);");
     // bind params
     //
     $stmt->bindParam(":packageUuidIn", $packageUuid, PDO::PARAM_STR, 45);
     $stmt->bindParam(":packagePathIn", $packagePath, PDO::PARAM_STR, 200);
     // set param values
     //
     $checksum = null;
     $returnStatus = null;
     $returnMsg = null;
     // call stored procedure
     //
     $results = $stmt->execute();
     // fetch return parameters
     //
     $select = $pdo->query('SELECT @packagePathOut, @checksum, @returnStatus, @returnMsg');
     $results = $select->fetchAll();
     $packagePathOut = $results[0]["@packagePathOut"];
     $checksum = $results[0]["@checksum"];
     $returnStatus = $results[0]["@returnStatus"];
     $returnMsg = $results[0]["@returnMsg"];
     // remove file and directory
     //
     // unlink(PackageVersion::$incoming.$packagePath);
     // rmdir(dirname(PackageVersion::$incoming.$packagePath));
     // create new package version if successful
     //
     if ($returnStatus == "SUCCESS") {
         // create new package version
         //
         $packageVersion = new PackageVersion($attributes);
         // set creation attributes
         //
         $packageVersion->package_version_uuid = GUID::create();
         $packageVersion->package_path = $packagePathOut;
         $packageVersion->checksum = $checksum;
         $packageVersion->save();
         return $packageVersion;
     } else {
         // return values
         //
         return Response::make($returnMsg, $returnStatus == 'ERROR' ? 500 : 200);
     }
 }
Ejemplo n.º 5
0
 public function getPackageVersionStringAttribute()
 {
     $packageVersion = PackageVersion::where('package_version_uuid', '=', $this->package_version_uuid)->first();
     return $packageVersion != null ? $packageVersion->version_string : 'latest';
 }
Ejemplo n.º 6
0
         //
         if ($package && !$package->isPublic()) {
             if (!$user->isAdmin() && !$package->isAvailableTo($user)) {
                 return Response::make('Insufficient priveleges to access package.', 403);
             }
         }
     }
 }
 // check package version routes
 //
 $packageVersionUuid = $route->getParameter('package_version_uuid');
 if ($packageVersionUuid) {
     // get relevant attributes
     //
     $user = User::getIndex(Session::get('user_uid'));
     $packageVersion = PackageVersion::where('package_version_uuid', '=', $packageVersionUuid)->first();
     $isPublic = $packageVersion->version_sharing_status == 'public' || $packageVersion->version_sharing_status == 'PUBLIC';
     $authenticationRequired = $method != 'get' && !$isPublic;
     // check to see if user is logged in
     //
     if ($authenticationRequired && !$user) {
         return Response::make('Authentication required to access package version.', 401);
     } else {
         // check to see if user has priveleges to view package version
         //
         if (!$isPublic) {
             if (!($user->isAdmin() || $packageVersion->getPackage()->isAvailableTo($user))) {
                 return Response::make('Insufficient priveleges to access package version.', 403);
             }
         }
     }
Ejemplo n.º 7
0
 public function applyToAll($packageUuid)
 {
     // get package
     //
     $package = $this->getIndex($packageUuid);
     // get default project sharings for package
     //
     $packageSharings = PackageSharing::where('package_uuid', '=', $packageUuid)->get();
     // get all package versions
     //
     $packageVersions = PackageVersion::where('package_uuid', '=', $packageUuid)->get();
     foreach ($packageVersions as $packageVersion) {
         // reset all package version sharings for current package version
         //
         $packageVersionSharings = PackageVersionSharing::where('package_version_uuid', '=', $packageVersion->package_version_uuid)->get();
         foreach ($packageVersionSharings as $pvs) {
             $pvs->delete();
         }
         // set all package version sharings for current package version
         //
         foreach ($packageSharings as $ps) {
             $packageVersionSharing = new PackageVersionSharing(array('project_uuid' => $ps->project_uuid, 'package_version_uuid' => $packageVersion->package_version_uuid));
             $packageVersionSharing->save();
         }
         // update sharing status
         //
         $packageVersion->version_sharing_status = $package->package_sharing_status;
         $packageVersion->save();
     }
 }
 /**
  * querying methods
  */
 public function packageVersion()
 {
     return PackageVersion::where('package_version_uuid', '=', $this->package_version_uuid)->first();
 }