Language.class.php

gehe zur Dokumentation dieser Datei
00001 <?php
00002 // ---------------------------------------------------------------------------
00003 // $Id$
00004 // ---------------------------------------------------------------------------
00005 // OpenRat Content Management System
00006 // Copyright (C) 2002-2004 Jan Dankert, jandankert@jandankert.de
00007 //
00008 // This program is free software; you can redistribute it and/or
00009 // modify it under the terms of the GNU General Public License
00010 // as published by the Free Software Foundation; either version 2
00011 // of the License, or (at your option) any later version.
00012 //
00013 // This program is distributed in the hope that it will be useful,
00014 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00015 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016 // GNU General Public License for more details.
00017 //
00018 // You should have received a copy of the GNU General Public License
00019 // along with this program; if not, write to the Free Software
00020 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
00021 // ---------------------------------------------------------------------------
00022 
00023 
00031 class Language
00032 {
00033      var $languageid = 0;
00034      var $error      = '';
00035      var $projectid;
00036 
00037      var $name      = '';
00038      var $isoCode   = '';
00039      var $isDefault = false;
00040 
00041 
00042      // Konstruktor
00043      function Language( $languageid='' )
00044      {
00045           global $SESS;
00046 
00047           if   ( is_numeric($languageid) )
00048                $this->languageid = $languageid;
00049 
00050 //        $this->projectid = $SESS['projectid'];
00051      }
00052 
00053      
00054      
00058      function available( $id )
00059      {
00060           $db = db_connection();
00061 
00062           $sql = new Sql('SELECT 1 FROM {t_language} '.
00063                          ' WHERE id={id}');
00064           $sql->setInt('id' ,$id  );
00065 
00066           return intval($db->getOne($sql->query)) == 1;
00067      }
00068 
00069      
00070 
00071      // Lesen aller Sprachen aus der Datenbank
00072      function getAll()
00073      {
00074           global $SESS;
00075           $db = db_connection();
00076 
00077           $sql = new Sql( "SELECT id,name FROM {t_language} ".
00078                           "   WHERE projectid = {projectid} ".
00079                           "   ORDER BY name" );
00080 
00081           if   ( !empty($this->projectid) )
00082                $sql->setInt('projectid',$this->projectid );
00083           else
00084           {
00085                $project = Session::getProject();
00086                $sql->setInt('projectid',$project->projectid);
00087           }
00088 
00089           return $db->getAssoc( $sql->query );
00090      }
00091 
00092 
00093      // Lesen aus der Datenbank
00094      function load()
00095      {
00096           $db = Session::getDatabase();
00097 
00098           $sql = new Sql( 'SELECT * FROM {t_language}'.
00099                           ' WHERE id={languageid}' );
00100           $sql->setInt( 'languageid',$this->languageid );
00101 
00102           $row = $db->getRow( $sql->query );
00103 
00104           $this->name      =         $row['name'     ];
00105           $this->isoCode   =         $row['isocode'  ];
00106           $this->projectid = intval( $row['projectid'] );
00107           
00108           $this->isDefault = ( $row['is_default'] == '1' );
00109      }
00110 
00111 
00112      // Speichern der Sprache in der Datenbank
00113      function save()
00114      {
00115           $db = db_connection();
00116 
00117           // Gruppe speichern      
00118           $sql = new Sql( 'UPDATE {t_language} '.
00119                           'SET name      = {name}, '.
00120                           '    isocode   = {isocode} '.
00121                           'WHERE id={languageid}' );
00122           $sql->setString( 'name'     ,$this->name    );
00123           $sql->setString( 'isocode'  ,$this->isoCode );
00124 
00125           $sql->setInt( 'languageid',$this->languageid );
00126 
00127           // Datenbankabfrage ausfuehren
00128           $db->query( $sql->query );
00129      }
00130 
00131 
00136      function getProperties()
00137      {
00138           return Array( 'name'   =>$this->name,
00139                         'isocode'=>$this->isoCode );
00140      }
00141 
00142 
00146      function add( $isocode='' )
00147      {
00148           global $SESS;
00149           global $iso;
00150           $db = db_connection();
00151 
00152           if   ( $isocode != '' )
00153           {
00154                // Kleiner Trick, damit "no" (Norwegen) in der .ini-Datei stehen kann
00155                $isocode = str_replace('_','',$isocode);
00156                
00157                $this->isocode = $isocode;
00158                $codes = GlobalFunctions::getIsoCodes();
00159                $this->name    = $codes[ $isocode ];
00160           }
00161 
00162           $sql = new Sql('SELECT MAX(id) FROM {t_language}');
00163           $this->languageid = intval($db->getOne($sql->query))+1;
00164 
00165           // Sprache hinzuf?gen
00166           $sql = new Sql( 'INSERT INTO {t_language} '.
00167                           '(id,projectid,name,isocode,is_default) VALUES( {languageid},{projectid},{name},{isocode},0 )');
00168           $sql->setInt   ('languageid',$this->languageid );
00169           $sql->setInt   ('projectid' ,$this->projectid  );
00170           $sql->setString('name'      ,$this->name       );
00171           $sql->setString('isocode'   ,$this->isoCode    );
00172 
00173           // Datenbankbefehl ausfuehren
00174           $db->query( $sql->query );
00175      }
00176 
00177 
00178      // Diese Sprache als 'default' markieren.
00179      function setDefault()
00180      {
00181           global $SESS;
00182           $db = db_connection();
00183 
00184           // Zuerst alle auf nicht-Standard setzen
00185           $sql = new Sql( 'UPDATE {t_language} '.
00186                           '  SET is_default = 0 '.
00187                           '  WHERE projectid={projectid}' );
00188           $sql->setInt('projectid',$this->projectid );
00189           $db->query( $sql->query );
00190      
00191           // Jetzt die gew?nschte Sprachvariante auf Standard setzen
00192           $sql = new Sql( 'UPDATE {t_language} '.
00193                           '  SET is_default = 1 '.
00194                           '  WHERE id={languageid}' );
00195           $sql->setInt('languageid',$this->languageid );
00196           $db->query( $sql->query );
00197      }
00198 
00199 
00200      function getDefaultId()
00201      {
00202           global $SESS;
00203           $db = db_connection();
00204 
00205           $sql = new Sql( 'SELECT id FROM {t_language} '.
00206                           '  WHERE projectid={projectid}'.
00207                           '   ORDER BY is_default DESC' );
00208 
00209           if   ( isset($this->projectid) )
00210                $sql->setInt('projectid',$this->projectid );
00211           else
00212           {
00213                $project = Session::getProject();
00214                $sql->setInt('projectid',$project->projectid);
00215           }
00216           
00217           return $db->getOne( $sql->query );
00218      }
00219 
00220 
00221      // Sprache entfernen
00222      function delete()
00223      {
00224           $db = db_connection();
00225 
00226           // Sprache l?schen
00227 //        $sql = new Sql( 'SELECT COUNT(*) FROM {t_language} WHERE projectid={projectid}' );
00228 //        $sql->setInt( 'projectid',$this->projectid );
00229 //        $count = $db->getOne( $sql->query );
00230 //        
00231 //        // Nur l?schen, wenn es mindestens 2 Sprachen gibt
00232 //        if   ( $count >= 2 )
00233 //        {
00234                // Inhalte mit dieser Sprache l?schen
00235                $sql = new Sql( 'DELETE FROM {t_value} WHERE languageid={languageid}' );
00236                $sql->setInt( 'languageid',$this->languageid );
00237                $db->query( $sql->query );
00238 
00239                // Inhalte mit dieser Sprache l?schen
00240                $sql = new Sql( 'DELETE FROM {t_name} WHERE languageid={languageid}' );
00241                $sql->setInt( 'languageid',$this->languageid );
00242                $db->query( $sql->query );
00243 
00244                // Sprache l?schen
00245                $sql = new Sql( 'DELETE FROM {t_language} WHERE id={languageid}' );
00246                $sql->setInt( 'languageid',$this->languageid );
00247                $db->query( $sql->query );
00248 
00249                // Andere Sprache auf "Default" setzen
00250                $sql = new Sql( 'SELECT id FROM {t_language} WHERE projectid={projectid}' );
00251                $sql->setInt( 'projectid',$this->projectid );
00252                $new_default_languageid = $db->getOne( $sql->query );
00253 
00254                $sql = new Sql( 'UPDATE {t_language} SET is_default=1 WHERE id={languageid}' );
00255                $sql->setInt( 'languageid',$new_default_languageid );
00256                $db->query( $sql->query );
00257 //        }
00258      }
00259 }
00260 
00261 ?>

Erzeugt am Thu May 14 00:55:48 2009 für OpenRat von  doxygen 1.5.8