ForwardFW
[ class tree: ForwardFW ] [ index: ForwardFW ] [ all elements ]

Source for file Sql.php

Documentation is available at Sql.php

  1. <?php
  2. declare(encoding "utf-8");
  3. /**
  4.  * This file is part of ForwardFW a web application framework.
  5.  *
  6.  * This library is free software; you can redistribute it and/or
  7.  * modify it under the terms of the GNU General Public
  8.  * License as published by the Free Software Foundation; either
  9.  * version 2.1 of the License, or (at your option) any later version.
  10.  *
  11.  * This library is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.  * General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public
  17.  * License along with this library; if not, write to the Free Software
  18.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  19.  *
  20.  * PHP version 5
  21.  *
  22.  * @category   Object
  23.  * @package    ForwardFW
  24.  * @subpackage Object
  25.  * @author     Alexander Opitz <opitz.alexander@primacom.net>
  26.  * @copyright  2009-2010 The Authors
  27.  * @license    http://www.gnu.org/copyleft/gpl.html GNU General Public License
  28.  * @version    SVN: $Id: $
  29.  * @link       http://forwardfw.sourceforge.net
  30.  * @since      File available since Release 0.0.1
  31.  */
  32.  
  33. require_once 'ForwardFW/Controller/DataLoader.php';
  34. require_once 'ForwardFW/Object.php';
  35.  
  36. /**
  37.  * A object/model that can load themself from DB.
  38.  *
  39.  * @category   Object
  40.  * @package    ForwardFW
  41.  * @subpackage Object
  42.  * @author     Alexander Opitz <opitz.alexander@primacom.net>
  43.  * @license    http://www.gnu.org/copyleft/gpl.html GNU General Public License
  44.  * @link       http://forwardfw.sourceforge.net
  45.  */
  46. {
  47.     /**
  48.      * Name of the table, which is mostly a prefix and the object name
  49.      * in lowercase.
  50.      *
  51.      * @var string 
  52.      */
  53.     protected $strTableName = '';
  54.  
  55.     /**
  56.      * Prefix for the table name
  57.      *
  58.      * @access private
  59.      * @var string 
  60.      */
  61.     protected $strTablePrefix = '';
  62.  
  63.     /**
  64.      * Name of the connection which should be used for this object to load/save.
  65.      *
  66.      * @access private
  67.      * @var string 
  68.      */
  69.     protected $strDBConnection = '';
  70.  
  71.     /**
  72.      * constructor
  73.      *
  74.      * @param string $_strIdFieldName  Fieldname which holds the object id.
  75.      * @param string $_strTablePrefix  Prefix der Tabellennamen im Projekt.
  76.      * @param string $_strDBConnection Name of the DB connection to use.
  77.      *
  78.      * @return new instance
  79.      */
  80.     function __construct(
  81.         $_strIdFieldName 'ID',
  82.         $_strTablePrefix '',
  83.         $_strDBConnection 'default'
  84.     {
  85.         parent::__construct($_strIdFieldName);
  86.  
  87.         $this->strTablePrefix  = $_strTablePrefix;
  88.         $this->strDBConnection = $_strDBConnection;
  89.  
  90.             $this->strTablePrefixget_class($this)
  91.         );
  92.     }
  93.  
  94.     /**
  95.      * Returns the name of table out of prefix and object name cobined with
  96.      * an underscore and lowercased.
  97.      *
  98.      * @param string $_strTablePrefix Prefix der Tabellennamen im Projekt.
  99.      * @param string $_strObjectName  Name of the object
  100.      *
  101.      * @return string The table name.
  102.      */
  103.     static function resolveTableName($_strTablePrefix$_strObjectName)
  104.     {
  105.         $strResult (_$strTablePrefix != '' $_strTablePrefix.'_' '');
  106.         $strResult.= substr($_strObjectNamestrrpos($_strObjectName'_'1);
  107.         return strtolower($strResult);
  108.     }
  109.  
  110.     /**
  111.      * Loads a the object from DB by the given ID.
  112.      *
  113.      * @param mixed $ID The ID for the object.
  114.      *
  115.      * @return boolean True if object was loadable otherwise false.
  116.      */
  117.     function loadByID($ID)
  118.     {
  119.         return $this->loadByWhereClause($this->strIdFieldName.'='.$ID);
  120.     }
  121.  
  122.     /**
  123.      * Loads the object by where clause. Only first hit will be selected.
  124.      *
  125.      * @param string $strWhereClause The SQL where clause to search for this object.
  126.      *
  127.      * @return boolean True if object was loadable otherwise false.
  128.      */
  129.     function loadByWhereClause($strWhereClause)
  130.     {
  131.         $dataLoader ForwardFW_Controller_DataLoader::getInstance(
  132.             $this->strApplicationName
  133.         );
  134.         $arResult &$dataLoader->loadFromDB(
  135.             $this->strDBConnection,
  136.             '*',
  137.             $this->strTableName,
  138.             $strWhereClause'''''1'
  139.         );
  140.         if ($arResult !== false && count($arResult== 1{
  141.             $this->loadByArray($arResult[0]);
  142.             return true;
  143.         }
  144.         return false;
  145.     }
  146.  
  147.     /**
  148.      * Saves the object to DB. If ID is set, then the DB will be updated. Otherwise
  149.      * an insert statement will create it. The new ID will saved in object.
  150.      *
  151.      * @return boolean True if object was saveable otherwise false.
  152.      */
  153.     function save()
  154.     {
  155.         $arToSave array();
  156.         $this->saveToArray($arToSave);
  157.  
  158.         $strWhereClause $this->strIdFieldName.' = '.$this->getId();
  159.  
  160.         $dataLoader ForwardFW_Controller_DataLoader::getInstance(
  161.             $this->strApplicationName
  162.         );
  163.         $bResult &$dataLoader->saveToDB(
  164.             $this->strDBConnection,
  165.             $arToSave,
  166.             $this->strTableName,
  167.             $strWhereClause
  168.         );
  169.  
  170.         return $bResult;
  171.     }
  172. }
  173.  
  174. ?>

Documentation generated on Sun, 30 Jan 2011 20:46:47 +0100 by phpDocumentor 1.4.3