ILIAS  Release_4_0_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
RichText.php
Go to the documentation of this file.
1 <?php
30 if (!defined('PHPEXCEL_ROOT')) {
34  define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../');
35 }
36 
38 require_once PHPEXCEL_ROOT . 'PHPExcel/IComparable.php';
39 
41 require_once PHPEXCEL_ROOT . 'PHPExcel/Cell.php';
42 
44 require_once PHPEXCEL_ROOT . 'PHPExcel/Cell/DataType.php';
45 
47 require_once PHPEXCEL_ROOT . 'PHPExcel/RichText/ITextElement.php';
48 
50 require_once PHPEXCEL_ROOT . 'PHPExcel/RichText/TextElement.php';
51 
53 require_once PHPEXCEL_ROOT . 'PHPExcel/RichText/Run.php';
54 
56 require_once PHPEXCEL_ROOT . 'PHPExcel/Style/Font.php';
57 
66 {
73 
79  private $_parent;
80 
87  public function __construct(PHPExcel_Cell $pCell = null)
88  {
89  // Initialise variables
90  $this->_richTextElements = array();
91 
92  // Set parent?
93  if (!is_null($pCell)) {
94  // Set parent cell
95  $this->_parent = $pCell;
96 
97  // Add cell text and style
98  if ($this->_parent->getValue() != "") {
99  $objRun = new PHPExcel_RichText_Run($this->_parent->getValue());
100  $objRun->setFont(clone $this->_parent->getParent()->getStyle($this->_parent->getCoordinate())->getFont());
101  $this->addText($objRun);
102  }
103 
104  // Set parent value
105  $this->_parent->setValueExplicit($this, PHPExcel_Cell_DataType::TYPE_STRING);
106  }
107  }
108 
116  public function addText(PHPExcel_RichText_ITextElement $pText = null)
117  {
118  $this->_richTextElements[] = $pText;
119  return $this;
120  }
121 
129  public function createText($pText = '')
130  {
131  $objText = new PHPExcel_RichText_TextElement($pText);
132  $this->addText($objText);
133  return $objText;
134  }
135 
143  public function createTextRun($pText = '')
144  {
145  $objText = new PHPExcel_RichText_Run($pText);
146  $this->addText($objText);
147  return $objText;
148  }
149 
155  public function getPlainText()
156  {
157  // Return value
158  $returnValue = '';
159 
160  // Loop trough all PHPExcel_RichText_ITextElement
161  foreach ($this->_richTextElements as $text) {
162  $returnValue .= $text->getText();
163  }
164 
165  // Return
166  return $returnValue;
167  }
168 
174  public function __toString() {
175  return $this->getPlainText();
176  }
177 
183  public function getRichTextElements()
184  {
186  }
187 
195  public function setRichTextElements($pElements = null)
196  {
197  if (is_array($pElements)) {
198  $this->_richTextElements = $pElements;
199  } else {
200  throw new Exception("Invalid PHPExcel_RichText_ITextElement[] array passed.");
201  }
202  return $this;
203  }
204 
210  public function getParent() {
211  return $this->_parent;
212  }
213 
220  public function setParent(PHPExcel_Cell $value) {
221  // Set parent
222  $this->_parent = $value;
223 
224  // Set parent value
226 
227  // Verify style information
228 
229  $sheet = $this->_parent->getParent();
230  $cellFont = $sheet->getStyle($this->_parent->getCoordinate())->getFont()->getSharedComponent();
231  foreach ($this->getRichTextElements() as $element) {
232  if (!($element instanceof PHPExcel_RichText_Run)) continue;
233 
234  if ($element->getFont()->getHashCode() == $sheet->getDefaultStyle()->getFont()->getHashCode()) {
235  if ($element->getFont()->getHashCode() != $cellFont->getHashCode()) {
236  $element->setFont(clone $cellFont);
237  }
238  }
239  }
240  return $this;
241  }
242 
248  public function getHashCode() {
249  $hashElements = '';
250  foreach ($this->_richTextElements as $element) {
251  $hashElements .= $element->getHashCode();
252  }
253 
254  return md5(
255  $hashElements
256  . __CLASS__
257  );
258  }
259 
265  private $_hashIndex;
266 
275  public function getHashIndex() {
276  return $this->_hashIndex;
277  }
278 
287  public function setHashIndex($value) {
288  $this->_hashIndex = $value;
289  }
290 
294  public function __clone() {
295  $vars = get_object_vars($this);
296  foreach ($vars as $key => $value) {
297  if ($key == '_parent') continue;
298 
299  if (is_object($value)) {
300  $this->$key = clone $value;
301  } else {
302  $this->$key = $value;
303  }
304  }
305  }
306 }