source: sourcecode/application/libraries/PHPExcel/RichText.php @ 1

Last change on this file since 1 was 1, checked in by dungnv, 11 years ago
File size: 5.1 KB
Line 
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_RichText
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    1.8.0, 2014-03-02
26 */
27
28
29/**
30 * PHPExcel_RichText
31 *
32 * @category   PHPExcel
33 * @package    PHPExcel_RichText
34 * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
35 */
36class PHPExcel_RichText implements PHPExcel_IComparable
37{
38    /**
39     * Rich text elements
40     *
41     * @var PHPExcel_RichText_ITextElement[]
42     */
43    private $_richTextElements;
44
45    /**
46     * Create a new PHPExcel_RichText instance
47     *
48     * @param PHPExcel_Cell $pCell
49     * @throws PHPExcel_Exception
50     */
51    public function __construct(PHPExcel_Cell $pCell = null)
52    {
53        // Initialise variables
54        $this->_richTextElements = array();
55
56        // Rich-Text string attached to cell?
57        if ($pCell !== NULL) {
58            // Add cell text and style
59            if ($pCell->getValue() != "") {
60                $objRun = new PHPExcel_RichText_Run($pCell->getValue());
61                $objRun->setFont(clone $pCell->getParent()->getStyle($pCell->getCoordinate())->getFont());
62                $this->addText($objRun);
63            }
64
65            // Set parent value
66            $pCell->setValueExplicit($this, PHPExcel_Cell_DataType::TYPE_STRING);
67        }
68    }
69
70    /**
71     * Add text
72     *
73     * @param PHPExcel_RichText_ITextElement $pText Rich text element
74     * @throws PHPExcel_Exception
75     * @return PHPExcel_RichText
76     */
77    public function addText(PHPExcel_RichText_ITextElement $pText = null)
78    {
79        $this->_richTextElements[] = $pText;
80        return $this;
81    }
82
83    /**
84     * Create text
85     *
86     * @param string $pText Text
87     * @return PHPExcel_RichText_TextElement
88     * @throws PHPExcel_Exception
89     */
90    public function createText($pText = '')
91    {
92        $objText = new PHPExcel_RichText_TextElement($pText);
93        $this->addText($objText);
94        return $objText;
95    }
96
97    /**
98     * Create text run
99     *
100     * @param string $pText Text
101     * @return PHPExcel_RichText_Run
102     * @throws PHPExcel_Exception
103     */
104    public function createTextRun($pText = '')
105    {
106        $objText = new PHPExcel_RichText_Run($pText);
107        $this->addText($objText);
108        return $objText;
109    }
110
111    /**
112     * Get plain text
113     *
114     * @return string
115     */
116    public function getPlainText()
117    {
118        // Return value
119        $returnValue = '';
120
121        // Loop through all PHPExcel_RichText_ITextElement
122        foreach ($this->_richTextElements as $text) {
123            $returnValue .= $text->getText();
124        }
125
126        // Return
127        return $returnValue;
128    }
129
130    /**
131     * Convert to string
132     *
133     * @return string
134     */
135    public function __toString()
136    {
137        return $this->getPlainText();
138    }
139
140    /**
141     * Get Rich Text elements
142     *
143     * @return PHPExcel_RichText_ITextElement[]
144     */
145    public function getRichTextElements()
146    {
147        return $this->_richTextElements;
148    }
149
150    /**
151     * Set Rich Text elements
152     *
153     * @param PHPExcel_RichText_ITextElement[] $pElements Array of elements
154     * @throws PHPExcel_Exception
155     * @return PHPExcel_RichText
156     */
157    public function setRichTextElements($pElements = null)
158    {
159        if (is_array($pElements)) {
160            $this->_richTextElements = $pElements;
161        } else {
162            throw new PHPExcel_Exception("Invalid PHPExcel_RichText_ITextElement[] array passed.");
163        }
164        return $this;
165    }
166
167    /**
168     * Get hash code
169     *
170     * @return string    Hash code
171     */
172    public function getHashCode()
173    {
174        $hashElements = '';
175        foreach ($this->_richTextElements as $element) {
176            $hashElements .= $element->getHashCode();
177        }
178
179        return md5(
180              $hashElements
181            . __CLASS__
182        );
183    }
184
185    /**
186     * Implement PHP __clone to create a deep clone, not just a shallow copy.
187     */
188    public function __clone()
189    {
190        $vars = get_object_vars($this);
191        foreach ($vars as $key => $value) {
192            if (is_object($value)) {
193                $this->$key = clone $value;
194            } else {
195                $this->$key = $value;
196            }
197        }
198    }
199}
Note: See TracBrowser for help on using the repository browser.