Selection is based on the great library NotORM http://www.notorm.com written by Jakub Vrana.
Author: Jakub Vrana
Author: Jan Skrasek
Inheritance: extends Nette\Object, implements Iterator, implements ArrayAccess, implements Countable
示例#1
0
 /**
  * @param int $limit
  * @param int $offset
  * @return array
  */
 public function getData($limit = NULL, $offset = NULL)
 {
     if ($limit !== NULL) {
         $this->source->limit($limit, $offset);
     }
     return $this->source->fetchAll();
 }
示例#2
0
 public function render()
 {
     $this->_calendarMonthData->rewind();
     $this->template->data = $this->_calendarMonthData;
     $this->template->setFile(__DIR__ . '/Month.latte');
     $this->template->render();
 }
示例#3
0
 static function appendLimit(Nette\Database\Table\Selection &$query, $limit = NULL, $offset = NULL)
 {
     if (!is_null($limit)) {
         $query->limit($limit, $offset);
     }
     return $query;
 }
示例#4
0
 /**
  * Default form handler
  */
 public function process()
 {
     /** @var ArrayHash $values */
     $values = $this->values;
     try {
         $this->onBeforeProcess($this, $values);
         if (isset($values->id)) {
             $this->onBeforeUpdate($this, $values);
             $arr = (array) $values;
             unset($arr['id']);
             $row = $this->selection->wherePrimary($values->id)->fetch();
             $row->update($arr);
             $this->onAfterUpdate($row, $this, $values);
         } else {
             $this->onBeforeInsert($this, $values);
             $row = $this->selection->insert($values);
             $this->onAfterInsert($row, $this, $values);
         }
         $this->onAfterProcess($row, $this, $values);
     } catch (\PDOException $e) {
         $this->addError($e->getMessage());
         dump($e);
         Debugger::log($e);
     }
 }
示例#5
0
 /**
  * Filter data
  * @param array $filter
  */
 public function filter(array $filter)
 {
     foreach ($filter as $key => $value) {
         $value = is_numeric($value) ? $value : '%' . $value . '%';
         $this->table->where($key . ' LIKE ?', $value);
     }
 }
 public function validate(BaseControl $control)
 {
     $condition[$control->name] = $control->value;
     if ($this->id) {
         $condition['id!='] = $this->id;
     }
     return $this->selection->where($condition)->count() ? FALSE : TRUE;
 }
 /**
  * @param Selection $context
  * @param int $sectionId
  * @param string $via [optional]
  * @return Selection
  */
 public function filterSection(Selection $context, $sectionId, $via = '')
 {
     $context->alias($this->sectionTableName, 'alternate_section');
     $filterFactory = new Filter\Factory($this->sectionTableName);
     $nFilter = $filterFactory->createN($context);
     $nFilter->setup('id', $sectionId)->via("{$via}:page_has_section");
     $nFilter->setup('id', $sectionId, 'alternate_section')->via($via);
     return $nFilter->build();
 }
示例#8
0
  /** Nastavenie textov
 * @param array $texts
 * @return \App\FrontModule\Components\Clanky\AktualneClankyControl
 */
  public function setTexts($texts)
  {
      $this->texts = array_merge($this->texts, $texts);
      return $this;
  }
  /** Nastavenie cesty k titulnemu obrazku clanku
示例#9
0
 /**
  * Nastavi model
  * @param Nette\Database\Table\Selection
  */
 public function setModel(\Nette\Database\Table\Selection $model)
 {
     if (isset($this->filter['email']) && $this->filter['email'] != '') {
         $model->where('adress REGEXP ?', $this->filter['email']);
     }
     if (isset($this->filter['subject']) && $this->filter['subject'] != '') {
         $model->where('subject REGEXP ?', $this->filter['subject']);
     }
     $this->model = $model;
 }
