コード例 #1
0
ファイル: Library.php プロジェクト: silverstripe/cow
 /**
  * Unserialise a plan
  *
  * @param array $serialisedPlan Decoded json data
  * @return LibraryRelease[]
  * @throws Exception
  */
 protected function unserialisePlan($serialisedPlan)
 {
     $releases = [];
     foreach ($serialisedPlan as $name => $data) {
         // Unserialise this node
         $library = $this->getLibrary($name);
         if (!$library) {
             throw new Exception("Missing library {$name}");
         }
         $version = new Version($data['Version']);
         $libraryRelease = new LibraryRelease($library, $version);
         // Restore cached changelog
         if (!empty($data['Changelog'])) {
             $libraryRelease->setChangelog($data['Changelog']);
         }
         // Merge with unserialised children
         if (!empty($data['Items'])) {
             $libraryRelease->addItems($this->unserialisePlan($data['Items']));
         }
         $releases[$name] = $libraryRelease;
     }
     return $releases;
 }