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

Source for file MDB2.php

Documentation is available at MDB2.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   Application
  23.  * @package    ForwardFW
  24.  * @subpackage Controller/DataHandler
  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.7
  31.  */
  32.  
  33. require_once 'ForwardFW/Exception/DataHandler.php';
  34. require_once 'ForwardFW/Controller/DataHandler.php';
  35. require_once 'ForwardFW/Interface/Application.php';
  36. require_once 'PEAR/MDB2.php';
  37.  
  38. /**
  39.  * Managing DataLoading via PEAR::MDB2
  40.  *
  41.  * @category   Application
  42.  * @package    ForwardFW
  43.  * @subpackage Controller/DataHandler
  44.  * @author     Alexander Opitz <opitz.alexander@primacom.net>
  45.  * @license    http://www.gnu.org/copyleft/gpl.html GNU General Public License
  46.  * @link       http://forwardfw.sourceforge.net
  47.  */
  48. {
  49.     /**
  50.      * @var array Prefix for tables
  51.      */
  52.     private $arTablePrefix = array();
  53.  
  54.     /**
  55.      * Loads Data from a connection (DB, SOAP, File)
  56.      *
  57.      * @param string $strConnection Name of connection
  58.      * @param array  $arOptions     Options to load the data
  59.      *
  60.      * @return mixed Data from the connection.
  61.      */
  62.     public function loadFrom($strConnectionarray $arOptions)
  63.     {
  64.         $conMDB2 $this->getConnection($strConnection);
  65.  
  66.         $strQuery 'SELECT ' $arOptions['select'' FROM ';
  67.         if (isset($this->arTablePrefix[$strConnection])) {
  68.             $strQuery .= '`' $this->arTablePrefix[$strConnection]
  69.                 .'_' $arOptions['from''`';
  70.         else {
  71.             $strQuery .= '`' $arOptions['from''`';
  72.         }
  73.         if (isset($arOptions['where'])) {
  74.             $strQuery .= ' WHERE ' $arOptions['where'];
  75.         }
  76.         if (isset($arOptions['group'])) {
  77.             $strQuery .= ' GROUP BY ' $arOptions['group'];
  78.         }
  79.         if (isset($arOptions['order'])) {
  80.             $strQuery .= ' ORDER BY ' $arOptions['order'];
  81.         }
  82.         if (isset($arOptions['limit'])) {
  83.             $strQuery .= ' LIMIT ' $arOptions['limit'];
  84.         }
  85.  
  86.         $arResult array();
  87.         $resultMDB2 $conMDB2->query($strQuery);
  88.  
  89.         if (PEAR::isError($resultMDB2)) {
  90.             $this->application->getResponse()->addError($resultMDB2->getMessage($resultMDB2->getUserinfo());
  91.             throw new ForwardFW_Exception_DataHandler(
  92.                 'Error while execute: '
  93.                 . $resultMDB2->getMessage()
  94.                 . $resultMDB2->getUserinfo()
  95.             );
  96.         }
  97.         while ($arRow $resultMDB2->fetchRow(MDB2_FETCHMODE_ASSOC)) {
  98.             array_push($arResult$arRow);
  99.         }
  100.         return $arResult;
  101.     }
  102.  
  103.     /**
  104.      * Saves Data to a connection (DB, SOAP, File)
  105.      *
  106.      * @param string $strConnection Name of connection
  107.      * @param array  $arOptions     Options to load the data
  108.      *
  109.      * @return mixed Data from the connection.
  110.      */
  111.     public function saveTo($strConnectionarray $options)
  112.     {
  113.         // @TODO
  114.     }
  115.  
  116.  
  117.     /**
  118. /**
  119.      * Loads and initialize the connection handler.
  120.      *
  121.      * @param string $strConnection Name of connection
  122.      *
  123.      * @return void 
  124.      */
  125.     public function initConnection($strConnection)
  126.     {
  127.         $arConfig $this->getConfigParameter($strConnection);
  128.  
  129.         if (isset($arConfig['prefix'])) {
  130.             $this->arTablePrefix[$strConnection$arConfig['prefix'];
  131.         }
  132.         $options array('portability' => MDB2_PORTABILITY_ALL MDB2_PORTABILITY_FIX_CASE);
  133.         $options array_merge($options$arConfig['options']);
  134.         $conMDB2 MDB2::connect($arConfig['dsn']$options);
  135.  
  136.         if (PEAR::isError($conMDB2)) {
  137.             $this->application->getResponse()->addError(
  138.                 $conMDB2->getMessage($conMDB2->getUserinfo()
  139.             );
  140.             throw new ForwardFW_Exception_DataHandler(
  141.                 'Cannot initialize MDB Connection: '
  142.                 . $conMDB2->getMessage()
  143.                 . $conMDB2->getUserinfo()
  144.             );
  145.         }
  146.  
  147.         $ret $conMDB2->exec('set character set utf8');
  148.         $this->arConnectionCache[$strConnection$conMDB2;
  149.     }
  150.  
  151. }
  152.  
  153. ?>

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