* @package admin
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
use EGroupware\Api;
use EGroupware\Api\Egw;
/**
* Class to admin cron-job like timed calls of eGroupWare methods
*/
class admin_asyncservice
{
var $public_functions = array(
'index' => True,
);
function index()
{
if ($GLOBALS['egw']->acl->check('asyncservice_acc',1,'admin'))
{
Egw::redirect_link('/index.php');
}
$GLOBALS['egw_info']['flags']['app_header'] = lang('Admin').' - '.lang('Asynchronous timed services');
Api\Framework::bodyClass('scrollVertical');
echo $GLOBALS['egw']->framework->header();
$async = new Api\Asyncservice(); // use an own instance, as we might set debug=True
$async->debug = !!$_POST['debug'];
$units = array(
'year' => lang('Year'),
'month' => lang('Month'),
'day' => lang('Day'),
'dow' => lang('Day of week
(0-6, 0=Sun)'),
'hour' => lang('Hour
(0-23)'),
'min' => lang('Minute')
);
if ($_POST['send'] || $_POST['test'] || $_POST['cancel'] || $_POST['install'] || $_POST['deinstall'] || $_POST['update'] || isset($_POST['asyncservice']))
{
$times = array();
foreach($units as $u => $ulabel)
{
if ($_POST[$u] !== '')
{
$times[$u] = $_POST[$u];
}
}
if ($_POST['test'])
{
if (strpos($GLOBALS['egw_info']['user']['account_email'],'@') === false)
{
echo '
'.htmlspecialchars(lang("You have no email address for your user set !!!"))."
\n"; } elseif (!$async->set_timer($times,'test','admin.admin_asyncservice.test',$GLOBALS['egw_info']['user']['account_email'])) { echo ''.htmlspecialchars(lang("Error setting timer, wrong syntax or maybe there's one already running !!!"))."
\n"; } } if ($_POST['cancel']) { if (!$async->cancel_timer('test')) { echo ''.htmlspecialchars(lang("Error canceling timer, maybe there's none set !!!"))."
\n"; } } if ($_POST['install'] || $_POST['deinstall']) { if (!($install = $async->install($_POST['install'] ? $times : False))) { echo ''.htmlspecialchars(lang('Error: %1 not found or other error !!!',$async->crontab))."
\n"; } $_POST['asyncservice'] = $_POST['deinstall'] ? 'fallback' : 'crontab'; } } else { $times = array('min' => '*/5'); // set some default } echo '