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