read(); // include all files in the tools directory while ($entry) { if ((substr($entry, strlen($entry) - 4, 4) == '.inc') && is_file($toolsDirName . '/'.$entry)) { include_once($toolsDirName . '/'.$entry); } $entry = $toolsDir->read(); } // find tools classes $classList = get_declared_classes(); $return = array(); for ($i = 0; $i < sizeof($classList); $i++) { if (in_array('LAMTool', class_implements($classList[$i]))) { $return[] = $classList[$i]; } } return $return; } /** * Represents a tool. * LAM will scan lib/tools/*.inc for classes which implement this interface. There will be an * entry on the tools page inside LAM for each found class (if it matches the security level). * A LAMTool only specifies name, description and location of a tool. The tool functionality * is provided by the target page. * * @author Roland Gruber * @package tools */ interface LAMTool { /** * Returns the name of the tool. * * @return string name */ function getName(); /** * returns a description text for the tool. * * @return string description */ function getDescription(); /** * Returns a link to the tool page (relative to templates/). * * @return string link */ function getLink(); /** * Returns if the tool requires write access to LDAP. * * @return boolean true if write access is needed */ function getRequiresWriteAccess(); /** * Returns if the tool requires password change rights. * * @return boolean true if password change rights are needed */ function getRequiresPasswordChangeRights(); /** * Returns the link to the tool image (relative to graphics/) * * @return string image URL */ function getImageLink(); /** * Returns the prefered position of this tool on the tools page. * The position may be between 0 and 1000. 0 is the top position. * * @return int prefered position */ function getPosition(); } ?>