protected function createComponentFormTranslate($name) { $form = new Form($this, $name); $form->addTextArea('translate', $this->translator->trans('translate.grid.translate')); $form->addSubmit('send', $this->translator->trans('translate.menu.translate')); $form->onSuccess[] = [$this, 'submitFormTranslate']; $translatesLocale = $this->row->related('translate_locale')->where('language_id', $this->webLanguage)->fetch(); if ($translatesLocale) { $form->setDefaults(array('translate' => $translatesLocale['translate'])); } return $form; }
protected function createComponentFormSet($name) { $form = new Form($this, $name); foreach ($this->resource->related('resource_privilege') as $resourcePrivilege) { $form->addCheckbox('privilege_' . $resourcePrivilege->privilege->id, $resourcePrivilege->privilege->name); } $form->addSubmit('send', $this->translator->translate('admin.form.set')); $form->onSuccess[] = [$this, 'submitFormSet']; $defaults = array(); foreach ($this->permissions->where('role_id = ?', $this->row['id'])->where('resource_id = ?', $this->resource['id']) as $permission) { $defaults['privilege_' . $permission['privilege_id']] = true; } $form->setDefaults($defaults); return $form; }
private function updateAddon(ActiveRow $addon) { $this->writeln('Updating: ' . $addon->name); $github = $this->normalizeGithubUrl($addon->repository); if ($github) { $guzzle = new \Guzzle\Http\Client(); try { $guzzle->get($github)->send(); $this->db->table('addons_resources')->insert(array('addonId' => $addon->id, 'type' => 'github', 'resource' => $github)); } catch (\Guzzle\Http\Exception\RequestException $e) { $this->writeln((string) $e); } } if ($addon->type === 'composer') { $version = $addon->related('versions')->order('id', 'DESC')->fetch(); $composerData = Json::decode($version->composerJson); $packagist = $this->generatePackagistUrl($composerData->name); $guzzle = new \Guzzle\Http\Client(); try { $guzzle->get($packagist . '.json')->send(); $this->db->table('addons_resources')->insert(array('addonId' => $addon->id, 'type' => 'packagist', 'resource' => $packagist)); } catch (\Guzzle\Http\Exception\RequestException $e) { $this->writeln((string) $e); } } if ($addon->demo) { $guzzle = new \Guzzle\Http\Client(); try { $guzzle->get($addon->demo)->send(); $this->db->table('addons_resources')->insert(array('addonId' => $addon->id, 'type' => 'demo', 'resource' => $addon->demo)); } catch (\Guzzle\Http\Exception\RequestException $e) { $this->writeln((string) $e); } } }
public static function fromActiveRow(ActiveRow $row) { $version = new static(); $version->id = $row->id; $version->version = $row->version; $version->license = $row->license; $version->distType = $row->distType; $version->distUrl = $row->distUrl; $version->sourceType = $row->sourceType; $version->sourceUrl = $row->sourceUrl; $version->sourceReference = $row->sourceReference; $version->composerJson = Json::decode($row->composerJson); // this may fail $version->updatedAt = $row->updatedAt; $linkTypes = self::getLinkTypes(); $linkTypes = array_flip($linkTypes); foreach ($row->related('dependencies') as $dependencyRow) { $type = $dependencyRow->type; $type = $linkTypes[$type]; $version->{$type}[$dependencyRow->packageName] = $dependencyRow->version; if ($dependencyRow->dependencyId) { $version->relatedAddons[$dependencyRow->packageName] = $dependencyRow->dependencyId; } } return $version; }
private static function loadTagsFromDb(DbEntry $photo) { $tags = new TagCollection(); foreach ($photo->related("photo_tag") as $tag) { $tags->addItem(TagService::loadFromDb($tag->tag)); } return $tags; }
/** * Adds all annexes for this directive. * @param object $dirRow annex data Nette\Database\Table\ActiveRow * @return void */ public function addAnnex(ActiveRow $dirRow) { $annexData = $dirRow->related('annex.id')->order('order'); foreach ($annexData as $annexRow) { $annex = new Annex($annexRow); $this->addComponent($annex, "annex" . $annexRow->order); } }
public function output(\Nette\Database\Table\ActiveRow $query) { $output = array(); foreach ($query->related('permission')->where('role_id', $this->roleId) as $permission) { $output[] = $permission->privilege['name']; } return implode(', ', $output); }
public function output(\Nette\Database\Table\ActiveRow $query) { $translateLocale = $query->related('translate_locale')->where('language_id', $this->languageId)->fetch(); if ($translateLocale) { parent::output($translateLocale); } else { return ''; } }
/** * Returns referencing rows. * @param string $collectionClass * @param string|null $throughColumn * @return StoredCollection|ArrayAccess */ public function related($collectionClass, $throughColumn = null) { self::mustBeChildOf($collectionClass, StoredCollection::class); if ($this->isNewEntity()) { return null; } else { $entityClass = $collectionClass::getEntityClassName($this->annotationReader); $key = $entityClass::getTableName($this->annotationReader); return $collectionClass::create($this, $this->row->related($key, $throughColumn)); } }
protected function createComponentFormEdit($name) { $form = new Form($this, $name); $form->addGroup(); $form->addText('name', $this->translator->translate('admin.form.name'))->addRule(Form::FILLED, $this->translator->translate('admin.form.isRequired')); $form->addText('system_name', $this->translator->translate('admin.form.systemName'))->addRule(Form::FILLED, $this->translator->translate('admin.form.name'))->addRule([$this, 'valideFormEditSystemName'], $this->translator->translate('admin.form.systemNameExist')); $form->addGroup($this->translator->translate('admin.resource.setPrivileges')); foreach ($this->privilege->order('name') as $privilege) { $form->addCheckbox('privilege_' . $privilege['id'], $privilege['name']); } $form->addGroup(); $form->addSubmit('send', $this->translator->translate('admin.form.edit')); $form->onSuccess[] = [$this, 'submitFormEdit']; $defaults = array('name' => $this->resource->name, 'system_name' => $this->resource->system_name); foreach ($this->resource->related('resource_privilege') as $resourcePrivilege) { $defaults['privilege_' . $resourcePrivilege['privilege_id']] = true; } $form->setDefaults($defaults); return $form; }
/** * Creates Addon entity from Nette\Database row. * * @todo Consider lazy loading for versions and tags. * * @param \Nette\Database\Table\ActiveRow * @param AddonVotes * @return Addon */ public static function fromActiveRow(ActiveRow $row, AddonVotes $addonVotes = NULL) { $addon = new static(); $addon->id = (int) $row->id; $addon->name = $row->name; $addon->composerVendor = $row->composerVendor; $addon->composerName = $row->composerName; $addon->userId = (int) $row->user->id; $addon->shortDescription = $row->shortDescription; $addon->description = $row->description; $addon->descriptionFormat = $row->descriptionFormat; $addon->defaultLicense = $row->defaultLicense; $addon->repository = $row->repository; $addon->repositoryHosting = $row->repositoryHosting; $addon->demo = $row->demo; $addon->updatedAt = $row->updatedAt ? DateTime::from($row->updatedAt) : NULL; $addon->deletedAt = $row->deletedAt; $addon->deletedBy = $row->ref('deletedBy'); $addon->type = $row->type; $addon->stars = $row->stars; foreach ($row->related('versions') as $versionRow) { $version = AddonVersion::fromActiveRow($versionRow); $version->addon = $addon; $addon->versions[$version->version] = $version; } foreach ($row->related('tags') as $tagRow) { $addon->tags[$tagRow->tag->id] = Tag::fromActiveRow($tagRow->tag); } foreach ($row->related('addons_resources') as $resourceRow) { $addon->resources[$resourceRow->type] = $resourceRow->resource; } if ($addonVotes) { $addon->votes = $addonVotes->calculatePopularity($row); } return $addon; }
/** * Returns referencing rows * * @param string $key Other table name * @param string $throughColumn Other table column name * @return HyperSelection * @throws Nette\MemberAccessException */ public function related($key, $throughColumn = NULL) { $groupedSelection = $this->activeRow->related($key, $throughColumn); return $this->factory->createSelection($groupedSelection); }
private function finishAndAccount(Nette\Database\Table\ActiveRow $keg, $datetime) { $consumption = $keg->related('consumption.keg')->select('user, SUM(volume) AS volume')->group('user'); $price_per_ml = $keg->price / $consumption->sum('volume'); $updateQuery = 'UPDATE `user` SET `balance` = `balance` - ? WHERE `id` = ?'; foreach ($consumption as $consumer) { $bill = round($price_per_ml * $consumer['volume'], 2); $this->db->query($updateQuery, $bill, $consumer['user']); $this->db->table('credit')->insert(array('user' => $consumer['user'], 'date_add' => $datetime, 'amount' => $bill * -1, 'keg' => $keg->id)); } }
private static function loadCommentsFromDb(DbEntry $article) { $comments = new CommentCollection(); foreach ($article->related("comment", "article_id") as $comment) { $comments->addItem(CommentService::loadFromDb($comment)); } return $comments; }
/** * @param string $key * @param string $throughColumn * @return NGroupedSelection */ public function related($key, $throughColumn = NULL) { $this->checkRow(); return $this->row->related($key, $throughColumn); }
/** * Vrací úkoly spadající pod danný list. * @return Nette\Database\Table\Selection */ public function tasksOf(Nette\Database\Table\ActiveRow $list) { return $list->related('task')->order('created'); }
/** * Appends referencing database table data to result set according to $this->deepListing * @param array $dest reference to data destination * @param \Nette\Database\Table\ActiveRow $row * @param array $map */ protected function getDeepData(array &$dest, ActiveRow $row, array $map) { foreach ($map as $key => $val) { if (is_array($val)) { if ($this->isValidId($dest[$key]) === FALSE) { continue; } $dest[$key] = $row->ref($key)->toArray(); $this->getDeepData($dest[$key], $row->ref($key), $val); } else { $oneToMany = strpos($val, '.'); if ($oneToMany) { $dest[substr($val, 0, $oneToMany)] = iterator_to_array($row->related($val), false); } else { $dest[$val] = $row->ref($val)->toArray(); } } } }