2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< ? php  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-25 16:28:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								namespace  PHPExcel\CachedObjectStorage ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  PHPExcel_CachedObjectStorage_SQLite 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Copyright  ( c )  2006  -  2015  PHPExcel 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  library  is  free  software ;  you  can  redistribute  it  and / or 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  modify  it  under  the  terms  of  the  GNU  Lesser  General  Public 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  License  as  published  by  the  Free  Software  Foundation ;  either 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  version  2.1  of  the  License ,  or  ( at  your  option )  any  later  version . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  library  is  distributed  in  the  hope  that  it  will  be  useful , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  but  WITHOUT  ANY  WARRANTY ;  without  even  the  implied  warranty  of 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  MERCHANTABILITY  or  FITNESS  FOR  A  PARTICULAR  PURPOSE .   See  the  GNU 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Lesser  General  Public  License  for  more  details . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  You  should  have  received  a  copy  of  the  GNU  Lesser  General  Public 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  License  along  with  this  library ;  if  not ,  write  to  the  Free  Software 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Foundation ,  Inc . ,  51  Franklin  Street ,  Fifth  Floor ,  Boston ,  MA   02110 - 1301   USA 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ category    PHPExcel 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ package     PHPExcel_CachedObjectStorage 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ copyright   Copyright  ( c )  2006  -  2015  PHPExcel  ( http :// www . codeplex . com / PHPExcel ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ license     http :// www . gnu . org / licenses / old - licenses / lgpl - 2.1 . txt     LGPL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ version     ##VERSION##, ##DATE##
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-25 16:28:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  SQLite  extends  CacheBase  implements  ICache  
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Database  table  name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ var  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    private  $TableName  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Database  handle 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ var  resource 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    private  $DBHandle  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Store  cell  data  in  cache  for  the  current  cell  object  if  it ' s  " dirty " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *      and  the  'nullify'  the  current  cell  object 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-25 16:28:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  @ throws    \PHPExcel\Exception 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    protected  function  storeData () 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( $this -> currentCellIsDirty  &&  ! empty ( $this -> currentObjectID ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $this -> currentObject -> detach (); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( ! $this -> DBHandle -> queryExec ( " INSERT OR REPLACE INTO kvp_ " . $this -> TableName . "  VALUES(' " . $this -> currentObjectID . " ',' " . sqlite_escape_string ( serialize ( $this -> currentObject )) . " ') " ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-25 16:28:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                throw  new  \PHPExcel\Exception ( sqlite_error_string ( $this -> DBHandle -> lastError ())); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $this -> currentCellIsDirty  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $this -> currentObjectID  =  $this -> currentObject  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Add  or  Update  a  cell  in  cache  identified  by  coordinate  address 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-25 16:28:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  @ param    string             $pCoord         Coordinate  address  of  the  cell  to  update 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param    \PHPExcel\Cell     $cell         Cell  to  update 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return   \PHPExcel\Cell 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ throws   \PHPExcel\Exception 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-25 16:28:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  addCacheData ( $pCoord ,  \PHPExcel\Cell  $cell ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  (( $pCoord  !==  $this -> currentObjectID )  &&  ( $this -> currentObjectID  !==  null ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $this -> storeData (); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $this -> currentObjectID  =  $pCoord ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> currentObject  =  $cell ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> currentCellIsDirty  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  $cell ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Get  cell  at  a  specific  coordinate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-25 16:28:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  @ param    string              $pCoord         Coordinate  of  the  cell 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ throws   \PHPExcel\Exception 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return   \PHPExcel\Cell      Cell  that  was  found ,  or  null  if  not  found 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  getCacheData ( $pCoord ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( $pCoord  ===  $this -> currentObjectID )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  $this -> currentObject ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $this -> storeData (); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $query  =  " SELECT value FROM kvp_ " . $this -> TableName . "  WHERE id=' " . $pCoord . " ' " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $cellResultSet  =  $this -> DBHandle -> query ( $query ,  SQLITE_ASSOC ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( $cellResultSet  ===  false )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            throw  new  PHPExcel_Exception ( sqlite_error_string ( $this -> DBHandle -> lastError ())); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }  elseif  ( $cellResultSet -> numRows ()  ==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            //    Return null if requested entry doesn't exist in cache
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //    Set current entry to the requested entry
 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $this -> currentObjectID  =  $pCoord ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $cellResult  =  $cellResultSet -> fetchSingle (); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $this -> currentObject  =  unserialize ( $cellResult ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        //    Re-attach this as the cell's parent
 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $this -> currentObject -> attach ( $this ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //    Return requested entry
 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  $this -> currentObject ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Is  a  value  set  for  an  indexed  cell ? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param     string         $pCoord         Coordinate  address  of  the  cell  to  check 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return     boolean 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  isDataSet ( $pCoord ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( $pCoord  ===  $this -> currentObjectID )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //    Check if the requested entry exists in the cache
 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $query  =  " SELECT id FROM kvp_ " . $this -> TableName . "  WHERE id=' " . $pCoord . " ' " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $cellResultSet  =  $this -> DBHandle -> query ( $query ,  SQLITE_ASSOC ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( $cellResultSet  ===  false )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            throw  new  PHPExcel_Exception ( sqlite_error_string ( $this -> DBHandle -> lastError ())); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }  elseif  ( $cellResultSet -> numRows ()  ==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            //    Return null if requested entry doesn't exist in cache
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Delete  a  cell  in  cache  identified  by  coordinate  address 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param     string             $pCoord         Coordinate  address  of  the  cell  to  delete 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ throws     PHPExcel_Exception 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  deleteCacheData ( $pCoord ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( $pCoord  ===  $this -> currentObjectID )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $this -> currentObject -> detach (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $this -> currentObjectID  =  $this -> currentObject  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //    Check if the requested entry exists in the cache
 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $query  =  " DELETE FROM kvp_ " . $this -> TableName . "  WHERE id=' " . $pCoord . " ' " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! $this -> DBHandle -> queryExec ( $query ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  PHPExcel_Exception ( sqlite_error_string ( $this -> DBHandle -> lastError ())); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $this -> currentCellIsDirty  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Move  a  cell  object  from  one  address  to  another 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param     string         $fromAddress     Current  address  of  the  cell  to  move 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param     string         $toAddress         Destination  address  of  the  cell  to  move 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return     boolean 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  moveCell ( $fromAddress ,  $toAddress ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( $fromAddress  ===  $this -> currentObjectID )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $this -> currentObjectID  =  $toAddress ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $query  =  " DELETE FROM kvp_ " . $this -> TableName . "  WHERE id=' " . $toAddress . " ' " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $result  =  $this -> DBHandle -> exec ( $query ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( $result  ===  false )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            throw  new  PHPExcel_Exception ( $this -> DBHandle -> lastErrorMsg ()); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $query  =  " UPDATE kvp_ " . $this -> TableName . "  SET id=' " . $toAddress . " ' WHERE id=' " . $fromAddress . " ' " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $result  =  $this -> DBHandle -> exec ( $query ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( $result  ===  false )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            throw  new  PHPExcel_Exception ( $this -> DBHandle -> lastErrorMsg ()); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Get  a  list  of  all  cell  addresses  currently  held  in  cache 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return     string [] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  getCellList () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( $this -> currentObjectID  !==  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $this -> storeData (); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $query  =  " SELECT id FROM kvp_ " . $this -> TableName ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $cellIdsResult  =  $this -> DBHandle -> unbufferedQuery ( $query ,  SQLITE_ASSOC ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( $cellIdsResult  ===  false )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            throw  new  PHPExcel_Exception ( sqlite_error_string ( $this -> DBHandle -> lastError ())); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $cellKeys  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        foreach  ( $cellIdsResult  as  $row )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $cellKeys []  =  $row [ 'id' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  $cellKeys ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Clone  the  cell  collection 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-25 16:28:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  @ param   \PHPExcel\Worksheet     $parent         The  new  worksheet  that  we ' re  copying  to 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-25 16:28:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  copyCellCollection ( \PHPExcel\Worksheet  $parent ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $this -> currentCellIsDirty ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> storeData (); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //    Get a new id for the new table name
 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $tableName  =  str_replace ( '.' ,  '_' ,  $this -> getUniqueID ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! $this -> DBHandle -> queryExec ( 'CREATE TABLE kvp_' . $tableName . '  ( id  VARCHAR ( 12 )  PRIMARY  KEY ,  value  BLOB ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            AS  SELECT  *  FROM  kvp_ ' . $this -> TableName ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            throw  new  PHPExcel_Exception ( sqlite_error_string ( $this -> DBHandle -> lastError ())); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //    Copy the existing cell cache file
 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $this -> TableName  =  $tableName ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Clear  the  cell  collection  and  disconnect  from  our  parent 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return     void 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  unsetWorksheetCells () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! is_null ( $this -> currentObject ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $this -> currentObject -> detach (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $this -> currentObject  =  $this -> currentObjectID  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //    detach ourself from the worksheet, so that it can then delete this object successfully
 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $this -> parent  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //    Close down the temporary cache file
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $this -> __destruct (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Initialise  this  new  cell  collection 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param     PHPExcel_Worksheet     $parent         The  worksheet  for  this  cell  collection 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  __construct ( PHPExcel_Worksheet  $parent ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        parent :: __construct ( $parent ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( is_null ( $this -> DBHandle ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $this -> TableName  =  str_replace ( '.' ,  '_' ,  $this -> getUniqueID ()); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $_DBName  =  ':memory:' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $this -> DBHandle  =  new  SQLiteDatabase ( $_DBName ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( $this -> DBHandle  ===  false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                throw  new  PHPExcel_Exception ( sqlite_error_string ( $this -> DBHandle -> lastError ())); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( ! $this -> DBHandle -> queryExec ( 'CREATE TABLE kvp_' . $this -> TableName . ' (id VARCHAR(12) PRIMARY KEY, value BLOB)' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                throw  new  PHPExcel_Exception ( sqlite_error_string ( $this -> DBHandle -> lastError ())); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Destroy  this  cell  collection 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  __destruct () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! is_null ( $this -> DBHandle ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $this -> DBHandle -> queryExec ( 'DROP TABLE kvp_' . $this -> TableName ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-05 18:40:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $this -> DBHandle  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-03 22:37:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Identify  whether  the  caching  method  is  currently  available 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Some  methods  are  dependent  on  the  availability  of  certain  extensions  being  enabled  in  the  PHP  build 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return     boolean 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  static  function  cacheMethodIsAvailable () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! function_exists ( 'sqlite_open' ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}