* @copyright (c) 2008-8 by leithoff-At-stylite.de
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
/**
* diverse static emailadmin hooks
*/
class emailadmin_hooks
{
// hook to plug in into admin (managable) applications list
static function admin()
{
// Only Modify the $file and $title variables.....
$title = $appname = 'emailadmin';
$file = Array(
'Site Configuration' => $GLOBALS['egw']->link('/index.php','menuaction=emailadmin.emailadmin_ui.index')
);
//Do not modify below this line
display_section($appname,$title,$file);
}
/**
* Hook called if account emailadim settings has to be modified
*
* @param array $data
* @param int $data['account_id'] numerical id
*/
static function edit_user($data)
{
//echo "called hook and function
".function_backtrace()."
";
//_debug_array($data);
if ($data['account_id'] && // can't set it on add
$GLOBALS['egw_info']['user']['apps']['emailadmin'])
{
$GLOBALS['menuData'][] = array(
'description' => 'eMailAdmin: User assigned Profile',
'url' => '/index.php',
'extradata' => 'menuaction=emailadmin.emailadmin_ui.index'
);
}
}
/**
* Hook called after group emailadim settings has to be modified
*
* @param array $data
* @param int $data['account_id'] numerical id
*/
static function edit_group($data)
{
#echo "called hook and function
";
#_debug_array($data);
# somehow the $data var seems to be quite sparsely populated, so we dont check any further
if (#!empty($data['account_id']) && $data['account_id'] < 0 && // can't set it on add
$GLOBALS['egw_info']['user']['apps']['emailadmin'])
{
$GLOBALS['menuData'][] = array(
'description' => 'eMailAdmin: Group assigned Profile',
'url' => '/index.php',
'extradata' => 'menuaction=emailadmin.emailadmin_ui.index'
);
}
}
/**
* Hook called before an account get deleted
*
* @param array $data
* @param int $data['account_id'] numerical id
* @param string $data['account_lid'] account-name
* @param int $data['new_owner'] account-id of new owner, or false if data should get deleted
*/
static function deleteaccount(array $data)
{
if((int)$data['account_id'] > 0 &&
$GLOBALS['egw_info']['user']['apps']['emailadmin'])
{
$boemailadmin = new emailadmin_bo();
$profileList = $boemailadmin->getProfileList($profileID,$appName,$groupID,(int) $data['account_id']);
if (is_array($profileList)) {
foreach ($profileList as $key => $value) {
$boemailadmin->delete($value['profileID']);
}
}
}
}
/**
* Hook called before a group get deleted
*
* @param array $data
* @param int $data['account_id'] numerical id
* @param string $data['account_name'] account-name
*/
static function deletegroup(array $data)
{
if ((int)$data['account_id'] < 0 &&
$GLOBALS['egw_info']['user']['apps']['emailadmin'])
{
$boemailadmin = new emailadmin_bo();
$profileList = $boemailadmin->getProfileList($profileID,$appName,(int) $data['account_id'],$accountID);
if (is_array($profileList)) {
foreach ($profileList as $key => $value) {
$boemailadmin->soemailadmin->deleteProfile($value['profileID']);
}
}
}
}
/**
* Detect imap and smtp server plugins from EMailAdmin's inc directory
*
* @param string|array $data location string or array with key 'location' and other params
* @return array
*/
public static function server_types($data)
{
$location = is_array($data) ? $data['location'] : $data;
$extended = is_array($data) ? $data['extended'] : false;
$types = array();
foreach(scandir($dir=EGW_INCLUDE_ROOT.'/emailadmin/inc') as $file)
{
if (!preg_match('/^class\.([^.]*(smtp|imap|postfix|dovecot|dbmail)[^.*]*)\.inc\.php$/', $file, $matches)) continue;
$class_name = $matches[1];
if (PHP_VERSION < 5.3 && !in_array($class_name, array('defaultimap', 'cyrusimap', 'emailadmin_dovecot', 'pleskimap', 'emailadmin_smtp', 'smptplesk'))) continue;
include_once($dir.'/'.$file);
if (!class_exists($class_name)) continue;
$is_imap = $class_name == 'defaultimap' || is_subclass_of($class_name, 'defaultimap');
$is_smtp = $class_name == 'emailadmin_smtp' || is_subclass_of($class_name, 'emailadmin_smtp') && $class_name != 'defaultsmtp';
if ($is_smtp && $location == 'smtp_server_types' || $is_imap && $location == 'imap_server_types')
{
$type = array(
'classname' => $class_name,
'description' => is_callable($function=$class_name.'::description') ? call_user_func($function) : $class_name,
);
if ($is_imap) $type['protocol'] = 'imap';
$types[$class_name] = $type;
}
}
if (!$extended)
{
foreach($types as $class_name => &$type)
{
$type = $type['description'];
}
}
//error_log(__METHOD__."(".array2string($data).") returning ".array2string($types));
return $types;
}
}