1+ <?php
2+ /*
3+ Copyright (c) 2012, ISPConfig UG
4+ Contributors: web wack creations, http://www.web-wack.at
5+ All rights reserved.
6+
7+ Redistribution and use in source and binary forms, with or without modification,
8+ are permitted provided that the following conditions are met:
9+
10+ * Redistributions of source code must retain the above copyright notice,
11+ this list of conditions and the following disclaimer.
12+ * Redistributions in binary form must reproduce the above copyright notice,
13+ this list of conditions and the following disclaimer in the documentation
14+ and/or other materials provided with the distribution.
15+ * Neither the name of ISPConfig nor the names of its contributors
16+ may be used to endorse or promote products derived from this software without
17+ specific prior written permission.
18+
19+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22+ IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
23+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
26+ OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
28+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29+ */
30+
31+ // Constants describing instances
32+ define ('INSTANCE_PENDING ' , 0 );
33+ define ('INSTANCE_INSTALL ' , 1 );
34+ define ('INSTANCE_ERROR ' , 2 );
35+ define ('INSTANCE_SUCCESS ' , 3 );
36+ define ('INSTANCE_REMOVE ' , 4 );
37+
38+ // Constants describing packages
39+ define ('PACKAGE_LOCKED ' , 1 );
40+ define ('PACKAGE_ENABLED ' , 2 );
41+ define ('PACKAGE_OUTDATED ' , 3 );
42+ define ('PACKAGE_ERROR_NOMETA ' , 4 );
43+
44+ class ApsBase
45+ {
46+ protected $ app = null ;
47+ protected $ db = null ;
48+
49+ protected $ log_prefix = '' ;
50+ protected $ fetch_url = '' ;
51+ protected $ aps_version = '' ;
52+ protected $ packages_dir = '' ;
53+ protected $ temp_pkg_dir = '' ;
54+ protected $ interface_pkg_dir = '' ;
55+ protected $ interface_mode = false ; // server mode by default
56+
57+ /**
58+ * Constructor
59+ *
60+ * @param $app the application instance (db handle + log method)
61+ * @param $interface_mode act in interface (true) or server mode (false)
62+ * @param $log_prefix a prefix to set before all log entries
63+ */
64+ public function __construct ($ app , $ log_prefix = 'APS: ' , $ interface_mode = false )
65+ {
66+ $ this ->db = $ app ->db ;
67+ $ this ->app = $ app ;
68+
69+ $ this ->log_prefix = $ log_prefix ;
70+ $ this ->interface_mode = $ interface_mode ;
71+ $ this ->fetch_url = 'apscatalog.com ' ;
72+ $ this ->aps_version = '1 ' ;
73+ $ this ->packages_dir = ISPC_ROOT_PATH .'/aps_packages ' ;
74+ $ this ->interface_pkg_dir = ISPC_ROOT_PATH .'/web/sites/aps_meta_packages ' ;
75+ }
76+
77+ /**
78+ * Converts a given value to it's native representation in 1024 units
79+ *
80+ * @param $value the size to convert
81+ * @return integer and string
82+ */
83+ public function convertSize ($ value )
84+ {
85+ $ unit = array ('Bytes ' , 'KB ' , 'MB ' , 'GB ' , 'TB ' );
86+ return @round ($ value /pow (1024 , ($ i = floor (log ($ value , 1024 )))), 2 ).' ' .$ unit [$ i ];
87+ }
88+
89+ /**
90+ * Determine a specific xpath from a given SimpleXMLElement handle. If the
91+ * element is found, it's string representation is returned. If not,
92+ * the return value will stay empty
93+ *
94+ * @param $xml_handle the SimpleXMLElement handle
95+ * @param $query the XPath query
96+ * @param $array define whether to return an array or a string
97+ * @return $ret the return string
98+ */
99+ protected function getXPathValue ($ xml_handle , $ query , $ array = false )
100+ {
101+ $ ret = '' ;
102+
103+ $ xp_result = @($ xml_handle ->xpath ($ query )) ? $ xml_handle ->xpath ($ query ) : false ;
104+ if ($ xp_result !== false ) $ ret = (($ array === false ) ? (string )$ xp_result [0 ] : $ xp_result );
105+
106+ return $ ret ;
107+ }
108+ }
109+ ?>
0 commit comments