[ Index ]

PHP Cross Reference of moodle-2.8

title

Body

[close]

/lib/phpexcel/PHPExcel/Writer/Excel2007/ -> Comments.php (source)

   1  <?php
   2  /**
   3   * PHPExcel
   4   *
   5   * Copyright (c) 2006 - 2014 PHPExcel
   6   *
   7   * This library is free software; you can redistribute it and/or
   8   * modify it under the terms of the GNU Lesser General Public
   9   * License as published by the Free Software Foundation; either
  10   * version 2.1 of the License, or (at your option) any later version.
  11   *
  12   * This library is distributed in the hope that it will be useful,
  13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15   * Lesser General Public License for more details.
  16   *
  17   * You should have received a copy of the GNU Lesser General Public
  18   * License along with this library; if not, write to the Free Software
  19   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  20   *
  21   * @category   PHPExcel
  22   * @package    PHPExcel_Writer_Excel2007
  23   * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
  24   * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL
  25   * @version    ##VERSION##, ##DATE##
  26   */
  27  
  28  
  29  /**
  30   * PHPExcel_Writer_Excel2007_Comments
  31   *
  32   * @category   PHPExcel
  33   * @package    PHPExcel_Writer_Excel2007
  34   * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
  35   */
  36  class PHPExcel_Writer_Excel2007_Comments extends PHPExcel_Writer_Excel2007_WriterPart
  37  {
  38      /**
  39       * Write comments to XML format
  40       *
  41       * @param     PHPExcel_Worksheet                $pWorksheet
  42       * @return     string                                 XML Output
  43       * @throws     PHPExcel_Writer_Exception
  44       */
  45  	public function writeComments(PHPExcel_Worksheet $pWorksheet = null)
  46      {
  47          // Create XML writer
  48          $objWriter = null;
  49          if ($this->getParentWriter()->getUseDiskCaching()) {
  50              $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
  51          } else {
  52              $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
  53          }
  54  
  55          // XML header
  56          $objWriter->startDocument('1.0','UTF-8','yes');
  57  
  58            // Comments cache
  59            $comments    = $pWorksheet->getComments();
  60  
  61            // Authors cache
  62            $authors    = array();
  63            $authorId    = 0;
  64          foreach ($comments as $comment) {
  65              if (!isset($authors[$comment->getAuthor()])) {
  66                  $authors[$comment->getAuthor()] = $authorId++;
  67              }
  68          }
  69  
  70          // comments
  71          $objWriter->startElement('comments');
  72          $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main');
  73  
  74              // Loop through authors
  75              $objWriter->startElement('authors');
  76              foreach ($authors as $author => $index) {
  77                  $objWriter->writeElement('author', $author);
  78              }
  79              $objWriter->endElement();
  80  
  81              // Loop through comments
  82              $objWriter->startElement('commentList');
  83              foreach ($comments as $key => $value) {
  84                  $this->_writeComment($objWriter, $key, $value, $authors);
  85              }
  86              $objWriter->endElement();
  87  
  88          $objWriter->endElement();
  89  
  90          // Return
  91          return $objWriter->getData();
  92      }
  93  
  94      /**
  95       * Write comment to XML format
  96       *
  97       * @param     PHPExcel_Shared_XMLWriter        $objWriter             XML Writer
  98       * @param    string                            $pCellReference        Cell reference
  99       * @param     PHPExcel_Comment                $pComment            Comment
 100       * @param    array                            $pAuthors            Array of authors
 101       * @throws     PHPExcel_Writer_Exception
 102       */
 103  	public function _writeComment(PHPExcel_Shared_XMLWriter $objWriter = null, $pCellReference = 'A1', PHPExcel_Comment $pComment = null, $pAuthors = null)
 104      {
 105          // comment
 106          $objWriter->startElement('comment');
 107          $objWriter->writeAttribute('ref',         $pCellReference);
 108          $objWriter->writeAttribute('authorId',     $pAuthors[$pComment->getAuthor()]);
 109  
 110              // text
 111              $objWriter->startElement('text');
 112              $this->getParentWriter()->getWriterPart('stringtable')->writeRichText($objWriter, $pComment->getText());
 113              $objWriter->endElement();
 114  
 115          $objWriter->endElement();
 116      }
 117  
 118      /**
 119       * Write VML comments to XML format
 120       *
 121       * @param     PHPExcel_Worksheet                $pWorksheet
 122       * @return     string                                 XML Output
 123       * @throws     PHPExcel_Writer_Exception
 124       */
 125  	public function writeVMLComments(PHPExcel_Worksheet $pWorksheet = null)
 126      {
 127          // Create XML writer
 128          $objWriter = null;
 129          if ($this->getParentWriter()->getUseDiskCaching()) {
 130              $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
 131          } else {
 132              $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
 133          }
 134  
 135          // XML header
 136          $objWriter->startDocument('1.0','UTF-8','yes');
 137  
 138            // Comments cache
 139            $comments    = $pWorksheet->getComments();
 140  
 141          // xml
 142          $objWriter->startElement('xml');
 143          $objWriter->writeAttribute('xmlns:v', 'urn:schemas-microsoft-com:vml');
 144          $objWriter->writeAttribute('xmlns:o', 'urn:schemas-microsoft-com:office:office');
 145          $objWriter->writeAttribute('xmlns:x', 'urn:schemas-microsoft-com:office:excel');
 146  
 147              // o:shapelayout
 148              $objWriter->startElement('o:shapelayout');
 149              $objWriter->writeAttribute('v:ext',         'edit');
 150  
 151                  // o:idmap
 152                  $objWriter->startElement('o:idmap');
 153                  $objWriter->writeAttribute('v:ext',     'edit');
 154                  $objWriter->writeAttribute('data',         '1');
 155                  $objWriter->endElement();
 156  
 157              $objWriter->endElement();
 158  
 159              // v:shapetype
 160              $objWriter->startElement('v:shapetype');
 161              $objWriter->writeAttribute('id',         '_x0000_t202');
 162              $objWriter->writeAttribute('coordsize', '21600,21600');
 163              $objWriter->writeAttribute('o:spt',     '202');
 164              $objWriter->writeAttribute('path',         'm,l,21600r21600,l21600,xe');
 165  
 166                  // v:stroke
 167                  $objWriter->startElement('v:stroke');
 168                  $objWriter->writeAttribute('joinstyle',     'miter');
 169                  $objWriter->endElement();
 170  
 171                  // v:path
 172                  $objWriter->startElement('v:path');
 173                  $objWriter->writeAttribute('gradientshapeok',     't');
 174                  $objWriter->writeAttribute('o:connecttype',     'rect');
 175                  $objWriter->endElement();
 176  
 177              $objWriter->endElement();
 178  
 179              // Loop through comments
 180              foreach ($comments as $key => $value) {
 181                  $this->_writeVMLComment($objWriter, $key, $value);
 182              }
 183  
 184          $objWriter->endElement();
 185  
 186          // Return
 187          return $objWriter->getData();
 188      }
 189  
 190      /**
 191       * Write VML comment to XML format
 192       *
 193       * @param     PHPExcel_Shared_XMLWriter        $objWriter             XML Writer
 194       * @param    string                            $pCellReference        Cell reference
 195       * @param     PHPExcel_Comment                $pComment            Comment
 196       * @throws     PHPExcel_Writer_Exception
 197       */
 198  	public function _writeVMLComment(PHPExcel_Shared_XMLWriter $objWriter = null, $pCellReference = 'A1', PHPExcel_Comment $pComment = null)
 199      {
 200           // Metadata
 201           list($column, $row) = PHPExcel_Cell::coordinateFromString($pCellReference);
 202           $column = PHPExcel_Cell::columnIndexFromString($column);
 203           $id = 1024 + $column + $row;
 204           $id = substr($id, 0, 4);
 205  
 206          // v:shape
 207          $objWriter->startElement('v:shape');
 208          $objWriter->writeAttribute('id',             '_x0000_s' . $id);
 209          $objWriter->writeAttribute('type',             '#_x0000_t202');
 210          $objWriter->writeAttribute('style',         'position:absolute;margin-left:' . $pComment->getMarginLeft() . ';margin-top:' . $pComment->getMarginTop() . ';width:' . $pComment->getWidth() . ';height:' . $pComment->getHeight() . ';z-index:1;visibility:' . ($pComment->getVisible() ? 'visible' : 'hidden'));
 211          $objWriter->writeAttribute('fillcolor',     '#' . $pComment->getFillColor()->getRGB());
 212          $objWriter->writeAttribute('o:insetmode',     'auto');
 213  
 214              // v:fill
 215              $objWriter->startElement('v:fill');
 216              $objWriter->writeAttribute('color2',         '#' . $pComment->getFillColor()->getRGB());
 217              $objWriter->endElement();
 218  
 219              // v:shadow
 220              $objWriter->startElement('v:shadow');
 221              $objWriter->writeAttribute('on',             't');
 222              $objWriter->writeAttribute('color',         'black');
 223              $objWriter->writeAttribute('obscured',         't');
 224              $objWriter->endElement();
 225  
 226              // v:path
 227              $objWriter->startElement('v:path');
 228              $objWriter->writeAttribute('o:connecttype', 'none');
 229              $objWriter->endElement();
 230  
 231              // v:textbox
 232              $objWriter->startElement('v:textbox');
 233              $objWriter->writeAttribute('style', 'mso-direction-alt:auto');
 234  
 235                  // div
 236                  $objWriter->startElement('div');
 237                  $objWriter->writeAttribute('style', 'text-align:left');
 238                  $objWriter->endElement();
 239  
 240              $objWriter->endElement();
 241  
 242              // x:ClientData
 243              $objWriter->startElement('x:ClientData');
 244              $objWriter->writeAttribute('ObjectType', 'Note');
 245  
 246                  // x:MoveWithCells
 247                  $objWriter->writeElement('x:MoveWithCells', '');
 248  
 249                  // x:SizeWithCells
 250                  $objWriter->writeElement('x:SizeWithCells', '');
 251  
 252                  // x:Anchor
 253                  //$objWriter->writeElement('x:Anchor', $column . ', 15, ' . ($row - 2) . ', 10, ' . ($column + 4) . ', 15, ' . ($row + 5) . ', 18');
 254  
 255                  // x:AutoFill
 256                  $objWriter->writeElement('x:AutoFill', 'False');
 257  
 258                  // x:Row
 259                  $objWriter->writeElement('x:Row', ($row - 1));
 260  
 261                  // x:Column
 262                  $objWriter->writeElement('x:Column', ($column - 1));
 263  
 264              $objWriter->endElement();
 265  
 266          $objWriter->endElement();
 267      }
 268  }


Generated: Fri Nov 28 20:29:05 2014 Cross-referenced by PHPXref 0.7.1