I must admit that this error report is ridiculous. Have you changed any files in the /include directory?
Here is why it's funny...
1. EPESI loads installed modules
File: /home/mckgen/public_html/crm/include/epesi.php
line 243
function called: load_modules()
2. what includes common files
File: /home/mckgen/public_html/crm/include/module_manager.php
line 823
function called: include_common("Base_RegionalSettings", "0")
3. this checks if Base_RegionalSettings inherits from ModuleCommon...
if(class_exists($x, false)) {
if(!array_key_exists('ModuleCommon',class_parents($x)))
trigger_error('Module '.$path.': Common class should extend ModuleCommon class.',E_USER_ERROR);
call_user_func(array($x, 'Instance'), $class_name);
return true;
4. ...and it does, because we didn't receive error "Common class should extend..."
but ModuleCommon in include/module_common.php should contain
Instance method
class ModuleCommon extends ModulePrimitive {
/* backward compatibility code */
public static final function acl_check() {
return false;
}
/**
* Singleton.
*
* @return object
*/
public static final function Instance($arg=null) {
static $obj;
if(isset($arg)) $obj = $arg;
elseif(is_string($obj)) {
$cl = $obj.'Common';
$obj = new $cl($obj);
}
return $obj;
}
}
5. Moreover Base_RegionalSettings can't be the first module to load, because it depends on the other modules:
public function requires($v) {
return array(
array('name'=>'Base/Lang','version'=>0),
array('name'=>'Base/Theme','version'=>0),
array('name'=>'Data/Countries','version'=>0),
array('name'=>'Base/Lang/Administrator','version'=>0),
array('name'=>'Base/User/Settings','version'=>0));
}
6. But those other modules didn't reported that ModuleCommon doesn't have Instance method.
My guesses about possible cause:
1. Class can't be overridden in PHP, but maybe some runtime methods do that... like runkit_method_remove. If you haven't modified EPESI files then this can't be the reason.
2. You've got broken priority array, that is responsible for loading modules AND you've got modified ModuleCommon class. [Priority is stored in modules database table for each installed module]
I can't find a situation where you didn't mess with the files.
3. Some language file is broken and I don't know how but it messes something...
I've installed clean 1.5.5 EPESI with turkish language and I don't have such issues. I've changed my language to turkish and also it's fine...