egroupware/addressbook/inc/hook_home.inc.php
Ralf Becker 9b958eed5e "fixed birthday reminder on home for ldap:
- transfer wildcard via parameter, as it get's quoted otherwise
- searching accounts too, if accounts stored in ldap and contacts not"
2009-11-29 13:35:53 +00:00

115 lines
4.3 KiB
PHP

<?php
/**
* Addressbook - birthday reminder on home-page
*
* @package addressbook
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
if ($GLOBALS['egw_info']['user']['apps']['addressbook'] &&
($days = $GLOBALS['egw_info']['user']['preferences']['addressbook']['mainscreen_showbirthdays']) &&
$GLOBALS['egw_info']['server']['hide_birthdays'] != 'yes')
{
echo "\n<!-- Birthday info -->\n";
if (!(int) $days) $days = 1; // old pref
$contacts = new addressbook_bo();
$month_start = date('-m-',$contacts->now_su);
$bdays =& $contacts->search(array('bday' => $month_start),array('id','n_family','n_given','bday'),'n_given,n_family','','%');
// search accounts too, if not stored in accounts repository
$extra_accounts_search = $contacts->account_repository == 'ldap' && !is_null($contacts->so_accounts) &&
!$GLOBALS['egw_info']['user']['preferences']['addressbook']['hide_accounts'];
if ($extra_accounts_search && ($bdays2 = $contacts->search(array('bday' => $month_start),array('id','n_family','n_given','bday'),
'n_given,n_family','','%',false,'AND',false,array('owner' => 0))))
{
$bdays = !$bdays ? $bdays2 : array_merge($bdays,$bdays2);
}
if (($month_end = date('-m-',$contacts->now_su+$days*24*3600)) != $month_start)
{
if (($bdays2 =& $contacts->search(array('bday' => $month_end),array('id','n_family','n_given','bday'),'n_given,n_family','','%')))
{
$bdays = !$bdays ? $bdays2 : array_merge($bdays,$bdays2);
}
// search accounts too, if not stored in accounts repository
if ($extra_accounts_search && ($bdays2 = $contacts->search(array('bday' => $month_end),array('id','n_family','n_given','bday'),
'n_given,n_family','','%',false,'AND',false,array('owner' => 0))))
{
$bdays = !$bdays ? $bdays2 : array_merge($bdays,$bdays2);
}
}
unset($bdays2); unset($extra_accounts_search);
unset($month_start); unset($month_end);
if ($bdays)
{
$portalbox = CreateObject('phpgwapi.listbox',
Array(
'title' => lang('Birthdays'),
'primary' => $GLOBALS['egw_info']['theme']['navbar_bg'],
'secondary' => $GLOBALS['egw_info']['theme']['navbar_bg'],
'tertiary' => $GLOBALS['egw_info']['theme']['navbar_bg'],
'width' => '100%',
'outerborderwidth' => '0',
'header_background_image' => $GLOBALS['egw']->common->image($GLOBALS['egw']->common->get_tpl_dir('phpgwapi'),'bg_filler')
)
);
$app_id = $GLOBALS['egw']->applications->name2id('addressbook');
$GLOBALS['portal_order'][] = $app_id;
foreach(Array(
'up' => Array('url' => '/set_box.php', 'app' => $app_id),
'down' => Array('url' => '/set_box.php', 'app' => $app_id),
'close' => Array('url' => '/set_box.php', 'app' => $app_id),
'question' => Array('url' => '/set_box.php', 'app' => $app_id),
'edit' => Array('url' => '/set_box.php', 'app' => $app_id)
) as $key => $contactue)
{
$portalbox->set_controls($key,$contactue);
}
$portalbox->data = Array();
for($n = 0; $n <= $days; ++$n)
{
$day = date('-m-d',$contacts->now_su+$n*24*3600);
foreach($bdays as $contact)
{
if(substr($contact['bday'],-6) == $day)
{
if (!$ab_lang_loaded++) $GLOBALS['egw']->translation->add_app('addressbook');
switch($n)
{
case 0:
$text = lang("Today is %1's birthday!", $contact['n_given'].' '.$contact['n_family']);
break;
case 1:
$text = lang("Tomorrow is %1's birthday.", $contact['n_given'].' '.$contact['n_family']);
break;
default:
list($y,$m,$d) = explode('-',$contact['bday']);
if ($GLOBALS['egw_info']['server']['hide_birthdays'] == 'dateonly') $y = '';
$text = lang("In %1 days (%2) is %3's birthday.",$n,
$GLOBALS['egw']->common->dateformatorder($y,$m,$d,true),
$contact['n_given'].' '.$contact['n_family']);
break;
}
$portalbox->data[] = array(
'text' => $text,
'link' => $GLOBALS['egw']->link('/index.php','menuaction=addressbook.addressbook_ui.view&contact_id=' . $contact['id'])
);
}
}
}
if(count($portalbox->data))
{
echo $portalbox->draw();
}
unset($portalbox);
unset($days); unset($day);
unset($n); unset($y); unset($m); unset($d);
}
unset($contacts); unset($bdays);
echo "\n<!-- Birthday info -->\n";
}