/** * Loads a module object by name. * The only difference with exists() is that the $module parameter will be * assigned the found module. * * @param string $moduleName The name of the module to find (ex: content) * @param mixed $module This parameter will receive the found module object * @param array|string * Either an array of path or a single path string. These will be * used as additionnal locations that will be looked into * @param boolean $showError * If true an error will be shown if the module it not found. * @return eZModule The eZModule object, or null if the module wasn't found * @see exists() */ static function findModule($moduleName, $module = null, $pathList = null, $showError = false) { if ($pathList === null) { $pathList = array(); } else { if (!is_array($pathList)) { $pathList = array($pathList); } } $searchPathList = eZModule::globalPathList(); if ($searchPathList === null) { $searchPathList = array(); } $searchPathList = array_merge($searchPathList, $pathList); $triedList = array(); $triedDirList = array(); $foundADir = false; foreach ($searchPathList as $path) { $dir = "{$path}/{$moduleName}"; $file = "{$dir}/module.php"; if (file_exists($file)) { if ($module === null) { $module = new eZModule($path, $file, $moduleName, false); } else { $module->initialize($path, $file, $moduleName, false); } return $module; } else { if (!file_exists($dir)) { $triedDirList[] = $dir; } else { $foundADir = true; $triedList[] = $dir; } } } $msg = "Could not find module named '{$moduleName}'"; if ($foundADir) { $msg = "\nThese directories had a directory named '{$moduleName}' but did not contain the module.php file:\n" . implode(", ", $triedList) . "\n" . "This usually means it is missing or has a wrong name."; if (count($triedDirList) > 0) { $msg .= "\n\nThese directories were tried too but none of them exists:\n" . implode(', ', $triedDirList); } } else { if (count($triedDirList) > 0) { $msg .= "\nThese directories were tried but none of them exists:\n" . implode(", ", $triedDirList); } } if ($showError) { eZDebug::writeWarning($msg); } return null; }