Tutorial Extension  1.0.0
SellerDeck Extensions - Tutorial Extension
bootstrap.php
1 <?php
2 
3 /**
4  * bootstrap.php - Bootstrap for SellerDeck Extenstions Framework
5  *
6  * @package SellerDeck Extensions
7  *
8  * @author Péter Erdődi
9  * @copyright © SellerDeck Ltd 2015. All rights reserved.
10  */
11 //
12 // Default Timezone
13 //
14 date_default_timezone_set('GMT');
15 
16 if (!defined('HANDSHAKING'))
17  {
18  define('HANDSHAKING', false);
19  }
20 require_once('constants.php');
21 //
22 // Setting up Cache root
23 //
24 $sExtensionProgramDataPath = "";
25 if (file_exists(SETTINGS_INI))
26  {
27  $aSettings = parse_ini_file(SETTINGS_INI);
28  if (isset($aSettings['revision']))
29  {
30  define('SDE_VERSION_DAYNO', $aSettings['revision']);
31  }
32  if (isset($aSettings['extension_program_data']))
33  {
34  $sExtensionProgramDataPath = $aSettings['extension_program_data'];
35  define('CACHE_ROOT', $sExtensionProgramDataPath);
36  define('DEFAULT_LOG_ROOT', CACHE_ROOT);
37  }
38  }
39 else
40  {
41  define('CACHE_ROOT', EXTENSIONS_ROOT . 'cache' . DS);
42  }
43 if (!file_exists(CACHE_ROOT))
44  {
45  mkdir(CACHE_ROOT, 0777, true);
46  }
47 
48 //
49 // SDExtension Framework vendor dependencies
50 //
51 if (!is_file(VENDOR_ROOT . 'autoload.php'))
52  {
53  die('Composer is not installed. Please run "php composer.phar update" in the root to install Composer');
54  }
55 require_once(VENDOR_ROOT . 'autoload.php');
56 //
57 // Basic SDExtension Framework dependencies
58 //
59 require_once(CLASSES_ROOT . 'AjaxStreamHandler.php');
60 require_once(CLASSES_ROOT . 'exception/SDException.php');
61 require_once(CLASSES_ROOT . 'exception/SDExitException.php');
62 require_once(CLASSES_ROOT . 'helper/Tools.php');
63 require_once(CLASSES_ROOT . 'CConfig.php');
64 require_once(CLASSES_ROOT . 'CLogger.php');
65 if (!HANDSHAKING)
66  {
67  //
68  // Loading basic configurations
69  //
70  $sDetailsTempPath = CACHE_ROOT . "details_temp.php";
71  $aDetailsTemp = load_config($sDetailsTempPath, function() use ($sDetailsTempPath)
72  {
73  throw new \SDExtension\SDException\SDException(EXCEPTION_MSG_CANT_LOAD_CONFIG_FILE . ": $sDetailsTempPath", EXCEPTION_CODE_CANT_LOAD_CONFIG_FILE);
74  });
75  $sSiteName = arr_get($aDetailsTemp, 'sSiteName', DEFAULT_SITE_NAME);
76  $sSdeLogs = arr_get($aDetailsTemp, 'sSdeLogs', DEFAULT_LOG_ROOT);
77  $sSiteSdeDataFolder = arr_get($aDetailsTemp, 'sSiteSdeDataFolder', DEFAULT_CONFIG_ROOT);
78  define('LOG_CHANNEL_NAME', $sSiteName);
79  define('LOG_ROOT', $sSdeLogs . DS);
80  }
81 //
82 // Further SDExtension Framework dependencies
83 //
84 require_once(CLASSES_ROOT . 'exception/ValidatorException.php');
85 require_once(CLASSES_ROOT . 'exception/InvalidCurrencyException.php');
86 require_once(CLASSES_ROOT . 'helper/ExtensionHelper.php');
87 require_once(CLASSES_ROOT . 'helper/Array2XML.php');
88 require_once(CLASSES_ROOT . 'helper/XML2Array.php');
89 require_once(CLASSES_ROOT . 'CValidator.php');
90 require_once(CLASSES_ROOT . 'CSession.php');
91 require_once(CLASSES_ROOT . 'CTax.php');
92 require_once(CLASSES_ROOT . 'CControllerBase.php');
93 require_once(CLASSES_ROOT . 'soap/CSDApiSoapClient.php');
94 require_once(CLASSES_ROOT . 'soap/CSDApiSoapJobs.php');
95 require_once(CLASSES_ROOT . 'import/CFieldMapping.php');
96 require_once(CLASSES_ROOT . 'import/CImport.php');
97 //
98 // Loading non-handshaking SDExtension Framework dependencies
99 //
100 if (!HANDSHAKING)
101  {
102  $sConfigFileVersion = $sSiteSdeDataFolder . "version.php";
103  $sConfigFileDetails = $sSiteSdeDataFolder . "details.php";
104  $sVersion = load_config($sConfigFileVersion, function() use ($sConfigFileVersion)
105  {
106  throw new \SDExtension\SDException\SDException(EXCEPTION_MSG_CANT_LOAD_CONFIG_FILE . ": $sConfigFileVersion", EXCEPTION_CODE_CANT_LOAD_CONFIG_FILE);
107  });
108  \SDExtension\CConfig::add($sVersion);
109  $sDetails = load_config($sConfigFileDetails, function() use ($sConfigFileDetails)
110  {
111  throw new \SDExtension\SDException\SDException(EXCEPTION_MSG_CANT_LOAD_CONFIG_FILE . ": $sConfigFileDetails", EXCEPTION_CODE_CANT_LOAD_CONFIG_FILE);
112  });
113  \SDExtension\CConfig::add($sDetails);
114  //
115  // Display error settings
116  //
117  $bDebug = ((int) \SDExtension\CConfig::get('sdd-configuration.paths.logs.debug', 0) > 0);
118  if ($bDebug)
119  {
120  error_reporting(E_ALL);
121  ini_set('display_errors', 1);
122  }
123  else
124  {
125  error_reporting(0);
126  @ini_set('display_errors', 0);
127  }
128  //
129  // Init Logger
130  //
131  @SDExtension\Helper\CLogger::init(LOG_CHANNEL_NAME, LOG_ROOT);
132  //
133  // Loading non Handshaking classes
134  //
135  require_once(CLASSES_ROOT . 'database/CDataBase.php');
136  require_once(CLASSES_ROOT . 'database/CDataBaseSqlServer.php');
137  require_once(CLASSES_ROOT . 'database/CDataBaseAccess.php');
138  require_once(CLASSES_ROOT . 'database/CDataBaseAccessNoPDO.php');
139  require_once(CLASSES_ROOT . 'database/CDataBaseFactory.php');
140  require_once(CLASSES_ROOT . 'database/table/CTable.php');
141  require_once(CLASSES_ROOT . 'database/table/catalog/COrderBase.php');
142  require_once(CLASSES_ROOT . 'database/table/catalog/COrderDetailBase.php');
143  require_once(CLASSES_ROOT . 'database/table/catalog/COrderHistoryBase.php');
144  require_once(CLASSES_ROOT . 'database/table/catalog/COrderTrackingBase.php');
145  require_once(CLASSES_ROOT . 'database/table/catalog/CPaymentHistoryBase.php');
146  require_once(CLASSES_ROOT . 'database/table/catalog/CPersonBase.php');
147  require_once(CLASSES_ROOT . 'database/table/catalog/CProductBase.php');
148  require_once(CLASSES_ROOT . 'database/table/catalog/CSetupBase.php');
149  require_once(CLASSES_ROOT . 'database/wrapper/CCatalogWrapper.php');
150  //
151  // Loading DB engine specific Table Classes
152  //
153  $sTableClassFolder = GetTableClassFolderByDBType();
154  require_once(CLASSES_ROOT . "database/table/catalog/$sTableClassFolder/COrder.php");
155  require_once(CLASSES_ROOT . "database/table/catalog/$sTableClassFolder/COrderDetail.php");
156  require_once(CLASSES_ROOT . "database/table/catalog/$sTableClassFolder/COrderHistory.php");
157  require_once(CLASSES_ROOT . "database/table/catalog/$sTableClassFolder/COrderTracking.php");
158  require_once(CLASSES_ROOT . "database/table/catalog/$sTableClassFolder/CPaymentHistory.php");
159  require_once(CLASSES_ROOT . "database/table/catalog/$sTableClassFolder/CPerson.php");
160  require_once(CLASSES_ROOT . "database/table/catalog/$sTableClassFolder/CProduct.php");
161  require_once(CLASSES_ROOT . "database/table/catalog/$sTableClassFolder/CSetup.php");
162  }
163 //
164 // SellerDeck Extension module entry point
165 //
166 try
167  {
168  $sExtensionName = basename($sExtensionProgramDataPath);
169  if (!HANDSHAKING)
170  {
171  \SDExtension\Helper\CLogger::get(LOG_CHANNEL_NAME)->addInfo("Loading extension: $sExtensionName");
172  }
173  $sExtensionBootstrap = EXTENSIONS_APP_ROOT . "app_bootstrap.php";
174  if (!file_exists($sExtensionBootstrap))
175  {
176  \SDExtension\Helper\CLogger::get(LOG_CHANNEL_NAME)->addError(EXCEPTION_MSG_CANT_LOAD_EXTENSION . ": $sExtension #" . EXCEPTION_CODE_CANT_LOAD_EXTENSION);
177  throw new \SDExtension\SDException\SDException(EXCEPTION_MSG_CANT_LOAD_EXTENSION . ": $sExtension", EXCEPTION_CODE_CANT_LOAD_EXTENSION);
178  }
179  require_once($sExtensionBootstrap);
180  if (!HANDSHAKING)
181  {
182  \SDExtension\Helper\CLogger::get(LOG_CHANNEL_NAME)->addInfo("$sExtensionName loaded.");
183  }
184  }
185 catch (\SDExtension\SDException\SDException $oException)
186  {
187  if (!HANDSHAKING)
188  {
189  if ($oException instanceof \SDExtension\SDException\SDExitException)
190  {
191  \SDExtension\Helper\CLogger::get(LOG_CHANNEL_NAME)->addNotice($oException->getMessage());
192  }
193  else
194  {
195  \SDExtension\Helper\CLogger::get(LOG_CHANNEL_NAME)->addError($oException->getMessage());
196  }
197  }
198  die($oException->getMessage());
199  }
200 //
201 // Further constants, if not defined in extension
202 //
203 defined('ORDER_NUMBER_PREFIX') || define('ORDER_NUMBER_PREFIX', 'EXTORD');
204 defined('CHANNEL_NAME') || define('CHANNEL_NAME', 'SDDExt');
205 defined('SDE_VERSION') || define('SDE_VERSION', SDE_VERSION_MAJOR . "." . SDE_VERSION_MINOR . "." . SDE_VERSION_MAINTENANCE);
206 defined('SDE_VERSION_DAYNO') || define('SDE_VERSION_DAYNO', "1");
207 
static get($sChannel="default", $sLogRoot="")
Definition: CLogger.php:90
static init($sChannel="default", $sLogRoot="")
Definition: CLogger.php:43
static add($aConfig, $sName=null)
Definition: CConfig.php:30