}
// Use custom fields plugin if it is enabled.
-if (in_array('cf', explode(',', $user->plugins))) {
+if ($user->isPluginEnabled('cf')) {
require_once('../plugins/CustomFields.class.php');
$custom_fields = new CustomFields($user->team_id);
$smarty->assign('custom_fields', $custom_fields);
$cl_project = $request->getParameter('project');
$cl_task = $request->getParameter('task');
$cl_billable = 1;
- if (in_array('iv', explode(',', $user->plugins)))
+ if ($user->isPluginEnabled('iv'))
$cl_billable = $request->getParameter('billable');
} else {
$cl_client = $time_rec['client_id'];
$fields = $custom_fields->get($time_rec['id']);
if ($custom_fields->fields[0]['type'] == CustomFields::TYPE_TEXT)
$cl_cf_1 = $fields[0]['value'];
- else if ($custom_fields->fields[0]['type'] == CustomFields::TYPE_DROPDOWN)
+ elseif ($custom_fields->fields[0]['type'] == CustomFields::TYPE_DROPDOWN)
$cl_cf_1 = $fields[0]['option_id'];
}
if (($cl_start == $cl_finish) && ($cl_duration == '0:00')) {
$cl_finish = '';
$cl_duration = '';
- $messages->add($i18n->getKey('form.time_edit.uncompleted'));
+ $msg->add($i18n->getKey('form.time_edit.uncompleted'));
}
}
$form = new Form('timeRecordForm');
// Dropdown for clients in MODE_TIME. Use all active clients.
-if (MODE_TIME == $user->tracking_mode && in_array('cl', explode(',', $user->plugins))) {
+if (MODE_TIME == $user->tracking_mode && $user->isPluginEnabled('cl')) {
$active_clients = ttTeamHelper::getActiveClients($user->team_id, true);
$form->addInput(array('type'=>'combobox',
'onchange'=>'fillProjectDropdown(this.value);',
'empty'=>array(''=>$i18n->getKey('dropdown.select'))));
// Dropdown for clients if the clients plugin is enabled.
- if (in_array('cl', explode(',', $user->plugins))) {
+ if ($user->isPluginEnabled('cl')) {
$active_clients = ttTeamHelper::getActiveClients($user->team_id, true);
// We need an array of assigned project ids to do some trimming.
foreach($project_list as $project)
// Only one custom field is supported at this time.
if ($custom_fields->fields[0]['type'] == CustomFields::TYPE_TEXT) {
$form->addInput(array('type'=>'text','name'=>'cf_1','value'=>$cl_cf_1));
- } else if ($custom_fields->fields[0]['type'] == CustomFields::TYPE_DROPDOWN) {
+ } elseif ($custom_fields->fields[0]['type'] == CustomFields::TYPE_DROPDOWN) {
$form->addInput(array('type'=>'combobox',
'name'=>'cf_1',
'style'=>'width: 250px;',
}
// Hidden control for record id.
$form->addInput(array('type'=>'hidden','name'=>'id','value'=>$cl_id));
-if (in_array('iv', explode(',', $user->plugins)))
+if ($user->isPluginEnabled('iv'))
$form->addInput(array('type'=>'checkbox','name'=>'billable','data'=>1,'value'=>$cl_billable));
$form->addInput(array('type'=>'hidden','name'=>'browser_today','value'=>'')); // User current date, which gets filled in on btn_save click.
$form->addInput(array('type'=>'submit','name'=>'btn_save','onclick'=>'browser_today.value=get_date()','value'=>$i18n->getKey('button.save')));
if ($request->isPost()) {
// Validate user input.
- if (in_array('cl', explode(',', $user->plugins)) && in_array('cm', explode(',', $user->plugins)) && !$cl_client)
+ if ($user->isPluginEnabled('cl') && $user->isPluginEnabled('cm') && !$cl_client)
$err->add($i18n->getKey('error.client'));
if ($custom_fields) {
if (!ttValidString($cl_cf_1, !$custom_fields->fields[0]['required'])) $err->add($i18n->getKey('error.field'), $custom_fields->fields[0]['label']);
if (!$cl_duration) {
if ('0' == $cl_duration)
$err->add($i18n->getKey('error.field'), $i18n->getKey('label.duration'));
- else if ($cl_start || $cl_finish) {
+ elseif ($cl_start || $cl_finish) {
if (!ttTimeHelper::isValidTime($cl_start))
$err->add($i18n->getKey('error.field'), $i18n->getKey('label.start'));
if ($cl_finish) {
if (!ttValidString($cl_note, true)) $err->add($i18n->getKey('error.field'), $i18n->getKey('label.note'));
// Finished validating user input.
- // Determine lock date.
- $lock_interval = $user->lock_interval;
- $lockdate = 0;
- if ($lock_interval > 0) {
- $lockdate = new DateAndTime();
- $lockdate->decDay($lock_interval);
- }
-
// This is a new date for the time record.
$new_date = new DateAndTime($user->date_format, $cl_date);
// Save record.
if ($request->getParameter('btn_save')) {
// We need to:
- // 1) Prohibit saving locked time entries in any form.
- // 2) Prohibit saving completed unlocked entries into locked interval.
+ // 1) Prohibit saving locked entries in any form.
+ // 2) Prohibit saving completed unlocked entries into locked range.
// 3) Prohibit saving uncompleted unlocked entries when another uncompleted entry exists.
// Now, step by step.
if ($err->no()) {
- // 1) Prohibit saving locked time entries in any form.
- if($lockdate && $item_date->before($lockdate))
- $err->add($i18n->getKey('error.period_locked'));
- // 2) Prohibit saving completed unlocked entries into locked interval.
- if($err->no() && $lockdate && $new_date->before($lockdate))
- $err->add($i18n->getKey('error.period_locked'));
+ // 1) Prohibit saving locked entries in any form.
+ if ($user->isDateLocked($item_date))
+ $err->add($i18n->getKey('error.range_locked'));
+
+ // 2) Prohibit saving completed unlocked entries into locked range.
+ if ($err->no() && $user->isDateLocked($new_date))
+ $err->add($i18n->getKey('error.range_locked'));
+
// 3) Prohibit saving uncompleted unlocked entries when another uncompleted entry exists.
$uncompleted = ($cl_finish == '' && $cl_duration == '');
if ($uncompleted) {
if ($res && $custom_fields) {
if ($custom_fields->fields[0]['type'] == CustomFields::TYPE_TEXT)
$res = $custom_fields->update($cl_id, $custom_fields->fields[0]['id'], null, $cl_cf_1);
- else if ($custom_fields->fields[0]['type'] == CustomFields::TYPE_DROPDOWN)
+ elseif ($custom_fields->fields[0]['type'] == CustomFields::TYPE_DROPDOWN)
$res = $custom_fields->update($cl_id, $custom_fields->fields[0]['id'], $cl_cf_1, null);
}
if ($res)
header("Location: time_delete.php?id=$cl_id");
exit();
}
-} // POST
+} // isPost
$smarty->assign('client_list', $client_list);
$smarty->assign('project_list', $project_list);