openrat-cms

# OpenRat Content Management System
git clone http://git.code.weiherhei.de/openrat-cms.git
Log | Files | Refs

Alias.class.php (3426B)


      1 <?php
      2 namespace cms\model;
      3 
      4 
      5 /**
      6  * Alias. Ein Alias kann auf alle anderen Objekte zeigen.
      7  *
      8  * @author Jan Dankert
      9  */
     10 class Alias extends BaseObject
     11 {
     12 	public $aliasid;
     13 	public $languageid;
     14 	public $linkedObjectId;
     15 
     16 	public function __construct( $objectid='' )
     17 	{
     18 	    $this->isAlias = true;
     19 		parent::__construct( $objectid );
     20 	}
     21 
     22 
     23 
     24     /**
     25      * Lesen der Verknuepfung aus der Datenbank
     26      * @throws \ObjectNotFoundException
     27      */
     28     public function load()
     29 	{
     30 	    if  ( $this->objectid != null )
     31         {
     32             $sql = db()->sql( 'SELECT *'.
     33                 ' FROM {{alias}}'.
     34                 ' WHERE objectid={objectid}' );
     35             $sql->setInt( 'objectid',$this->objectid );
     36         }
     37         elseif  ( $this->linkedObjectId != null && intval($this->languageid) != 0 )
     38         {
     39             $sql = db()->sql( 'SELECT *'.
     40                 ' FROM {{alias}}'.
     41                 ' WHERE link_objectid={objectid}'.
     42                 '   AND languageid={languageid}' );
     43             $sql->setInt( 'objectid'  ,$this->linkedObjectId );
     44             $sql->setInt( 'languageid',$this->languageid     );
     45         }
     46         elseif  ( $this->linkedObjectId != null )
     47         {
     48             $sql = db()->sql( 'SELECT *'.
     49                 ' FROM {{alias}}'.
     50                 ' WHERE link_objectid={objectid}'.
     51                 '   AND languageid IS NULL' );
     52             $sql->setInt( 'objectid'  ,$this->linkedObjectId );
     53         }
     54         else{
     55             return;
     56         }
     57 
     58         $row = $sql->getRow();
     59 
     60 		if	( count($row ) != 0 )
     61 		{
     62 			$this->aliasid        = $row['id'           ];
     63 			$this->objectid       = $row['objectid'     ];
     64 			$this->linkedObjectId = $row['link_objectid'];
     65 			$this->languageid     = $row['languageid'   ];
     66 
     67             $this->objectLoad();
     68         }
     69     }
     70 
     71 
     72     /**
     73      * Delete.
     74      */
     75     public function delete()
     76 	{
     77 	    if   ( ! $this->isPersistent() )
     78 	        return;
     79 
     80 		$sql = db()->sql( 'DELETE FROM {{alias}} '.
     81 		                ' WHERE id={aliasid}' );
     82 		$sql->setInt( 'aliasid',$this->aliasid );
     83 
     84 		$sql->query();
     85 
     86 		$this->objectDelete();
     87 	}
     88 
     89 
     90     /**
     91      *
     92      */
     93     public function save()
     94 	{
     95 	    if   ( ! $this->isPersistent() )
     96 	        $this->add();
     97 
     98 		$sql = db()->sql('UPDATE {{alias}} SET '.
     99 		               '  link_objectid = {linkobjectid},'.
    100 		               '  languageid    = {languageid}'.
    101 		                ' WHERE objectid={objectid}' );
    102 		$sql->setInt ('objectid'    ,$this->objectid       );
    103 		$sql->setInt ('linkobjectid',$this->linkedObjectId );
    104 		$sql->setIntOrNull('languageid'  ,$this->languageid     );
    105 
    106 		$sql->query();
    107 
    108 		parent::save();
    109 	}
    110 
    111 
    112 	public function getProperties()
    113 	{
    114 		return array_merge( parent::getProperties(),
    115 		                    get_object_vars($this)   );
    116 	}
    117 
    118 
    119     /**
    120      * Add a new link.
    121      */
    122     public function add()
    123 	{
    124 		parent::add();
    125 
    126 		$stmt = db()->sql('SELECT MAX(id) FROM {{alias}}');
    127 		$this->aliasid = intval($stmt->getOne())+1;
    128 
    129 		$stmt = db()->sql( <<<SQL
    130             INSERT INTO {{alias}}
    131 		                (id,objectid,link_objectid,languageid)
    132 		                VALUES( {linkid},{objectid},{linkobjectid},{languageid} )
    133 SQL
    134         );
    135 		$stmt->setInt ('linkid'      ,$this->aliasid        );
    136 		$stmt->setInt ('objectid'    ,$this->objectid       );
    137 
    138         $stmt->setInt ('linkobjectid',$this->linkedObjectId );
    139         $stmt->setIntOrNull('languageid'  ,$this->languageid     );
    140 
    141 		$stmt->query();
    142 	}	
    143 }