/**
  * @param \Nette\Forms\IControl
  * @return bool
  */
 public function isLicenseValid(IControl $control)
 {
     $licenses = $control->getValue();
     if (is_string($licenses)) {
         $licenses = array_map('trim', explode(',', $licenses));
     }
     foreach ($licenses as $license) {
         if (!$this->validators->isLicenseValid($license)) {
             return FALSE;
         }
     }
     return TRUE;
 }
 /**
  * Imports addon from GitHub repository.
  *
  * @return \NetteAddons\Model\Addon
  * @throws \NetteAddons\IOException
  */
 public function import()
 {
     $info = $this->repository->getMetadata();
     if (!isset($info->default_branch, $info->name, $info->description)) {
         throw new \NetteAddons\IOException('GitHub returned invalid response.');
     }
     $readme = $this->repository->getReadme($info->default_branch);
     $composer = $this->getComposerJson($info->default_branch);
     $addon = new Addon();
     // name
     $addon->name = $info->name;
     // composerName
     if ($composer && $this->validators->isComposerFullNameValid($composer->name)) {
         $addon->composerFullName = $composer->name;
     }
     // shortDescription
     if ($composer) {
         $addon->shortDescription = Strings::truncate($composer->description, 250);
     } elseif (!empty($info->description)) {
         $addon->shortDescription = Strings::truncate($info->description, 250);
     }
     // description
     if ($readme) {
         $addon->description = $readme->content;
         $ext = strtolower(pathinfo($readme->path, PATHINFO_EXTENSION));
         $addon->descriptionFormat = in_array($ext, array('md', 'markdown')) ? 'markdown' : 'texy';
     }
     // default license
     if ($composer && isset($composer->license)) {
         $addon->defaultLicense = implode(',', (array) $composer->license);
     }
     // repository
     $addon->repository = $this->repository->getUrl();
     $addon->repositoryHosting = 'github';
     // tags
     if ($composer && isset($composer->keywords)) {
         $addon->tags = $composer->keywords;
     }
     return $addon;
 }
 /**
  * @param int
  */
 public function renderDelete($addonId)
 {
     $this->template->addon = $this->addon;
     $this->template->newest = !$this->validators->isComposerFullNameUnique($this->addon->composerFullName);
 }