示例#10
0
文件: Last.php 项目: petak23/echo-msz
     if (is_int($pocet) && $pocet > 1) {
         $this->pocet = $pocet;
     }
 }
 /** Zakladny render */
 public function render()
 {
     $this->template->setFile(__DIR__ . '/Last.latte');
     $this->template->h3 = 'Posledných ' . $this->pocet . ' prihlásení';
     $this->template->last = $this->last->order('prihlasenie_datum DESC')->limit($this->pocet);
     $this->template->render();
 /**
  * @param \Nette\Database\Table\Selection $selection
  * @param string|Callable $callback
  */
 private function apply(Selection $selection, $callback)
 {
     if (!$callback) {
         return;
     }
     if (is_string($callback)) {
         $selection->select($callback);
     } else {
         $callback($selection);
     }
 }
示例#12
0
 /** Nacitanie udajov o produkte
  * @param int $id Id produktu
  * @param int $id_lang Id jazyka
  * @return array|FALSE
  */
 public function getProdukt($id, $id_lang = 1)
 {
     $hlavne_menu_lang = $this->hlavne_menu_lang->where(array("id_hlavne_menu" => $id, "id_lang" => $id_lang));
     if ($hlavne_menu_lang === FALSE) {
         return FALSE;
     }
     $produkt = $this->find($hlavne_menu_lang->hlavne_menu->clanok);
     if ($produkt === FALSE) {
         return FALSE;
     }
     return array("hlavne_menu_lang" => $hlavne_menu_lang, "produkt" => $produkt);
 }
 protected function buildJoins($val, $inner = FALSE)
 {
     $driver = $this->selection->getConnection()->getSupplementalDriver();
     $reflection = $this->selection->getConnection()->getDatabaseReflection();
     $joins = array();
     preg_match_all('~\\b([a-z][\\w.:]*[.:])([a-z]\\w*|\\*)(\\s+IS\\b|\\s*<=>)?~i', $val, $matches);
     foreach ($matches[1] as $names) {
         $parent = $this->selection->getName();
         if ($names !== "{$parent}.") {
             // case-sensitive
             preg_match_all('~\\b([a-z][\\w]*|\\*)([.:])~i', $names, $matches, PREG_SET_ORDER);
             foreach ($matches as $match) {
                 list(, $name, $delimiter) = $match;
                 if ($delimiter === ':') {
                     list($table, $primary) = $reflection->getHasManyReference($parent, $name);
                     $column = $reflection->getPrimary($parent);
                 } else {
                     list($table, $column) = $reflection->getBelongsToReference($parent, $name);
                     $primary = $reflection->getPrimary($table);
                 }
                 $joins[$name] = ' ' . (!isset($joins[$name]) && $inner && !isset($match[3]) ? 'INNER' : 'LEFT') . ' JOIN ' . $driver->delimite($table) . ($table !== $name ? ' AS ' . $driver->delimite($name) : '') . ' ON ' . $driver->delimite($parent) . '.' . $driver->delimite($column) . ' = ' . $driver->delimite($name) . '.' . $driver->delimite($primary);
                 $parent = $name;
             }
         }
     }
     return $joins;
 }
示例#14
0
 public function update($data, $forceRegenerateTimes = FALSE)
 {
     parent::update($data);
     if ($forceRegenerateTimes || rand(0, 100) < 10) {
         $this->generateAllTimes();
     }
 }
示例#15
0
 public function access($key, $delete = FALSE)
 {
     if ($this->table->connection->getCache() && !isset($this->modified[$key]) && $this->table->access($key, $delete)) {
         $id = isset($this->data[$this->table->primary]) ? $this->data[$this->table->primary] : $this->data;
         $this->data = $this->table[$id]->data;
     }
 }
示例#16
0
 public function search($q)
 {
     $query = "";
     $count = count($this->columns);
     $i = 0;
     $phldrs = array();
     foreach ($this->columns as $column) {
         $query .= new \Nette\Database\SqlLiteral($column . " " . $this->method . " ?");
         $phldrs[] = str_replace($this->placeholder, $q, $this->mask);
         if ($i < $count - 1) {
             $query .= " OR ";
         }
         $i++;
     }
     return $this->model->where($query, $phldrs);
 }
示例#17
0
 /**
  * Pad:default.
  * @param int         $id
  * @param string|null $order
  * @throws BadRequestException
  */
 public function actionDefault($id, $order)
 {
     $this->loadPad($id);
     $this->notes = $this->noteManager->findByPad($id);
     if ($order) {
         $this->notes->order(OrderHelper::translateParameterToColumns($order));
     }
 }
示例#18
0
 protected function execute()
 {
     if ($this->rows !== NULL) {
         return;
     }
     parent::execute();
     $this->onExecute();
 }
示例#19
0
 /** Render funkcia pre vypisanie odkazu na clanok 
  * @see Nette\Application\Control#render()
  */
 public function render()
 {
     if (count($this->dokumenty)) {
         //Ak nieco mam, tak najdem nahodny
         $obrazky = $this->dokumenty->limit(1, rand(0, count($this->dokumenty) - 1))->fetch();
         $alt = $obrazky->popis;
         $src = $obrazky->subor;
     } else {
         $alt = $this->texty["notFound"];
         $src = "www/images/otaznik.png";
     }
     $this->template->setFile(__DIR__ . '/NahodnaFotka.latte');
     $this->template->h4 = $this->texty["h4"];
     $this->template->alt = $alt;
     $this->template->src = $src;
     $this->template->render();
 }
示例#20
0
 public function setRelated($table, $key, $column, $as = NULL, $primary = 'id')
 {
     if (is_null($this->context)) {
         throw new Grid_Exception('Related require set Nette database context in constructor.');
     }
     $this->related[$table] = array($table, $key, $column, $as, $primary);
     $this->nette_table->select($table . '.' . $column . (!is_null($as) ? ' AS ' . $as : ''));
     return $this;
 }
示例#21
0
 /**
  * @param  string
  * @param  IModelManager
  */
 public function __construct($table, IModelManager $manager)
 {
     if (NETTE_VERSION_ID >= 20100) {
         parent::__construct($manager->getConnection(), $table, $manager->getDatabaseReflection(), $manager->getCacheStorage());
     } else {
         parent::__construct($table, $manager->getConnection());
     }
     $this->manager = $manager;
 }
示例#22
0
 /** Akcia pre nacitanie aktualnych oznamov */
 public function actionDefault()
 {
     //Z DB zisti ako budu oznamy usporiadane
     if (($pomocna = $this->udaje->getKluc("oznam_usporiadanie")) !== FALSE) {
         $oznamy_usporiadanie = (bool) $pomocna->text;
     } else {
         $oznamy_usporiadanie = FALSE;
     }
     $this->aktualne = $this->oznam->aktualne($oznamy_usporiadanie);
     //Ak nie su oznamy najdi 1. clanok cez udaje a ak je tak presmeruj na neho
     if ($this->aktualne->count() == 0) {
         if (($id = $this->udaje->getUdajInt('oznam_prva_stranka')) > 0) {
             $this->flashRedirect(['Clanky:default', $id], $this->trLang('ziaden_aktualny'), 'info');
         } else {
             $this->setView("prazdne");
         }
     }
 }
示例#23
0
 /** @return int */
 public function count()
 {
     if ($this->data !== NULL) {
         return count($this->data);
     }
     if ($this->count === NULL) {
         $this->count = $this->selection->count('*');
     }
     return $this->count;
 }
示例#24
0
 protected function configure($presenter)
 {
     $this->selection->select("error.id, title, message, error_dt, project_id.name AS project_name, error_status_id.status AS status");
     $source = new \NiftyGrid\DataSource\NDataSource($this->selection);
     $self = $this;
     $this->setDataSource($source);
     $this->setDefaultOrder("error_dt DESC");
     $this->addColumn("project_name", "Project")->setTableName("project_id")->setSortable()->setSelectFilter($this->projectEntity->findAll()->fetchPairs("id", "name"));
     $this->addColumn("title", "Title")->setTextFilter()->setSortable();
     $this->addColumn("message", "Message")->setSortable()->setTextFilter()->setRenderer(function ($row) use($presenter) {
         return \Nette\Utils\Html::el("a")->setText(trim($row["message"]) ? Strings::truncate($row["message"], 60) : $row["id"])->addAttributes(array("target" => "_blank"))->href($presenter->link("ErrorList:display", $row["id"]));
     });
     $this->addColumn("status", "Status")->setTableName("error_status_id")->setSelectFilter($this->lstErrorStatus->findAll()->fetchPairs("id", "status"))->setRenderer(function ($row) use($presenter) {
         $label = "";
         if ($row["status"] == "New") {
             $label = "label-important";
         }
         return \Nette\Utils\Html::el("span")->setText($row["status"])->addAttributes(array("class" => "label {$label}"));
     });
     if (!isset($this->filter['status'])) {
         $this->filter['status'] = '1';
     }
     $this->addColumn("error_dt", "Date", "150px")->setDateFilter()->setSortable()->setRenderer(function ($row) {
         return $row["error_dt"]->format("j.n.Y H:i:s");
     });
     $this->addButton("archive", "Archive")->setText("Archive")->setAjax()->setLink(function ($row) use($presenter) {
         return $presenter->link("archive!", $row['id']);
     })->setClass("btn-success btn-solve");
     /*
     		$this->addButton("createTask", "Create Task")
     			->setText('Create task')
     			->setAjax()
     			->setLink(function($row) use ($presenter){return $presenter->link("createTask!", $row['id']);})
     			->setClass("btn-info");
     */
     $this->addAction("archive", "Archive")->setAjax(true)->setCallback(function ($selectedItems) use($self) {
         $self->handleArchive($selectedItems);
     });
     $this->addAction("unarchive", "Unarchive")->setAjax(true)->setCallback(function ($selectedItems) use($self) {
         $self->handleUnArchive($selectedItems);
     });
 }
示例#25
0
	protected function getReference($table, $column)
	{
		$this->accessColumn($column);
		if (array_key_exists($column, $this->data)) {
			$value = $this->data[$column];
			$referenced = $this->table->getReferencedTable($table, $column, $value);
			return isset($referenced[$value]) ? $referenced[$value] : NULL; // referenced row may not exist
		}

		return FALSE;
	}
示例#26
0
 /**
  * Filter IT!
  * @param string $flags
  */
 public function filter($flags)
 {
     //One and main logic!
     $columns = array();
     foreach (str_split($flags) as $char) {
         if (!array_key_exists($char, $this->flags)) {
             throw new \Nette\InvalidArgumentException("Unrecognized flag '{$char}'", 3315);
         }
         $flag = $this->flags[$char];
         if (!is_array($flag)) {
             $arr = array();
             $arr["column"] = $flag;
             $arr["by"] = " = 1";
             $columns[] = $arr;
         } else {
             $columns[] = $flag;
         }
     }
     return $this->model->where($this->getQueryString($columns));
 }
示例#27
0
 /**
  * @param Selection $selection
  * @return HyperSelection
  */
 public function createSelection(Selection $selection)
 {
     $tableName = $selection->getName();
     $className = Helpers::substituteClassWildcard($this->selectionMapping, $tableName);
     $baseClass = HyperSelection::class;
     if (!class_exists($className) || !is_subclass_of($className, $baseClass)) {
         throw new InvalidStateException("HyperSelection class {$className} does not exist or does not extend {$baseClass}.");
     }
     $names = $this->container->findByType($className);
     if (count($names) > 1) {
         throw new InvalidStateException("Multiple services of type {$className} found: " . implode(', ', $names) . '.');
     } elseif (count($names) == 0) {
         $inst = $this->container->createInstance($className);
     } else {
         $name = array_shift($names);
         $inst = $this->container->createService($name);
     }
     /** @var HyperSelection $inst */
     $inst->setFactory($this);
     $inst->setSelection($selection);
     return $inst;
 }
 public function &__get($key)
 {
     $this->access($key);
     if (array_key_exists($key, $this->data)) {
         return $this->data[$key];
     }
     list($table, $column) = $this->table->getConnection()->getDatabaseReflection()->getBelongsToReference($this->table->getName(), $key);
     $referenced = $this->getReference($table, $column);
     if ($referenced !== false) {
         $this->access($key, false);
         return $referenced;
     }
     $this->access($key, null);
     throw new Nette\MemberAccessException("Cannot read an undeclared column \"{$key}\".");
 }
示例#29
0
          $for_link = $abs_link . ($v->druh->presenter == "Menu" ? "Clanky" : $v->druh->presenter) . ":";
          $temp_pol = new \App\FrontModule\Components\Menu\MenuNode();
          $temp_pol->name = $ja->nazov;
          $temp_pol->tooltip = $ja->h1part2;
          $temp_pol->avatar = $v->avatar;
          $temp_pol->anotacia = $v->druh->presenter == "Clanky" && isset($ja->clanok_lang->anotacia) ? $ja->clanok_lang->anotacia : FALSE;
          $temp_pol->node_class = $v->ikonka !== NULL && strlen($v->ikonka) > 2 ? "fa fa-" . $v->ikonka : NULL;
          $temp_pol->link = $v->druh->je_spec_naz ? array($for_link) : $for_link;
          $temp_pol->absolutna = $v->absolutna;
          $temp_pol->novinka = $v->id_dlzka_novinky > 1 ? $v->modified->add(new \DateInterval('P' . $v->dlzka_novinky->dlzka . 'D')) : NULL;
          $temp_pol->id = $v->id;
          $temp_pol->poradie_podclankov = $v->poradie_podclankov;
          $out[] = array("node" => $temp_pol, "nadradena" => isset($v->id_nadradenej) ? $v->id_nadradenej : -1 * $v->hlavne_menu_cast->id);
          unset($temp_pol);
      }
      return $out;
  }
  /** Vypis menu pre Admin modul
 * @param int $id_reg         Min. id registrácie
 * @param type $lang_id       Id jazyka
 * @return array|FALSE
 */
  public function getMenuAdmin($id_reg, $lang_id = 1)
  {
      $polozky = $this->hlavne_menu_lang->where("hlavne_menu.id_registracia <= ?", $id_reg)->where("id_lang", $lang_id)->where("hlavne_menu.druh.modul IS NULL OR hlavne_menu.druh.modul = ?", "Admin")->order('hlavne_menu.id_hlavne_menu_cast, hlavne_menu.uroven, hlavne_menu.poradie ASC');
      return $polozky !== FALSE && count($polozky) ? $this->_getMenuAdmin($polozky) : FALSE;
  }
  /** Vytvorenie menu pre administraciu
 * @param Nette\Database\Table\Selection $polozky Vyber poloziek hl. menu
 * @return array|FALSE
 */
  private function _getMenuAdmin($polozky)
  {
      $cislo_casti = 0;
      //aktualne cislo casti
      $casti = array();
      $out = array();
      foreach ($polozky as $ja) {
          $v = $ja->hlavne_menu;
          //Mam taku istu cast ako pred tym? Ak nie nastav cislo casti, ale len ak je to dovolene cez $casti
          if ($cislo_casti !== $v->id_hlavne_menu_cast) {
              //Mam taku istu cast ako pred tym? Ak nie nastav cislo casti
              $cislo_casti = $v->id_hlavne_menu_cast;
              $casti[] = $cislo_casti;
              $temp_pol = new \App\AdminModule\Components\Menu\MenuNode();
              $temp_pol->name = $v->hlavne_menu_cast->nazov;
              $temp_pol->link = array("Homepage:");
              $temp_pol->id = -1 * $v->hlavne_menu_cast->id;
              $out[] = array("node" => $temp_pol, "nadradena" => FALSE);
示例#30
0
 protected function getReference($table, $column)
 {
     if (array_key_exists($column, $this->data)) {
         $this->access($column);
         $value = $this->data[$column];
         $value = $value instanceof ActiveRow ? $value->getPrimary() : $value;
         $referenced = $this->table->getReferencedTable($table, $column, !empty($this->modified[$column]));
         $referenced = isset($referenced[$value]) ? $referenced[$value] : NULL;
         // referenced row may not exist
         if (!empty($this->modified[$column])) {
             // cause saving changed column and prevent regenerating referenced table for $column
             $this->modified[$column] = 0;
             // 0 fails on empty, pass on isset
         }
         return $referenced;
     }
 }