Lib.php 7.11 KB
Newer Older
doctrine's avatar
doctrine committed
1
<?php
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
/* 
 *  $Id$
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * This software consists of voluntary contributions made by many individuals
 * and is licensed under the LGPL. For more information, see
 * <http://www.phpdoctrine.com>.
 */
/**
22 23
 * @package     Doctrine
 * @license     http://www.opensource.org/licenses/lgpl-license.php LGPL
24 25
 * 
 * Doctrine_Lib has not commonly used static functions, mostly for debugging purposes
26 27 28 29 30 31
 * @category    Object Relational Mapping
 * @link        www.phpdoctrine.com
 * @since       1.0
 * @version     $Revision$
 * @author      Konsta Vesterinen <kvesteri@cc.hut.fi>
 */
doctrine's avatar
doctrine committed
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
class Doctrine_Lib {
    /**
     * @param integer $state                the state of record
     * @see Doctrine_Record::STATE_* constants
     * @return string                       string representation of given state
     */
    public static function getRecordStateAsString($state) {
        switch($state):
            case Doctrine_Record::STATE_PROXY:
                return "proxy";
            break;
            case Doctrine_Record::STATE_CLEAN:
                return "persistent clean";
            break;
            case Doctrine_Record::STATE_DIRTY:
                return "persistent dirty";
            break;
            case Doctrine_Record::STATE_TDIRTY:
                return "transient dirty";
            break;
            case Doctrine_Record::STATE_TCLEAN:
                return "transient clean";
            break;
        endswitch;
    }
    /**
     * returns a string representation of Doctrine_Record object
     * @param Doctrine_Record $record
     * @return string
     */
doctrine's avatar
doctrine committed
62
    public static function getRecordAsString(Doctrine_Record $record) {
doctrine's avatar
doctrine committed
63 64
        $r[] = "<pre>";
        $r[] = "Component  : ".$record->getTable()->getComponentName();
65
        $r[] = "ID         : ".$record->obtainIdentifier();
doctrine's avatar
doctrine committed
66 67 68 69 70 71 72 73
        $r[] = "References : ".count($record->getReferences());
        $r[] = "State      : ".Doctrine_Lib::getRecordStateAsString($record->getState());
        $r[] = "OID        : ".$record->getOID();
        $r[] = "</pre>";
        return implode("\n",$r)."<br />";
    }
    /**
     * getStateAsString
zYne's avatar
zYne committed
74 75
     * returns a given connection state as string
     * @param integer $state        connection state
doctrine's avatar
doctrine committed
76
     */
zYne's avatar
zYne committed
77
    public static function getConnectionStateAsString($state) {
doctrine's avatar
doctrine committed
78
        switch($state):
79
            case Doctrine_Connection_Transaction::STATE_OPEN:
doctrine's avatar
doctrine committed
80 81
                return "open";
            break;
82
            case Doctrine_Connection_Transaction::STATE_CLOSED:
doctrine's avatar
doctrine committed
83 84
                return "closed";
            break;
85
            case Doctrine_Connection_Transaction::STATE_BUSY:
doctrine's avatar
doctrine committed
86 87
                return "busy";
            break;
88
            case Doctrine_Connection_Transaction::STATE_ACTIVE:
doctrine's avatar
doctrine committed
89 90 91 92 93
                return "active";
            break;
        endswitch;
    }
    /**
zYne's avatar
zYne committed
94 95
     * returns a string representation of Doctrine_Connection object
     * @param Doctrine_Connection $connection
doctrine's avatar
doctrine committed
96 97
     * @return string
     */
zYne's avatar
zYne committed
98
    public static function getConnectionAsString(Doctrine_Connection $connection) {
doctrine's avatar
doctrine committed
99
        $r[] = "<pre>";
zYne's avatar
zYne committed
100
        $r[] = "Doctrine_Connection object";
zYne's avatar
zYne committed
101 102 103
        $r[] = "State               : ".Doctrine_Lib::getConnectionStateAsString($connection->getTransaction()->getState());
        $r[] = "Open Transactions   : ".$connection->getTransaction()->getTransactionLevel();
        $r[] = "Table in memory     : ".$connection->count();
doctrine's avatar
doctrine committed
104 105

        $queries = false;
106
        if($connection->getDBH() instanceof Doctrine_Db) {
doctrine's avatar
doctrine committed
107
            $handler = "Doctrine Database Handler";
zYne's avatar
zYne committed
108 109 110
            $queries = count($connection->getDBH()->getQueries());
            $sum     = array_sum($connection->getDBH()->getExecTimes());
        } elseif($connection->getDBH() instanceof PDO) {
doctrine's avatar
doctrine committed
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
            $handler = "PHP Native PDO Driver";
        } else
            $handler = "Unknown Database Handler";

        $r[] = "DB Handler          : ".$handler;
        if($queries) {
            $r[] = "Executed Queries    : ".$queries;
            $r[] = "Sum of Exec Times   : ".$sum;
        }

        $r[] = "</pre>";
        return implode("\n",$r)."<br>";
    }
    /**
     * returns a string representation of Doctrine_Table object
     * @param Doctrine_Table $table
     * @return string
     */
doctrine's avatar
doctrine committed
129
    public static function getTableAsString(Doctrine_Table $table) {
doctrine's avatar
doctrine committed
130
        $r[] = "<pre>";
131 132
        $r[] = "Component   : ".$table->getComponentName();
        $r[] = "Table       : ".$table->getTableName();
doctrine's avatar
doctrine committed
133 134 135
        $r[] = "</pre>";
        return implode("\n",$r)."<br>";
    }
doctrine's avatar
doctrine committed
136 137 138
    /**
     * @return string
     */
doctrine's avatar
doctrine committed
139
    public static function formatSql($sql) {
doctrine's avatar
doctrine committed
140 141 142 143 144 145
        $e = explode("\n",$sql);
        $color = "367FAC";
        $l = $sql;
        $l = str_replace("SELECT","<font color='$color'><b>SELECT</b></font><br \>  ",$l);
        $l = str_replace("FROM","<font color='$color'><b>FROM</b></font><br \>",$l);
        $l = str_replace("LEFT JOIN","<br \><font color='$color'><b>LEFT JOIN</b></font>",$l);
146
        $l = str_replace("INNER JOIN","<br \><font color='$color'><b>INNER JOIN</b></font>",$l);
doctrine's avatar
doctrine committed
147 148 149
        $l = str_replace("WHERE","<br \><font color='$color'><b>WHERE</b></font>",$l);
        $l = str_replace("GROUP BY","<br \><font color='$color'><b>GROUP BY</b></font>",$l);
        $l = str_replace("HAVING","<br \><font color='$color'><b>HAVING</b></font>",$l);
doctrine's avatar
doctrine committed
150 151 152 153 154 155 156 157 158
        $l = str_replace("AS","<font color='$color'><b>AS</b></font><br \>  ",$l);
        $l = str_replace("ON","<font color='$color'><b>ON</b></font>",$l);
        $l = str_replace("ORDER BY","<font color='$color'><b>ORDER BY</b></font><br \>",$l);
        $l = str_replace("LIMIT","<font color='$color'><b>LIMIT</b></font><br \>",$l);
        $l = str_replace("OFFSET","<font color='$color'><b>OFFSET</b></font><br \>",$l);
        $l = str_replace("  ","<dd>",$l);
        
        return $l;
    }
doctrine's avatar
doctrine committed
159 160 161 162 163
    /**
     * returns a string representation of Doctrine_Collection object
     * @param Doctrine_Collection $collection
     * @return string
     */
doctrine's avatar
doctrine committed
164
    public static function getCollectionAsString(Doctrine_Collection $collection) {
doctrine's avatar
doctrine committed
165 166 167 168
        $r[] = "<pre>";
        $r[] = get_class($collection);

        foreach($collection as $key => $record) {
169
            $r[] = "Key : ".$key." ID : ".$record->obtainIdentifier();
doctrine's avatar
doctrine committed
170 171 172 173 174
        }
        $r[] = "</pre>";
        return implode("\n",$r);
    }
}
175