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