00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00032 class Value
00033 {
00038 var $valueid=0;
00039
00044 var $page;
00045
00050 var $pageid;
00051
00056 var $isLink = false;
00057
00062 var $linkToObjectId=0;
00063
00068 var $text='';
00069
00074 var $number=0;
00075
00076
00081 var $date=0;
00082
00087 var $element;
00088
00093 var $elementid;
00094
00099 var $value;
00100
00105 var $lastchangeTimeStamp;
00106
00111 var $lastchangeUserId;
00112
00117 var $lastchangeUserName;
00118
00123 var $active;
00124
00130 var $publish;
00131
00135 function Value()
00136 {
00137 $this->lastchangeUserId = 0;
00138 $this->lastchangeTimeStamp = 0;
00139
00140 $language = Session::getProjectLanguage();
00141 $this->languageid = $language->languageid;
00142 }
00143
00144
00145
00146
00147 function path_to_page( $pageid )
00148 {
00149 return $this->page->path_to_object( $pageid );
00150 }
00151 function path_to_object( $pageid )
00152 {
00153 return $this->path_to_page( $pageid );
00154 }
00155
00156
00160 function load()
00161 {
00162 $db = db_connection();
00163
00164 if ( $this->publish )
00165 $sql = new Sql( 'SELECT * FROM {t_value}'.
00166 ' WHERE elementid ={elementid}'.
00167 ' AND pageid ={pageid}'.
00168 ' AND languageid={languageid}'.
00169 ' AND publish=1' );
00170 else
00171 $sql = new Sql( 'SELECT * FROM {t_value}'.
00172 ' WHERE elementid ={elementid}'.
00173 ' AND pageid ={pageid}'.
00174 ' AND languageid={languageid}'.
00175 ' AND active=1' );
00176 $sql->setInt( 'elementid' ,$this->element->elementid );
00177 $sql->setInt( 'pageid' ,$this->pageid );
00178 $sql->setInt( 'languageid',$this->languageid);
00179 $row = $db->getRow( $sql->query );
00180
00181 if ( count($row) > 0 )
00182 {
00183 $this->text = $row['text'];
00184 $this->valueid = intval($row['id'] );
00185 $this->linkToObjectId = intval($row['linkobjectid']);
00186 $this->number = intval($row['number' ]);
00187 $this->date = intval($row['date' ]);
00188
00189 $this->active = ( $row['active' ]=='1' );
00190 $this->publish = ( $row['publish']=='1' );
00191
00192 $this->lastchangeTimeStamp = intval($row['lastchange_date' ]);
00193 $this->lastchangeUserId = intval($row['lastchange_userid']);
00194 }
00195 }
00196
00197
00201 function loadWithId( $valueid=0 )
00202 {
00203 if ( $valueid != 0 )
00204 $this->valueid = $valueid;
00205
00206 $db = db_connection();
00207
00208 $sql = new Sql( 'SELECT {t_value}.*,{t_user}.name as lastchange_username'.
00209 ' FROM {t_value}'.
00210 ' LEFT JOIN {t_user} ON {t_user}.id={t_value}.lastchange_userid'.
00211 ' WHERE {t_value}.id={valueid}' );
00212 $sql->setInt( 'valueid',$this->valueid);
00213 $row = $db->getRow( $sql->query );
00214
00215 $this->text = $row['text' ];
00216 $this->pageid = intval($row['pageid' ]);
00217 $this->elementid = intval($row['elementid' ]);
00218 $this->languageid = intval($row['languageid' ]);
00219 $this->valueid = intval($row['id' ]);
00220 $this->linkToObjectId = intval($row['linkobjectid']);
00221 $this->number = intval($row['number' ]);
00222 $this->date = intval($row['date' ]);
00223
00224 $this->active = ( $row['active' ]=='1' );
00225 $this->publish = ( $row['publish']=='1' );
00226
00227 $this->lastchangeTimeStamp = intval($row['lastchange_date' ]);
00228 $this->lastchangeUserId = intval($row['lastchange_userid' ]);
00229 $this->lastchangeUserName = $row['lastchange_username'];
00230 }
00231
00232
00237 function getVersionList()
00238 {
00239 $db = db_connection();
00240
00241 $sql = new Sql( 'SELECT {t_value}.*,{t_user}.name as lastchange_username'.
00242 ' FROM {t_value}'.
00243 ' LEFT JOIN {t_user} ON {t_user}.id={t_value}.lastchange_userid'.
00244 ' WHERE elementid ={elementid}'.
00245 ' AND pageid ={pageid}'.
00246 ' AND languageid={languageid}'.
00247 ' ORDER BY lastchange_date' );
00248 $sql->setInt( 'elementid' ,$this->element->elementid );
00249 $sql->setInt( 'pageid' ,$this->pageid );
00250 $sql->setInt( 'languageid',$this->languageid);
00251
00252 $list = array();
00253 foreach( $db->getAll( $sql->query ) as $row )
00254 {
00255 $val = new Value();
00256 $val->valueid = $row['id'];
00257
00258 $val->text = $row['text'];
00259 $val->valueid = intval($row['id'] );
00260 $val->linkToObjectId = intval($row['linkobjectid']);
00261 $val->number = intval($row['number' ]);
00262 $val->date = intval($row['date' ]);
00263
00264 $val->active = ( $row['active' ]=='1' );
00265 $val->publish = ( $row['publish']=='1' );
00266
00267 $val->lastchangeTimeStamp = intval($row['lastchange_date' ]);
00268 $val->lastchangeUserId = intval($row['lastchange_userid' ]);
00269 $val->lastchangeUserName = $row['lastchange_username'];
00270 $list[] = $val;
00271 }
00272 return $list;
00273 }
00274
00275
00280 function getCountVersions()
00281 {
00282 $db = db_connection();
00283
00284 $sql = new Sql( 'SELECT COUNT(*) FROM {t_value}'.
00285 ' WHERE elementid ={elementid}'.
00286 ' AND pageid ={pageid}'.
00287 ' AND languageid={languageid}' );
00288 $sql->setInt( 'elementid' ,$this->element->elementid );
00289 $sql->setInt( 'pageid' ,$this->pageid );
00290 $sql->setInt( 'languageid',$this->languageid);
00291
00292 return $db->getOne( $sql->query );
00293 }
00294
00295
00296 function getLastChangeTime()
00297 {
00298 $db = db_connection();
00299
00300 $sql = new Sql(
00301 <<<SQL
00302 SELECT lastchange_date FROM {t_value}
00303 WHERE elementid ={elementid}
00304 AND pageid ={pageid}
00305 AND languageid={languageid}
00306 ORDER BY id DESC
00307 SQL
00308 );
00309 $sql->setInt( 'elementid' ,$this->element->elementid );
00310 $sql->setInt( 'pageid' ,$this->pageid );
00311 $sql->setInt( 'languageid',$this->languageid);
00312
00313 return $db->getOne( $sql->query );
00314 }
00315
00316
00317
00321 function release()
00322 {
00323 $db = db_connection();
00324
00325 $sql = new Sql( 'UPDATE {t_value}'.
00326 ' SET publish=0'.
00327 ' WHERE elementid ={elementid}'.
00328 ' AND pageid ={pageid}'.
00329 ' AND languageid={languageid}' );
00330 $sql->setInt( 'elementid' ,$this->elementid );
00331 $sql->setInt( 'pageid' ,$this->pageid );
00332 $sql->setInt( 'languageid',$this->languageid);
00333
00334 $db->query( $sql->query );
00335
00336 $sql = new Sql( 'UPDATE {t_value}'.
00337 ' SET publish=1'.
00338 ' WHERE active = 1'.
00339 ' AND elementid ={elementid}'.
00340 ' AND pageid ={pageid}'.
00341 ' AND languageid={languageid}' );
00342 $sql->setInt( 'elementid' ,$this->elementid );
00343 $sql->setInt( 'pageid' ,$this->pageid );
00344 $sql->setInt( 'languageid',$this->languageid);
00345
00346 $db->query( $sql->query );
00347 }
00348
00352 function save()
00353 {
00354 global $SESS;
00355 $db = db_connection();
00356
00357 $sql = new Sql( 'UPDATE {t_value}'.
00358 ' SET active=0'.
00359 ' WHERE elementid ={elementid}'.
00360 ' AND pageid ={pageid}'.
00361 ' AND languageid={languageid}' );
00362 $sql->setInt( 'elementid' ,$this->element->elementid );
00363 $sql->setInt( 'pageid' ,$this->pageid );
00364 $sql->setInt( 'languageid',$this->languageid);
00365
00366 $db->query( $sql->query );
00367
00368 if ( $this->publish )
00369 {
00370
00371
00372 $sql = new Sql( 'UPDATE {t_value}'.
00373 ' SET publish=0'.
00374 ' WHERE elementid ={elementid}'.
00375 ' AND pageid ={pageid}'.
00376 ' AND languageid={languageid}' );
00377 $sql->setInt( 'elementid' ,$this->element->elementid );
00378 $sql->setInt( 'pageid' ,$this->pageid );
00379 $sql->setInt( 'languageid',$this->languageid);
00380
00381 $db->query( $sql->query );
00382 }
00383
00384
00385 $sql = new Sql('SELECT MAX(id) FROM {t_value}');
00386 $this->valueid = intval($db->getOne($sql->query))+1;
00387
00388 $sql = new Sql( <<<SQL
00389 INSERT INTO {t_value}
00390 (id ,linkobjectid ,text ,number ,date ,elementid ,pageid ,languageid ,active,publish ,lastchange_date ,lastchange_userid )
00391 VALUES ({valueid},{linkobjectid},{text},{number},{date},{elementid},{pageid},{languageid},1 ,{publish},{lastchange_date},{lastchange_userid})
00392 SQL
00393 );
00394 $sql->setInt( 'valueid' ,$this->valueid );
00395 $sql->setInt( 'elementid' ,$this->element->elementid );
00396 $sql->setInt( 'pageid' ,$this->pageid );
00397 $sql->setInt( 'languageid',$this->languageid );
00398
00399 if ( intval($this->linkToObjectId)==0)
00400 $sql->setNull ( 'linkobjectid' );
00401 else $sql->setInt ( 'linkobjectid',$this->linkToObjectId );
00402
00403 if ( $this->text == '' )
00404 $sql->setNull ( 'text' );
00405 else $sql->setString( 'text',$this->text );
00406
00407 if ( intval($this->number)==0)
00408 $sql->setNull ( 'number' );
00409 else $sql->setInt ( 'number',$this->number );
00410
00411 if ( intval($this->date)==0)
00412 $sql->setNull ( 'date' );
00413 else $sql->setInt ( 'date',$this->date );
00414
00415 $sql->setBoolean( 'publish' ,$this->publish );
00416 $sql->setInt ( 'lastchange_date' ,time() );
00417 $user = Session::getUser();
00418 $sql->setInt ( 'lastchange_userid',$user->userid );
00419
00420 $db->query( $sql->query );
00421 }
00422
00423
00427 function delete()
00428 {
00429 $db = db_connection();
00430 $sql = new Sql( 'DELETE * FROM {t_value}'.
00431 ' WHERE elementid ={elementid}'.
00432 ' AND pageid ={pageid}'.
00433 ' AND languageid={languageid}' );
00434 $sql->setInt( 'elementid' ,$this->element->elementid );
00435 $sql->setInt( 'pageid' ,$this->pageid );
00436 $sql->setInt( 'languageid',$this->languageid);
00437 $row = $db->getRow( $sql->query );
00438 }
00439
00440
00447 function generate()
00448 {
00449 global $conf;
00450
00451 if ( intval($this->valueid)==0 )
00452 $this->load();
00453
00454 $inhalt = '';
00455
00456 global $conf;
00457
00458 if ( $conf['cache']['enable_cache'] && is_file( $this->tmpfile() ))
00459 {
00460 $this->value = implode('',file($this->tmpfile() ));
00461 return;
00462 }
00463
00464
00465 if ( in_array($this->element->type,array('text','longtext','date','number')) && intval($this->linkToObjectId) != 0 && !$this->isLink )
00466 {
00467 $p = new Page( $this->linkToObjectId );
00468 $p->load();
00469
00470 $v = new Value();
00471 $v->isLink = true;
00472 $v->pageid = $p->pageid;
00473 $v->page = $p;
00474 $v->simple = $this->simple;
00475 $v->element = $this->element;
00476 $v->languageid = $this->languageid;
00477 $v->modelid = $this->modelid;
00478 $v->load();
00479 $v->generate();
00480 $this->value = $v->value;
00481 return;
00482 }
00483
00484 switch( $this->element->type )
00485 {
00486 case 'list' :
00487 case 'insert':
00488
00489 $objectid = $this->linkToObjectId;
00490
00491 if ( intval($objectid) == 0 )
00492 $objectid = $this->element->defaultObjectId;
00493
00494 if ( ! Object::available( $objectid) )
00495 return;
00496
00497 $object = new Object( $objectid );
00498 $object->objectLoadRaw();
00499
00500 if ( $object->isFolder )
00501 {
00502 if ( $this->simple )
00503 {
00504 $f = new Folder( $objectid );
00505 $f->load();
00506 $inhalt = $f->name;
00507 unset( $f );
00508 }
00509 else
00510 {
00511 if ( $objectid != $this->page->objectid )
00512 {
00513 $f = new Folder( $objectid );
00514 foreach( $f->getObjectIds() as $oid )
00515 {
00516 if ( $oid != $this->page->objectid )
00517 {
00518 switch( $this->element->subtype )
00519 {
00520 case '':
00521 case 'inline':
00522 $o = new Object( $oid );
00523 $o->load();
00524 switch( $o->getType() )
00525 {
00526 case OR_TYPE_PAGE:
00527 $p = new Page( $oid );
00528 $p->public = $this->page->public;
00529 $p->up_path = $this->page->up_path();
00530 $p->modelid = $this->page->modelid;
00531 $p->languageid = $this->languageid;
00532 $p->mime_type = $this->page->mimeType();
00533 $p->load();
00534 $p->generate();
00535 $inhalt .= $p->value;
00536 unset( $p );
00537 break;
00538 case OR_TYPE_LINK:
00539 $l = new Link( $oid );
00540 $l->load();
00541 if ( $l->isLinkToObject )
00542 {
00543 $op = new Object( $l->linkedObjectId );
00544 $op->load();
00545 if ( $op->isPage )
00546 {
00547 $p = new Page( $l->linkedObjectId );
00548 $p->public = $this->page->public;
00549 $p->up_path = $this->page->up_path();
00550 $p->modelid = $this->page->modelid;
00551 $p->languageid = $this->languageid;
00552 $p->load();
00553 $p->generate();
00554 $inhalt .= $p->value;
00555 unset( $p );
00556 }
00557 }
00558 break;
00559 }
00560 break;
00561
00562 case 'ssi':
00563 $inhalt .= '<!--#include virtual="'.$this->page->path_to_object($oid).'" -->';
00564 break;
00565
00566 default:
00567 $inhalt = '?'.$this->element->subtype.'?';
00568 }
00569 }
00570 else die('FATAL: recursion detected');
00571 }
00572 }
00573 else die('FATAL: recursion detected');
00574 }
00575 }
00576 elseif ( $object->isPage )
00577 {
00578 if ( $this->simple )
00579 {
00580 $p = new Page( $objectid );
00581 $p->load();
00582 $inhalt = $p->name;
00583 unset( $p );
00584 }
00585 else
00586 {
00587 if ( $objectid != $this->page->objectid )
00588 {
00589 switch( $this->element->subtype )
00590 {
00591 case '':
00592 case 'inline':
00593 $p = new Page( $objectid );
00594 $p->public = $this->page->public;
00595 $p->up_path = $this->page->up_path();
00596 $p->modelid = $this->page->modelid;
00597 $p->languageid = $this->languageid;
00598 $p->mime_type = $this->page->mimeType();
00599 $p->load();
00600 $p->generate();
00601 $inhalt = $p->value;
00602 unset( $p );
00603 break;
00604
00605 case 'ssi':
00606 $inhalt = '<!--#include virtual="'.$this->page->path_to_object($objectid).'" -->';
00607 break;
00608
00609 default:
00610 $inhalt = '?'.$this->element->subtype.'?';
00611 break;
00612 }
00613 }
00614 else die('FATAL: recursion detected');
00615 }
00616 }
00617
00618 if ( $this->simple )
00619 {
00620 $inhalt = strip_tags( $inhalt );
00621 $inhalt = str_replace( "\n",'',$inhalt );
00622 $inhalt = str_replace( "\r",'',$inhalt );
00623 }
00624
00625 break;
00626
00627
00628 case 'link':
00629
00630 $objectid = $this->linkToObjectId;
00631
00632 if ( intval($objectid) == 0 )
00633 $objectid = $this->element->defaultObjectId;
00634
00635 if ( $objectid==0 )
00636 {
00637
00638 $inhalt = '';
00639 }
00640 elseif ( ! Object::available($objectid) )
00641 {
00642 $inhalt = $this->simple?'-':'';
00643 }
00644 elseif ( $this->simple )
00645 {
00646 $o = new Object( $objectid );
00647 $o->load();
00648 $inhalt = $o->name;
00649 }
00650 else
00651 {
00652 $inhalt = $this->page->path_to_object( $objectid );
00653 }
00654
00655 break;
00656
00657
00658 case 'copy':
00659
00660 list($linkElementName,$targetElementName) = explode('%',$this->element->name.'%');
00661
00662 if ( empty($targetElementName) )
00663 break;
00664
00665 $element = new Element();
00666 $element->name = $linkElementName;
00667 $element->load();
00668
00669 if ( intval($element->elementid)==0 )
00670 break;
00671
00672 $linkValue = new Value();
00673 $linkValue->elementid = $element->elementid;
00674 $linkValue->element = $element;
00675 $linkValue->pageid = $this->pageid;
00676 $linkValue->page = $this->page;
00677 $linkValue->simple = $this->simple;
00678 $linkValue->languageid = $this->languageid;
00679 $linkValue->load();
00680
00681 if ( !Object::available( $linkValue->linkToObjectId ) )
00682 break;
00683
00684 $linkedPage = new Page( $linkValue->linkToObjectId );
00685 $linkedPage->load();
00686
00687 $linkedPageTemplate = new Template( $linkedPage->templateid );
00688 $targetElementId = array_search( $targetElementName, $linkedPageTemplate->getElementNames() );
00689
00690 if ( intval($targetElementId)==0 )
00691 break;
00692
00693 $targetValue = new Value();
00694 $targetValue->elementid = $targetElementId;
00695 $targetValue->element = new Element($targetElementId);
00696 $targetValue->element->load();
00697 $targetValue->pageid = $linkedPage->pageid;
00698 $targetValue->page = $linkedPage;
00699 $targetValue->simple = $this->simple;
00700 $targetValue->generate();
00701
00702 $inhalt = $targetValue->value;
00703
00704 break;
00705
00706
00707 case 'linkinfo':
00708
00709 @list( $linkElementName, $name ) = explode('%',$this->element->name);
00710 if ( is_null($name) )
00711 break;
00712
00713 $element = new Element();
00714 $element->name = $linkElementName;
00715 $element->load();
00716
00717 $linkValue = new Value();
00718 $linkValue->elementid = $element->elementid;
00719 $linkValue->element = $element;
00720 $linkValue->pageid = $this->pageid;
00721 $linkValue->languageid = $this->languageid;
00722 $linkValue->load();
00723
00724 if ( !Object::available( $linkValue->linkToObjectId ) )
00725 break;
00726
00727 $linkedObject = new Object( $linkValue->linkToObjectId );
00728 $linkedObject->load();
00729
00730 switch( $this->element->subtype )
00731 {
00732 case 'width':
00733 $f = new File( $linkValue->linkToObjectId );
00734 $f->load();
00735 if ( $f->isImage() )
00736 {
00737 $f->getImageSize();
00738 $inhalt = $f->width;
00739 }
00740 unset($f);
00741 break;
00742
00743 case 'height':
00744 $f = new File( $linkValue->linkToObjectId );
00745 $f->load();
00746 if ( $f->isImage() )
00747 {
00748 $f->getImageSize();
00749 $inhalt = $f->height;
00750 }
00751 unset($f);
00752 break;
00753
00754 default:
00755 $inhalt = '';
00756 Logger::error('subtype for linkinfo not implemented:'.$this->element->subtype);
00757 }
00758
00759 break;
00760
00761
00762 case 'longtext':
00763 case 'text':
00764 case 'select':
00765
00766 $inhalt = $this->text;
00767
00768
00769 if ( $inhalt == '' )
00770 $inhalt = $this->element->defaultText;
00771
00772
00773 if ( !$this->element->html && $this->element->wiki && $conf['editor']['wiki']['convert_html'] && $this->page->mimeType()=='text/html' )
00774 $inhalt = Text::html2Wiki( $inhalt );
00775
00776
00777 if ( $this->element->wiki && $conf['editor']['wiki']['convert_bbcode'] )
00778 $inhalt = Text::bbCode2Wiki( $inhalt );
00779
00780
00781 if ( !$this->element->html && !$this->element->wiki && $this->page->mimeType()=='text/html')
00782 $inhalt = Text::encodeHtml( $inhalt );
00783
00784
00785 if ( !$this->element->wiki && !$this->element->wiki && $this->page->mimeType()=='text/html' )
00786 $inhalt = Text::encodeHtmlSpecialChars( $inhalt );
00787
00788
00789 if ( $this->element->wiki )
00790 {
00791 $transformer = new Transformer();
00792 $transformer->text = $inhalt;
00793 $transformer->page = $this->page;
00794 $transformer->element = $this->element;
00795
00796 $transformer->transform();
00797 $inhalt = $transformer->text;
00798 }
00799
00800 if ( $this->simple )
00801 {
00802 $inhalt = strip_tags( $inhalt );
00803 $inhalt = str_replace( "\n",'',$inhalt );
00804 $inhalt = str_replace( "\r",'',$inhalt );
00805 }
00806
00807 break;
00808
00809
00810
00811
00812
00813 case 'number':
00814
00815 if ( $this->number == 0 )
00816 {
00817
00818 $inhalt = $this->element->defaultText;
00819 break;
00820 }
00821
00822 $number = $this->number / pow(10,$this->element->decimals);
00823 $inhalt = number_format( $number,$this->element->decimals,$this->element->decPoint,$this->element->thousandSep );
00824
00825 break;
00826
00827
00828
00829 case 'date':
00830
00831 $date = $this->date;
00832
00833 if ( intval($date) == 0 )
00834 {
00835
00836 $inhalt = $this->element->defaultText;
00837 break;
00838 }
00839
00840
00841 $inhalt = date( $this->element->dateformat,$date );
00842
00843 break;
00844
00845
00846
00847 case 'code':
00848
00849 if ( $this->page->simple )
00850 break;
00851
00852 $this->page->load();
00853
00854 $code = new Code();
00855 $code->page = &$this->page;
00856 $code->setObjectId( $this->page->objectid );
00857 $code->delOutput();
00858 $code->code = $this->element->code;
00859
00860
00861 $code->execute();
00862
00863 $inhalt = $code->getOutput();
00864
00865 break;
00866
00867
00868
00869 case 'dynamic':
00870
00871 if ( $this->page->simple )
00872 break;
00873
00874 $this->page->load();
00875 $className = $this->element->subtype;
00876 $fileName = './dynamicClasses/'.$className.'.class.php';
00877 if ( is_file( $fileName ) )
00878 {
00879
00880 if ( !class_exists($className) )
00881 require( $fileName );
00882
00883 if ( class_exists($className) )
00884 {
00885 $dynEl = new $className;
00886 $dynEl->page = &$this->page;
00887
00888 if ( method_exists( $dynEl,'execute' ) )
00889 {
00890
00891 $dynEl->objectid = $this->page->objectid;
00892 $dynEl->page = &$this->page;
00893
00894 foreach( $this->element->getDynamicParameters() as $param_name=>$param_value )
00895 {
00896 if ( isset( $dynEl->$param_name ) )
00897 {
00898 Logger::debug("Setting parameter for dynamic Class $className, ".$param_name.':'.$param_value );
00899 $dynEl->$param_name = $param_value;
00900 }
00901 }
00902
00903 $dynEl->execute();
00904 $inhalt = $dynEl->getOutput();
00905 }
00906 else
00907 {
00908 Logger::warn('element:'.$this->element->name.', '.
00909 'class:'.$className.', no method: execute()');
00910 }
00911 }
00912 else
00913 {
00914 Logger::warn('element:'.$this->element->name.', '.
00915 'class not found:'.$className);
00916 }
00917 }
00918 else
00919 {
00920 Logger::warn('element:'.$this->element->name.', '.
00921 'file not found:'.$fileName);
00922 }
00923
00924
00925 if ( $this->page->mimeType()=='text/html' )
00926 $inhalt = Text::encodeHtmlSpecialChars( $inhalt );
00927
00928 break;
00929
00930
00931
00932 case 'infodate':
00933
00934 if ( $this->page->simple )
00935 break;
00936
00937 switch( $this->element->subtype )
00938 {
00939 case 'date_published':
00940
00941
00942 $inhalt = date( $this->element->dateformat,START_TIME );
00943 break;
00944
00945 case 'date_saved':
00946 $inhalt = date( $this->element->dateformat,$this->page->lastchangeDate );
00947 break;
00948
00949 case 'date_created':
00950 $inhalt = date( $this->element->dateformat,$this->page->createDate );
00951 break;
00952
00953 default:
00954 Logger::warn('element:'.$this->element->name.', '.
00955 'type:'.$this->element->type.', '.
00956 'unknown subtype:'.$this->element->subtype);
00957 }
00958
00959 break;
00960
00961
00962
00963 case 'info':
00964
00965 if ( $this->page->simple )
00966 break;
00967
00968 $raw = false;
00969 switch( $this->element->subtype )
00970 {
00971 case 'db_id':
00972 $inhalt = $SESS['dbid'];
00973 break;
00974 case 'db_name':
00975 $inhalt = $conf['database_'.$SESS['dbid']]['comment'];
00976 break;
00977 case 'project_id':
00978 $inhalt = $this->page->projectid;
00979 break;
00980 case 'project_name':
00981 $project = new Project( $this->page->projectid );
00982 $project->load();
00983 $inhalt = $project->name;
00984 break;
00985 case 'language_id':
00986 $inhalt = $this->page->languageid;
00987 break;
00988 case 'language_iso':
00989 $language = new Language( $this->page->languageid );
00990 $language->load();
00991 $inhalt = $language->isoCode;
00992 break;
00993 case 'language_name':
00994 $language = new Language( $this->page->languageid );
00995 $language->load();
00996 $inhalt = $language->name;
00997 break;
00998 case 'page_id':
00999 $inhalt = $this->page->objectid;
01000 break;
01001 case 'page_name':
01002 $inhalt = $this->page->name;
01003 break;
01004 case 'page_desc':
01005 $inhalt = $this->page->desc;
01006 break;
01007 case 'page_fullfilename':
01008 $inhalt = $this->page->full_filename();
01009 break;
01010 case 'page_filename':
01011 $inhalt = $this->page->filename;
01012 break;
01013 case 'page_extension':
01014 $inhalt = '';
01015 break;
01016 case 'edit_url':
01017 $raw = true;
01018 $db = Session::getDatabase();
01019 $inhalt = Html::url('index','object',$this->page->objectid,array('dbid'=>$db->id));
01020 break;
01021 case 'edit_fullurl':
01022 $raw = true;
01023 $inhalt = Http::getServer();
01024 $db = Session::getDatabase();
01025 $params = array('dbid' =>$db->id,
01026 'objectid' =>$this->page->objectid,
01027 'modelid' =>$this->page->modelid,
01028 'languageid'=>$this->page->languageid,
01029 'elementid' =>$this->element->elementid );
01030 $inhalt .= '/'.basename(Html::url('index','object',$this->page->objectid,$params));
01031 break;
01032 case 'lastch_user_username':
01033 $user = $this->page->lastchangeUser;
01034 $user->load();
01035 $inhalt = $user->name;
01036 break;
01037 case 'lastch_user_fullname':
01038 $user = $this->page->lastchangeUser;
01039 $user->load();
01040 $inhalt = $user->fullname;
01041 break;
01042 case 'lastch_user_mail':
01043 $user = $this->page->lastchangeUser;
01044 $user->load();
01045 $inhalt = $user->mail;
01046 break;
01047 case 'lastch_user_desc':
01048 $user = $this->page->lastchangeUser;
01049 $user->load();
01050 $inhalt = $user->desc;
01051 break;
01052 case 'lastch_user_tel':
01053 $user = $this->page->lastchangeUser;
01054 $user->load();
01055 $inhalt = $user->tel;
01056 break;
01057
01058 case 'create_user_username':
01059 $user = $this->page->createUser;
01060 $user->load();
01061 $inhalt = $user->name;
01062 break;
01063 case 'create_user_fullname':
01064 $user = $this->page->createUser;
01065 $user->load();
01066 $inhalt = $user->fullname;
01067 break;
01068 case 'create_user_mail':
01069 $user = $this->page->createUser;
01070 $user->load();
01071 $inhalt = $user->mail;
01072 break;
01073 case 'create_user_desc':
01074 $user = $this->page->createUser;
01075 $user->load();
01076 $inhalt = $user->desc;
01077 break;
01078 case 'create_user_tel':
01079 $user = $this->page->createUser;
01080 $user->load();
01081 $inhalt = $user->tel;
01082 break;
01083
01084 case 'act_user_username':
01085 $user = new User($SESS['user']['id']);
01086 $user->load();
01087 $inhalt = $user->name;
01088 break;
01089 case 'act_user_fullname':
01090 $user = new User($SESS['user']['id']);
01091 $user->load();
01092 $inhalt = $user->fullname;
01093 break;
01094 case 'act_user_mail':
01095 $user = new User($SESS['user']['id']);
01096 $user->load();
01097 $inhalt = $user->mail;
01098 break;
01099 case 'act_user_desc':
01100 $user = new User($SESS['user']['id']);
01101 $user->load();
01102 $inhalt = $user->desc;
01103 break;
01104 case 'act_user_tel':
01105 $user = new User($SESS['user']['id']);
01106 $user->load();
01107 $inhalt = $user->tel;
01108 break;
01109 default:
01110 Logger::warn('element:'.$this->element->name.', '.
01111 'type:'.$this->element->type.', '.
01112 'unknown subtype:'.$this->element->subtype);
01113
01114 }
01115
01116 if ( !$raw && $this->page->mimeType()=='text/html' )
01117 $inhalt = Text::encodeHtml( $inhalt );
01118
01119
01120 if ( $this->page->mimeType()=='text/html' )
01121 $inhalt = Text::encodeHtmlSpecialChars( $inhalt );
01122
01123 break;
01124
01125 default:
01126
01127 Logger::error('element:'.$this->element->name.', '.
01128 'unknown type:'.$this->element->type);
01129
01130 }
01131
01132
01133 if ( $this->page->icons && $this->element->withIcon )
01134 $inhalt = '<a href="'.Html::url('pageelement','edit',$this->page->objectid,array('elementid'=>$this->element->elementid)).'" title="'.$this->element->desc.'" target="cms_main_main"><img src="'.OR_THEMES_DIR.$conf['interface']['theme'].'/images/icon_el_'.$this->element->type.IMG_ICON_EXT.'" border="0" align="left"></a>'.$inhalt;
01135
01136 $this->value = $inhalt;
01137
01138
01139
01140 $f = fopen( $this->tmpfile(),'w' );
01141 fwrite( $f,$this->value );
01142 fclose( $f );
01143 }
01144
01145
01151 function getObjectIdsByValue( $text )
01152 {
01153 $db = db_connection();
01154
01155 $sql = new Sql( 'SELECT {t_object}.id FROM {t_value} '.
01156 ' LEFT JOIN {t_page} '.
01157 ' ON {t_page}.id={t_value}.pageid '.
01158 ' LEFT JOIN {t_object} '.
01159 ' ON {t_object}.id={t_page}.objectid '.
01160 ' WHERE {t_value}.text LIKE {text}'.
01161 ' AND {t_value}.languageid={languageid}'.
01162 ' ORDER BY {t_object}.lastchange_date DESC' );
01163
01164 $sql->setInt ( 'languageid',$this->languageid );
01165 $sql->setString( 'text' ,'%'.$text.'%' );
01166 return $db->getCol( $sql->query );
01167 }
01168
01169
01175 function getObjectIdsByLastChangeUserId( $userid )
01176 {
01177
01178 $db = db_connection();
01179
01180 $sql = new Sql( 'SELECT {t_object}.id FROM {t_value} '.
01181 ' LEFT JOIN {t_page} '.
01182 ' ON {t_page}.id={t_value}.pageid '.
01183 ' LEFT JOIN {t_object} '.
01184 ' ON {t_object}.id={t_page}.objectid '.
01185 ' WHERE {t_value}.lastchange_userid={userid}'.
01186 ' AND {t_value}.languageid={languageid}'.
01187 ' ORDER BY {t_object}.lastchange_date DESC' );
01188 $sql->setInt ( 'languageid',$this->languageid );
01189 $sql->setInt ( 'userid' ,$userid );
01190
01191 return $db->getCol( $sql->query );
01192 }
01193
01194
01195
01201 function getLastChangedObjectByUserId( $userid )
01202 {
01203 $db = db_connection();
01204
01205 $sql = new Sql( <<<SQL
01206 SELECT {t_object}.id
01207 FROM {t_value}
01208 LEFT JOIN {t_page}
01209 ON {t_page}.id={t_value}.pageid
01210 LEFT JOIN {t_object}
01211 ON {t_object}.id={t_page}.objectid
01212 WHERE {t_value}.lastchange_userid={userid}
01213 ORDER BY {t_value}.lastchange_date DESC
01214 SQL
01215 );
01216 $sql->setInt ( 'userid' ,$userid );
01217 return $db->getOne( $sql->query );
01218 }
01219
01220
01224 function tmpfile()
01225 {
01226 $db = db_connection();
01227 $filename = Object::getTempFileName( array('db'=>$db->id,
01228 'va'=>$this->valueid,
01229 'el'=>$this->element->elementid,
01230 'la'=>$this->languageid,
01231 'm' =>$this->page->modelid,
01232 'pu'=>intval($this->publish),
01233 'si'=>intval($this->simple) ) );
01234 return $filename;
01235 }
01236
01237
01238
01239
01240 }