card.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662
  1. <?php
  2. /* Copyright (C) 2012 Nicolas Villa aka Boyquotes http://informetic.fr
  3. * Copyright (C) 2013 Florian Henry <florian.henry@open-concpt.pro>
  4. * Copyright (C) 2013-2015 Laurent Destailleur <eldy@users.sourceforge.net>
  5. *
  6. * This program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation; either version 3 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  18. */
  19. /**
  20. * \file htdocs/cron/card.php
  21. * \ingroup cron
  22. * \brief Cron Jobs Card
  23. */
  24. require '../main.inc.php';
  25. require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
  26. // librairie jobs
  27. require_once DOL_DOCUMENT_ROOT."/cron/class/cronjob.class.php";
  28. require_once DOL_DOCUMENT_ROOT."/core/class/html.formcron.class.php";
  29. require_once DOL_DOCUMENT_ROOT.'/core/lib/cron.lib.php';
  30. $langs->load("admin");
  31. $langs->load("cron");
  32. if (!$user->rights->cron->create) accessforbidden();
  33. $id=GETPOST('id','int');
  34. $action=GETPOST('action','alpha');
  35. $confirm=GETPOST('confirm','alpha');
  36. $cancel=GETPOST('cancel');
  37. $object = new Cronjob($db);
  38. if (!empty($id))
  39. {
  40. $result=$object->fetch($id);
  41. if ($result < 0)
  42. {
  43. setEventMessage($object->error,'errors');
  44. }
  45. }
  46. if(!empty($cancel))
  47. {
  48. if (!empty($id))
  49. {
  50. $action='';
  51. }
  52. else
  53. {
  54. Header("Location: ".DOL_URL_ROOT.'/cron/list.php?status=1');
  55. exit;
  56. }
  57. }
  58. // Delete jobs
  59. if ($action == 'confirm_delete' && $confirm == "yes" && $user->rights->cron->delete)
  60. {
  61. $result = $object->delete($user);
  62. if ($result < 0)
  63. {
  64. setEventMessage($object->error,'errors');
  65. $action='edit';
  66. }
  67. else
  68. {
  69. Header("Location: ".DOL_URL_ROOT.'/cron/list.php?status=1');
  70. exit;
  71. }
  72. }
  73. // Execute jobs
  74. if ($action == 'confirm_execute' && $confirm == "yes" && $user->rights->cron->execute)
  75. {
  76. $result=$object->run_jobs($user->login);
  77. if ($result < 0)
  78. {
  79. setEventMessage($object->error,'errors');
  80. $action='';
  81. }
  82. else
  83. {
  84. $res = $object->reprogram_jobs($user->login);
  85. if ($res > 0)
  86. {
  87. if ($object->lastresult > 0) setEventMessage($langs->trans("JobFinished"),'warnings');
  88. else setEventMessage($langs->trans("JobFinished"),'mesgs');
  89. $action='';
  90. }
  91. else
  92. {
  93. setEventMessage($object->error,'errors');
  94. $action='';
  95. }
  96. }
  97. }
  98. if ($action=='add')
  99. {
  100. $object->jobtype=GETPOST('jobtype','alpha');
  101. $object->label=GETPOST('label','alpha');
  102. $object->command=GETPOST('command','alpha');
  103. $object->priority=GETPOST('priority','int');
  104. $object->classesname=GETPOST('classesname','alpha');
  105. $object->objectname=GETPOST('objectname','alpha');
  106. $object->methodename=GETPOST('methodename','alpha');
  107. $object->params=GETPOST('params');
  108. $object->md5params=GETPOST('md5params');
  109. $object->module_name=GETPOST('module_name','alpha');
  110. $object->note=GETPOST('note');
  111. $object->datestart=dol_mktime(GETPOST('datestarthour','int'), GETPOST('datestartmin','int'), 0, GETPOST('datestartmonth','int'), GETPOST('datestartday','int'), GETPOST('datestartyear','int'));
  112. $object->dateend=dol_mktime(GETPOST('dateendhour','int'), GETPOST('dateendmin','int'), 0, GETPOST('dateendmonth','int'), GETPOST('dateendday','int'), GETPOST('dateendyear','int'));
  113. $object->unitfrequency=GETPOST('unitfrequency','int');
  114. $object->frequency=$object->unitfrequency * GETPOST('nbfrequency','int');
  115. // Add cron task
  116. $result = $object->create($user);
  117. // test du Resultat de la requete
  118. if ($result < 0) {
  119. setEventMessage($object->error,'errors');
  120. $action='create';
  121. }
  122. else {
  123. setEventMessage($langs->trans('CronSaveSucess'),'mesgs');
  124. $action='';
  125. }
  126. }
  127. // Save parameters
  128. if ($action=='update')
  129. {
  130. $object->id=$id;
  131. $object->jobtype=GETPOST('jobtype');
  132. $object->label=GETPOST('label');
  133. $object->command=GETPOST('command');
  134. $object->classesname=GETPOST('classesname','alpha');
  135. $object->priority=GETPOST('priority','int');
  136. $object->objectname=GETPOST('objectname','alpha');
  137. $object->methodename=GETPOST('methodename','alpha');
  138. $object->params=GETPOST('params');
  139. $object->md5params=GETPOST('md5params');
  140. $object->module_name=GETPOST('module_name','alpha');
  141. $object->note=GETPOST('note');
  142. $object->datestart=dol_mktime(GETPOST('datestarthour','int'), GETPOST('datestartmin','int'), 0, GETPOST('datestartmonth','int'), GETPOST('datestartday','int'), GETPOST('datestartyear','int'));
  143. $object->dateend=dol_mktime(GETPOST('dateendhour','int'), GETPOST('dateendmin','int'), 0, GETPOST('dateendmonth','int'), GETPOST('dateendday','int'), GETPOST('dateendyear','int'));
  144. $object->unitfrequency=GETPOST('unitfrequency','int');
  145. $object->frequency=$object->unitfrequency * GETPOST('nbfrequency','int');
  146. // Add cron task
  147. $result = $object->update($user);
  148. // test du Resultat de la requete
  149. if ($result < 0) {
  150. setEventMessage($object->error,'errors');
  151. $action='edit';
  152. }
  153. else {
  154. setEventMessage($langs->trans('CronSaveSucess'),'mesgs');
  155. $action='';
  156. }
  157. }
  158. if ($action=='activate')
  159. {
  160. $object->status=1;
  161. // Add cron task
  162. $result = $object->update($user);
  163. // test du Resultat de la requete
  164. if ($result < 0) {
  165. setEventMessage($object->error,'errors');
  166. $action='edit';
  167. }
  168. else {
  169. setEventMessage($langs->trans('CronSaveSucess'),'mesgs');
  170. $action='';
  171. }
  172. }
  173. if ($action=='inactive')
  174. {
  175. $object->status=0;
  176. // Add cron task
  177. $result = $object->update($user);
  178. // test du Resultat de la requete
  179. if ($result < 0) {
  180. setEventMessage($object->error,'errors');
  181. $action='edit';
  182. }
  183. else {
  184. setEventMessage($langs->trans('CronSaveSucess'),'mesgs');
  185. $action='';
  186. }
  187. }
  188. /*
  189. * View
  190. */
  191. $form = new Form($db);
  192. $formCron = new FormCron($db);
  193. llxHeader('',$langs->trans("CronAdd"));
  194. if ($action=='edit' || empty($action) || $action=='delete' || $action=='execute')
  195. {
  196. $head=cron_prepare_head($object);
  197. }
  198. elseif ($action=='create')
  199. {
  200. print_fiche_titre($langs->trans("CronTask"),'','title_setup');
  201. }
  202. if ($conf->use_javascript_ajax)
  203. {
  204. print "\n".'<script type="text/javascript" language="javascript">';
  205. print 'jQuery(document).ready(function () {
  206. function initfields()
  207. {
  208. if ($("#jobtype option:selected").val()==\'method\') {
  209. $(".blockmethod").show();
  210. $(".blockcommand").hide();
  211. }
  212. if ($("#jobtype option:selected").val()==\'command\') {
  213. $(".blockmethod").hide();
  214. $(".blockcommand").show();
  215. }
  216. }
  217. initfields();
  218. jQuery("#jobtype").change(function() {
  219. initfields();
  220. });
  221. })';
  222. print '</script>'."\n";
  223. }
  224. if ($action == 'delete')
  225. {
  226. print $form->formconfirm($_SERVER['PHP_SELF']."?id=".$object->id,$langs->trans("CronDelete"),$langs->trans("CronConfirmDelete"),"confirm_delete",'','',1);
  227. $action='';
  228. }
  229. if ($action == 'execute'){
  230. print $form->formconfirm($_SERVER['PHP_SELF']."?id=".$object->id,$langs->trans("CronExecute"),$langs->trans("CronConfirmExecute"),"confirm_execute",'','',1);
  231. $action='';
  232. }
  233. /*
  234. * Create Template
  235. */
  236. if (empty($object->status) && $action != 'create')
  237. {
  238. setEventMessage($langs->trans("CronTaskInactive"), 'warnings');
  239. }
  240. if (($action=="create") || ($action=="edit"))
  241. {
  242. print '<form name="cronform" action="'.$_SERVER["PHP_SELF"].'" method="post">';
  243. print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'."\n";
  244. if (!empty($object->id)) {
  245. print '<input type="hidden" name="action" value="update">'."\n";
  246. print '<input type="hidden" name="id" value="'.$object->id.'">'."\n";
  247. } else {
  248. print '<input type="hidden" name="action" value="add">'."\n";
  249. }
  250. dol_fiche_head('');
  251. print '<table class="border" width="100%">';
  252. print '<tr><td width="30%">';
  253. print $langs->trans('CronLabel')."</td>";
  254. print "<td><input type=\"text\" size=\"20\" name=\"label\" value=\"".$object->label."\" /> ";
  255. print "</td>";
  256. print "<td>";
  257. print "</td>";
  258. print "</tr>\n";
  259. print "<tr><td>";
  260. print $langs->trans('CronType')."</td><td>";
  261. print $formCron->select_typejob('jobtype',$object->jobtype);
  262. print "</td>";
  263. print "<td>";
  264. print "</td>";
  265. print "</tr>\n";
  266. print "<tr><td>";
  267. print $langs->trans('CronHourStart')."</td><td>";
  268. if(!empty($object->datestart))
  269. {
  270. $form->select_date($object->datestart,'datestart',1,1,'',"cronform");
  271. }
  272. else
  273. {
  274. $form->select_date('','datestart',1,1,'',"cronform");
  275. }
  276. print "</td>";
  277. print "<td>";
  278. print "</td>";
  279. print "</tr>\n";
  280. print "<tr><td>";
  281. print $langs->trans('CronDtEnd')."</td><td>";
  282. if(!empty($object->dateend)){
  283. $form->select_date($object->dateend,'dateend',1,1,'',"cronform");
  284. }
  285. else{
  286. $form->select_date('','dateend',1,1,1,"cronform");
  287. }
  288. print "</td>";
  289. print "<td>";
  290. print "</td>";
  291. print "</tr>\n";
  292. print "<tr><td>";
  293. print $langs->trans('CronPriority')."</td>";
  294. $priority=0;
  295. if (!empty($object->priority)) {
  296. $priority=$object->priority;
  297. }
  298. print "<td><input type=\"text\" size=\"2\" name=\"priority\" value=\"".$priority."\" /> ";
  299. print "</td>";
  300. print "<td>";
  301. print "</td>";
  302. print "</tr>\n";
  303. print "<tr><td>";
  304. print $langs->trans('CronEvery')."</td>";
  305. print "<td><select name=\"nbfrequency\">";
  306. for($i=1; $i<=60; $i++)
  307. {
  308. if (! empty($object->unitfrequency) && ($object->frequency/$object->unitfrequency) == $i)
  309. {
  310. print "<option value='".$i."' selected>".$i."</option>";
  311. }
  312. else
  313. {
  314. print "<option value='".$i."'>".$i."</option>";
  315. }
  316. }
  317. $input = "<input type=\"radio\" name=\"unitfrequency\" value=\"60\" id=\"frequency_minute\" ";
  318. if($object->unitfrequency=="60")
  319. {
  320. $input .= ' checked />';
  321. }
  322. else{
  323. $input .= ' />';
  324. }
  325. $input .= "<label for=\"frequency_minute\">".$langs->trans('Minutes')."</label>";
  326. print $input;
  327. $input = "<input type=\"radio\" name=\"unitfrequency\" value=\"3600\" id=\"frequency_heures\" ";
  328. if($object->unitfrequency=="3600"){
  329. $input .= ' checked />';
  330. }
  331. else{
  332. $input .= ' />';
  333. }
  334. $input .= "<label for=\"frequency_heures\">".$langs->trans('Hours')."</label>";
  335. print $input;
  336. $input = "<input type=\"radio\" name=\"unitfrequency\" value=\"86400\" id=\"frequency_jours\" ";
  337. if($object->unitfrequency=="86400"){
  338. $input .= ' checked />';
  339. }
  340. else{
  341. $input .= ' />';
  342. }
  343. $input .= "<label for=\"frequency_jours\">".$langs->trans('Days')."</label>";
  344. print $input;
  345. $input = "<input type=\"radio\" name=\"unitfrequency\" value=\"604800\" id=\"frequency_semaine\" ";
  346. if($object->unitfrequency=="604800"){
  347. $input .= ' checked />';
  348. }
  349. else{
  350. $input .= ' />';
  351. }
  352. $input .= "<label for=\"frequency_semaine\">".$langs->trans('Weeks')."</label>";
  353. print $input;
  354. print "</td>";
  355. print "<td>";
  356. print "</td>";
  357. print "</tr>\n";
  358. print '<tr class="blockmethod"><td>';
  359. print $langs->trans('CronModule')."</td><td>";
  360. print "<input type=\"text\" size=\"20\" name=\"module_name\" value=\"".$object->module_name."\" /> ";
  361. print "</td>";
  362. print "<td>";
  363. print $form->textwithpicto('',$langs->trans("CronModuleHelp"),1,'help');
  364. print "</td>";
  365. print "</tr>\n";
  366. print '<tr class="blockmethod"><td>';
  367. print $langs->trans('CronClassFile')."</td><td>";
  368. print "<input type=\"text\" size=\"20\" name=\"classesname\" value=\"".$object->classesname."\" /> ";
  369. print "</td>";
  370. print "<td>";
  371. print $form->textwithpicto('',$langs->trans("CronClassFileHelp"),1,'help');
  372. print "</td>";
  373. print "</tr>\n";
  374. print '<tr class="blockmethod"><td>';
  375. print $langs->trans('CronObject')."</td><td>";
  376. print "<input type=\"text\" size=\"20\" name=\"objectname\" value=\"".$object->objectname."\" /> ";
  377. print "</td>";
  378. print "<td>";
  379. print $form->textwithpicto('',$langs->trans("CronObjectHelp"),1,'help');
  380. print "</td>";
  381. print "</tr>\n";
  382. print '<tr class="blockmethod"><td>';
  383. print $langs->trans('CronMethod')."</td><td>";
  384. print "<input type=\"text\" size=\"20\" name=\"methodename\" value=\"".$object->methodename."\" /> ";
  385. print "</td>";
  386. print "<td>";
  387. print $form->textwithpicto('',$langs->trans("CronMethodHelp"),1,'help');
  388. print "</td>";
  389. print "</tr>\n";
  390. print '<tr class="blockmethod"><td>';
  391. print $langs->trans('CronArgs')."</td><td>";
  392. print "<input type=\"text\" size=\"20\" name=\"params\" value=\"".$object->params."\" /> ";
  393. print "</td>";
  394. print "<td>";
  395. print $form->textwithpicto('',$langs->trans("CronArgsHelp"),1,'help');
  396. print "</td>";
  397. print "</tr>\n";
  398. print '<tr class="blockcommand"><td>';
  399. print $langs->trans('CronCommand')."</td><td>";
  400. print "<input type=\"text\" size=\"50\" name=\"command\" value=\"".$object->command."\" /> ";
  401. print "</td>";
  402. print "<td>";
  403. print $form->textwithpicto('',$langs->trans("CronCommandHelp"),1,'help');
  404. print "</td>";
  405. print "</tr>\n";
  406. print '<tr><td>';
  407. print $langs->trans('CronNote')."</td><td>";
  408. $doleditor = new DolEditor('note', $object->note, '', 160, 'dolibarr_notes', 'In', true, false, 0, 4, 90);
  409. $doleditor->Create();
  410. print "</td>";
  411. print "<td>";
  412. print "</td>";
  413. print "</tr>\n";
  414. print '</table>';
  415. dol_fiche_end();
  416. print '<div align="center">';
  417. print '<input type="submit" name="save" class="button" value="'.$langs->trans("Save").'">';
  418. print '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
  419. print '<input type="submit" name="cancel" class="button" value="'.$langs->trans("Cancel").'">';
  420. print "</div>";
  421. print "</form>\n";
  422. }
  423. else
  424. {
  425. /*
  426. * view card
  427. */
  428. dol_fiche_head($head, 'card', $langs->trans("CronTask"), 0, 'cron');
  429. // box add_jobs_box
  430. print '<table class="border" width="100%">';
  431. print '<tr><td width="30%">';
  432. print $langs->trans('CronId')."</td>";
  433. print "<td>".$form->showrefnav($object, 'id', $linkback, 1, 'rowid', 'id');
  434. print "</td></tr>\n";
  435. print '<tr><td>';
  436. print $langs->trans('CronLabel')."</td>";
  437. print "<td>".$object->label;
  438. print "</td></tr>";
  439. print "<tr><td>";
  440. print $langs->trans('CronType')."</td><td>";
  441. print $formCron->select_typejob('jobtype',$object->jobtype,1);
  442. print "</td></tr>";
  443. print "<tr><td>";
  444. print $langs->trans('CronHourStart')."</td><td>";
  445. if(!empty($object->datestart)) {print dol_print_date($object->datestart,'dayhourtext');} else {print $langs->trans('CronNone');}
  446. print "</td></tr>";
  447. print "<tr><td>";
  448. print $langs->trans('CronDtEnd')."</td><td>";
  449. if(!empty($object->dateend)) {print dol_print_date($object->dateend,'dayhourtext');} else {print $langs->trans('CronNone');}
  450. print "</td></tr>";
  451. print "<tr><td>";
  452. print $langs->trans('CronPriority')."</td>";
  453. print "<td>".$object->priority;
  454. print "</td></tr>";
  455. print "<tr><td>";
  456. print $langs->trans('CronNbRun')."</td>";
  457. print "<td>".$object->nbrun;
  458. print "</td></tr>";
  459. print "<tr><td>";
  460. print $langs->trans('CronEvery')."</td>";
  461. print "<td>";
  462. if($object->unitfrequency == "60") print $langs->trans('CronEach')." ".($object->frequency/$object->unitfrequency)." ".$langs->trans('Minutes');
  463. if($object->unitfrequency == "3600") print $langs->trans('CronEach')." ".($object->frequency/$object->unitfrequency)." ".$langs->trans('Hours');
  464. if($object->unitfrequency == "86400") print $langs->trans('CronEach')." ".($object->frequency/$object->unitfrequency)." ".$langs->trans('Days');
  465. if($object->unitfrequency == "604800") print $langs->trans('CronEach')." ".($object->frequency/$object->unitfrequency)." ".$langs->trans('Weeks');
  466. print "</td></tr>";
  467. print '<tr class="blockmethod"><td>';
  468. print $langs->trans('CronModule')."</td><td>";
  469. print $object->module_name;
  470. print "</td></tr>";
  471. print '<tr class="blockmethod"><td>';
  472. print $langs->trans('CronClassFile')."</td><td>";
  473. print $object->classesname;
  474. print "</td></tr>";
  475. print '<tr class="blockmethod"><td>';
  476. print $langs->trans('CronObject')."</td><td>";
  477. print $object->objectname;
  478. print "</td></tr>";
  479. print '<tr class="blockmethod"><td>';
  480. print $langs->trans('CronMethod')."</td><td>";
  481. print $object->methodename;
  482. print "</td></tr>";
  483. print '<tr class="blockmethod"><td>';
  484. print $langs->trans('CronArgs')."</td><td>";
  485. print $object->params;
  486. print "</td></tr>";
  487. print '<tr class="blockcommand"><td>';
  488. print $langs->trans('CronCommand')."</td><td>";
  489. print $object->command;
  490. print "</td></tr>";
  491. print '<tr><td>';
  492. print $langs->trans('CronNote')."</td><td>";
  493. print $object->note;
  494. print "</td></tr>";
  495. print '<tr><td>';
  496. print $langs->trans('Active')."</td><td>";
  497. print yn($object->status);
  498. print "</td></tr>";
  499. print '</table>';
  500. print '<br>';
  501. print '<table class="border" width="100%">';
  502. print '<tr><td width="30%">';
  503. print $langs->trans('CronDtLastLaunch')."</td><td>";
  504. if(!empty($object->datelastrun)) {print dol_print_date($object->datelastrun,'dayhourtext');} else {print $langs->trans('CronNone');}
  505. print "</td></tr>";
  506. print '<tr><td>';
  507. print $langs->trans('CronDtNextLaunch');
  508. print ' ('.$langs->trans('CronFrom').')';
  509. print "</td><td>";
  510. if(!empty($object->datenextrun)) {print dol_print_date($object->datenextrun,'dayhourtext');} else {print $langs->trans('CronNone');}
  511. print "</td></tr>";
  512. print '<tr><td>';
  513. print $langs->trans('CronDtLastResult')."</td><td>";
  514. if(!empty($object->datelastresult)) {print dol_print_date($object->datelastresult,'dayhourtext');} else {print $langs->trans('CronNone');}
  515. print "</td></tr>";
  516. print '<tr><td>';
  517. print $langs->trans('CronLastResult')."</td><td>";
  518. print $object->lastresult;
  519. print "</td></tr>";
  520. print '<tr><td>';
  521. print $langs->trans('CronLastOutput')."</td><td>";
  522. print nl2br($object->lastoutput);
  523. print "</td></tr>";
  524. print '</table>';
  525. dol_fiche_end();
  526. print "\n\n<div class=\"tabsAction\">\n";
  527. if (! $user->rights->cron->create) {
  528. print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->transnoentitiesnoconv("NotEnoughPermissions")).'">'.$langs->trans("Edit").'</a>';
  529. } else {
  530. print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?action=edit&id='.$object->id.'">'.$langs->trans("Edit").'</a>';
  531. }
  532. if (! $user->rights->cron->delete) {
  533. print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->transnoentitiesnoconv("NotEnoughPermissions")).'">'.$langs->trans("Delete").'</a>';
  534. } else {
  535. print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?action=delete&id='.$object->id.'">'.$langs->trans("Delete").'</a>';
  536. }
  537. if (! $user->rights->cron->create) {
  538. print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->transnoentitiesnoconv("NotEnoughPermissions")).'">'.$langs->trans("CronStatusActiveBtn").'/'.$langs->trans("CronStatusInactiveBtn").'</a>';
  539. } else {
  540. if (empty($object->status)) {
  541. print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?action=activate&id='.$object->id.'">'.$langs->trans("CronStatusActiveBtn").'</a>';
  542. } else {
  543. print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?action=inactive&id='.$object->id.'">'.$langs->trans("CronStatusInactiveBtn").'</a>';
  544. }
  545. }
  546. if ((empty($user->rights->cron->execute)))
  547. {
  548. print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->transnoentitiesnoconv("NotEnoughPermissions")).'">'.$langs->trans("CronExecute").'</a>';
  549. }
  550. else if (empty($object->status))
  551. {
  552. print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->transnoentitiesnoconv("TaskDisabled")).'">'.$langs->trans("CronExecute").'</a>';
  553. }
  554. else {
  555. print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?action=execute&id='.$object->id.'">'.$langs->trans("CronExecute").'</a>';
  556. }
  557. print '</div>';
  558. print '<br>';
  559. }
  560. llxFooter();
  561. $db->close();