示例#1
0
 /**
  * Returns PayPal's cart items in Nette\ArrayHash or false if there are no items.
  *
  * @param $data Data from PayPal response
  * @return Nette\ArrayHash or boolean
  */
 public function getCartItems()
 {
     $patternKeys = '';
     $iterator = new CachingIterator($this->CART_ITEM_KEYS);
     for ($iterator->rewind(); $iterator->valid(); $iterator->next()) {
         if ($iterator->isFirst()) {
             $patternKeys .= '(';
         }
         $patternKeys .= $iterator->current();
         if ($iterator->hasNext()) {
             $patternKeys .= '|';
         }
         if ($iterator->isLast()) {
             $patternKeys .= ')';
         }
     }
     $pattern = '/^' . $patternKeys . '[0-9]+$/';
     $itemsData = Utils::array_keys_by_ereg($this->responseData, $pattern);
     $items = array();
     $itemsCount = count($items);
     if (!empty($itemsData)) {
         $itemsCount = count($itemsData) / count($this->CART_ITEM_KEYS);
     }
     // We must control if the result of division is integer.
     // Because if not, it means the count of keys in PayPal cart item changed.
     assert(is_int($itemsCount));
     for ($i = 0; $i < $itemsCount; ++$i) {
         $keys = array();
         foreach ($this->CART_ITEM_KEYS as $key) {
             $keys[] = $key . $i;
         }
         if (Utils::array_keys_exist($itemsData, $keys)) {
             $items[] = array('name' => $itemsData['l_name' . $i], 'quantity' => $itemsData['l_qty' . $i], 'taxAmount' => $itemsData['l_taxamt' . $i], 'amount' => $itemsData['l_amt' . $i], 'description' => $itemsData['l_desc' . $i], 'weightValue' => $itemsData['l_itemweightvalue' . $i], 'lengthValue' => $itemsData['l_itemlengthvalue' . $i], 'widthValue' => $itemsData['l_itemwidthvalue' . $i], 'heightValue' => $itemsData['l_itemheightvalue' . $i]);
         }
     }
     return ArrayHash::from($items);
 }
 /**
  * Rewinds the Iterator.
  * @return void
  */
 public function rewind()
 {
     parent::rewind();
     $this->counter = parent::valid() ? 1 : 0;
 }
示例#3
0
 /**
  * Renders data grid body.
  * @return string
  */
 public function renderBody()
 {
     $container = $this->getWrapper('datagrid container');
     // headers
     $header = Html::el($container->getName() == 'table' ? 'thead' : NULL);
     $header->add($this->generateHeaderRow());
     if ($this->dataGrid->hasFilters()) {
         $header->add($this->generateFilterRow());
     }
     // footer
     $footer = Html::el($container->getName() == 'table' ? 'tfoot' : NULL);
     $footer->add($this->generateFooterRow());
     // body
     $body = Html::el($container->getName() == 'table' ? 'tbody' : NULL);
     if ($this->dataGrid->paginator->itemCount) {
         $iterator = new Nette\Iterators\CachingIterator($this->dataGrid->getRows());
         foreach ($iterator as $data) {
             $row = $this->generateContentRow($data);
             $row->addClass($iterator->isEven() ? $this->getValue('row.content .even') : NULL);
             $body->add($row);
         }
     } else {
         $size = count($this->dataGrid->getColumns());
         $row = $this->getWrapper('row.content container');
         $cell = $this->getWrapper('row.content cell container');
         $cell->colspan = $size;
         $cell->style = 'text-align:center';
         $cell->add(Html::el('div')->setText($this->dataGrid->translate('No data were found')));
         $row->add($cell);
         $body->add($row);
     }
     if ($container->getName() == 'table') {
         $container->add($header);
         $container->add($footer);
         $container->add($body);
     } else {
         $container->add($header);
         $container->add($body);
         $container->add($footer);
     }
     return $container->render(0);
 }
示例#4
0
 /**
  * @param $id
  *
  * @throws \PHPExcel_Reader_Exception
  */
 public function handleDownloadExcel($id)
 {
     if ($id and $event = $this->eventFacade->findEventById($id)) {
         $performances = [];
         $performances[1] = ["A" => "#", "B" => "Autor skladby", "C" => "Název skladby", "D" => "Poznámka", "E" => "Žáci", "F" => "Nástroj", "G" => "Ročník"];
         /** @var Entity\Performance $performance */
         foreach ($event->performances as $performance) {
             foreach ($iterator = new CachingIterator($performance->children) as $child) {
                 $tmpRow = [];
                 if ($iterator->isFirst()) {
                     $tmpRow["A"] = $iterator->counter;
                     $tmpRow["B"] = $performance->songAuthor;
                     $tmpRow["C"] = $performance->songName;
                     $tmpRow["D"] = $performance->note;
                 }
                 $tmpRow["E"] = $child->name;
                 $tmpRow["F"] = $child->instrument;
                 $tmpRow["G"] = $child->class;
                 $tmpRow["H"] = $child->teacher->name;
                 $performances[] = $tmpRow;
             }
         }
         $excel = new \PHPExcel();
         $sheet = $excel->getActiveSheet();
         foreach ($performances as $row => $invitation) {
             foreach ($invitation as $cell => $value) {
                 $sheet->setCellValue($cell . $row, trim($value));
             }
         }
         $writer = \PHPExcel_IOFactory::createWriter($excel, "Excel2007");
         $name = $this->context->getParameters()["tempDir"] . "/export/" . Random::generate();
         if (!file_exists(dirname($name))) {
             mkdir(dirname($name));
         }
         $writer->save($name);
         $this->sendResponse(new FileResponse($name, "udalost-" . $event->id . ".xlsx"));
     }
 }
示例#5
0
next(){parent::next();if(parent::valid()){$this->counter++;}}function
rewind(){parent::rewind();$this->counter=parent::valid()?1:0;}function