/var/www/hkosl.com/e-ims/file_manager/Classes/PHPExcel/CachedObjectStorageFactory.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<?php

class PHPExcel_CachedObjectStorageFactory {
    const 
cache_in_memory                'Memory';
    const 
cache_in_memory_gzip            'MemoryGZip';
    const 
cache_in_memory_serialized    'MemorySerialized';
    const 
cache_to_discISAM                'DiscISAM';
    const 
cache_to_apc                    'APC';
    const 
cache_to_memcache                'Memcache';
    const 
cache_to_phpTemp                'PHPTemp';
    const 
cache_to_wincache                'Wincache';


    private static 
$_cacheStorageMethod null;

    private static 
$_cacheStorageClass null;


    private static 
$_storageMethods = array(
        
self::cache_in_memory,
        
self::cache_in_memory_gzip,
        
self::cache_in_memory_serialized,
        
self::cache_to_phpTemp,
        
self::cache_to_discISAM,
        
self::cache_to_apc,
        
self::cache_to_memcache,
        
self::cache_to_wincache,
    );


    private static 
$_storageMethodDefaultParameters = array(
        
self::cache_in_memory                => array(
                                                    ),
        
self::cache_in_memory_gzip            => array(
                                                    ),
        
self::cache_in_memory_serialized    => array(
                                                    ),
        
self::cache_to_phpTemp                => array( 'memoryCacheSize'    => '1MB'
                                                    
),
        
self::cache_to_discISAM                => array(
                                                    ),
        
self::cache_to_apc                    => array( 'cacheTime'        => 600
                                                    
),
        
self::cache_to_memcache                => array( 'memcacheServer'    => 'localhost',
                                                      
'memcachePort'    => 11211,
                                                      
'cacheTime'        => 600
                                                    
),
        
self::cache_to_wincache                => array( 'cacheTime'        => 600
                                                    
)
    );


    private static 
$_storageMethodParameters = array();


    public static function 
getCacheStorageMethod() {
        if (!
is_null(self::$_cacheStorageMethod)) {
            return 
self::$_cacheStorageMethod;
        }
        return 
null;
    }    
//    function getCacheStorageMethod()


    
public static function getCacheStorageClass() {
        if (!
is_null(self::$_cacheStorageClass)) {
            return 
self::$_cacheStorageClass;
        }
        return 
null;
    }    
//    function getCacheStorageClass()


    
public static function getCacheStorageMethods() {
        return 
self::$_storageMethods;
    }    
//    function getCacheStorageMethods()


    
public static function initialize($method self::cache_in_memory$arguments = array()) {
        if (!
in_array($method,self::$_storageMethods)) {
            return 
false;
        }

        switch(
$method) {
            case 
self::cache_to_apc    :
                if (!
function_exists('apc_store')) {
                    return 
false;
                }
                if (
apc_sma_info() === false) {
                    return 
false;
                }
                break;
            case 
self::cache_to_memcache :
                if (!
function_exists('memcache_add')) {
                    return 
false;
                }
                break;
            case 
self::cache_to_wincache :
                if (!
function_exists('wincache_ucache_add')) {
                    return 
false;
                }
                break;
        }

        
self::$_storageMethodParameters[$method] = self::$_storageMethodDefaultParameters[$method];
        foreach(
$arguments as $k => $v) {
            if (isset(
self::$_storageMethodParameters[$method][$k])) {
                
self::$_storageMethodParameters[$method][$k] = $v;
            }
        }

        if (
is_null(self::$_cacheStorageMethod)) {
            
self::$_cacheStorageClass 'PHPExcel_CachedObjectStorage_'.$method;
            
self::$_cacheStorageMethod $method;
        }
        return 
true;
    }    
//    function initialize()


    
public static function getInstance(PHPExcel_Worksheet $parent) {
        if (
is_null(self::$_cacheStorageMethod)) {
            
self::initialize();
        }

        
$instance = new self::$_cacheStorageClass($parent,self::$_storageMethodParameters[self::$_cacheStorageMethod]);
        if (!
is_null($instance)) {
            return 
$instance;
        }

        return 
false;
    }    
//    function getInstance()

}