diff --git a/app/Api/presenters/ComposerPresenter.php b/app/Api/presenters/ComposerPresenter.php index 0cab16e..a3aaee7 100644 --- a/app/Api/presenters/ComposerPresenter.php +++ b/app/Api/presenters/ComposerPresenter.php @@ -2,42 +2,35 @@ namespace NetteAddons\Api; -use NetteAddons\Model\Addon, - NetteAddons\Model\AddonVersion, - NetteAddons\Model\Addons, - NetteAddons\Model\AddonDownloads, - NetteAddons\Model\AddonVersions, - NetteAddons\Model\Utils\Composer; +use NetteAddons\Model\Addon; +use NetteAddons\Model\Addons; +use NetteAddons\Model\AddonVersion; +use NetteAddons\Model\AddonVersions; +use NetteAddons\Model\AddonDownloads; +use NetteAddons\Model\Utils\Composer; - -/** - * @author Jan Marek - * @author Jan Tvrdík - * @author Jan Dolecek - * @author Patrik Votoček - */ final class ComposerPresenter extends \NetteAddons\BasePresenter { - /** - * @var \NetteAddons\Model\Addons - * @inject - */ + /** @var \NetteAddons\Model\Addons */ public $addons; - /** - * @var \NetteAddons\Model\AddonDownloads - * @inject - */ + /** @var \NetteAddons\Model\AddonDownloads */ public $addonDownloads; - /** - * @var \NetteAddons\Model\AddonVersions - * @inject - */ + /** @var \NetteAddons\Model\AddonVersions */ public $addonVersions; + public function __construct(Addons $addons, AddonDownloads $addonDownloads, AddonVersions $addonVersions) + { + parent::__construct(); + + $this->addons = $addons; + $this->addonDownloads = $addonDownloads; + $this->addonVersions = $addonVersions; + } + public function renderPackages() { @@ -46,29 +39,29 @@ public function renderPackages() $packagesJson = Composer::createPackagesJson($addons); $packagesJson->notify = str_replace( - 'placeholder', '%package%', + 'placeholder', + '%package%', $this->link('//downloadNotify', array('package' => 'placeholder')) ); $this->sendJson($packagesJson); } - /** * Called when composer installs a package to increase counters. * * @link http://getcomposer.org/doc/05-repositories.md#notify + * * @param string */ public function actionDownloadNotify($package) { - $post = $this->getRequest()->post; + $post = $this->getRequest()->getPost(); if (!isset($post['version'])) { $this->error('Invalid request.'); } $version = (string) $post['version']; - if (!$addonRow = $this->addons->findOneByComposerFullName($package)) { $this->error('Package not found.'); } @@ -81,7 +74,7 @@ public function actionDownloadNotify($package) )); if (!$versionRow) { - $this->error("Version of package not found."); + $this->error('Version of package not found.'); } $version = AddonVersion::fromActiveRow($versionRow); @@ -93,6 +86,6 @@ public function actionDownloadNotify($package) $this->getHttpRequest()->getHeader('user-agent') ); - $this->sendJson(array('status' => "success")); + $this->sendJson(array('status' => 'success')); } } diff --git a/app/Api/presenters/GithubPresenter.php b/app/Api/presenters/GithubPresenter.php index 3c2d866..23f5fa6 100644 --- a/app/Api/presenters/GithubPresenter.php +++ b/app/Api/presenters/GithubPresenter.php @@ -2,56 +2,52 @@ namespace NetteAddons\Api; -use Nette\Utils\Json, - NetteAddons\Model\Addon, - NetteAddons\Model\Addons, - NetteAddons\Model\Users, - NetteAddons\Model\Facade\AddonManageFacade, - NetteAddons\Model\Importers\GitHubImporter, - NetteAddons\Model\Importers\RepositoryImporterManager; - - - -/** - * GitHub API - * - * @author Jan Dolecek - * @author Patrik Votoček - */ +use Nette\Utils\Json; +use Nette\Http\IResponse; +use NetteAddons\Model\Addon; +use NetteAddons\Model\Addons; +use NetteAddons\Model\Users; +use NetteAddons\Model\Facade\AddonManageFacade; +use NetteAddons\Model\Importers\GitHubImporter; +use NetteAddons\Model\Importers\RepositoryImporterManager; + + final class GithubPresenter extends \NetteAddons\BasePresenter { - /** - * @var \NetteAddons\Model\Facade\AddonManageFacade - * @inject - */ + /** @var \NetteAddons\Model\Facade\AddonManageFacade */ public $manager; - /** - * @var \NetteAddons\Model\Importers\RepositoryImporterManager - * @inject - */ + /** @var \NetteAddons\Model\Importers\RepositoryImporterManager */ public $importerManager; - /** - * @var \NetteAddons\Model\Users - * @inject - */ + /** @var \NetteAddons\Model\Users */ public $users; - /** - * @var \NetteAddons\Model\Addons - * @inject - */ + /** @var \NetteAddons\Model\Addons */ public $addons; + public function __construct( + AddonManageFacade $manager, + RepositoryImporterManager $importerManager, + Users $users, + Addons $addons + ) { + parent::__construct(); + + $this->manager = $manager; + $this->importerManager = $importerManager; + $this->users = $users; + $this->addons = $addons; + } + /** * Post receive hook, updates addon info */ public function actionPostReceive() { - $post = $this->getRequest()->post; + $post = $this->getRequest()->getPost(); if (!isset($post['payload'], $post['username'], $post['apiToken'])) { $this->error('Invalid request.'); } @@ -61,7 +57,7 @@ public function actionPostReceive() try { $payload = Json::decode($post['payload']); if (!isset($payload->repository->url)) { - $response->setCode(400); // Bad Request + $response->setCode(IResponse::S400_BAD_REQUEST); $this->sendJson(array( 'status' => 'error', 'message' => 'Missing or invalid payload', @@ -76,7 +72,7 @@ public function actionPostReceive() $user = $this->users->findOneByName($username); if (!$user || $user->apiToken !== $token) { - $response->setCode(403); // Forbidden + $response->setCode(IResponse::S403_FORBIDDEN); $this->sendJson(array( 'status' => 'error', 'message' => 'Invalid credentials' @@ -84,7 +80,7 @@ public function actionPostReceive() } if (!GitHubImporter::isValid($payload->repository->url)) { - $response->setCode(400); // Bad Request + $response->setCode(IResponse::S400_BAD_REQUEST); $this->sendJson(array( 'status' => 'error', 'message' => 'Could not parse payload repository URL' diff --git a/app/Manage/forms/AddAddonFormFactory.php b/app/Manage/forms/AddAddonFormFactory.php index 5ee781d..cf8a749 100644 --- a/app/Manage/forms/AddAddonFormFactory.php +++ b/app/Manage/forms/AddAddonFormFactory.php @@ -2,21 +2,18 @@ namespace NetteAddons\Manage\Forms; -use Nette\Utils\Strings, - Nette\Security\IIdentity; +use Nette\Utils\Strings; +use Nette\Security\IIdentity; /** * Form for new addon registration. When importing from GitHub, most of the fields should be prefilled. * The license input won't be visible when composer.json is available. - * - * @author Patrik Votoček */ class AddAddonFormFactory extends AddonFormFactory { - /** - * @param IIdentity + * @param \Nette\Security\IIdentity * @param string * @return AddonForm */ @@ -38,5 +35,4 @@ public function create(IIdentity $user, $token) return $form; } - } diff --git a/app/Manage/forms/AddVersionForm.php b/app/Manage/forms/AddVersionForm.php index 30e77c6..df7bc43 100644 --- a/app/Manage/forms/AddVersionForm.php +++ b/app/Manage/forms/AddVersionForm.php @@ -2,20 +2,15 @@ namespace NetteAddons\Manage\Forms; -use Nette\Security\IIdentity, - NetteAddons\Model\Addon, - NetteAddons\Model\AddonVersions, - NetteAddons\Model\Utils\VersionParser, - NetteAddons\Model\Utils\Licenses, - NetteAddons\Model\Utils\FormValidators, - NetteAddons\Model\Facade\AddonManageFacade; - - -/** - * Form for addon version creation. - * - * @author Patrik Votoček - */ +use Nette\Security\IIdentity; +use NetteAddons\Model\Addon; +use NetteAddons\Model\AddonVersions; +use NetteAddons\Model\Utils\VersionParser; +use NetteAddons\Model\Utils\Licenses; +use NetteAddons\Model\Utils\FormValidators; +use NetteAddons\Model\Facade\AddonManageFacade; + + class AddVersionFormFactory extends \Nette\Object { /** @var \NetteAddons\Model\Facade\AddonManageFacade */ @@ -37,16 +32,13 @@ class AddVersionFormFactory extends \Nette\Object protected $addon; - - /** - * @param \NetteAddons\Model\Facade\AddonManageFacade - * @param \NetteAddons\Model\Utils\VersionParser - * @param \NetteAddons\Model\Utils\FormValidators - * @param \NetteAddons\Model\Utils\Licenses - * @param \NetteAddons\Model\AddonVersions - */ - public function __construct(AddonManageFacade $manager, VersionParser $versionParser, FormValidators $validators, Licenses $licenses, AddonVersions $model) - { + public function __construct( + AddonManageFacade $manager, + VersionParser $versionParser, + FormValidators $validators, + Licenses $licenses, + AddonVersions $model + ) { $this->model = $model; $this->manager = $manager; $this->versionParser = $versionParser; @@ -55,10 +47,9 @@ public function __construct(AddonManageFacade $manager, VersionParser $versionPa } - /** - * @param Addon - * @param IIdentity + * @param \NetteAddons\Model\Addon + * @param \Nette\Security\IIdentity * @param string * @return VersionForm */ @@ -77,7 +68,6 @@ public function create(Addon $addon, IIdentity $user, $token) try { $version = $manager->addVersionFromValues($addon, $values, $user, $versionParser); - } catch (\NetteAddons\IOException $e) { $form['archive']->addError('Uploading file failed.'); return; @@ -89,7 +79,6 @@ public function create(Addon $addon, IIdentity $user, $token) } catch (\NetteAddons\DuplicateEntryException $e) { $form['version']->addError(sprintf("Version '%s' already exists.", $version->version)); } - } else { $manager->storeAddon($values->token, $addon); } diff --git a/app/Manage/forms/AddonForm.php b/app/Manage/forms/AddonForm.php index 67ea087..c095306 100644 --- a/app/Manage/forms/AddonForm.php +++ b/app/Manage/forms/AddonForm.php @@ -2,19 +2,16 @@ namespace NetteAddons\Manage\Forms; -use NetteAddons\Model, - NetteAddons\Model\Addon, - NetteAddons\Model\Tags, - NetteAddons\Model\Facade\AddonManageFacade, - NetteAddons\Model\Importers\RepositoryImporterManager, - NetteAddons\Model\Utils\Licenses, - NetteAddons\Model\Utils\FormValidators; - +use NetteAddons\Model; +use NetteAddons\Model\Addon; +use NetteAddons\Model\Tags; +use NetteAddons\Model\Facade\AddonManageFacade; +use NetteAddons\Model\Importers\RepositoryImporterManager; +use NetteAddons\Model\Utils\Licenses; +use NetteAddons\Model\Utils\FormValidators; /** - * @author Patrik Votoček - * * @property \NetteAddons\Model\Addon $addon */ class AddonForm extends \NetteAddons\Forms\BaseForm @@ -41,27 +38,25 @@ class AddonForm extends \NetteAddons\Forms\BaseForm private $addon; - /** - * @param \NetteAddons\Model\Facade\AddonManageFacade - * @param \NetteAddons\Model\Importers\RepositoryImporterManager - * @param \NetteAddons\Model\Tags - * @param \NetteAddons\Model\Utils\FormValidators - * @param \NetteAddons\Model\Utils\Licenses - * @param array - */ - public function __construct(AddonManageFacade $manager, RepositoryImporterManager $importerManager, Tags $tags, FormValidators $validators, Licenses $licenses, array $descriptionFormats = array()) - { + public function __construct( + AddonManageFacade $manager, + RepositoryImporterManager $importerManager, + Tags $tags, + FormValidators $validators, + Licenses $licenses, + array $descriptionFormats = array() + ) { $this->manager = $manager; $this->importerManager = $importerManager; $this->tags = $tags; $this->validators = $validators; $this->licenses = $licenses; $this->descriptionFormats = $descriptionFormats; + parent::__construct(); } - protected function buildForm() { $this->addText('name', 'Name', NULL, 100) @@ -69,10 +64,10 @@ protected function buildForm() $this->addText('composerFullName', 'Composer name', NULL, 100) ->setRequired() ->addRule(self::PATTERN, 'Invalid composer name', FormValidators::COMPOSER_NAME_RE) - ->addRule($this->validators->isComposerFullNameUnique, 'This composer name has already been taken.'); + ->addRule(array($this->validators, 'isComposerFullNameUnique'), 'This composer name has already been taken.'); $this->addMultiSelect('defaultLicense', 'Default license', $this->licenses->getLicenses(TRUE)) ->setRequired() - ->addRule($this->validators->isLicenseValid, 'Invalid license identifier.'); + ->addRule(array($this->validators, 'isLicenseValid'), 'Invalid license identifier.'); $this->addMultiSelect('tags', 'Categories', $this->getCategories()) ->setRequired(); $this->addText('repository', 'Repository URL', NULL, 500) @@ -92,21 +87,21 @@ protected function buildForm() } - /** * @return array */ private function getCategories() { $categories = array(); + foreach ($this->tags->findMainTags() as $tag) { $categories[$tag->id] = $tag->name; } + return $categories; } - /** * @return \NetteAddons\Model\Addon */ @@ -115,11 +110,11 @@ public function getAddon() if (!$this->addon) { $this->addon = new Addon; } + return $this->addon; } - /** * @param \NetteAddons\Model\Addon * @return AddonForm @@ -166,7 +161,6 @@ public function setAddon(Addon $addon) } - /** * @param bool * @return \Nette\ArrayHash|array @@ -174,16 +168,18 @@ public function setAddon(Addon $addon) public function getValues($asArray = FALSE) { $values = parent::getValues($asArray); + if (isset($this['repository'])) { $values['repositoryHosting'] = NULL; } + if (!empty($values['repository'])) { $values['repository'] = $this->importerManager->normalizeUrl($values['repository']); if ($this->importerManager->isValid($values['repository'])) { $values['repositoryHosting'] = $this->importerManager->getIdByUrl($values['repository']); } } + return $values; } - } diff --git a/app/Manage/forms/AddonFormFactory.php b/app/Manage/forms/AddonFormFactory.php index 7df632b..67b9f23 100644 --- a/app/Manage/forms/AddonFormFactory.php +++ b/app/Manage/forms/AddonFormFactory.php @@ -2,16 +2,14 @@ namespace NetteAddons\Manage\Forms; -use NetteAddons\Model\Facade\AddonManageFacade, - NetteAddons\Model\Importers\RepositoryImporterManager, - NetteAddons\Model\Tags, - NetteAddons\Model\Utils\FormValidators, - NetteAddons\Model\Utils\Licenses; +use NetteAddons\Model\Facade\AddonManageFacade; +use NetteAddons\Model\Importers\RepositoryImporterManager; +use NetteAddons\Model\Tags; +use NetteAddons\Model\Utils\FormValidators; +use NetteAddons\Model\Utils\Licenses; /** - * @author Patrik Votoček - * * @property string $token */ abstract class AddonFormFactory extends \Nette\Object @@ -35,16 +33,13 @@ abstract class AddonFormFactory extends \Nette\Object private $descriptionFormats = array(); - - /** - * @param \NetteAddons\Model\Facade\AddonManageFacade - * @param \NetteAddons\Model\Importers\RepositoryImporterManager - * @param \NetteAddons\Model\Tags - * @param \NetteAddons\Model\Utils\FormValidators - * @param \NetteAddons\Model\Utils\Licenses - */ - public function __construct(AddonManageFacade $manager, RepositoryImporterManager $importerManager, Tags $tags, FormValidators $validators, Licenses $licenses) - { + public function __construct( + AddonManageFacade $manager, + RepositoryImporterManager $importerManager, + Tags $tags, + FormValidators $validators, + Licenses $licenses + ) { $this->manager = $manager; $this->importerManager = $importerManager; $this->tags = $tags; @@ -53,11 +48,10 @@ public function __construct(AddonManageFacade $manager, RepositoryImporterManage } - /** * @param string * @param string - * @return AddonForm + * @return AddonFormFactory */ public function addDescriptionFormat($id, $name) { @@ -66,7 +60,6 @@ public function addDescriptionFormat($id, $name) } - /** * @return AddonForm */ @@ -81,5 +74,4 @@ protected function createForm() $this->descriptionFormats ); } - } diff --git a/app/Manage/forms/EditAddonFormFactory.php b/app/Manage/forms/EditAddonFormFactory.php index 5119705..13c673e 100644 --- a/app/Manage/forms/EditAddonFormFactory.php +++ b/app/Manage/forms/EditAddonFormFactory.php @@ -2,21 +2,19 @@ namespace NetteAddons\Manage\Forms; -use NetteAddons\Model\Facade\AddonManageFacade, - NetteAddons\Model\Importers\RepositoryImporterManager, - NetteAddons\Model\Tags, - NetteAddons\Model\Utils\FormValidators, - NetteAddons\Model\Utils\Licenses, - NetteAddons\Model\Addons, - NetteAddons\Model\Addon; +use NetteAddons\Model\Facade\AddonManageFacade; +use NetteAddons\Model\Importers\RepositoryImporterManager; +use NetteAddons\Model\Tags; +use NetteAddons\Model\Utils\FormValidators; +use NetteAddons\Model\Utils\Licenses; +use NetteAddons\Model\Addons; +use NetteAddons\Model\Addon; /** * Form for new addon registration. When importing from GitHub, most of the fields should be prefilled. * The license input won't be visible when composer.json is available. * - * @author Patrik Votoček - * * @property string $token */ class EditAddonFormFactory extends AddonFormFactory @@ -25,25 +23,22 @@ class EditAddonFormFactory extends AddonFormFactory private $model; - - /** - * @param \NetteAddons\Model\Facade\AddonManageFacade - * @param \NetteAddons\Model\Importers\RepositoryImporterManager - * @param \NetteAddons\Model\Tags - * @param \NetteAddons\Model\Utils\FormValidators - * @param \NetteAddons\Model\Utils\Licenses - * @param \NetteAddons\Model\Addons - */ - public function __construct(AddonManageFacade $manager, RepositoryImporterManager $importerManager, Tags $tags, FormValidators $validators, Licenses $licenses, Addons $model) - { + public function __construct( + AddonManageFacade $manager, + RepositoryImporterManager $importerManager, + Tags $tags, + FormValidators $validators, + Licenses $licenses, + Addons $model + ) { parent::__construct($manager, $importerManager, $tags, $validators, $licenses); + $this->model = $model; } - /** - * @param Addon + * @param \NetteAddons\Model\Addon * @return AddonForm */ public function create(Addon $addon) @@ -66,5 +61,4 @@ public function create(Addon $addon) return $form; } - } diff --git a/app/Manage/forms/ImportAddonFormFactory.php b/app/Manage/forms/ImportAddonFormFactory.php index defc447..e63389b 100644 --- a/app/Manage/forms/ImportAddonFormFactory.php +++ b/app/Manage/forms/ImportAddonFormFactory.php @@ -2,18 +2,16 @@ namespace NetteAddons\Manage\Forms; -use Nette, - Nette\Utils\Strings, - Nette\Forms\IControl, - Nette\Security\IIdentity, - NetteAddons\Forms\Form, - NetteAddons\Model\Facade\AddonManageFacade, - NetteAddons\Model\Importers\RepositoryImporterManager, - NetteAddons\Model\Utils\Validators; - -/** - * @author Patrik Votoček - */ +use Nette\Diagnostics\Debugger; +use Nette\Utils\Strings; +use Nette\Forms\IControl; +use Nette\Security\IIdentity; +use NetteAddons\Forms\Form; +use NetteAddons\Model\Facade\AddonManageFacade; +use NetteAddons\Model\Importers\RepositoryImporterManager; +use NetteAddons\Model\Utils\Validators; + + class ImportAddonFormFactory extends \Nette\Object { /** @var \NetteAddons\Model\Facade\AddonManageFacade */ @@ -26,22 +24,21 @@ class ImportAddonFormFactory extends \Nette\Object private $validators; - - /** - * @param \NetteAddons\Model\Facade\AddonManageFacade - * @param \NetteAddons\Model\Importers\RepositoryImporterManager - * @param \NetteAddons\Model\Utils\Validators - */ - public function __construct(AddonManageFacade $manager, RepositoryImporterManager $importers, Validators $validators) - { + public function __construct( + AddonManageFacade $manager, + RepositoryImporterManager $importers, + Validators $validators + ) { $this->manager = $manager; $this->importerManager = $importers; $this->validators = $validators; } - - + /** + * @param \Nette\Security\IIdentity + * @return \NetteAddons\Forms\Form + */ public function create(IIdentity $user) { $form = new Form; @@ -67,7 +64,6 @@ public function create(IIdentity $user) try { $importer = $importerManager->createFromUrl($values->url); - } catch (\NetteAddons\NotSupportedException $e) { $form['url']->addError( 'Sorry, we currently support only repositories from ' . $importerManager->getNames() . '.' @@ -84,23 +80,19 @@ public function create(IIdentity $user) } $manager->storeAddon($values->token, $addon); - } catch (\NetteAddons\Utils\HttpException $e) { if ($e->getCode() === 404) { $form['url']->addError("Repository with URL '{$values->url}' does not exist."); - } else { $importerName = $importer::getName(); $form['url']->addError("Importing failed because '$importerName' returned error #" . $e->getCode() . '.'); } - } catch (\NetteAddons\IOException $e) { if ($e->getCode() === 404) { $form['url']->addError("Repository with URL '{$values->url}' does not exist."); - } else { $form['url']->addError('Importing failed. Try again later.'); - Nette\Diagnostics\Debugger::log($e, Nette\Diagnostics\Debugger::WARNING); + Debugger::log($e, Debugger::WARNING); } } }; @@ -109,7 +101,6 @@ public function create(IIdentity $user) } - /** * @param \Nette\Forms\IControl * @return bool @@ -120,7 +111,6 @@ public function validateRepositoryUrlSupported(IControl $control) } - /** * @param \Nette\Forms\IControl * @return bool @@ -129,5 +119,4 @@ public function validateRepositoryUrl(IControl $control) { return $this->importerManager->isValid($control->getValue()); } - } diff --git a/app/Manage/forms/ReportFormFactory.php b/app/Manage/forms/ReportFormFactory.php index e4c5183..2cd71cd 100644 --- a/app/Manage/forms/ReportFormFactory.php +++ b/app/Manage/forms/ReportFormFactory.php @@ -41,7 +41,6 @@ public function create(IIdentity $user) $form->addSubmit('sub', 'Zap'); - $model = $this->reports; $form->onSuccess[] = function(Form $form) use($model, $user) { $values = $form->getValues(); diff --git a/app/Manage/forms/VersionFormFactory.php b/app/Manage/forms/VersionFormFactory.php index 6ed7265..fbddd19 100644 --- a/app/Manage/forms/VersionFormFactory.php +++ b/app/Manage/forms/VersionFormFactory.php @@ -2,54 +2,45 @@ namespace NetteAddons\Manage\Forms; -use Nette\Utils\Strings, - Nette\Forms\Controls\UploadControl, - NetteAddons\Model\Addon, - NetteAddons\Model\Utils\Licenses, - NetteAddons\Model\Utils\FormValidators; +use Nette\Utils\Strings; +use Nette\Forms\Controls\UploadControl; +use NetteAddons\Model\Addon; +use NetteAddons\Model\Utils\Licenses; +use NetteAddons\Model\Utils\FormValidators; - -/** - * @author Patrik Votoček - */ class VersionForm extends \NetteAddons\Forms\BaseForm { - /** @var FormValidators */ + /** @var \NetteAddons\Model\Utils\FormValidators */ private $validators; - /** @var Licenses */ + /** @var \NetteAddons\Model\Utils\Licenses */ private $licenses; - /** @var Addon */ + /** @var \NetteAddons\Model\Addon */ private $addon; - /** - * @param FormValidators - * @param Licenses - * @param Addon - */ public function __construct(FormValidators $validators, Licenses $licenses, Addon $addon) { $this->validators = $validators; $this->licenses = $licenses; $this->addon = $addon; + parent::__construct(); } - protected function buildForm() { $this->addText('version', 'Version', NULL, 100) ->setRequired() - ->addRule($this->validators->isVersionValid, 'Invalid version.'); + ->addRule(array($this->validators, 'isVersionValid'), 'Invalid version.'); $this->addMultiSelect('license', 'License', $this->licenses->getLicenses(TRUE)) ->setAttribute('class', 'chzn-select') ->setRequired() - ->addRule($this->validators->isLicenseValid, 'Invalid license identifier.'); + ->addRule(array($this->validators, 'isLicenseValid'), 'Invalid license identifier.'); $providers = array( 'link' => 'Provide link to distribution archive.', @@ -57,20 +48,23 @@ protected function buildForm() ); $this->addSelect('how', 'How would you like to provide source codes?', $providers) ->setRequired() - ->addCondition(self::EQUAL, 'link')->toggle('xlink')->endCondition() - ->addCondition(self::EQUAL, 'upload')->toggle('xupload')->endCondition(); + ->addCondition(self::EQUAL, 'link') + ->toggle('xlink') + ->endCondition() + ->addCondition(self::EQUAL, 'upload') + ->toggle('xupload'); $this->addText('archiveLink', 'Link to ZIP archive') ->setOption('id', 'xlink') ->addConditionOn($this['how'], self::EQUAL, 'link') - ->addRule(self::FILLED) - ->addRule(self::URL); + ->addRule(self::FILLED) + ->addRule(self::URL); $this->addUpload('archive', 'Archive') ->setOption('id', 'xupload') ->addConditionOn($this['how'], self::EQUAL, 'upload') - ->addRule(self::FILLED) - ->addRule($this->isArchiveValid, 'Only ZIP files are allowed.'); + ->addRule(self::FILLED) + ->addRule(array($this, 'isArchiveValid'), 'Only ZIP files are allowed.'); $license = $this->addon->defaultLicense; if (is_string($license)) { @@ -82,7 +76,6 @@ protected function buildForm() } - /** * @param \Nette\Forms\Controls\UploadControl * @return bool @@ -91,5 +84,4 @@ public function isArchiveValid(UploadControl $control) { return Strings::endsWith($control->value->name, '.zip'); } - } diff --git a/app/Manage/presenters/AddonPresenter.php b/app/Manage/presenters/AddonPresenter.php index 2f25b43..424d464 100644 --- a/app/Manage/presenters/AddonPresenter.php +++ b/app/Manage/presenters/AddonPresenter.php @@ -2,44 +2,44 @@ namespace NetteAddons\Manage; -use NetteAddons\Forms\Form, - NetteAddons\Model\Utils\Validators; +use NetteAddons\Forms\Form; +use NetteAddons\Model\Utils\Validators; +use NetteAddons\Manage\Forms\AddAddonFormFactory; +use NetteAddons\Manage\Forms\EditAddonFormFactory; +use NetteAddons\Manage\Forms\ImportAddonFormFactory; -/** - * @author Patrik Votoček - */ final class AddonPresenter extends BasePresenter { - /** - * @var Forms\AddAddonFormFactory - * @inject - */ + /** @var Forms\AddAddonFormFactory */ public $addAddonForm; - /** - * @var Forms\EditAddonFormFactory - * @inject - */ + /** @var Forms\EditAddonFormFactory */ public $editAddonForm; - /** - * @var Forms\ImportAddonFormFactory - * @inject - */ + /** @var Forms\ImportAddonFormFactory */ public $importAddonForm; - /** - * @var \NetteAddons\Model\Utils\Validators - * @inject - */ + /** @var \NetteAddons\Model\Utils\Validators */ public $validators; + public function __construct( + AddAddonFormFactory $addAddonFormFactory, + EditAddonFormFactory $editAddonFormFactory, + ImportAddonFormFactory $importAddonFormFactory, + Validators $validators + ) { + parent::__construct(); + + $this->addAddonForm = $addAddonFormFactory; + $this->editAddonForm = $editAddonFormFactory; + $this->importAddonForm = $importAddonFormFactory; + $this->validators = $validators; + } + /** - * Creates a new form for addon information. - * * @return Forms\AddonForm */ protected function createComponentAddAddonForm() @@ -56,10 +56,7 @@ protected function createComponentAddAddonForm() } - /** - * Handles the new addon form submission. - * * @param Forms\AddonForm */ public function addAddonFormSubmitted(Forms\AddonForm $form) @@ -73,7 +70,6 @@ public function addAddonFormSubmitted(Forms\AddonForm $form) if ($imported) { $this->redirect(':Manage:Versions:import'); - } else { $this->flashMessage('Addon created. Now it\'s time to add the first version.'); $this->redirect(':Manage:Versions:add'); @@ -82,9 +78,8 @@ public function addAddonFormSubmitted(Forms\AddonForm $form) } - /** - * @return Form + * @return \NetteAddons\Forms\Form */ protected function createComponentImportAddonForm() { @@ -96,9 +91,8 @@ protected function createComponentImportAddonForm() } - /** - * @param Form + * @param \NetteAddons\Forms\Form */ public function importAddonFormSubmitted(Form $form) { @@ -112,17 +106,12 @@ public function importAddonFormSubmitted(Form $form) } - public function renderAdd() { $this->template->full = empty($this->token); } - - /** - * Finish the addon creation - */ public function actionFinish() { if (!$this->addon) { @@ -145,7 +134,6 @@ public function actionFinish() } - /** * @return Forms\AddonForm */ @@ -163,7 +151,6 @@ protected function createComponentEditAddonForm() } - /** * @param Forms\AddonForm */ @@ -178,7 +165,6 @@ public function editAddonFormSubmitted(Forms\AddonForm $form) } - /** * @param int */ @@ -191,7 +177,6 @@ public function actionEdit($addonId) } - /** * @param int */ @@ -201,7 +186,6 @@ public function renderEdit($addonId) } - /** * @secured * @param int @@ -224,7 +208,6 @@ public function handleDelete($addonId, $real = FALSE) } - /** * @secured * @param int @@ -244,7 +227,6 @@ public function handleRestore($addonId) } - /** * @param int */ @@ -257,7 +239,6 @@ public function actionDelete($addonId) } - /** * @param int */ @@ -266,5 +247,4 @@ public function renderDelete($addonId) $this->template->addon = $this->addon; $this->template->newest = !$this->validators->isComposerFullNameUnique($this->addon->composerFullName); } - } diff --git a/app/Manage/presenters/AdminPresenter.php b/app/Manage/presenters/AdminPresenter.php index afa3839..c3874c6 100644 --- a/app/Manage/presenters/AdminPresenter.php +++ b/app/Manage/presenters/AdminPresenter.php @@ -2,42 +2,42 @@ namespace NetteAddons\Manage; -use NetteAddons\Forms\Form, - NetteAddons\Model\Addons, - NetteAddons\Model\AddonVotes, - NetteAddons\Model\AddonReports; +use Nette\Http\IResponse; +use NetteAddons\Forms\Form; +use NetteAddons\Model\Addons; +use NetteAddons\Model\AddonVotes; +use NetteAddons\Model\AddonReports; -/** - * @author Patrik Votoček - */ final class AdminPresenter extends \NetteAddons\BasePresenter { - /** - * @var \NetteAddons\Model\Addons - * @inject - */ + /** @var \NetteAddons\Model\Addons */ public $addons; - /** - * @var \NetteAddons\Model\AddonVotes - * @inject - */ + /** @var \NetteAddons\Model\AddonVotes */ public $addonVotes; - /** - * @var \NetteAddons\Model\AddonReports - * @inject - */ + /** @var \NetteAddons\Model\AddonReports */ public $reports; - /** - * @var Forms\ReportFormFactory - * @inject - */ + /** @var \NetteAddons\Manage\Forms\ReportFormFactory */ public $reportForm; + public function __construct( + Addons $addons, + AddonVotes $addonVotes, + AddonReports $addonReports, + Forms\ReportFormFactory $reportFormFactory + ) { + parent::__construct(); + + $this->addons = $addons; + $this->addonVotes = $addonVotes; + $this->reports = $addonReports; + $this->reportForm = $reportFormFactory; + } + /** * @param \Nette\Application\UI\PresenterComponentReflection @@ -49,20 +49,18 @@ public function checkRequirements($element) $this->flashMessage('Please sign in to continue.'); $this->redirect(':Sign:in', $this->storeRequest()); } elseif (!$this->user->isInRole('moderators') && !$this->user->isInRole('administrators')) { - $this->error('This section is only for admins and moderators.', 403); + $this->error('This section is only for admins and moderators.', IResponse::S403_FORBIDDEN); } } - protected function beforeRender() { parent::beforeRender(); - $this->template->addonVotes = callback($this->addonVotes, 'calculatePopularity'); + $this->template->addonVotes = array($this->addonVotes, 'calculatePopularity'); } - public function actionDeleted() { if (!$this->auth->isAllowed('addon', 'delete')) { @@ -71,23 +69,20 @@ public function actionDeleted() } - public function renderDeleted() { $this->template->addons = $this->addons->findDeleted(); } - public function renderReports() { $this->template->reports = $this->reports->findAll()->order('reportedAt DESC'); } - /** - * @return Form + * @return \NetteAddons\Forms\Form */ protected function createComponentReportForm() { @@ -98,10 +93,8 @@ protected function createComponentReportForm() return $form; } - - /** - * @param Form + * @param \NetteAddons\Forms\Form */ public function reportFormSubmitted(Form $form) { @@ -112,7 +105,6 @@ public function reportFormSubmitted(Form $form) } - /** * @param int */ @@ -127,7 +119,6 @@ public function actionReport($id) } - /** * @param int */ @@ -135,5 +126,4 @@ public function renderReport($id) { $this->template->report = $this->reports->find($id); } - } diff --git a/app/Manage/presenters/BasePresenter.php b/app/Manage/presenters/BasePresenter.php index 4357196..66ea7a9 100644 --- a/app/Manage/presenters/BasePresenter.php +++ b/app/Manage/presenters/BasePresenter.php @@ -2,16 +2,9 @@ namespace NetteAddons\Manage; -use Nette\Utils\Strings, - NetteAddons\Model\Addon, - NetteAddons\Model\Addons, - NetteAddons\Model\Facade\AddonManageFacade, - NetteAddons\Model\Importers\RepositoryImporterManager; +use NetteAddons\Model\Addon; -/** - * @author Patrik Votoček - */ abstract class BasePresenter extends \NetteAddons\BasePresenter { /** @@ -48,7 +41,6 @@ abstract class BasePresenter extends \NetteAddons\BasePresenter protected $addon; - /** * @param \Nette\Application\UI\PresenterComponentReflection */ @@ -61,7 +53,6 @@ public function checkRequirements($element) } - protected function startup() { parent::startup(); @@ -72,13 +63,14 @@ protected function startup() if ($this->token) { $this->addon = $this->manager->restoreAddon($this->token); - } elseif ($this->addonId) { $deleted = $this->auth->isAllowed('addon', 'delete'); $row = $this->addons->find($this->addonId, $deleted); + if (!$row) { $this->error('Addon not found.'); } + $this->addon = Addon::fromActiveRow($row); } diff --git a/app/Manage/presenters/VersionsPresenter.php b/app/Manage/presenters/VersionsPresenter.php index 5d3bebc..b94911b 100644 --- a/app/Manage/presenters/VersionsPresenter.php +++ b/app/Manage/presenters/VersionsPresenter.php @@ -2,34 +2,35 @@ namespace NetteAddons\Manage; -use NetteAddons\Model\Users, - NetteAddons\Model\AddonVersions; +use NetteAddons\Manage\Forms\AddVersionFormFactory; +use NetteAddons\Model\Users; +use NetteAddons\Model\AddonVersions; -/** - * @author Patrik Votoček - */ final class VersionsPresenter extends BasePresenter { - /** - * @var Forms\AddVersionFormFactory - * @inject - */ + /** @var \NetteAddons\Manage\Forms\AddVersionFormFactory */ public $addVersionForm; - /** - * @var \NetteAddons\Model\AddonVersions - * @inject - */ + /** @var \NetteAddons\Model\AddonVersions */ public $versions; - /** - * @var \NetteAddons\Model\Users - * @inject - */ + /** @var \NetteAddons\Model\Users */ public $users; + public function __construct( + AddVersionFormFactory $addVersionFormFactory, + AddonVersions $addonVersions, + Users $users + ) { + parent::__construct(); + + $this->addVersionForm = $addVersionFormFactory; + $this->versions = $addonVersions; + $this->users = $users; + } + /** * @return Forms\VersionForm @@ -38,15 +39,14 @@ protected function createComponentAddVersionForm() { $form = $this->addVersionForm->create($this->addon, $this->getUser()->getIdentity(), $this->token); - $form->onSuccess[] = $this->addVersionFormSubmitted; + $form->onSuccess[] = array($this, 'addVersionFormSubmitted'); return $form; } - /** - * @param Forms\VersionForm + * @param \NetteAddons\Manage\Forms\VersionForm */ public function addVersionFormSubmitted(Forms\VersionForm $form) { @@ -65,7 +65,6 @@ public function addVersionFormSubmitted(Forms\VersionForm $form) } - public function actionAdd() { if (!$this->addon) { @@ -74,14 +73,12 @@ public function actionAdd() } - public function renderAdd() { $this->template->addon = $this->addon; } - public function actionImport() { if (!$this->addon) { @@ -96,14 +93,12 @@ public function actionImport() $this->manager->importVersions($this->addon, $importer, $this->getUser()->identity); $this->manager->storeAddon($this->token, $this->addon); $this->redirect(':Manage:Addon:finish'); - } catch (\NetteAddons\NotSupportedException $e) { $this->error(); } } - /** * @param int */ @@ -118,10 +113,8 @@ public function actionCheck($addonId) try { $importer = $this->importerManager->createFromUrl($this->addon->repository); $result = $this->manager->updateVersions($this->addon, $importer, $owner); - } catch (\NetteAddons\NotSupportedException $e) { $this->error(); - } catch (\NetteAddons\IOException $e) { $this->flashMessage('Version importing failed. Try again later.', 'error'); $this->redirect(':Detail:', $this->addon->id); @@ -134,10 +127,12 @@ public function actionCheck($addonId) foreach ($result['new'] as $version) { $this->versions->add($version); } + foreach ($result['conflicted'] as $conflict) { $conflict['b']->id = $conflict['a']->id; $this->versions->update($conflict['b']); } + $this->flashMessage('Versions have been updated.'); } catch (\PDOException $e) { $this->flashMessage('Version importing failed. Try again later.', 'error'); @@ -146,5 +141,4 @@ public function actionCheck($addonId) $this->redirect(':Detail:', $this->addon->id); } - } diff --git a/app/bootstrap.php b/app/bootstrap.php index c23ad39..00aeb34 100644 --- a/app/bootstrap.php +++ b/app/bootstrap.php @@ -2,7 +2,6 @@ namespace NetteAddons; -use Nette\Application\Routers\Route; use Nette\Configurator; // Load Nette Framework or autoloader generated by Composer diff --git a/app/components/CategoriesControl.php b/app/components/CategoriesControl.php index c7ef89a..51d3ae3 100644 --- a/app/components/CategoriesControl.php +++ b/app/components/CategoriesControl.php @@ -2,33 +2,24 @@ namespace NetteAddons\Components; -use Nette, - NetteAddons\Model\Tags; +use Nette; +use NetteAddons\Model\Tags; - -/** - * @author Patrik Votoček - */ -class CategoriesControl extends Nette\Application\UI\Control +class CategoriesControl extends \Nette\Application\UI\Control { - - /** @var \NetteAddons\Model\Tags */ + /** * @var \NetteAddons\Model\Tags */ private $tags; - - /** - * @param \NetteAddons\Model\Tags - */ public function __construct(Tags $tags) { parent::__construct(); + $this->tags = $tags; } - public function render() { $this->template->categories = $this->tags->findMainTagsWithAddons(); @@ -37,5 +28,4 @@ public function render() $this->template->setFile(__DIR__ . '/Categories.latte'); $this->template->render(); } - } diff --git a/app/components/SubMenuControl.php b/app/components/SubMenuControl.php index b99caa6..299f5cd 100644 --- a/app/components/SubMenuControl.php +++ b/app/components/SubMenuControl.php @@ -2,17 +2,11 @@ namespace NetteAddons\Components; -use Nette, - NetteAddons\Model\Addon, - NetteAddons\Model\Authorizator; +use NetteAddons\Model\Addon; +use NetteAddons\Model\Authorizator; - -/** - * @author Filip Procházka - * @author Patrik Votoček - */ -class SubMenuControl extends Nette\Application\UI\Control +class SubMenuControl extends \Nette\Application\UI\Control { /** @var \NetteAddons\Model\Authorizator */ @@ -25,20 +19,17 @@ class SubMenuControl extends Nette\Application\UI\Control private $page; - - /** - * @param \NetteAddons\Model\Authorizator $auth - */ public function __construct(Authorizator $auth) { parent::__construct(); + $this->auth = $auth; } - /** * @param \NetteAddons\Model\Addon + * @return SubMenuControl */ public function setAddon(Addon $addon) { @@ -47,7 +38,6 @@ public function setAddon(Addon $addon) } - /** * @param \Nette\Database\Table\ActiveRow|string * @return SubMenuControl @@ -59,7 +49,6 @@ public function setPage($page) } - public function render() { $this->template->auth = $this->auth; @@ -73,5 +62,4 @@ public function render() $this->template->setFile(__DIR__ . '/SubMenu.latte'); $this->template->render(); } - } diff --git a/app/forms/BaseForm.php b/app/forms/BaseForm.php index 98f1581..46064d2 100644 --- a/app/forms/BaseForm.php +++ b/app/forms/BaseForm.php @@ -2,27 +2,18 @@ namespace NetteAddons\Forms; -use Nette\ComponentModel\IContainer; - -/** - * Base class for all forms. - * - * Handles the form rendering using form templates. - */ abstract class BaseForm extends Form { - public function __construct(IContainer $parent = NULL, $name = NULL) + public function __construct() { - parent::__construct($parent, $name); + parent::__construct(); $this->buildForm(); } /** - * Abstract function which handles the form creation. - * @abstract * @return void */ protected abstract function buildForm(); diff --git a/app/forms/EditPageFormFactory.php b/app/forms/EditPageFormFactory.php index 16b3ada..837f4d3 100644 --- a/app/forms/EditPageFormFactory.php +++ b/app/forms/EditPageFormFactory.php @@ -2,24 +2,17 @@ namespace NetteAddons\Forms; -use Nette\Security\IIdentity, - Nette\Database\Table\ActiveRow, - NetteAddons\Model\Pages; +use Nette\Security\IIdentity; +use Nette\Database\Table\ActiveRow; +use NetteAddons\Model\Pages; -/** - * @author Patrik Votoček - */ class EditPageFormFactory extends \Nette\Object { - - /** @var Pages */ + /** @var \NetteAddons\Model\Pages */ private $pages; - /** - * @param Pages - */ public function __construct(Pages $pages) { $this->pages = $pages; @@ -27,13 +20,14 @@ public function __construct(Pages $pages) /** - * @param ActiveRow - * @param IIdentity + * @param \Nette\Database\Table\ActiveRow + * @param \Nette\Security\IIdentity * @return Form */ public function create(ActiveRow $page, IIdentity $user) { $form = new Form; + $form->addText('name', 'Name') ->setRequired() ->setAttribute('class', 'text input-half'); @@ -56,5 +50,4 @@ public function create(ActiveRow $page, IIdentity $user) return $form; } - } diff --git a/app/forms/FilterForm.php b/app/forms/FilterForm.php index 27ed2ae..9d58976 100644 --- a/app/forms/FilterForm.php +++ b/app/forms/FilterForm.php @@ -2,16 +2,11 @@ namespace NetteAddons\Forms; -use NetteAddons\Model, - Nette\Application\UI\Form; +use NetteAddons\Model\Tags; -/** - * @author Patrik Votoček - */ class FilterForm extends BaseForm { - /** @var \NetteAddons\Model\Tags */ private $tags; @@ -19,20 +14,14 @@ class FilterForm extends BaseForm private $tagsPairs; - - /** - * @param Model\Tags - */ - public function __construct(Model\Tags $tags) + public function __construct(Tags $tags) { $this->tags = $tags; + parent::__construct(); } - /** - * @return \Nette\Application\UI\Form - */ protected function buildForm() { $this->tagsPairs = $this->tags->findMainTags()->fetchPairs('slug', 'name'); @@ -45,7 +34,6 @@ protected function buildForm() } - /** * @param string * @return FilterForm @@ -57,7 +45,6 @@ public function setSearch($search) } - /** * @param string * @return FilterForm @@ -69,7 +56,6 @@ public function setCategory($category) } - /** * @return string */ @@ -78,5 +64,4 @@ public function getCategory() $value = $this['category']->getValue(); return $value ? $this->tagsPairs[$value] : NULL; } - } diff --git a/app/forms/Form.php b/app/forms/Form.php index 9e42e14..88b17cb 100644 --- a/app/forms/Form.php +++ b/app/forms/Form.php @@ -2,23 +2,17 @@ namespace NetteAddons\Forms; -use Nette, - Nette\ComponentModel\IContainer; +use Nette\Forms\Rendering\DefaultFormRenderer; -/** - * Base class for all forms. - * - * Handles the form rendering using form templates. - */ -class Form extends Nette\Application\UI\Form +class Form extends \Nette\Application\UI\Form { - public function __construct(IContainer $parent = NULL, $name = NULL) + public function __construct() { - parent::__construct($parent, $name); + parent::__construct(); $renderer = $this->getRenderer(); - if ($renderer instanceof \Nette\Forms\Rendering\DefaultFormRenderer) { + if ($renderer instanceof DefaultFormRenderer) { $renderer->wrappers['form']['container'] = 'div class=form'; $renderer->wrappers['controls']['container'] = NULL; $renderer->wrappers['pair']['container'] = 'div class=controls'; diff --git a/app/forms/ReportFormFactory.php b/app/forms/ReportFormFactory.php index e37f98e..0b06ddc 100644 --- a/app/forms/ReportFormFactory.php +++ b/app/forms/ReportFormFactory.php @@ -2,24 +2,17 @@ namespace NetteAddons\Forms; -use Nette\Security\IIdentity, - NetteAddons\Model\Addon, - NetteAddons\Model\AddonReports; +use Nette\Security\IIdentity; +use NetteAddons\Model\Addon; +use NetteAddons\Model\AddonReports; -/** - * @author Patrik Votoček - */ class ReportFormFactory extends \Nette\Object { - - /** @var AddonReports */ + /** @var \NetteAddons\Model\AddonReports */ private $reports; - /** - * @param AddonReports - */ public function __construct(AddonReports $reports) { $this->reports = $reports; @@ -27,8 +20,8 @@ public function __construct(AddonReports $reports) /** - * @param Addon - * @param IIdentity + * @param \NetteAddons\Model\Addon + * @param \Nette\Security\IIdentity * @return Form */ public function create(Addon $addon, IIdentity $user) @@ -43,10 +36,9 @@ public function create(Addon $addon, IIdentity $user) $model = $this->reports; $form->onSuccess[] = function(Form $form) use($model, $addon, $user) { $values = $form->getValues(); - $model->saveReport($user->getId(), $addon->id, $values['message']); + $model->saveReport($user->getId(), $addon->id, $values->message); }; return $form; } - } diff --git a/app/forms/SignInForm.php b/app/forms/SignInForm.php index d9612c2..ce768a7 100644 --- a/app/forms/SignInForm.php +++ b/app/forms/SignInForm.php @@ -3,10 +3,8 @@ namespace NetteAddons\Forms; - class SignInForm extends BaseForm { - protected function buildForm() { $this->addText('username', 'Username:') @@ -19,5 +17,4 @@ protected function buildForm() $this->addSubmit('login', 'Login'); } - } diff --git a/app/misc/HttpStreamRequest.php b/app/misc/HttpStreamRequest.php index b63f242..e16e8a3 100644 --- a/app/misc/HttpStreamRequest.php +++ b/app/misc/HttpStreamRequest.php @@ -2,19 +2,13 @@ namespace NetteAddons\Utils; -use Nette, - Nette\Utils\Strings; - +use Nette\Utils\Strings; /** - * @author Michael Moravec - * @author Patrik Votoček - * @author Jan Tvrdík - * * @property-read array $headers */ -class HttpStreamRequest extends Nette\FreezableObject +class HttpStreamRequest extends \Nette\FreezableObject { /** regexp's for parsing */ const HEADER_REGEXP = '~(?P
.*?)\:\s(?P.*)~', @@ -43,10 +37,9 @@ public function __construct($url) } - /** - * @param string - * @param mixed + * @param string + * @param mixed * @return HttpStreamRequest */ public function setOption($name, $value) @@ -57,9 +50,8 @@ public function setOption($name, $value) } - /** - * @param int + * @param int * @return HttpStreamRequest */ public function removeOption($name) @@ -71,8 +63,8 @@ public function removeOption($name) /** - * @param string - * @param string + * @param string + * @param string * @return HttpStreamRequest */ public function addHeader($name, $value) @@ -83,11 +75,10 @@ public function addHeader($name, $value) } - /** - * @param string[] + * @param string[]|array */ - private function parseHeaders($headers) + private function parseHeaders(array $headers) { $headers = array_reverse($headers); foreach ($headers as $header) { @@ -104,11 +95,10 @@ private function parseHeaders($headers) } - /** * @return string page content - * @throws HttpException if server returns HTTP code other than 200 OK - * @throws StreamException if something else fails + * @throws \NetteAddons\Utils\HttpException if server returns HTTP code other than 200 OK + * @throws \NetteAddons\Utils\StreamException if something else fails */ public function execute() { @@ -141,13 +131,11 @@ public function execute() } - /******* shortcuts ********/ - /** - * @param int $timeout timeout in milliseconds + * @param int timeout in milliseconds * @return HttpStreamRequest */ public function setTimeout($timeout) @@ -157,9 +145,8 @@ public function setTimeout($timeout) } - /** - * @param string $method valid HTTP 1.0 method + * @param string valid HTTP 1.0 method * @return HttpStreamRequest */ public function setMethod($method) @@ -169,7 +156,6 @@ public function setMethod($method) } - /** * @return array */ @@ -177,11 +163,8 @@ public function getHeaders() { return $this->headers; } - } - - class StreamException extends \RuntimeException { diff --git a/app/misc/HttpStreamRequestFactory.php b/app/misc/HttpStreamRequestFactory.php index 18b7ad5..166d929 100644 --- a/app/misc/HttpStreamRequestFactory.php +++ b/app/misc/HttpStreamRequestFactory.php @@ -5,10 +5,6 @@ use NetteAddons\Portal; -/** - * @author Patrik Votoček - * @author Michael Moravec - */ class HttpStreamRequestFactory extends \Nette\Object { const UA = 'Nette Addons'; @@ -17,7 +13,6 @@ class HttpStreamRequestFactory extends \Nette\Object private $timeout; - /** * @param int read timeout in milisecond */ @@ -27,7 +22,6 @@ public function __construct($timeout = 0) } - /** * @return string */ @@ -45,9 +39,8 @@ public static function getUAString() } - /** - * @param string|NULL + * @param string|NULL * @return HttpStreamRequest */ public function create($url = NULL) diff --git a/app/misc/Portal.php b/app/misc/Portal.php index dff30ce..ad53e73 100644 --- a/app/misc/Portal.php +++ b/app/misc/Portal.php @@ -3,13 +3,14 @@ namespace NetteAddons; -/** - * @author Patrik Votoček - */ class Portal extends \Nette\Object { const VERSION = '1.0-dev'; + + /** + * @throws \NetteAddons\StaticClassException + */ public function __construct() { throw new \NetteAddons\StaticClassException; diff --git a/app/model/Authenticator.php b/app/model/Authenticator.php index 10a116b..4f09dbb 100644 --- a/app/model/Authenticator.php +++ b/app/model/Authenticator.php @@ -2,32 +2,22 @@ namespace NetteAddons\Model; -use Nette, - Nette\Utils\Strings, - Nette\Security as NS, - NetteAddons\Utils\HttpStreamRequestFactory; +use Nette\Utils\Strings; +use Nette\Security\IAuthenticator; +use NetteAddons\Utils\HttpStreamRequestFactory; - -/** - * Users authenticator. - */ -class Authenticator extends Nette\Object implements NS\IAuthenticator +class Authenticator extends \Nette\Object implements IAuthenticator { const EXTERNAL_URL = 'http://forum.nette.org/cs/login.php?action=in'; - /** @var Users */ + /** @var \NetteAddons\Model\Users */ private $users; /** @var \NetteAddons\Utils\HttpStreamRequestFactory */ private $requestFactory; - - /** - * @param Users - * @param \NetteAddons\Utils\HttpStreamRequestFactory - */ public function __construct(Users $users, HttpStreamRequestFactory $requestFactory) { $this->users = $users; @@ -35,11 +25,10 @@ public function __construct(Users $users, HttpStreamRequestFactory $requestFacto } - /** * Performs an authentication * - * @param array + * @param array * @return \Nette\Security\Identity * @throws \Nette\Security\AuthenticationException */ @@ -50,7 +39,7 @@ public function authenticate(array $credentials) if (!$user) { if (!$user = $this->authenticateExternal($username, $password, TRUE)) { - throw new NS\AuthenticationException("User '$username' not found.", self::IDENTITY_NOT_FOUND); + throw new \Nette\Security\AuthenticationException("User '$username' not found.", self::IDENTITY_NOT_FOUND); } } @@ -61,7 +50,7 @@ public function authenticate(array $credentials) } if ($user->password !== $this->calculateHash($password, $user->password)) { - throw new NS\AuthenticationException("Invalid password.", self::INVALID_CREDENTIAL); + throw new \Nette\Security\AuthenticationException("Invalid password.", self::INVALID_CREDENTIAL); } if (empty($user->apiToken)) { @@ -74,12 +63,11 @@ public function authenticate(array $credentials) } - /** * Computes password hash. * - * @param string - * @param string|NULL + * @param string + * @param string|NULL * @return string */ public static function calculateHash($password, $salt = NULL) @@ -91,12 +79,14 @@ public static function calculateHash($password, $salt = NULL) } - /** * Authenticate again external site (hack ;) - * @param string - * @param string - * @param bool + * + * @todo remove before release + * + * @param string + * @param string + * @param bool * @return \Nette\Database\Table\ActiveRow|bool */ private function authenticateExternal($username, $password, $create = FALSE) @@ -128,5 +118,4 @@ private function authenticateExternal($username, $password, $create = FALSE) return TRUE; } } - } diff --git a/app/model/Authorizator.php b/app/model/Authorizator.php index 7c70ca4..bc894e4 100644 --- a/app/model/Authorizator.php +++ b/app/model/Authorizator.php @@ -2,35 +2,24 @@ namespace NetteAddons\Model; -use Nette; - - -/** - * @author Jan Tvrdík - */ -class Authorizator extends Nette\Object +class Authorizator extends \Nette\Object { /** @var \Nette\Security\User */ private $user; - - /** - * @param \Nette\Security\User - */ public function __construct(\Nette\Security\User $user) { $this->user = $user; } - /** * Is user allowed to perform given action with given resource. * - * @param mixed - * @param string for example 'view', 'edit' + * @param mixed + * @param string for example 'view', 'edit' * @return bool * @throws \NetteAddons\InvalidArgumentException */ @@ -42,7 +31,7 @@ public function isAllowed($resource, $action) $ownerId = $resource->userId; $resource = 'addon'; - } elseif ($resource instanceof Nette\Database\Table\ActiveRow) { + } elseif ($resource instanceof \Nette\Database\Table\ActiveRow) { $ownerId = $resource->user->id; $resource = 'addon'; diff --git a/app/model/DevelopmentUtils.php b/app/model/DevelopmentUtils.php index ca10cbb..5b3e7a9 100644 --- a/app/model/DevelopmentUtils.php +++ b/app/model/DevelopmentUtils.php @@ -2,10 +2,11 @@ namespace NetteAddons\Model; +use Nette\Database\Context; +use Nette\Caching\IStorage; + /** * For tests - * - * @author Jan Marek */ class DevelopmentUtils extends \Nette\Object { @@ -16,15 +17,13 @@ class DevelopmentUtils extends \Nette\Object private $cacheStorage; - - public function __construct(\Nette\Database\Context $db, \Nette\Caching\IStorage $cacheStorage) + public function __construct(Context $db, IStorage $cacheStorage) { $this->db = $db; $this->cacheStorage = $cacheStorage; } - /** * @param int * @param int @@ -54,7 +53,6 @@ public function generateRandomDownloadsAndInstalls($maxCount = 5, $days = 5) } - /** * @param string * @param int @@ -76,8 +74,6 @@ protected function addDownloadOrInstall($type = 'download', $days = 5, $versionI )); } - - /** * Import taken from Adminer, slightly modified * Note: This implementation is aware of delimiters used for trigger definitions (unlike Nette\Database) diff --git a/app/model/Entities/Addon.php b/app/model/Entities/Addon.php index 44bae8e..c07c615 100644 --- a/app/model/Entities/Addon.php +++ b/app/model/Entities/Addon.php @@ -2,20 +2,15 @@ namespace NetteAddons\Model; -use Nette, - Nette\DateTime, - Nette\Utils\Strings; - +use Nette\DateTime; +use Nette\Utils\Strings; +use Nette\Database\Table\ActiveRow; /** - * @author Filip Procházka - * @author Patrik Votoček - * @author Jan Skrasek - * * @property string $composerFullName */ -class Addon extends Nette\Object +class Addon extends \Nette\Object { const COMPOSER_NAME_RE = '#^(?P[a-z0-9]+(-[a-z0-9]+)*)/(?P[a-z0-9]+(-[a-z0-9]+)*)$#i'; @@ -85,11 +80,11 @@ class Addon extends Nette\Object * * @todo Consider lazy loading for versions and tags. * - * @param Nette\Database\Table\ActiveRow - * @param AddonVotes + * @param \Nette\Database\Table\ActiveRow + * @param AddonVotes * @return Addon */ - public static function fromActiveRow(Nette\Database\Table\ActiveRow $row, AddonVotes $addonVotes = NULL) + public static function fromActiveRow(ActiveRow $row, AddonVotes $addonVotes = NULL) { $addon = new static; $addon->id = (int) $row->id; @@ -128,7 +123,6 @@ public static function fromActiveRow(Nette\Database\Table\ActiveRow $row, AddonV } - /** * @return int[] */ @@ -143,18 +137,9 @@ public function getTagsIds() } } return $ids; - - /*if (empty($this->tags)) { - return array(); - } else if (count(array_filter($this->tags, 'ctype_digit')) === count($this->tags)) { - return array_map('intval', $this->tags); // TODO: remove converting to int - } else { - return array_keys($this->tags); - }*/ } - /** * @return string|NULL (vendor/name) */ @@ -167,7 +152,6 @@ public function getComposerFullName() } - /** * @param string (vendor/name) * @return Addon diff --git a/app/model/Entities/AddonVersion.php b/app/model/Entities/AddonVersion.php index 58bf3ce..4002cd7 100644 --- a/app/model/Entities/AddonVersion.php +++ b/app/model/Entities/AddonVersion.php @@ -2,16 +2,12 @@ namespace NetteAddons\Model; -use Nette, - Nette\Utils\Json, - Nette\Utils\Strings, - Nette\Database\Table\ActiveRow; +use Nette\Utils\Json; +use Nette\Utils\Strings; +use Nette\Database\Table\ActiveRow; -/** - * @author Filip Procházka - */ -class AddonVersion extends Nette\Object +class AddonVersion extends \Nette\Object { /** @var int */ public $id; @@ -74,16 +70,6 @@ class AddonVersion extends Nette\Object public $updatedAt; - - /** - * Creates AddonVersion entity from Nette\Database row. - * - * @author Filip Procházka - * @author Jan Tvrdík - * @param ActiveRow - * @return AddonVersion - * @throws \Nette\Utils\JsonException if $row->composerJson contains invalid JSON - */ public static function fromActiveRow(ActiveRow $row) { $version = new static; @@ -116,7 +102,6 @@ public static function fromActiveRow(ActiveRow $row) } - /** * Returns known types of package links. * @@ -135,7 +120,6 @@ public static function getLinkTypes() } - /** * If version depends on Nette and Nette version is not specified, * returns FALSE @@ -149,7 +133,6 @@ public function hasNetteVersion() } - /** * Returns version of Nette this addon depends on * @@ -163,7 +146,6 @@ public function getNetteVersion() } - /** * Returns all requirements beside Nette * diff --git a/app/model/Entities/Tag.php b/app/model/Entities/Tag.php index e0f141f..fb8a277 100644 --- a/app/model/Entities/Tag.php +++ b/app/model/Entities/Tag.php @@ -2,14 +2,10 @@ namespace NetteAddons\Model; -use Nette; +use Nette\Database\Table\ActiveRow; - -/** - * @author Jan Tvrdík - */ -class Tag extends Nette\Object +class Tag extends \Nette\Object { /** @var int */ public $id; @@ -24,12 +20,7 @@ class Tag extends Nette\Object public $level; - - /** - * @param Nette\Database\Table\ActiveRow - * @return Tag - */ - public static function fromActiveRow(Nette\Database\Table\ActiveRow $row) + public static function fromActiveRow(ActiveRow $row) { $tag = new static; $tag->id = (int) $row->id; diff --git a/app/model/Facade/AddonManageFacade.php b/app/model/Facade/AddonManageFacade.php index cfa243a..74fbc3c 100644 --- a/app/model/Facade/AddonManageFacade.php +++ b/app/model/Facade/AddonManageFacade.php @@ -2,23 +2,19 @@ namespace NetteAddons\Model\Facade; -use stdClass, - Nette, - Nette\Utils\Strings, - Nette\Http\Url, - Nette\Http\Session, - Nette\Http\SessionSection, - NetteAddons\Model, - NetteAddons\Model\Utils\VersionParser; - - - -/** - * @author Filip Procházka - * @author Jan Tvrdík - * @author Patrik Votoček - */ -class AddonManageFacade extends Nette\Object +use stdClass; +use Nette\Security\IIdentity; +use Nette\Utils\Strings; +use Nette\Http\Url; +use Nette\Http\Session; +use NetteAddons\Model\Addon; +use NetteAddons\Model\AddonVersion; +use NetteAddons\Model\IAddonImporter; +use NetteAddons\Model\Utils\VersionParser; +use NetteAddons\Model\Utils\Composer; + + +class AddonManageFacade extends \Nette\Object { const SESSION_SECTION = 'addons'; @@ -32,7 +28,6 @@ class AddonManageFacade extends Nette\Object private $session; - /** * @param \Nette\Http\Session * @param string @@ -46,17 +41,16 @@ public function __construct(Session $session, $uploadDir, $uploadUrl) } - /** * Imports addon using addon importer. * - * @param Model\IAddonImporter - * @param Nette\Security\IIdentity - * @return Model\Addon + * @param \NetteAddons\Model\IAddonImporter + * @param \Nette\Security\IIdentity + * @return \NetteAddons\Model\Addon * @throws \NetteAddons\Utils\HttpException * @throws \NetteAddons\IOException */ - public function import(Model\IAddonImporter $importer, Nette\Security\IIdentity $owner) + public function import(IAddonImporter $importer, IIdentity $owner) { $addon = $importer->import(); $addon->userId = $owner->getId(); @@ -65,48 +59,52 @@ public function import(Model\IAddonImporter $importer, Nette\Security\IIdentity } - /** * Imports versions using addon importer. * - * @param Model\Addon - * @param Model\IAddonImporter - * @param Nette\Security\Identity - * @return Model\AddonVersion[] + * @param \NetteAddons\Model\Addon + * @param \NetteAddons\Model\IAddonImporter + * @param \Nette\Security\IIdentity + * @return \NetteAddons\Model\AddonVersion[] * @throws \NetteAddons\IOException */ - public function importVersions(Model\Addon $addon, Model\IAddonImporter $importer, Nette\Security\Identity $owner) + public function importVersions(Addon $addon, IAddonImporter $importer, IIdentity $owner) { return $addon->versions = $this->getImportedVersions($addon, $importer, $owner); } - /** + * Update versions using addon importer. + * + * @param \NetteAddons\Model\Addon + * @param \NetteAddons\Model\IAddonImporter + * @param \Nette\Security\IIdentity + * @return \NetteAddons\Model\AddonVersion[] * @throws \NetteAddons\IOException */ - public function updateVersions(Model\Addon $addon, Model\IAddonImporter $importer, Nette\Security\Identity $owner) + public function updateVersions(Addon $addon, IAddonImporter $importer, IIdentity $owner) { $current = $addon->versions; $new = $this->getImportedVersions($addon, $importer, $owner); $result = $this->mergeVersions($current, $new); $addon->versions = $result['merged']; + return $result; } - /** * Fills addon with values (usually from form). Those value must be already validated. * - * @param Model\Addon - * @param array - * @param Nette\Security\IIdentity|NULL - * @return Model\Addon + * @param \NetteAddons\Model\Addon + * @param array + * @param \Nette\Security\IIdentity|NULL + * @return \NetteAddons\Model\Addon * @throws \NetteAddons\InvalidArgumentException */ - public function fillAddonWithValues(Model\Addon $addon, array $values, Nette\Security\IIdentity $owner = NULL) + public function fillAddonWithValues(Addon $addon, array $values, IIdentity $owner = NULL) { $overWritable = array( 'name' => TRUE, @@ -161,19 +159,18 @@ public function fillAddonWithValues(Model\Addon $addon, array $values, Nette\Sec } - /** * Creates new addon version from values and adds it to addon. * - * @param Model\Addon - * @param array - * @param Nette\Security\Identity - * @param VersionParser - * @return Model\AddonVersion + * @param \NetteAddons\Model\Addon + * @param array + * @param \Nette\Security\IIdentity + * @param \NetteAddons\Model\Utils\VersionParser + * @return \NetteAddons\Model\AddonVersion * @throws \NetteAddons\InvalidArgumentException * @throws \NetteAddons\IOException */ - public function addVersionFromValues(Model\Addon $addon, $values, Nette\Security\Identity $owner, VersionParser $versionParser) + public function addVersionFromValues(Addon $addon, $values, IIdentity $owner, VersionParser $versionParser) { if (!$values->license) { throw new \NetteAddons\InvalidArgumentException("License is mandatory."); @@ -183,7 +180,7 @@ public function addVersionFromValues(Model\Addon $addon, $values, Nette\Security throw new \NetteAddons\InvalidArgumentException("Version is mandatory."); } - $version = new Model\AddonVersion(); + $version = new AddonVersion; $version->addon = $addon; $version->version = $versionParser->parseTag($values->version); $version->license = is_array($values->license) ? implode(', ', $values->license) : $values->license; @@ -211,7 +208,7 @@ public function addVersionFromValues(Model\Addon $addon, $values, Nette\Security throw new \NetteAddons\InvalidArgumentException(); } - $version->composerJson = Model\Utils\Composer::createComposerJson($version); + $version->composerJson = Composer::createComposerJson($version); $version->composerJson->authors = array( (object) array( 'name' => $owner->realname, @@ -229,21 +226,27 @@ public function addVersionFromValues(Model\Addon $addon, $values, Nette\Security /** * Returns versions imported from addon importer. * - * @param Model\Addon - * @param Model\IAddonImporter - * @param Nette\Security\Identity - * @return Model\AddonVersion[] + * @param \NetteAddons\Model\Addon + * @param \NetteAddons\Model\IAddonImporter + * @param \Nette\Security\IIdentity + * @return \NetteAddons\Model\AddonVersion[] * @throws \NetteAddons\IOException */ - private function getImportedVersions(Model\Addon $addon, Model\IAddonImporter $importer, Nette\Security\Identity $owner) + private function getImportedVersions(Addon $addon, IAddonImporter $importer, IIdentity $owner) { $versions = $importer->importVersions($addon); // add information about author if missing $author = new stdClass(); $author->name = $owner->realname; - if (!empty($owner->email)) $author->email = $owner->email; - if (!empty($owner->url)) $author->homepage = $owner->url; + + if (!empty($owner->email)) { + $author->email = $owner->email; + } + + if (!empty($owner->url)) { + $author->homepage = $owner->url; + } foreach ($versions as $version) { if (empty($version->composerJson->authors)) { @@ -255,14 +258,13 @@ private function getImportedVersions(Model\Addon $addon, Model\IAddonImporter $i } - /** * Returns filename for addon version. * - * @param Model\AddonVersion + * @param \NetteAddons\Model\AddonVersion * @return string */ - private function getFileName(Model\AddonVersion $version) + private function getFileName(AddonVersion $version) { $name = Strings::webalize($version->addon->composerFullName) . '-' . $version->version . '.zip'; @@ -273,8 +275,8 @@ private function getFileName(Model\AddonVersion $version) /** - * @param Model\AddonVersion[] - * @param Model\AddonVersion[] + * @param \NetteAddons\Model\AddonVersion[] + * @param \NetteAddons\Model\AddonVersion[] * @return array */ private function mergeVersions($a, $b) @@ -317,18 +319,16 @@ private function mergeVersions($a, $b) } - /** * @param string * @param \NetteAddons\Model\Addon */ - public function storeAddon($token, Model\Addon $addon) + public function storeAddon($token, Addon $addon) { $this->session[$token] = $addon; } - /** * @param string * @return \NetteAddons\Model\Addon|NULL @@ -341,7 +341,6 @@ public function restoreAddon($token) } - /** * @param string */ @@ -352,7 +351,6 @@ public function destroyAddon($token) } } - /** * @param \Nette\Http\Session * @param \Nette\Http\Url @@ -365,5 +363,4 @@ public static function create(Session $session, Url $currentUrl, $uploadDir, $up $url = $currentUrl->getHostUrl() . rtrim($currentUrl->getBasePath(), '/') . $uploadUri; return new static($session, $uploadDir, $url); } - } diff --git a/app/model/IAddonImporter.php b/app/model/IAddonImporter.php index 609fe7f..6b66e6f 100644 --- a/app/model/IAddonImporter.php +++ b/app/model/IAddonImporter.php @@ -2,13 +2,7 @@ namespace NetteAddons\Model; -use Nette; - - -/** - * - */ interface IAddonImporter { /** @@ -17,7 +11,6 @@ interface IAddonImporter public static function getName(); - /** * @param string * @return bool @@ -25,7 +18,6 @@ public static function getName(); public static function isSupported($url); - /** * @param string * @return bool @@ -33,7 +25,6 @@ public static function isSupported($url); public static function isValid($url); - /** * @param string * @return string @@ -42,15 +33,14 @@ public static function normalizeUrl($url); /** - * @return Addon + * @return \NetteAddons\Model\Addon */ public function import(); - /** - * @param Addon - * @return AddonVersion[] + * @param \NetteAddons\Model\Addon + * @return \NetteAddons\Model\AddonVersion[] */ public function importVersions(Addon $addon); } diff --git a/app/model/Importers/GitHub/Repository.php b/app/model/Importers/GitHub/Repository.php index 7958e0b..86c1254 100644 --- a/app/model/Importers/GitHub/Repository.php +++ b/app/model/Importers/GitHub/Repository.php @@ -2,10 +2,9 @@ namespace NetteAddons\Model\Importers\GitHub; -use Nette\Http\Url, - Nette\Utils\Strings, - NetteAddons\Utils\HttpStreamRequestFactory; - +use Nette\Http\Url; +use Nette\Utils\Strings; +use NetteAddons\Utils\HttpStreamRequestFactory; /** @@ -14,14 +13,11 @@ * This class is not aware how it will be used. * * @link http://developer.github.com/v3/ GitHub API documentation - * @author Patrik Votoček - * @author Jan Tvrdík - * @author Michael Moravec */ class Repository extends \Nette\Object { - const URL_PATTERN_PUBLIC = '~^(?:(?:https?|git)://)?github\.com/(?[a-z0-9][a-z0-9_-]*)/(?[a-z0-9_.-]+?)(?:\.git)?(/.*)?$~i', - URL_PATTERN_PRIVATE = '~^(?:ssh://)?git@github.com(?:/|:)(?[a-z0-9][a-z0-9_-]*)/(?[a-z0-9_.-]+?)(?:\.git)?$~i'; + const URL_PATTERN_PUBLIC = '~^(?:(?:https?|git)://)?github\.com/(?[a-z0-9][a-z0-9_-]*)/(?[a-z0-9_.-]+?)(?:\.git)?(/.*)?$~i'; + const URL_PATTERN_PRIVATE = '~^(?:ssh://)?git@github.com(?:/|:)(?[a-z0-9][a-z0-9_-]*)/(?[a-z0-9_.-]+?)(?:\.git)?$~i'; /** @var \NetteAddons\Utils\HttpStreamRequestFactory */ private $requestFactory; @@ -45,7 +41,6 @@ class Repository extends \Nette\Object private $clientSecret; - /** * @param string * @param \NetteAddons\Utils\HttpStreamRequestFactory @@ -53,8 +48,13 @@ class Repository extends \Nette\Object * @param string|NULL * @param string|NULL */ - public function __construct($apiVersion, HttpStreamRequestFactory $requestFactory, $url, $clientId = NULL, $clientSecret = NULL) - { + public function __construct( + $apiVersion, + HttpStreamRequestFactory $requestFactory, + $url, + $clientId = NULL, + $clientSecret = NULL + ) { $this->apiVersion; $this->requestFactory = $requestFactory; @@ -69,7 +69,6 @@ public function __construct($apiVersion, HttpStreamRequestFactory $requestFactor } - /** * @param string|\Nette\Http\Url * @return array|NULL (vendor, name) @@ -86,11 +85,10 @@ public static function getVendorAndName($url) } - /** * Calls remote API. * - * @param string + * @param string * @return mixed json-decoded result * @throws \NetteAddons\IOException */ @@ -116,7 +114,6 @@ protected function exec($path) } - /** * @return string */ @@ -126,7 +123,6 @@ public function getVendor() } - /** * @return string */ @@ -136,7 +132,6 @@ public function getName() } - /** * Returns URL to this repository. * @@ -149,7 +144,6 @@ public function getUrl() } - /** * Returns repository metadata. * @@ -163,7 +157,6 @@ public function getMetadata() } - /** * Returns Git "tree" specified by hash. * @@ -178,7 +171,6 @@ public function getTree($hash) } - /** * Returns Git "commit" specified by hash. * @@ -193,7 +185,6 @@ public function getCommit($hash) } - /** * Gets file content. * @@ -210,7 +201,6 @@ public function getFileContent($hash, $path) } - /** * Returns readme content or NULL if readme does not exist. * @@ -223,11 +213,11 @@ public function getReadme($hash) { try { $data = $this->exec("/repos/{$this->vendor}/{$this->name}/readme?ref=$hash"); - } catch (\NetteAddons\Utils\HttpException $e) { if ($e->getCode() === 404) { return NULL; } + throw $e; } @@ -235,7 +225,6 @@ public function getReadme($hash) } - /** * @param string * @return \stdClass @@ -258,7 +247,6 @@ protected function processContentResponse($data) } - /** * Returns list of repository tags. * @@ -277,11 +265,11 @@ public function getTags() foreach ($data as $tag) { $tags[$tag->name] = $tag->commit->sha; } + return $tags; } - /** * Returns list of repository branches. * @@ -302,17 +290,17 @@ public function getBranches() $branches[$branch->name] = $branch->commit->sha; } } + return $branches; } - /** * Returns download link. * * @todo Implement it using GitHub API? - * @param string - * @param string + * @param string + * @param string * @return string * @throws \NetteAddons\NotSupportedException if $type is other than 'zip' */ @@ -320,7 +308,6 @@ public function getArchiveLink($type, $hash) { if ($type === 'zip') { return "https://github.com/{$this->vendor}/{$this->name}/zipball/$hash"; - } else { throw new \NetteAddons\NotSupportedException(); } diff --git a/app/model/Importers/GitHub/RepositoryFactory.php b/app/model/Importers/GitHub/RepositoryFactory.php index 44ce61c..4ab0e31 100644 --- a/app/model/Importers/GitHub/RepositoryFactory.php +++ b/app/model/Importers/GitHub/RepositoryFactory.php @@ -4,10 +4,9 @@ use NetteAddons\Utils\HttpStreamRequestFactory; + /** * GitHub repository factory - * - * @author Patrik Votoček */ class RepositoryFactory extends \Nette\Object { @@ -24,23 +23,24 @@ class RepositoryFactory extends \Nette\Object private $clientSecret; - /** * @param string * @param \NetteAddons\Utils\HttpStreamRequestFactory * @param string|NULL * @param string|NULL */ - public function __construct($apiVersion, HttpStreamRequestFactory $requestFactory, $clientId = NULL, $clientSecret = NULL) - { + public function __construct( + $apiVersion, + HttpStreamRequestFactory $requestFactory, + $clientId = NULL, + $clientSecret = NULL + ) { $this->apiVersion = $apiVersion; $this->requestFactory = $requestFactory; $this->clientId = $clientId; $this->clientSecret = $clientSecret; } - - /** * @param string * @return Repository diff --git a/app/model/Importers/GitHubImporter.php b/app/model/Importers/GitHubImporter.php index 329036d..09d73f8 100644 --- a/app/model/Importers/GitHubImporter.php +++ b/app/model/Importers/GitHubImporter.php @@ -2,26 +2,16 @@ namespace NetteAddons\Model\Importers; -use stdClass, - Nette, - Nette\Utils\Json, - Nette\Utils\Strings, - Nette\Http\Url, - Nette\Diagnostics\Debugger, - NetteAddons\Model, - NetteAddons\Model\Addon, - NetteAddons\Model\AddonVersion, - NetteAddons\Model\IAddonImporter, - NetteAddons\Model\Utils; - - - -/** - * @author Patrik Votoček - * @author Jan Tvrdík - * @author Michael Moravec - */ -class GitHubImporter extends Nette\Object implements IAddonImporter +use stdClass; +use Nette\Utils\Json; +use Nette\Utils\Strings; +use NetteAddons\Model\Addon; +use NetteAddons\Model\AddonVersion; +use NetteAddons\Model\IAddonImporter; +use NetteAddons\Model\Utils; + + +class GitHubImporter extends \Nette\Object implements IAddonImporter { /** @var GitHub\Repository */ private $repository; @@ -30,6 +20,12 @@ class GitHubImporter extends Nette\Object implements IAddonImporter private $validators; + public function __construct(GitHub\Repository $repo, Utils\Validators $validators) + { + $this->repository = $repo; + $this->validators = $validators; + } + /** * @return string @@ -40,7 +36,6 @@ public static function getName() } - /** * @param string * @return bool @@ -51,7 +46,6 @@ public static function isSupported($url) } - /** * @param string * @return bool @@ -62,7 +56,6 @@ public static function isValid($url) } - /** * @param string * @return string @@ -77,23 +70,10 @@ public static function normalizeUrl($url) } - - /** - * @param GitHub\Repository - * @param Utils\Validators - */ - public function __construct(GitHub\Repository $repo, Utils\Validators $validators) - { - $this->repository = $repo; - $this->validators = $validators; - } - - - /** * Imports addon from GitHub repository. * - * @return Addon + * @return \NetteAddons\Model\Addon * @throws \NetteAddons\IOException */ public function import() @@ -148,12 +128,11 @@ public function import() } - /** * Imports versions from GitHub repository. * - * @param Addon - * @return AddonVersion[] + * @param \NetteAddons\Model\Addon + * @return \NetteAddons\Model\AddonVersion[] * @throws \NetteAddons\IOException */ public function importVersions(Addon $addon) @@ -217,7 +196,6 @@ public function importVersions(Addon $addon) } - /** * Returns list of version in repository. * @@ -245,11 +223,10 @@ private function getVersions() } - /** * Returns composer.json or NULL if composer.json does not exist or is invalid. * - * @param string commit hash, brach or tag name + * @param string commit hash, brach or tag name * @return stdClass|NULL * @throws \NetteAddons\IOException */ @@ -258,17 +235,17 @@ private function getComposerJson($hash) try { $content = $this->repository->getFileContent($hash, Utils\Composer::FILENAME); $composer = Json::decode($content); + if (!Utils\Composer::isValid($composer)) { return NULL; // invalid composer.json } return $composer; - } catch (\NetteAddons\Utils\HttpException $e) { if ($e->getCode() === 404) { return NULL; } - throw $e; + throw $e; } catch (\Nette\Utils\JsonException $e) { return NULL; } diff --git a/app/model/Importers/GitHubImporterFactory.php b/app/model/Importers/GitHubImporterFactory.php index ceefcdc..87d34d5 100644 --- a/app/model/Importers/GitHubImporterFactory.php +++ b/app/model/Importers/GitHubImporterFactory.php @@ -5,10 +5,6 @@ use NetteAddons\Model\Utils\Validators; - -/** - * @author Patrik Votoček - */ class GitHubImporterFactory extends \Nette\Object { /** @var GitHub\RepositoryFactory */ @@ -18,11 +14,6 @@ class GitHubImporterFactory extends \Nette\Object private $validators; - - /** - * @param GitHub\RepositoryFactory - * @param \NetteAddons\Model\Utils\Validators - */ public function __construct(GitHub\RepositoryFactory $repositoryFactory, Validators $validators) { $this->repositoryFactory = $repositoryFactory; @@ -30,7 +21,6 @@ public function __construct(GitHub\RepositoryFactory $repositoryFactory, Validat } - /** * @param string * @return GitHubImporter @@ -42,7 +32,6 @@ public function create($url) } - /** * @deprecated * @param string diff --git a/app/model/Importers/RepositoryImporterManager.php b/app/model/Importers/RepositoryImporterManager.php index 79f18d2..f8af567 100644 --- a/app/model/Importers/RepositoryImporterManager.php +++ b/app/model/Importers/RepositoryImporterManager.php @@ -2,21 +2,15 @@ namespace NetteAddons\Model\Importers; -use Nette, - Nette\Http\Url, - Nette\Utils\Strings, - NetteAddons\Model\IAddonImporter; +use Nette\Utils\Strings; +use NetteAddons\Model\IAddonImporter; /** * Factory for repository importers. - * - * @author Jan Tvrdík - * @author Patrik Votoček - * @author Michael Moravec */ -class RepositoryImporterManager extends Nette\Object +class RepositoryImporterManager extends \Nette\Object { /** @var callable[]|array (id => callback) */ private $factories = array(); @@ -24,7 +18,6 @@ class RepositoryImporterManager extends Nette\Object private $classes = array(); - /** * @param string * @param callable @@ -35,12 +28,15 @@ public function addImporter($id, $factory, $class) if (isset($this->factories[$id])) { throw new \NetteAddons\InvalidStateException("Importer '$id' is already registered"); } + if (!is_callable($factory)) { throw new \NetteAddons\InvalidArgumentException('Factory is not callable.'); } + if (!is_subclass_of($class, 'NetteAddons\Model\IAddonImporter')) { throw new \NetteAddons\InvalidArgumentException("Class '$class' does not implement IAddonImporter."); } + $this->factories[$id] = $factory; $this->classes[$id] = $class; } @@ -63,7 +59,6 @@ public function getIdByUrl($url) } - /** * @param string * @return bool @@ -74,7 +69,6 @@ public function isSupported($url) } - /** * @param string * @return bool @@ -82,14 +76,15 @@ public function isSupported($url) public function isValid($url) { $name = $this->getIdByUrl($url); + if (is_null($name)) { return FALSE; } + return callback($this->classes[$name], 'isValid')->invoke($url); } - /** * @param string * @return string @@ -108,7 +103,6 @@ public function normalizeUrl($url) } - /** * @param bool * @return array|string @@ -124,7 +118,6 @@ public function getNames($asArray = FALSE) } - /** * Creates repository importer from url. * diff --git a/app/model/PackageRouteHelper.php b/app/model/PackageRouteHelper.php index 31e5d70..6837e0b 100755 --- a/app/model/PackageRouteHelper.php +++ b/app/model/PackageRouteHelper.php @@ -3,17 +3,12 @@ namespace NetteAddons\Model; - -/** - * @author Pavel Kučera - */ class PackageRouteHelper extends \Nette\Object { /** @var Addons */ private $addons; - /** * @param Addons */ @@ -23,7 +18,6 @@ public function __construct(Addons $addons) } - /** * @param string * @return int|NULL @@ -38,7 +32,6 @@ public function filterIn($composerFullName) } - /** * @param int * @return string|NULL diff --git a/app/model/PackageRouteHelperCached.php b/app/model/PackageRouteHelperCached.php index 2875d64..4540404 100755 --- a/app/model/PackageRouteHelperCached.php +++ b/app/model/PackageRouteHelperCached.php @@ -2,32 +2,23 @@ namespace NetteAddons\Model; -use Nette\Caching\Cache, - Nette\Caching\IStorage; +use Nette\Caching\Cache; +use Nette\Caching\IStorage; - -/** - * @author Pavel Kučera - */ class PackageRouteHelperCached extends PackageRouteHelper { - /** @var string */ - const EXPIRE_TIME = '+1 week', - CACHE_NAMESPACE = 'Route'; + const EXPIRE_TIME = '+1 week'; + const CACHE_NAMESPACE = 'Route'; /** @var Cache */ private $cache; - - /** - * @param Addons - * @param \Nette\Caching\IStorage - */ public function __construct(Addons $addons, IStorage $cacheStorage) { parent::__construct($addons); + $this->cache = new Cache($cacheStorage, static::CACHE_NAMESPACE); $route = $this; @@ -37,7 +28,6 @@ public function __construct(Addons $addons, IStorage $cacheStorage) } - /** * @param string * @return int|NULL @@ -59,7 +49,6 @@ public function filterIn($composerName) } - /** * @param int * @return string|NULL @@ -80,7 +69,6 @@ public function filterOut($id) return $composerName; } - /** * @param Addon * @return void diff --git a/app/model/RouterFactory.php b/app/model/RouterFactory.php index 012bd4c..ae68721 100644 --- a/app/model/RouterFactory.php +++ b/app/model/RouterFactory.php @@ -3,33 +3,32 @@ namespace NetteAddons; use Nette\Application\Routers\Route; +use Nette\Application\Routers\RouteList; -/** - * Router factory. - */ -class RouterFactory + +class RouterFactory extends \Nette\Object { /** @var \NetteAddons\Model\PackageRouteHelperCached */ private $packageRouterHelper; /** @var \NetteAddons\Model\VendorRouteHelper */ private $vendorRouteHelper; - /** - * @param Model\PackageRouteHelperCached - * @param Model\VendorRouteHelper - */ - public function __construct(Model\PackageRouteHelperCached $packageRouterHelper, Model\VendorRouteHelper $vendorRouteHelper) - { + + public function __construct( + Model\PackageRouteHelperCached $packageRouterHelper, + Model\VendorRouteHelper $vendorRouteHelper + ) { $this->packageRouterHelper = $packageRouterHelper; $this->vendorRouteHelper = $vendorRouteHelper; } + /** * @return \Nette\Application\IRouter */ public function createRouter() { - $router = new \Nette\Application\Routers\RouteList(); + $router = new RouteList(); // Setup router $router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY); @@ -50,21 +49,20 @@ public function createRouter() 'action' => 'default', 'id' => array( Route::PATTERN => '[^/]+/[^/]+', - Route::FILTER_IN => $this->packageRouterHelper->filterIn, - Route::FILTER_OUT => $this->packageRouterHelper->filterOut, + Route::FILTER_IN => array($this->packageRouterHelper, 'filterIn'), + Route::FILTER_OUT => array($this->packageRouterHelper, 'filterOut'), ) )); $router[] = new Route('', array( 'presenter' => 'List', 'action' => 'default', 'vendor' => array( - Route::FILTER_IN => $this->vendorRouteHelper->filterIn, - Route::FILTER_OUT => $this->vendorRouteHelper->filterOut, + Route::FILTER_IN => array($this->vendorRouteHelper, 'filterIn'), + Route::FILTER_OUT => array($this->vendorRouteHelper, 'filterOut'), ), )); $router[] = new Route('[/]', 'Homepage:default'); return $router; } - } diff --git a/app/model/Table.php b/app/model/Table.php index ad1422d..c74ea5c 100644 --- a/app/model/Table.php +++ b/app/model/Table.php @@ -2,25 +2,23 @@ namespace NetteAddons\Model; -use Nette, - Nette\Database\Table\ActiveRow, - Nette\Database\Table\Selection; - +use Nette\Database\Table\ActiveRow; +use Nette\Database\Table\Selection; /** * Represents repository for database table */ -abstract class Table extends Nette\Object +abstract class Table extends \Nette\Object { - /** @var Nette\Database\Connection */ + /** @var \Nette\Database\Connection */ protected $db; + /** - * @param \Nette\Database\Context * @throws \NetteAddons\InvalidStateException */ - public function __construct(Nette\Database\Context $db) + public function __construct(\Nette\Database\Context $db) { if (!isset($this->tableName)) { $class = get_called_class(); @@ -31,7 +29,6 @@ public function __construct(Nette\Database\Context $db) } - /** * @return \Nette\Database\Table\Selection */ @@ -41,7 +38,6 @@ protected function getTable() } - /** * @return \Nette\Database\Table\Selection */ @@ -51,9 +47,8 @@ public function findAll() } - /** - * @param array + * @param array * @return \Nette\Database\Table\Selection */ public function findBy(array $by) @@ -62,9 +57,8 @@ public function findBy(array $by) } - /** - * @param array + * @param array * @return \Nette\Database\Table\ActiveRow|FALSE */ public function findOneBy(array $by) @@ -73,9 +67,8 @@ public function findOneBy(array $by) } - /** - * @param int + * @param int * @return \Nette\Database\Table\ActiveRow|FALSE */ public function find($id) @@ -84,11 +77,10 @@ public function find($id) } - /** * Creates and inserts new row to database. * - * @param array row values + * @param array row values * @return \Nette\Database\Table\ActiveRow created row * @throws \NetteAddons\DuplicateEntryException * @throws \PDOException in case of SQL / database error @@ -97,7 +89,6 @@ protected function createRow(array $values) { try { return $this->getTable()->insert($values); - } catch (\PDOException $e) { if (is_array($e->errorInfo) && $e->errorInfo[1] == 1062) { throw new \NetteAddons\DuplicateEntryException($e->getMessage(), $e->errorInfo[1], $e); @@ -108,7 +99,6 @@ protected function createRow(array $values) } - /** * Insert row in database or update existing one. * diff --git a/app/model/Tables/AddonDownloads.php b/app/model/Tables/AddonDownloads.php index 8c5e7c7..2ed9e18 100644 --- a/app/model/Tables/AddonDownloads.php +++ b/app/model/Tables/AddonDownloads.php @@ -2,20 +2,16 @@ namespace NetteAddons\Model; -use Nette; -/** - * @author Michael Moravec - */ class AddonDownloads extends Table { - const TYPE_DOWNLOAD = 'download', - TYPE_INSTALL = 'install'; + const TYPE_DOWNLOAD = 'download'; + const TYPE_INSTALL = 'install'; + /** @var string */ protected $tableName = 'addons_downloads'; - /** * @param string * @param int @@ -35,12 +31,13 @@ public function saveDownload($type, $versionId, $ipAddress, $userAgent, $userId 'versionId' => $versionId, 'ipAddress' => $ipAddress, 'userAgent' => $userAgent, - 'userId' => $userId, - 'time' => new \DateTime(), - 'type' => $type, + 'userId' => $userId, + 'time' => new \DateTime(), + 'type' => $type, )); } + /** * Get cumulative download statistics for an addon in a date range * @@ -72,7 +69,6 @@ public function findDownloadUsage($addonId, \DateTime $from, \DateTime $to) } - /** * @param string * @return bool @@ -81,5 +77,4 @@ public function isTypeValid($type) { return in_array($type, array(self::TYPE_DOWNLOAD, self::TYPE_INSTALL), TRUE); } - } diff --git a/app/model/Tables/AddonReports.php b/app/model/Tables/AddonReports.php index 878c937..ceb2cad 100644 --- a/app/model/Tables/AddonReports.php +++ b/app/model/Tables/AddonReports.php @@ -2,18 +2,13 @@ namespace NetteAddons\Model; -use Nette; -/** - * @author Patrik Votoček - */ class AddonReports extends Table { /** @var string */ protected $tableName = 'addons_reports'; - /** * @param int * @param int @@ -26,17 +21,16 @@ class AddonReports extends Table public function saveReport($userId, $addonId, $message, $reason = NULL, $zappedBy = NULL) { return $this->createRow(array( - 'userId' => $userId, - 'addonId' => $addonId, + 'userId' => $userId, + 'addonId' => $addonId, 'reportedAt' => new \DateTime, - 'message' => $message, - 'reason' => $reason, - 'zappedBy' => $zappedBy, + 'message' => $message, + 'reason' => $reason, + 'zappedBy' => $zappedBy, )); } - /** * @param int * @param string|NULL @@ -53,5 +47,4 @@ public function updateReport($id, $reason = NULL, $zappedBy = NULL) return $row->update(array('reason' => $reason, 'zappedBy' => $zappedBy)); } - } diff --git a/app/model/Tables/AddonVersions.php b/app/model/Tables/AddonVersions.php index 2ff7478..4abcac4 100644 --- a/app/model/Tables/AddonVersions.php +++ b/app/model/Tables/AddonVersions.php @@ -2,11 +2,9 @@ namespace NetteAddons\Model; -use Nette, - Nette\Database\SqlLiteral, - Nette\Database\Table\ActiveRow, - Nette\Utils\Json; - +use Nette\Database\SqlLiteral; +use Nette\Database\Context; +use Nette\Utils\Json; /** @@ -25,16 +23,10 @@ class AddonVersions extends Table private $parser; - - /** - * Class constructor. - * - * @param Nette\Database\Context - * @param Utils\VersionParser - */ - public function __construct(Nette\Database\Context $db, VersionDependencies $dependencies, Utils\VersionParser $parser) + public function __construct(Context $db, VersionDependencies $dependencies, Utils\VersionParser $parser) { parent::__construct($db); + $this->dependencies = $dependencies; $this->parser = $parser; } @@ -44,8 +36,8 @@ public function __construct(Nette\Database\Context $db, VersionDependencies $dep /** * Adds new version of given addon. * - * @param AddonVersion - * @return ActiveRow created row + * @param AddonVersion + * @return \Nette\Database\Table\ActiveRow created row * @throws \NetteAddons\DuplicateEntryException * @throws \PDOException * @throws \Nette\Utils\JsonException @@ -59,11 +51,10 @@ public function add(AddonVersion $version) } - /** * Updates addon version. * - * @param AddonVersion + * @param AddonVersion * @return bool * @throws \NetteAddons\InvalidArgumentException */ @@ -74,16 +65,19 @@ public function update(AddonVersion $version) } $row = $this->find($version->id); - if (!$row) return FALSE; + + if (!$row) { + return FALSE; + } + return (bool) $row->update($this->toArray($version)); } - /** * Sorts list of versions. * - * @param AddonVersion[] + * @param AddonVersion[] * @return void */ public function rsort(&$versions) @@ -92,12 +86,11 @@ public function rsort(&$versions) } - /** * Returns the latest version. * - * @param AddonVersion[] reverse sorted versions - * @param bool + * @param AddonVersion[] reverse sorted versions + * @param bool * @return AddonVersion|FALSE */ public function getCurrent($versions, $preferStable = TRUE) @@ -108,25 +101,30 @@ public function getCurrent($versions, $preferStable = TRUE) if ($preferStable) { $stable = $this->parser->filterStable($versions); - if ($stable) $versions = $stable; + + if ($stable) { + $versions = $stable; + } } return reset($versions); } - public function incrementDownloadsCount(AddonVersion $version) { $row = $this->find($version->id); - if (!$row) return; + + if (!$row) { + return; + } + $row->update(array( 'downloadsCount' => new SqlLiteral('downloadsCount + 1') )); } - public function incrementInstallsCount(AddonVersion $version) { $row = $this->find($version->id); @@ -141,26 +139,25 @@ public function incrementInstallsCount(AddonVersion $version) } - /** - * @param AddonVersion + * @param AddonVersion * @return array */ private function toArray(AddonVersion $version) { return array( - 'addonId' => $version->addon->id, - 'version' => $version->version, - 'license' => $version->license, - 'distType' => $version->distType, - 'distUrl' => $version->distUrl, - 'downloadsCount' => $version->downloadsCount ?: 0, - 'installsCount' => $version->installsCount ?: 0, - 'sourceType' => $version->sourceType, - 'sourceUrl' => $version->sourceUrl, + 'addonId' => $version->addon->id, + 'version' => $version->version, + 'license' => $version->license, + 'distType' => $version->distType, + 'distUrl' => $version->distUrl, + 'downloadsCount' => $version->downloadsCount ?: 0, + 'installsCount' => $version->installsCount ?: 0, + 'sourceType' => $version->sourceType, + 'sourceUrl' => $version->sourceUrl, 'sourceReference' => $version->sourceReference, - 'composerJson' => Json::encode($version->composerJson), - 'updatedAt' => $version->updatedAt, + 'composerJson' => Json::encode($version->composerJson), + 'updatedAt' => $version->updatedAt, ); } } diff --git a/app/model/Tables/AddonVotes.php b/app/model/Tables/AddonVotes.php index d622fc1..5ffa4cf 100644 --- a/app/model/Tables/AddonVotes.php +++ b/app/model/Tables/AddonVotes.php @@ -2,30 +2,20 @@ namespace NetteAddons\Model; -use Nette; - - -/** - * Repository for addon votes. - * - * @author Jan Tvrdík - * @author Jan Skrasek - */ class AddonVotes extends Table { /** @var string */ protected $tableName = 'addons_votes'; - /** * Votes as given user for given addon with optional comment. * - * @param int addon id - * @param int user id - * @param int +1 or -1 or 0 (means cancel vote) - * @param string optional comment + * @param int addon id + * @param int user id + * @param int +1 or -1 or 0 (means cancel vote) + * @param string optional comment * @return void */ public function vote($addonId, $userId, $vote, $comment = NULL) diff --git a/app/model/Tables/Addons.php b/app/model/Tables/Addons.php index df6196c..5aa314f 100644 --- a/app/model/Tables/Addons.php +++ b/app/model/Tables/Addons.php @@ -2,22 +2,13 @@ namespace NetteAddons\Model; -use Nette, - Nette\Utils\Strings, - Nette\Security\IIdentity, - Nette\Database\SqlLiteral, - Nette\Database\Table\ActiveRow, - Nette\Database\Table\Selection, - Nette\DateTime, - Nette\Http; - - - -/** - * Addons table repository - * - * @author Patrik Votoček - */ +use Nette\Utils\Strings; +use Nette\Database\Context; +use Nette\Database\SqlLiteral; +use Nette\Database\Table\Selection; +use Nette\DateTime; + + class Addons extends Table { /** @var array */ @@ -33,8 +24,7 @@ class Addons extends Table private $tags; - - public function __construct(Nette\Database\Context $db, AddonVersions $versions, Tags $tags) + public function __construct(Context $db, AddonVersions $versions, Tags $tags) { parent::__construct($db); $this->versions = $versions; @@ -42,7 +32,6 @@ public function __construct(Nette\Database\Context $db, AddonVersions $versions, } - /** * @param bool * @return \Nette\Database\Table\Selection @@ -50,21 +39,18 @@ public function __construct(Nette\Database\Context $db, AddonVersions $versions, protected function getTable($ignoreDeleted = FALSE) { $table = parent::getTable(); + if (!$ignoreDeleted) { $this->filterOutDeleted($table); } + return $table; } - -// === Selecting addons ======================================================== - - - /** - * @param int - * @param bool + * @param int + * @param bool * @return \Nette\Database\Table\ActiveRow|FALSE */ public function find($id, $ignoreDeleted = FALSE) @@ -73,7 +59,6 @@ public function find($id, $ignoreDeleted = FALSE) } - /** * @return \Nette\Database\Table\Selection */ @@ -83,7 +68,6 @@ public function findDeleted() } - /** * @param \Nette\Database\Table\Selection * @param bool @@ -106,7 +90,6 @@ public function findGroupedByCategories($tags, $ignoreDeleted = FALSE) } - /** * @return \Nette\Database\Table\Selection */ @@ -116,23 +99,23 @@ public function findVendors() } - /** - * @param int|NULL - * @param bool + * @param int|NULL + * @param bool * @return \Nette\Database\Table\Selection */ public function findLastUpdated($count = NULL, $ignoreDeleted = FALSE) { $selection = $this->getTable($ignoreDeleted)->order('updatedAt DESC'); + if (!is_null($count)) { $selection->limit($count); } + return $selection; } - /** * @param int|NULL * @param bool @@ -148,7 +131,6 @@ public function findMostFavorited($count = NULL, $ignoreDeleted = FALSE) } - /** * @param int|NULL * @param bool @@ -164,7 +146,6 @@ public function findMostUsed($count = NULL, $ignoreDeleted = FALSE) } - /** * @param int * @return \Nette\Database\Table\Selection @@ -175,7 +156,6 @@ public function findByUser($userId) } - /** * @param string * @return \Nette\Database\Table\Selection @@ -186,7 +166,6 @@ public function findByComposerVendor($vendor) } - /** * @param string * @return \Nette\Database\Table\Selection @@ -202,7 +181,6 @@ public function findOneByComposerFullName($composerFullName) } - /** * @param string * @param string @@ -214,7 +192,6 @@ public function findOneByComposerVendorAndName($vendor, $name) } - /** * Filter addons selection by tag. * @@ -231,12 +208,11 @@ public function filterByTag(Selection $addons, $tagId) } - /** * Filter addon selection by some text. * - * @param \Nette\Database\Table\Selection - * @param string + * @param \Nette\Database\Table\Selection + * @param string * @return \Nette\Database\Table\Selection for fluent interface */ public function filterByString(Selection $addons, $string) @@ -246,7 +222,6 @@ public function filterByString(Selection $addons, $string) } - public function incrementDownloadsCount(Addon $addon) { $row = $this->find($addon->id); @@ -261,7 +236,6 @@ public function incrementDownloadsCount(Addon $addon) } - public function incrementInstallsCount(Addon $addon) { $row = $this->find($addon->id); @@ -276,7 +250,6 @@ public function incrementInstallsCount(Addon $addon) } - /** * @param Addon * @param \Nette\Security\IIdentity @@ -298,10 +271,6 @@ public function markAsDeleted(Addon $addon, \Nette\Security\IIdentity $user) } - - /** - * @param Addon - */ public function unmarkAsDeleted(Addon $addon) { $row = $this->find($addon->id, TRUE); @@ -319,15 +288,11 @@ public function unmarkAsDeleted(Addon $addon) } - -// === CRUD ==================================================================== - /** * Saves addon to database. * - * @author Jan Tvrdík - * @param Addon - * @return ActiveRow created row + * @param Addon + * @return \Nette\Database\Table\ActiveRow created row * @throws \NetteAddons\DuplicateEntryException * @throws \NetteAddons\InvalidArgumentException * @throws \PDOException @@ -345,22 +310,22 @@ public function add(Addon $addon) $this->db->beginTransaction(); try { $row = $this->createRow(array( - 'name' => $addon->name, - 'composerVendor' => $addon->composerVendor, - 'composerName' => $addon->composerName, - 'userId' => $addon->userId, - 'repository' => $addon->repository, - 'repositoryHosting' => $addon->repositoryHosting, - 'shortDescription' => $addon->shortDescription, - 'description' => $addon->description, - 'descriptionFormat' => $addon->descriptionFormat, - 'demo' => $addon->demo ?: NULL, - 'defaultLicense' => $addon->defaultLicense, - 'updatedAt' => new Datetime('now'), + 'name' => $addon->name, + 'composerVendor' => $addon->composerVendor, + 'composerName' => $addon->composerName, + 'userId' => $addon->userId, + 'repository' => $addon->repository, + 'repositoryHosting' => $addon->repositoryHosting, + 'shortDescription' => $addon->shortDescription, + 'description' => $addon->description, + 'descriptionFormat' => $addon->descriptionFormat, + 'demo' => $addon->demo ?: NULL, + 'defaultLicense' => $addon->defaultLicense, + 'updatedAt' => new Datetime('now'), 'totalDownloadsCount' => $addon->totalDownloadsCount ?: 0, - 'totalInstallsCount' => $addon->totalInstallsCount ?: 0, - 'deletedAt' => $addon->deletedAt, - 'deletedBy' => $addon->deletedBy, + 'totalInstallsCount' => $addon->totalInstallsCount ?: 0, + 'deletedAt' => $addon->deletedAt, + 'deletedBy' => $addon->deletedBy, )); $addon->id = $row->id; @@ -375,7 +340,6 @@ public function add(Addon $addon) $this->onAddonChange($addon); return $row; - } catch (\Exception $e) { $this->db->rollBack(); $addon->id = NULL; @@ -384,24 +348,23 @@ public function add(Addon $addon) } - public function update(Addon $addon) { // TODO: this may fail, becase find() may return FALSE $this->find($addon->id)->update(array( - 'name' => $addon->name, - 'repository' => $addon->repository, - 'repositoryHosting' => $addon->repositoryHosting, - 'shortDescription' => $addon->shortDescription, - 'description' => $addon->description, - 'descriptionFormat' => $addon->descriptionFormat, - 'demo' => $addon->demo ?: NULL, - 'defaultLicense' => $addon->defaultLicense, - 'updatedAt' => new Datetime('now'), + 'name' => $addon->name, + 'repository' => $addon->repository, + 'repositoryHosting' => $addon->repositoryHosting, + 'shortDescription' => $addon->shortDescription, + 'description' => $addon->description, + 'descriptionFormat' => $addon->descriptionFormat, + 'demo' => $addon->demo ?: NULL, + 'defaultLicense' => $addon->defaultLicense, + 'updatedAt' => new Datetime('now'), 'totalDownloadsCount' => $addon->totalDownloadsCount ?: 0, - 'totalInstallsCount' => $addon->totalInstallsCount ?: 0, - 'deletedAt' => $addon->deletedAt, - 'deletedBy' => $addon->deletedBy, + 'totalInstallsCount' => $addon->totalInstallsCount ?: 0, + 'deletedAt' => $addon->deletedAt, + 'deletedBy' => $addon->deletedBy, )); $this->onAddonChange($addon); @@ -410,10 +373,6 @@ public function update(Addon $addon) } - - /** - * @param Addon - */ public function delete(Addon $addon) { $row = $this->find($addon->id, TRUE); @@ -428,7 +387,6 @@ public function delete(Addon $addon) } - /** * @param \Nette\Database\Table\Selection */ @@ -436,5 +394,4 @@ private function filterOutDeleted(Selection $selection) { $selection->where('deletedAt IS NULL'); } - } diff --git a/app/model/Tables/Pages.php b/app/model/Tables/Pages.php index 517f4a3..ea4e308 100644 --- a/app/model/Tables/Pages.php +++ b/app/model/Tables/Pages.php @@ -4,9 +4,7 @@ use Nette\Utils\Strings; -/** - * @author Patrik Votoček - */ + class Pages extends Table { /** @var string */ @@ -23,7 +21,6 @@ public function findOneBySlug($slug) } - /** * @return \Nette\Database\Table\Selection */ @@ -33,7 +30,6 @@ public function findAll() } - /** * @param int * @param string @@ -44,17 +40,16 @@ public function findAll() public function savePage($authorId, $name, $content) { return $this->createRow(array( - 'authorId' => $authorId, - 'name' => $name, - 'slug' => Strings::webalize($name), - 'content' => $content, + 'authorId' => $authorId, + 'name' => $name, + 'slug' => Strings::webalize($name), + 'content' => $content, 'createdAt' => new \DateTime, - 'revision' => 1, + 'revision' => 1, )); } - /** * @param int * @param int @@ -72,12 +67,11 @@ public function updatePage($id, $authorId, $name, $content) } return $row->update(array( - 'authorId' => $authorId, - 'name' => $name, - 'content' => $content, + 'authorId' => $authorId, + 'name' => $name, + 'content' => $content, 'createdAt' => new \DateTime, - 'revision' => $row->revision + 1, + 'revision' => $row->revision + 1, )); } - } diff --git a/app/model/Tables/Tags.php b/app/model/Tables/Tags.php index 4312471..b9dae0b 100644 --- a/app/model/Tables/Tags.php +++ b/app/model/Tables/Tags.php @@ -2,16 +2,10 @@ namespace NetteAddons\Model; -use Nette; use Nette\Database\Table\ActiveRow; -use Nette\Database\Table\Selection as TableSelection; use Nette\Utils\Strings; - -/** - * Tags repository - */ class Tags extends Table { const LEVEL_CATEGORY = 1; @@ -22,11 +16,10 @@ class Tags extends Table protected $tableName = 'tags'; - /** * Returns tags which represent main catagories. * - * @return TableSelection + * @return \Nette\Database\Table\Selection */ public function findMainTags() { @@ -34,11 +27,10 @@ public function findMainTags() } - /** * Returns tags which represent main catagories (only with at least one addon). * - * @return TableSelection + * @return \Nette\Database\Table\Selection */ public function findMainTagsWithAddons() { @@ -46,7 +38,6 @@ public function findMainTagsWithAddons() } - /** * @param string * @return \Nette\Database\Table\ActiveRow|FALSE @@ -57,7 +48,6 @@ public function findOneBySlug($slug) } - public function saveAddonTags(Addon $addon) { if (count($addon->tags) === 0) return; @@ -90,9 +80,8 @@ public function saveAddonTags(Addon $addon) } - /** - * @param string tag name + * @param string tag name * @return int tag id */ public function ensureExistence($tagName) @@ -105,8 +94,7 @@ public function ensureExistence($tagName) 'level' => self::LEVEL_ORDINARY_TAG, 'visible' => TRUE, )); - - } catch (\NetteAddon\DuplicateEntryException $e) { + } catch (\NetteAddons\DuplicateEntryException $e) { $row = $this->findOneBy(array( 'slug' => $slug, )); @@ -116,9 +104,8 @@ public function ensureExistence($tagName) } - /** - * @return TableSelection + * @return \Nette\Database\Table\Selection */ protected function getAddonTags() { @@ -126,11 +113,10 @@ protected function getAddonTags() } - /** * Checks whether given tag represents main category. * - * @param ActiveRow + * @param \Nette\Database\Table\ActiveRow * @return bool */ public function isCategory(ActiveRow $tag) @@ -139,11 +125,10 @@ public function isCategory(ActiveRow $tag) } - /** * Checks whether given tag represents subcategory. * - * @param ActiveRow + * @param \Nette\Database\Table\ActiveRow * @return bool */ public function isSubCategory(ActiveRow $tag) @@ -152,12 +137,11 @@ public function isSubCategory(ActiveRow $tag) } - /** * Returns parent category for given category. * - * @param ActiveRow - * @return ActiveRow|NULL + * @param \Nette\Database\Table\ActiveRow + * @return \Nette\Database\Table\ActiveRow|NULL */ public function getParentCategory(ActiveRow $tag) { @@ -171,12 +155,11 @@ public function getParentCategory(ActiveRow $tag) } - /** * Returns subcategories of given category. * - * @param ActiveRow - * @return TableSelection + * @param \Nette\Database\Table\ActiveRow + * @return \Nette\Database\Table\Selection */ public function getSubCategories(ActiveRow $tag) { diff --git a/app/model/Tables/Users.php b/app/model/Tables/Users.php index f777383..06dfcff 100644 --- a/app/model/Tables/Users.php +++ b/app/model/Tables/Users.php @@ -2,26 +2,21 @@ namespace NetteAddons\Model; -use Nette\Security\Identity, - Nette\Database\Table\ActiveRow, - Nette\Database\Table\Selection as TableSelection; +use Nette\Security\Identity; +use Nette\Database\Table\ActiveRow; -/** - * Users repository - */ class Users extends Table { /** @var string */ protected $tableName = 'users'; - /** * Finds one user by name or by e-mail. * - * @param string user name or e-mail - * @return ActiveRow + * @param string user name or e-mail + * @return \Nette\Database\Table\ActiveRow|FALSE */ public function findOneByName($name) { @@ -31,12 +26,11 @@ public function findOneByName($name) } - /** * Creates new user. When email or username is taken, returns false. * - * @param array - * @return ActiveRow|FALSE + * @parama array + * @return \Nette\Database\Table\ActiveRow|FALSE */ public function register(array $values) { @@ -44,11 +38,9 @@ public function register(array $values) return $this->createRow($values); } - - /** - * @param ActiveRow - * @return Identity + * @param \Nette\Database\Table\ActiveRow + * @return \Nette\Security\Identity */ public function createIdentity(ActiveRow $user) { @@ -64,7 +56,7 @@ public function createIdentity(ActiveRow $user) /** * Returns selection of all addons authors. * - * @return TableSelection + * @return \Nette\Database\Table\Selection */ public function findAuthors() { @@ -73,7 +65,6 @@ public function findAuthors() } - /** * Create new user record (temporary) * @param int @@ -91,5 +82,4 @@ public function createUser($id, $username, $password) 'group_id' => 4, )); } - } diff --git a/app/model/Tables/VersionDependencies.php b/app/model/Tables/VersionDependencies.php index 9151fab..db93a2b 100644 --- a/app/model/Tables/VersionDependencies.php +++ b/app/model/Tables/VersionDependencies.php @@ -2,24 +2,17 @@ namespace NetteAddons\Model; -use Nette, - Nette\Utils\Strings, - Nette\Database\Table\ActiveRow; +use Nette\Utils\Strings; - -/** - * Version dependencies repository - */ class VersionDependencies extends Table { /** @var string */ protected $tableName = 'addons_dependencies'; - /** - * @param AddonVersion + * @param AddonVersion * @return void * @throws \NetteAddons\DuplicateEntryException * @throws \PDOException @@ -46,12 +39,11 @@ public function setVersionDependencies(AddonVersion $version) } - /** * Finds addon by composer name. * - * @param string - * @return ActiveRow|FALSE + * @param string + * @return \Nette\Database\Table\ActiveRow|FALSE */ private function findAddon($composerFullName) { diff --git a/app/model/Utils/Composer.php b/app/model/Utils/Composer.php index e17bf3c..4c9cdd3 100644 --- a/app/model/Utils/Composer.php +++ b/app/model/Utils/Composer.php @@ -2,18 +2,14 @@ namespace NetteAddons\Model\Utils; -use stdClass, - JsonSchema, - Nette\Utils\Json, - NetteAddons\Model\AddonVersion; - +use stdClass; +use JsonSchema; +use Nette\Utils\Json; +use NetteAddons\Model\AddonVersion; /** * Generating JSON for Composer API - * - * @author Jan Marek - * @author Jan Tvrdík */ class Composer { @@ -21,17 +17,15 @@ class Composer const FILENAME = 'composer.json'; - /** - * Static class - cannot be instantiated. + * @throws \NetteAddons\StaticClassException */ final public function __construct() { - throw new \NetteAddons\StaticClassException(); + throw new \NetteAddons\StaticClassException; } - /** * Validates composer.json structure using JSON Schema. * @@ -52,7 +46,6 @@ public static function isValid($composer) try { $schema = file_get_contents(__DIR__ . '/composer-schema.json'); $schema = Json::decode($schema); - } catch (\Nette\Utils\JsonException $e) { throw new \NetteAddons\InvalidStateException('composer-schema.json is not valid JSON file.', NULL, $e); } @@ -118,7 +111,7 @@ public static function createComposerJson(AddonVersion $version, stdClass $orig /** * Generates packages.json. * - * @param Addon[] + * @param Addon[]|array * @return stdClass */ public static function createPackagesJson(array $addons) diff --git a/app/model/Utils/FormValidators.php b/app/model/Utils/FormValidators.php index 2042546..cb47995 100644 --- a/app/model/Utils/FormValidators.php +++ b/app/model/Utils/FormValidators.php @@ -2,12 +2,10 @@ namespace NetteAddons\Model\Utils; -use Nette, - Nette\Forms; +use Nette\Forms\IControl; - -class FormValidators extends Nette\Object +class FormValidators extends \Nette\Object { /** composerName regular expression */ const COMPOSER_NAME_RE = Validators::COMPOSER_NAME_RE; @@ -16,36 +14,47 @@ class FormValidators extends Nette\Object private $validators; - public function __construct(Validators $validators) { $this->validators = $validators; } - - public function isComposerFullNameValid(Forms\IControl $control) + /** + * @param \Nette\Forms\IControl + * @return bool + */ + public function isComposerFullNameValid(IControl $control) { return $this->validators->isComposerFullNameValid($control->getValue()); } - - public function isComposerFullNameUnique(Forms\IControl $control) + /** + * @param \Nette\Forms\IControl + * @return bool + */ + public function isComposerFullNameUnique(IControl $control) { return $this->validators->isComposerFullNameUnique($control->getValue()); } - - public function isVersionValid(Forms\IControl $control) + /** + * @param \Nette\Forms\IControl + * @return bool + */ + public function isVersionValid(IControl $control) { return $this->validators->isVersionValid($control->getValue()); } - - public function isLicenseValid(Forms\IControl $control) + /** + * @param \Nette\Forms\IControl + * @return bool + */ + public function isLicenseValid(IControl $control) { $licenses = $control->getValue(); if (is_string($licenses)) { diff --git a/app/model/Utils/Licenses.php b/app/model/Utils/Licenses.php index aa67b7d..4374326 100644 --- a/app/model/Utils/Licenses.php +++ b/app/model/Utils/Licenses.php @@ -3,9 +3,7 @@ namespace NetteAddons\Model\Utils; - /** - * @author Patrik Votoček * @see http://spdx.org/licenses/ */ class Licenses extends \Nette\Object @@ -233,14 +231,15 @@ class Licenses extends \Nette\Object ); - + /** + * @param string + */ public function __construct($urlMask = 'http://www.spdx.org/licenses/%key%#licenseText') { $this->urlMask = $urlMask; } - /** * @param bool * @return string[]|array @@ -266,9 +265,8 @@ public function getLicenses($preferCommon = FALSE) } - /** - * @return string[] + * @return string[]|array */ public function getMostCommon() { @@ -276,7 +274,6 @@ public function getMostCommon() } - /** * @param string license key * @return string|NULL @@ -290,7 +287,6 @@ public function getFullName($key) } - /** * @param string license key * @return string|NULL @@ -304,7 +300,6 @@ public function getUrl($key) } - /** * @param string license key * @return bool diff --git a/app/model/Utils/Validators.php b/app/model/Utils/Validators.php index 5264676..9204b39 100644 --- a/app/model/Utils/Validators.php +++ b/app/model/Utils/Validators.php @@ -2,31 +2,25 @@ namespace NetteAddons\Model\Utils; -use Nette, - Nette\Forms, - Nette\Utils\Strings, - NetteAddons\Model\Addons; +use Nette\Utils\Strings; +use NetteAddons\Model\Addons; -/** - * @author Patrik Votoček - */ -class Validators extends Nette\Object +class Validators extends \Nette\Object { /** composerName regular expression */ const COMPOSER_NAME_RE = '^[a-z0-9]+(-[a-z0-9]+)*/[a-z0-9]+(-[a-z0-9]+)*$'; - /** @var Addons */ + /** @var \NetteAddons\Model\Addons */ private $addonsRepo; - /** @var Licenses */ + /** @var \NetteAddons\Model\Utils\Licenses */ private $licenseValidator; - /** @var VersionParser */ + /** @var \NetteAddons\Model\Utils\VersionParser */ private $versionParser; - public function __construct(Addons $addonsRepo, Licenses $licenseValidator, VersionParser $versionParser) { $this->addonsRepo = $addonsRepo; @@ -35,7 +29,6 @@ public function __construct(Addons $addonsRepo, Licenses $licenseValidator, Vers } - /** * @param string * @return bool @@ -46,7 +39,6 @@ public function isComposerFullNameValid($composerFullName) } - /** * @param string * @return bool @@ -54,18 +46,16 @@ public function isComposerFullNameValid($composerFullName) public function isComposerFullNameUnique($composerFullName) { $addon = $this->addonsRepo->findOneByComposerFullName($composerFullName); - return ($addon === FALSE); + return $addon === FALSE; } - public function isVersionValid($versionString) { return (bool) $this->versionParser->parseTag($versionString); } - public function isLicenseValid($license) { return $this->licenseValidator->isValid($license); diff --git a/app/model/Utils/VersionParser.php b/app/model/Utils/VersionParser.php index 2b1e203..3cc7fbc 100644 --- a/app/model/Utils/VersionParser.php +++ b/app/model/Utils/VersionParser.php @@ -2,44 +2,40 @@ namespace NetteAddons\Model\Utils; -use Nette, - NetteAddons\Model\AddonVersion, - Composer\Package\Version\VersionParser as ComposerVersionParser, - Composer\Package\LinkConstraint\VersionConstraint; +use NetteAddons\Model\AddonVersion; +use Composer\Package\Version\VersionParser as ComposerVersionParser; +use Composer\Package\LinkConstraint\VersionConstraint; - -/** - * @author Jan Tvrdík - */ -class VersionParser extends Nette\Object +class VersionParser extends \Nette\Object { /** @var ComposerVersionParser */ private $parser; - /** * Tries to parse and normalize version string. Returns FALSE in case of failure. * - * @param string tag name or any other textual version representation + * @param string tag name or any other textual version representation * @return string|FALSE */ public function parseTag($tag) { // Inspired by https://github.com/composer/composer/blob/8d7e5c/src/Composer/Repository/VcsRepository.php#L116 $tag = str_replace('release-', '', $tag); + try { $parsedTag = $this->getParser()->normalize($tag); } catch (\UnexpectedValueException $e) { return FALSE; } + $parsedTag = preg_replace('#\\.0(\\-[a-z0-9]+)?$#i', '$1', $parsedTag); + return $parsedTag; } - /** * @param string branch name (e.g. '2.0.x') * @return string version string (e.g. '2.0.x-dev') @@ -49,6 +45,7 @@ public function parseBranch($branch) // Inspired by https://github.com/composer/composer/blob/8d7e5c/src/Composer/Repository/VcsRepository.php#L205 $branch = str_replace('release-', '', $branch); $parsedBranch = $this->getParser()->normalizeBranch($branch); + if ('dev-' === substr($parsedBranch, 0, 4) || '9999999-dev' === $parsedBranch) { return 'dev-' . $branch; } else { @@ -57,7 +54,6 @@ public function parseBranch($branch) } - /** * Parses version and returns its stability. * @@ -70,9 +66,8 @@ public function parseStability($version) } - /** - * @param AddonVersion[] + * @param AddonVersion[] * @return AddonVersion[] */ public function filterStable($versions) @@ -84,12 +79,11 @@ public function filterStable($versions) } - /** * Compares two versions and returns 0 if $a == $b, -1 if $a < $b and +1 if $b > $a. * - * @param AddonVersion - * @param AddonVersion + * @param AddonVersion + * @param AddonVersion * @return int */ public function compare(AddonVersion $a, AddonVersion $b) @@ -109,10 +103,9 @@ public function compare(AddonVersion $a, AddonVersion $b) } - /** - * @param AddonVersion[] - * @param bool + * @param AddonVersion[] + * @param bool * @return void */ public function sort(&$versions, $reverse) @@ -125,14 +118,13 @@ public function sort(&$versions, $reverse) } - /** * @return ComposerVersionParser */ private function getParser() { if ($this->parser === NULL) { - $this->parser = new ComposerVersionParser(); + $this->parser = new ComposerVersionParser; } return $this->parser; } diff --git a/app/model/VendorRouteHelper.php b/app/model/VendorRouteHelper.php index f5d30fb..8c8a83e 100644 --- a/app/model/VendorRouteHelper.php +++ b/app/model/VendorRouteHelper.php @@ -2,19 +2,13 @@ namespace NetteAddons\Model; -/** - * @author Michael Moravec - */ + class VendorRouteHelper extends \Nette\Object { - /** @var Addons */ + /** @var \NetteAddons\Model\Addons */ private $addons; - - /** - * @param Addons - */ public function __construct(Addons $addons) { $this->addons = $addons; @@ -27,11 +21,17 @@ public function __construct(Addons $addons) public function filterIn($vendor) { $row = $this->addons->findByComposerVendor($vendor)->limit(1)->fetch(); - if (!$row) return NULL; + + if (!$row) { + return NULL; + } + $addon = Addon::fromActiveRow($row); + return $addon->composerVendor; } + /** * @param string * @return string|NULL @@ -39,8 +39,13 @@ public function filterIn($vendor) public function filterOut($vendor) { $row = $this->addons->findByComposerVendor($vendor)->limit(1)->fetch(); - if (!$row) return NULL; + + if (!$row) { + return NULL; + } + $addon = Addon::fromActiveRow($row); + return $addon->composerVendor; } } diff --git a/app/presenters/BaseListPresenter.php b/app/presenters/BaseListPresenter.php index 8114ee0..31e03c7 100644 --- a/app/presenters/BaseListPresenter.php +++ b/app/presenters/BaseListPresenter.php @@ -2,30 +2,22 @@ namespace NetteAddons; -use NetteAddons\Model\Addons, - NetteAddons\Model\AddonVotes; - - -/** - * @author Patrik Votoček - */ abstract class BaseListPresenter extends BasePresenter { /** - * @var Model\Addons + * @var \NetteAddons\Model\Addons * @inject */ public $addons; /** - * @var Model\AddonVotes + * @var \NetteAddons\Model\AddonVotes * @inject */ public $addonVotes; - protected function beforeRender() { parent::beforeRender(); diff --git a/app/presenters/BasePresenter.php b/app/presenters/BasePresenter.php index 0999b73..be3fccd 100644 --- a/app/presenters/BasePresenter.php +++ b/app/presenters/BasePresenter.php @@ -2,52 +2,52 @@ namespace NetteAddons; -use NetteAddons\Model, - Nette\Application\UI; - +use Nette\Reflection\Method; +use Nette\Application\UI\PresenterComponent; +use NetteAddons\Model; abstract class BasePresenter extends \Nette\Application\UI\Presenter { /** - * @var Model\Authorizator + * @var \NetteAddons\Model\Authorizator * @inject */ public $auth; /** - * @var HelperLoader + * @var \NetteAddons\HelperLoader * @inject */ public $helperLoader; /** - * @var Model\Tags + * @var \NetteAddons\Model\Tags * @inject */ public $tags; /** - * @var Model\Pages + * @var \NetteAddons\Model\Pages * @inject */ public $pages; /** - * @var Model\Utils\Licenses + * @var \NetteAddons\Model\Utils\Licenses * @inject */ public $licenses; /** - * @var TextPreprocessor + * @var \NetteAddons\TextPreprocessor * @inject */ public $textPreprocessor; /** - * @param string|NULL + * @param string|NULL * @return \Nette\Templating\ITemplate */ public function createTemplate($class = NULL) @@ -58,12 +58,10 @@ public function createTemplate($class = NULL) } - /** * Calls signal handler method and processes the @secured annotation. * - * @author Jan Skrasek, Jan Tvrdík - * @param string + * @param string * @return void * @throws \Nette\Application\BadRequestException */ @@ -90,14 +88,12 @@ public function signalReceived($signal) } - /** * Generates link. If links points to @secure annotated signal handler method, additonal * parameter preventing changing parameters will be added. * - * @author Jan Skrasek - * @param string - * @param array|mixed $args + * @param string + * @param array|mixed $args * @return string */ public function link($destination, $args = array()) @@ -108,16 +104,22 @@ public function link($destination, $args = array()) } $link = parent::link($destination, $args); - $lastRequest = $this->presenter->lastCreatedRequest; + $lastRequest = $this->getPresenter()->getLastCreatedRequest(); // bad link - if ($lastRequest === NULL) return $link; + if ($lastRequest === NULL) { + return $link; + } // not a signal - if (substr($destination, - 1) !== '!') return $link; + if (substr($destination, - 1) !== '!') { + return $link; + } // signal must lead to this presenter - if ($this->getPresenter()->getName() !== $lastRequest->getPresenterName()) return $link; + if ($this->getPresenter()->getName() !== $lastRequest->getPresenterName()) { + return $link; + } $destination = str_replace(':', '-', $destination); if (strpos($destination, '-') !== FALSE) { @@ -131,18 +133,24 @@ public function link($destination, $args = array()) } // only components - if (!$component instanceof \Nette\Application\UI\PresenterComponent) return $link; + if (!$component instanceof PresenterComponent) { + return $link; + } $method = $component->formatSignalMethod($signal); - $reflection = \Nette\Reflection\Method::from($component, $method); + $reflection = Method::from($component, $method); // does not have annotation - if (!$reflection->hasAnnotation('secured')) return $link; + if (!$reflection->hasAnnotation('secured')) { + return $link; + } $origParams = $lastRequest->getParameters(); $protectedParams = array(); - foreach ($reflection->getParameters() as $key => $param) { - if ($param->isOptional()) continue; + foreach ($reflection->getParameters() as $param) { + if ($param->isOptional()) { + continue; + } $protectedParams[$param->name] = $origParams[$component->getParameterId($param->name)]; } @@ -159,46 +167,39 @@ public function link($destination, $args = array()) } - /** * Creates secure hash from array of arguments. * - * @author Jan Skrasek - * @param array + * @param array * @return string */ protected function createSecureHash($params) { - $ns = $this->getSession('Addons.Presenter/CSRF'); - if ($ns->key === NULL) { - $ns->key = uniqid(); + $session = $this->getSession('Addons.Presenter/CSRF'); + if ($session->key === NULL) { + $session->key = uniqid(); } - $s = implode('|', array_keys($params)) . '|' . implode('|', array_values($params)) . $ns->key; - return substr(md5($s), 4, 8); + $data = implode('|', array_keys($params)) . '|' . implode('|', array_values($params)) . $session->key; + return substr(md5($data), 4, 8); } - /** - * @return Components\SubMenuControl + * @return \NetteAddons\Components\SubMenuControl */ protected function createComponentSubMenu() { return new Components\SubMenuControl($this->auth); } - - /** - * @return Components\CategoriesControl + * @return \NetteAddons\Components\CategoriesControl */ protected function createComponentCategories() { return new Components\CategoriesControl($this->tags); } - - protected function beforeRender() { $this->template->auth = $this->auth; diff --git a/app/presenters/DetailPresenter.php b/app/presenters/DetailPresenter.php index 91251ce..78a64f8 100644 --- a/app/presenters/DetailPresenter.php +++ b/app/presenters/DetailPresenter.php @@ -2,22 +2,17 @@ namespace NetteAddons; -use Nette\Http, - NetteAddons\Model\Addon, - NetteAddons\Model\Addons, - NetteAddons\Model\AddonDownloads, - NetteAddons\Model\AddonVersions, - NetteAddons\Model\AddonVotes, - Nette\Caching\Cache; - - - -/** - * @author Jan Marek - * @author Jan Tvrdík - * @author Patrik Votoček - * @author Michael Moravec - */ +use Nette\Caching\IStorage; +use Nette\Http; +use NetteAddons\Manage\Forms\ReportFormFactory; +use NetteAddons\Model\Addon; +use NetteAddons\Model\Addons; +use NetteAddons\Model\AddonDownloads; +use NetteAddons\Model\AddonVersions; +use NetteAddons\Model\AddonVotes; +use Nette\Caching\Cache; + + final class DetailPresenter extends BasePresenter { /** @@ -26,46 +21,46 @@ final class DetailPresenter extends BasePresenter */ public $id; - /** @var Model\Addon */ + /** @var \NetteAddons\Model\Addon */ private $addon; - /** - * @var Model\Addons - * @inject - */ + /** @var \NetteAddons\Model\Addons */ public $addons; - /** - * @var Model\AddonDownloads - * @inject - */ + /** @var \NetteAddons\Model\AddonDownloads */ public $addonDownloads; - /** - * @var Model\AddonVersions - * @inject - */ + /** @var \NetteAddons\Model\AddonVersions */ public $addonVersions; - /** - * @var Model\AddonVotes - * @inject - */ + /** @var \NetteAddons\Model\AddonVotes */ public $addonVotes; - /** - * @var Forms\ReportFormFactory - * @inject - */ + /** @var \NetteAddons\Forms\ReportFormFactory */ public $reportForm; - /** - * @var \Nette\Caching\IStorage - * @inject - */ + /** @var \Nette\Caching\IStorage */ public $cacheStorage; + public function __construct( + Addons $addons, + AddonDownloads $addonDownloads, + AddonVersions $addonVersions, + AddonVotes $addonVotes, + ReportFormFactory $reportFormFactory, + IStorage $cacheStorage + ) { + parent::__construct(); + + $this->addons = $addons; + $this->addonDownloads = $addonDownloads; + $this->addonVersions = $addonVersions; + $this->addonVotes = $addonVotes; + $this->reportForm = $reportFormFactory; + $this->cacheStorage = $cacheStorage; + } + protected function startup() { @@ -80,7 +75,6 @@ protected function startup() } - /** * @param int addon ID */ @@ -94,7 +88,6 @@ public function renderDefault($id) } - /** * @param int addon ID */ @@ -103,7 +96,6 @@ public function renderVersions($id) } - /** * @secured * @param string version identifier @@ -130,11 +122,9 @@ public function handleDownload($version = NULL) } - /** * Handle voting for current addon. * - * @author Jan Tvrdík * @param string 'up' or 'down' * @return void * @secured @@ -167,21 +157,19 @@ public function handleVote($vote) } - /** - * @return \Nette\Application\UI\Form + * @return Forms\Form */ protected function createComponentReportForm() { $form = $this->reportForm->create($this->addon, $this->getUser()->getIdentity()); - $form->onSuccess[] = $this->reportFormSubmitted; + $form->onSuccess[] = array($this, 'reportFormSubmitted'); return $form; } - /** * @param Forms\Form */ @@ -203,7 +191,6 @@ public function renderReport($id) } - protected function beforeRender() { parent::beforeRender(); diff --git a/app/presenters/ErrorPresenter.php b/app/presenters/ErrorPresenter.php index ac00c78..4162d1b 100644 --- a/app/presenters/ErrorPresenter.php +++ b/app/presenters/ErrorPresenter.php @@ -5,15 +5,22 @@ use Nette\Diagnostics\Debugger; - -/** - * Error presenter. - */ final class ErrorPresenter extends \Nette\Application\UI\Presenter { + /** @var \NetteAddons\HelperLoader */ + private $helperLoader; + + + public function __construct(HelperLoader $helperLoader) + { + parent::__construct(); + + $this->helperLoader = $helperLoader;; + } + /** - * @param Exception + * @param \Exception * @return void */ public function renderDefault($exception) @@ -21,21 +28,20 @@ public function renderDefault($exception) if ($this->isAjax()) { // AJAX request? Just note this error in payload. $this->payload->error = TRUE; $this->terminate(); - } elseif ($exception instanceof \Nette\Application\BadRequestException) { $code = $exception->getCode(); if ($code != 500) { - $this->template->registerHelperLoader($this->getContext()->getByType('NetteAddons\HelperLoader')); + $this->template->registerHelperLoader($this->helperLoader); } + // load template 403.latte or 404.latte or ... 4xx.latte $this->setView(in_array($code, array(403, 404, 405, 410, 500)) ? $code : '4xx'); + // log to access.log Debugger::log("HTTP code $code: {$exception->getMessage()} in {$exception->getFile()}:{$exception->getLine()}", 'access'); - } else { $this->setView('500'); // load template 500.latte Debugger::log($exception, Debugger::ERROR); // and log exception } } - } diff --git a/app/presenters/HomepagePresenter.php b/app/presenters/HomepagePresenter.php index 6e151ee..b267f29 100644 --- a/app/presenters/HomepagePresenter.php +++ b/app/presenters/HomepagePresenter.php @@ -5,21 +5,21 @@ use NetteAddons\Model\DevelopmentUtils; -/** - * @author Patrik Votoček - * @author Vojtěch Dobeš - */ final class HomepagePresenter extends BaseListPresenter { const ADDONS_LIMIT = 3; - /** - * @var Model\DevelopmentUtils - * @inject - */ + /** @var \NetteAddons\Model\DevelopmentUtils */ public $developmentUtils; + public function __construct(DevelopmentUtils $developmentUtils) + { + parent::__construct(); + + $this->developmentUtils = $developmentUtils; + } + public function renderDefault() { @@ -34,13 +34,12 @@ public function renderDefault() } - /** * @secured */ public function handleRandomDownloadAndInstalls() { - if ($this->context->parameters['productionMode'] !== FALSE) { + if ($this->getContext()->parameters['productionMode'] !== FALSE) { $this->error(); } diff --git a/app/presenters/ListPresenter.php b/app/presenters/ListPresenter.php index 0849315..da9ec9b 100644 --- a/app/presenters/ListPresenter.php +++ b/app/presenters/ListPresenter.php @@ -2,12 +2,7 @@ namespace NetteAddons; -use Nette\Application\UI\Form; -/** - * @author Jan Marek - * @author Patrik Votoček - */ final class ListPresenter extends BaseListPresenter { /** @@ -21,7 +16,6 @@ public function actionDefault($vendor = NULL) } - /** * @param string */ @@ -32,7 +26,6 @@ public function renderDefault($vendor) } - public function actionMine() { if (!$this->getUser()->loggedIn) { @@ -42,10 +35,8 @@ public function actionMine() } - public function renderMine() { $this->template->addons = $this->addons->findByUser($this->user->id); } - } diff --git a/app/presenters/PagePresenter.php b/app/presenters/PagePresenter.php index 0e470b9..c351f2a 100644 --- a/app/presenters/PagePresenter.php +++ b/app/presenters/PagePresenter.php @@ -2,42 +2,51 @@ namespace NetteAddons; -/** - * @author Jan Cerny - */ +use NetteAddons\Forms\EditPageFormFactory; + + final class PagePresenter extends BasePresenter { + /** @var \Nette\Database\Table\ActiveRow|string */ + private $page; + + /** @var Forms\EditPageFormFactory */ + public $editPageForm; + /** * @var string * @persistent */ public $slug; - /** @var \Nette\Database\Table\ActiveRow|string */ - private $page; - /** - * @var Forms\EditPageFormFactory - * @inject - */ - public $editPageForm; + public function __construct(EditPageFormFactory $editPageFormFactory) + { + parent::__construct(); + $this->editPageForm = $editPageFormFactory; + } protected function startup() { parent::startup(); - if (!$this->slug) $this->error(); + + if (!$this->slug) { + $this->error(); + } + $this->page = $this->pages->findOneBySlug($this->slug); + if (!$this->page) { $this['subMenu']->setPage($this->slug); $this->error(); } + $this['subMenu']->setPage($this->page); } - /** * @param string */ @@ -51,7 +60,6 @@ public function renderDefault($slug) } - /** * @return Forms\Form */ @@ -62,13 +70,12 @@ protected function createComponentEditPageForm() } $form = $this->editPageForm->create($this->page, $this->getUser()->getIdentity()); - $form->onSuccess[] = $this->editPageFormSubmitted; + $form->onSuccess[] = array($this, 'editPageFormSubmitted'); return $form; } - /** * @param Forms\Form */ @@ -81,7 +88,6 @@ public function editPageFormSubmitted(Forms\Form $form) } - /** * @param string */ @@ -93,5 +99,4 @@ public function renderEdit($slug) $this->template->page = $this->page; } - } diff --git a/app/presenters/SignPresenter.php b/app/presenters/SignPresenter.php index 007af8b..12454e4 100644 --- a/app/presenters/SignPresenter.php +++ b/app/presenters/SignPresenter.php @@ -2,43 +2,58 @@ namespace NetteAddons; -use Nette\Http\Request, - Nette\Http\UrlScript, - Nette\Utils\Strings, - Nette\Security\AuthenticationException, - Nette\Security\IAuthenticator; - -/** - * @author Patrik Votoček - */ +use Nette\Application\IRouter; +use Nette\Http\Request; +use Nette\Http\UrlScript; +use Nette\Utils\Strings; +use Nette\Security\IAuthenticator; + + final class SignPresenter extends BasePresenter { - /** - * @var \Nette\Application\IRouter - * @inject - */ + /** @var \Nette\Application\IRouter */ public $router; + public function __construct(IRouter $router) + { + parent::__construct(); + + $this->router = $router; + } + + /** + * @param string|NULL + */ public function renderIn($backlink) { - $referer = $this->getHttpRequest()->referer; - if (!$backlink && $referer && $referer->host == $this->getHttpRequest()->url->host) { + $httpRequest = $this->getHttpRequest(); + + $referer = NULL; + if ($httpRequest instanceof \Nette\Http\Request) { + $referer = $httpRequest->getReferer(); + } + + if (!$backlink && $referer && $referer->getHost() == $httpRequest->getUrl()->getHost()) { $url = new UrlScript($referer); - $url->setScriptPath($this->getHttpRequest()->getUrl()->getScriptPath()); + $url->setScriptPath($httpRequest->getUrl()->getScriptPath()); $tmp = new Request($url); $req = $this->router->match($tmp); + if (!$req) { return; } + if (isset($req->parameters[static::SIGNAL_KEY])) { $params = $req->parameters; unset($params[static::SIGNAL_KEY]); $req->setParameters($params); } + if ($req->getPresenterName() != $this->getName()) { $session = $this->getSession('Nette.Application/requests'); + do { $key = Strings::random(5); } while (isset($session[$key])); @@ -58,13 +73,12 @@ public function renderIn($backlink) protected function createComponentSignInForm() { $form = new Forms\SignInForm(); - $form->onSuccess[] = $this->signInFormSubmitted; + $form->onSuccess[] = array($this, 'signInFormSubmitted'); return $form; } - /** * @param Forms\SignInForm */ @@ -87,13 +101,11 @@ public function signInFormSubmitted(Forms\SignInForm $form) $this->restoreRequest($backlink); } - } catch (AuthenticationException $e) { + } catch (\Nette\Security\AuthenticationException $e) { if ($e->getCode() == IAuthenticator::IDENTITY_NOT_FOUND) { $form['username']->addError("User '$values->username' not found."); - } elseif ($e->getCode() == IAuthenticator::INVALID_CREDENTIAL) { $form['password']->addError('Invalid password.'); - } else { $form->addError('Invalid credentials.'); } @@ -101,7 +113,6 @@ public function signInFormSubmitted(Forms\SignInForm $form) } - /** * Restores current request to session. * @@ -127,12 +138,10 @@ public function restoreRequest($key) } - public function actionOut() { $this->getUser()->logout(); $this->flashMessage('You have been signed out.'); $this->redirect('in'); } - } diff --git a/app/presenters/SpecialPresenter.php b/app/presenters/SpecialPresenter.php index cd30e18..a1074fa 100644 --- a/app/presenters/SpecialPresenter.php +++ b/app/presenters/SpecialPresenter.php @@ -2,21 +2,23 @@ namespace NetteAddons; -/** - * @author Patrik Votoček - */ + final class SpecialPresenter extends BasePresenter { - /** - * @var Model\Addons - * @inject - */ + /** @var \NetteAddons\Model\Addons */ public $addons; + public function __construct(Model\Addons $addons) + { + parent::__construct(); + + $this->addons = $addons; + } + /** - * @param string output type + * @param string */ public function renderSitemap($type = 'html') { @@ -28,5 +30,4 @@ public function renderSitemap($type = 'html') $this->setView('sitemap.xml'); } } - } diff --git a/app/view/HelperLoader.php b/app/view/HelperLoader.php index 9da0d15..a8e4363 100644 --- a/app/view/HelperLoader.php +++ b/app/view/HelperLoader.php @@ -2,15 +2,11 @@ namespace NetteAddons; -use Nette, - emberlabs\GravatarLib\Gravatar; - +use emberlabs\GravatarLib\Gravatar; /** * Nette addons template helper loader - * - * @author Patrik Votoček */ class HelperLoader extends \Nette\Object { @@ -36,9 +32,8 @@ public function __construct(TextPreprocessor $preprocessor, Gravatar $gravatar) } - /** - * @param string helper name + * @param string * @return callable|NULL */ public function __invoke($helper) diff --git a/app/view/ITextProcessor.php b/app/view/ITextProcessor.php index b7ced97..a52dfa1 100644 --- a/app/view/ITextProcessor.php +++ b/app/view/ITextProcessor.php @@ -2,6 +2,7 @@ namespace NetteAddons; + interface ITextProcessor { /** @@ -9,4 +10,4 @@ interface ITextProcessor * @return string[]|array */ public function process($text); -} \ No newline at end of file +} diff --git a/app/view/TextPreprocessor.php b/app/view/TextPreprocessor.php index 9558e53..55e2056 100644 --- a/app/view/TextPreprocessor.php +++ b/app/view/TextPreprocessor.php @@ -2,18 +2,11 @@ namespace NetteAddons; -use Nette, - NetteAddons\Model\Addon; +use Nette\Utils\Html; +use NetteAddons\Model\Addon; - -/** - * @author David Grudl - * @author Jan Marek - * @author Patrik Votoček - * @author Jan Tvrdík - */ -class TextPreprocessor extends Nette\Object +class TextPreprocessor extends \Nette\Object { const FORMAT_TEXY = 'texy'; const FORMAT_MARKDOWN = 'markdown'; @@ -21,7 +14,7 @@ class TextPreprocessor extends Nette\Object /** @var ITextProcessor[]|array */ private $processors = array(); - /** @var Model\Utils\Licenses */ + /** @var \NetteAddons\Model\Utils\Licenses */ private $licenses; @@ -31,7 +24,6 @@ public function __construct(Model\Utils\Licenses $licenses) } - /** * @return TextPreprocessor */ @@ -42,24 +34,21 @@ public function addProcessor(ITextProcessor $processor, $format = self::FORMAT_T } - /** - * @param Model\Addon + * @param \NetteAddons\Model\Addon * @return array - * @throws NotImplementedException + * @throws \NetteAddons\NotImplementedException */ public function processDescription(Addon $addon) { if (isset($this->processors[$addon->descriptionFormat])) { return $this->processors[$addon->descriptionFormat]->process($addon->description); - return $this->processTexyContent($addon->description); } else { throw new \NetteAddons\NotImplementedException('Format "' . $addon->descriptionFormat . '" is not supported'); } } - /** * @param string|array * @return \Nette\Utils\Html @@ -70,7 +59,7 @@ public function processLicenses($licenses) $licenses = array_map('trim', explode(',', $licenses)); } - $container = \Nette\Utils\Html::el(); + $container = Html::el(); foreach ($licenses as $license) { if (count($container->getChildren()) > 0) { $container->add(', '); diff --git a/app/view/TextProcessors/MarkdownProcessor.php b/app/view/TextProcessors/MarkdownProcessor.php index f942a85..19b3452 100644 --- a/app/view/TextProcessors/MarkdownProcessor.php +++ b/app/view/TextProcessors/MarkdownProcessor.php @@ -3,6 +3,7 @@ namespace NetteAddons\TextProcessors; use Nette\Utils\Strings; +use Nette\Utils\Callback; use FSHL\Highlighter; use FSHL\Output\Html; use FSHL\Lexer; @@ -12,6 +13,7 @@ class MarkdownProcessor extends \Nette\Object implements \NetteAddons\ITextProce /** @var callable */ private $converter; + public function __construct() { $markdown = new \Michelf\MarkdownExtra; @@ -67,11 +69,15 @@ function ($matches) { }; } + /** + * @param string + * @return string[]|array (content => string, toc => string[]|array) + */ public function process($input) { return array( - 'content' => \Nette\Utils\Callback::invoke($this->converter, $input), + 'content' => Callback::invoke($this->converter, $input), 'toc' => array(), ); } -} \ No newline at end of file +} diff --git a/app/view/TextProcessors/Texy/AddonsConverter.php b/app/view/TextProcessors/Texy/AddonsConverter.php index 0a07609..24a8ce7 100644 --- a/app/view/TextProcessors/Texy/AddonsConverter.php +++ b/app/view/TextProcessors/Texy/AddonsConverter.php @@ -2,6 +2,7 @@ namespace NetteAddons\TextProcessors\Texy; + /** * Texy parser for addons. */ @@ -23,4 +24,4 @@ public function createTexy() return $texy; } -} \ No newline at end of file +} diff --git a/app/view/TextProcessors/Texy/Convertor.php b/app/view/TextProcessors/Texy/Convertor.php index f9dda5a..4aa8be4 100644 --- a/app/view/TextProcessors/Texy/Convertor.php +++ b/app/view/TextProcessors/Texy/Convertor.php @@ -8,14 +8,12 @@ /** * Texy parser for wiki. - * - * @copyright David Grudl */ class Converter { const HOMEPAGE = 'homepage'; - /** @var Link */ + /** @var \NetteAddons\TextProcessors\Texy\Link */ private $current; /** @var string */ @@ -68,6 +66,11 @@ class Converter ); + /** + * @param string + * @param string + * @param string + */ public function __construct($book, $lang, $name) { $this->current = new Link($book, $lang, $name); @@ -75,6 +78,7 @@ public function __construct($book, $lang, $name) /** + * @param string * @return void */ public function parse($text) @@ -106,7 +110,7 @@ public function parse($text) /** - * @return Texy + * @return \Texy */ public function createTexy() { @@ -141,6 +145,10 @@ public function createTexy() /********************* text tools ****************d*g**/ + /** + * @param string + * @return Link|string + */ public function resolveLink($link) { if (preg_match('~.+@|https?:|ftp:|mailto:|ftp\.|www\.~Ai', $link)) { // external link @@ -222,6 +230,10 @@ public function resolveLink($link) } + /** + * @param \NetteAddons\TextProcessors\Texy\Link + * @return string + */ public function createUrl(Link $link) { $parts = explode('-', $link->book, 2); @@ -235,6 +247,11 @@ public function createUrl(Link $link) } + /** + * @param string + * @param string|NULL + * @return string + */ private static function webalize($s, $charlist = NULL) { $s = preg_replace('#[^\x09\x0A\x0D\x20-\x7E\xA0-\x{2FF}\x{370}-\x{10FFFF}]#u', '', $s); @@ -261,11 +278,11 @@ private static function webalize($s, $charlist = NULL) /** - * @param TexyHandlerInvocation handler invocation - * @param string command - * @param array arguments - * @param string arguments in raw format - * @return TexyHtml|string|FALSE + * @param \TexyHandlerInvocation + * @param string + * @param array + * @param string + * @return \TexyHtml|string|FALSE */ public function scriptHandler($invocation, $cmd, $args, $raw) { @@ -328,12 +345,12 @@ public function scriptHandler($invocation, $cmd, $args, $raw) /** - * @param TexyHandlerInvocation handler invocation - * @param string - * @param string - * @param TexyModifier - * @param TexyLink - * @return TexyHtml|string|FALSE + * @param \TexyHandlerInvocation + * @param string + * @param string + * @param \TexyModifier + * @param \TexyLink + * @return \TexyHtml|string|FALSE */ public function phraseHandler($invocation, $phrase, $content, $modifier, $link) { @@ -364,9 +381,9 @@ public function phraseHandler($invocation, $phrase, $content, $modifier, $link) /** - * @param TexyHandlerInvocation handler invocation - * @param string - * @return TexyHtml|string|FALSE + * @param \TexyHandlerInvocation + * @param string + * @return \TexyHtml|string|FALSE */ public function newReferenceHandler($invocation, $name) { @@ -409,12 +426,12 @@ public function newReferenceHandler($invocation, $name) /** * User handler for code block. * - * @param TexyHandlerInvocation handler invocation - * @param string block type - * @param string text to highlight - * @param string language - * @param TexyModifier modifier - * @return TexyHtml + * @param \TexyHandlerInvocation + * @param string + * @param string + * @param string + * @param \TexyModifier + * @return \TexyHtml */ public function blockHandler($invocation, $blocktype, $content, $lang, $modifier) { @@ -448,5 +465,4 @@ public function blockHandler($invocation, $blocktype, $content, $lang, $modifier $elCode = $elPre->create('code', $content); return $elPre; } - -} \ No newline at end of file +} diff --git a/app/view/TextProcessors/Texy/Link.php b/app/view/TextProcessors/Texy/Link.php index c616fd8..8b9bdc0 100644 --- a/app/view/TextProcessors/Texy/Link.php +++ b/app/view/TextProcessors/Texy/Link.php @@ -21,6 +21,12 @@ class Link public $fragment; + /** + * @param string + * @param string + * @param string + * @param string|NULL + */ public function __construct($book, $lang, $name, $fragment = NULL) { $this->book = $book; @@ -28,5 +34,4 @@ public function __construct($book, $lang, $name, $fragment = NULL) $this->name = $name; $this->fragment = $fragment; } - } diff --git a/app/view/TextProcessors/TexyProcessor.php b/app/view/TextProcessors/TexyProcessor.php index 8a9c23f..32c7b4f 100644 --- a/app/view/TextProcessors/TexyProcessor.php +++ b/app/view/TextProcessors/TexyProcessor.php @@ -2,16 +2,23 @@ namespace NetteAddons\TextProcessors; + class TexyProcessor extends \Nette\Object implements \NetteAddons\ITextProcessor { /** @var \NetteAddons\TextProcessors\Texy\AddonsConverter */ private $converter; + public function __construct() { $this->converter = new Texy\AddonsConverter; } + + /** + * @param string + * @return string[]|array (content => string, toc => string[]|array) + */ public function process($input) { $this->converter->parse($input); @@ -21,4 +28,4 @@ public function process($input) 'toc' => $this->converter->toc, ); } -} \ No newline at end of file +}