/**
  * Prepare to new PDF book
  * clear folder and indexes table
  */
 public function newbookAction()
 {
     if (!Zend_Auth::getInstance()->hasIdentity()) {
         throw new Zend_Exception("Page not found", 404);
     }
     $this->_helper->layout->disableLayout();
     // clear indexes
     $categoryIndex = new Model_DbTable_CategoryIndex();
     $productIndex = new Model_DbTable_ProductIndex();
     $categoryIndex->truncate();
     $productIndex->truncate();
     // clear folder
     $files = scandir(APPLICATION_ROOT . $this::PDFBOOK_DIR);
     foreach ($files as $file) {
         $file = APPLICATION_ROOT . $this::PDFBOOK_DIR . '/' . $file;
         if (is_file($file)) {
             unlink($file);
         }
     }
 }
Ejemplo n.º 2
0
 /**
  * Adds index pages
  * 
  * @param int $page Start page
  * 
  * @return Zend_Pdf Generated book
  */
 public function IndexPages($page = 1)
 {
     $this->category = "Предметный указатель";
     if ($this->format == 'A4' && $this->print) {
         $this->margins = array('top' => 34, 'right' => 64, 'bottom' => 34, 'left' => 44);
     } else {
         $this->margins = array('top' => 20, 'right' => 50, 'bottom' => 20, 'left' => 30);
     }
     if ($page % 2 == 0) {
         $this->margins = $this->swapMargins($this->margins);
     }
     $productIndexModel = new Model_DbTable_ProductIndex();
     $indexes = $productIndexModel->getAdapter()->fetchAll("SELECT p.sku AS sku, pi.page AS page, pi.product_id as product_id FROM products AS p INNER JOIN productIndex AS pi ON pi.product_id = p.id WHERE p.parent_id IS NULL ORDER BY p.sku");
     $page = $this->createBook($page, false);
     $colWidth = $page->getWidth() / $this::INDEXPAGE_COLUMNS - 20;
     $pointWidth = $page->widthForStringUsingFontsize('.', Model_Static_Fonts::get('Arial Narrow'), $this->format == 'A4' ? 7.0 : 4.5);
     for ($p = 0; $p < intval(count($indexes) / ($this::INDEXPAGE_COLUMNS * $this::INDEXPAGE_ROWS) + 1); $p++) {
         $page->setFont(Model_Static_Fonts::get('Arial Narrow'), $this->format == 'A4' ? 7.0 : 4.5);
         for ($column = 0; $column < $this::INDEXPAGE_COLUMNS; $column++) {
             for ($row = 0; $row < $this::INDEXPAGE_ROWS; $row++) {
                 $productIndex = (object) $indexes[$p * $this::INDEXPAGE_COLUMNS * $this::INDEXPAGE_ROWS + $this::INDEXPAGE_ROWS * $column + $row];
                 /* write */
                 if (!trim($productIndex->sku)) {
                     continue;
                 }
                 $curColWidth = $colWidth - $page->widthForStringUsingFontsize($productIndex->page, Model_Static_Fonts::get('Arial Narrow'), $this->format == 'A4' ? 7.0 : 4.5);
                 // append `.` to page
                 $textWidth = $page->widthForStringUsingFontsize($productIndex->sku, Model_Static_Fonts::get('Arial Narrow'), $this->format == 'A4' ? 7.0 : 4.5);
                 $productIndex->sku .= str_repeat('.', intval(($curColWidth - $textWidth) / ($pointWidth / 2)));
                 $page->drawTextBlock($productIndex->sku, ($colWidth + 20) * $column, $page->getHeight() - $row * 6);
                 //                    $page->drawTextBlock(intval($page->getWidth()).'--'.$colWidth.'--'.(($colWidth+20)*$column + $curColWidth).'--'.intval($curColWidth-$textWidth), ($colWidth+20)*$column, $page->getHeight()-$row*6);
                 $page->drawTextBlock($productIndex->page, ($colWidth + 20) * $column + $curColWidth, $page->getHeight() - $row * 6);
             }
         }
         $page->drawCategory($this->category);
         $page->drawSideIcons("A");
         $page = $this->addPage(false);
     }
     return $this->book;
 }