Changeset 2665
- Timestamp:
- 10/12/06 03:46:11 (7 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
freepbx/trunk/amp_conf/htdocs/admin/functions.inc.php
r2656 r2665 1148 1148 // get info on only one module 1149 1149 $modules[$module] = _module_readxml($module); 1150 1151 // query to get just this one 1150 1152 $sql = 'SELECT * FROM modules WHERE modulename = "'.$module.'"'; 1151 1153 } else { … … 1162 1164 } 1163 1165 } 1166 1167 // query to get everything 1164 1168 $sql = 'SELECT * FROM modules'; 1165 1169 } … … 1222 1226 */ 1223 1227 function module_checkdepends($modulexml) { 1228 function comparison_error_message($module, $reqversion, $version, $operator) { 1229 switch ($operator) { 1230 case 'lt': case '<': 1231 return $module.' version below '.$reqversion.' is required, you have '.$version; 1232 break; 1233 case 'le': case '<='; 1234 return $module.' version '.$reqversion.' or below is required, you have '.$version 1235 break; 1236 case 'gt': case '>'; 1237 return 'A version newer than '.$reqversion.' required, you have '.$version; 1238 break; 1239 case 'ne': case '!=': case '<>': 1240 return 'Your '.$module.' version ('.$reqversion.') is incompatible.'; 1241 break; 1242 case 'eq': case '==': case '=': 1243 return 'Only '.$module.' version '.$reqversion.' is compatible, you have '.$version; 1244 break; 1245 default: 1246 case 'ge': case '>=': 1247 return $module.' version '.$reqversion.' or higher is required, you have '.$version; 1248 } 1249 } 1250 1224 1251 $errors = array(); 1225 1252 … … 1234 1261 switch ($type) { 1235 1262 case 'version': 1236 if (preg_match('/^([a-zA-Z_]+)(\s+( >=|>|=|<|<=|!=)?(\d(\.\d)*))?$/i', $value, $matches)) {1263 if (preg_match('/^([a-zA-Z_]+)(\s+(lt|le|gt|ge|==|=|eq|!=|ne)?(\d(\.\d)*))?$/i', $value, $matches)) { 1237 1264 // matches[1] = operator, [2] = version 1265 $ver = getversion(); 1266 $ver = $ver[0][0]; // dumb PEARDB thing 1267 $operator = (!empty($matches[1]) ? $matches[1] : 'ge'); // default to >= 1268 if (! version_compare($matches[2], $ver, $operator) ) { 1269 $errors[] = comparison_error_message('FreePBX', $matches[2], $ver, $operator); 1270 } 1238 1271 } 1239 1272 break; … … 1241 1274 if (preg_match('/^([a-z_]+)(\s+(>=|>|=|<|<=|!=)?(\d(\.\d)*))?$/i', $value, $matches)) { 1242 1275 // matches[1] = modulename, [3]=comparison operator, [4] = version 1276 $modules = module_getinfo($matches[1]); 1277 if (isset($modules[$matches[1]])) { 1278 switch ($modules[$matches[1]]['status'] ) { 1279 case MODULE_STATUS_ENABLED: 1280 if (!empty($matches[4])) { 1281 // also doing version checking 1282 $operator = (!empty($matches[3]) ? $matches[3] : 'ge'); // default to >= 1283 if (! version_compare($matches[4], $modules[$matches[1]]['dbversion'], $operator) ) { 1284 $errors[] = comparison_error_message($matches[1].' module', $matches[4], $modules[$matches[1]]['dbversion'], $operator); 1285 } 1286 } 1287 break; 1288 case MODULE_STATUS_BROKEN: 1289 $errors[] = 'Module '.$matches[1].' is required, but yours is broken. You should reinstall '. 1290 'it and try again.'; 1291 break; 1292 case MODULE_STATUS_DISABLED: 1293 $errors[] = 'Module '.$matches[1].' is required, but yours is disabled. '; 1294 case MODULE_STATUS_NEEDUPGRADE: 1295 $errors[] = 'Module '.$matches[1].' is required, but yours is disabled because it needs to '. 1296 'be upgraded. Please upgrade '.$matches[1].' first, and then try again.'; 1297 default: 1298 case MODULE_STATUS_NOTINSTALLED 1299 $errors[] = 'Module '.$matches[1].' is required.'; 1300 break; 1301 } 1302 } 1243 1303 } 1244 1304 break; … … 1249 1309 break; 1250 1310 case 'engine': 1311 /**************************** 1312 * NOTE: there is special handling for this check. We want to "OR" conditions, instead of 1313 * "AND"ing like the rest of them. 1314 */ 1315 1251 1316 if (preg_match('/^([a-z_]+)(\s+(>=|>|=|<|<=|!=)?(\d(\.\d)*))?$/i', $value, $matches)) { 1252 1317 // matches[1] = engine, [3]=comparison operator, [4] = version … … 1359 1424 $dir = $amp_conf['AMPWEBROOT'].'/admin/modules/'.$modulename; 1360 1425 if (is_dir($dir) && file_exists($dir.'/module.xml')) { 1426 $xml = _module_readxml($modulename); 1427 1428 if (module_checkdepends($xml)) { 1429 // run install script(s) 1430 // enable module 1431 } 1361 1432 } 1362 1433 … … 1365 1436 1366 1437 function module_enable($modulename) { // was enableModule 1438 // checkdepends 1439 // enable module 1367 1440 } 1368 1441 … … 1379 1452 */ 1380 1453 function module_delete($modulename) { 1454 // reverse-checkdepends 1455 // -> // read each xml for enabled modules, concatenate, then parse 1456 // go through each, find any matches in depends for <module>$modulename (ignore version) 1457 module_disable($modulename); 1458 // unlink() module directory 1381 1459 } 1382 1460
