public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $workflowId = $request->get('id'); $workflow = $this->getRepository(Workflow::class)->getMetaDataById($workflowId); if ($workflow['client_id'] != $session->get('client/id')) { return new RedirectResponse('/general-settings/bad-link-access-denied'); } $emptyName = false; $duplicateName = false; if ($request->request->has('copy_workflow')) { $name = Util::cleanRegularInputField($request->request->get('name')); $description = Util::cleanRegularInputField($request->request->get('description')); if (empty($name)) { $emptyName = true; } $workflowAlreadyExisting = $this->getRepository(Workflow::class)->getByClientIdAndName($session->get('client/id'), $name); if ($workflowAlreadyExisting) { $duplicateName = true; } if (!$emptyName && !$workflowAlreadyExisting) { $currentDate = Util::getServerCurrentDateTime(); $this->getRepository(Workflow::class)->copy($session->get('client/id'), $workflowId, $name, $description, $currentDate); $this->getLogger()->addInfo('Copy Yongo Workflow ' . $workflow['name'], $this->getLoggerContext()); return new RedirectResponse('/yongo/administration/workflows'); } } $menuSelectedCategory = 'issue'; $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_YONGO_NAME . ' / Copy Workflow'; return $this->render(__DIR__ . '/../../../Resources/views/administration/workflow/Copy.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $clientId = $session->get('client/id'); $clientSettings = $this->getRepository(UbirimiClient::class)->getSettings($clientId); $name = Util::cleanRegularInputField($request->request->get('name')); $description = $request->request->get('description'); $location = $request->request->get('location'); $calendarId = $request->request->get('calendar'); $start = $request->request->get('start'); $end = $request->request->get('end'); $color = '#' . $request->request->get('color'); $repeatData = $request->request->get('repeat_data'); if (!empty($name)) { $date = Util::getServerCurrentDateTime(); ini_set('memory_limit', '1024M'); $eventId = $this->getRepository(CalendarEvent::class)->add($calendarId, $session->get('user/id'), $name, $description, $location, $start, $end, $color, $date, $repeatData, $clientSettings); // add the default reminders $reminders = $this->getRepository(UbirimiCalendar::class)->getReminders($calendarId); while ($reminders && ($reminder = $reminders->fetch_array(MYSQLI_ASSOC))) { $this->getRepository(CalendarEvent::class)->addReminder($eventId, $reminder['cal_event_reminder_type_id'], $reminder['cal_event_reminder_period_id'], $reminder['value']); } $this->getLogger()->addInfo('ADD EVENTS event ' . $name, $this->getLoggerContext()); } return new Response(''); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $screenId = $request->get('id'); $screenMetadata = $this->getRepository(Screen::class)->getMetaDataById($screenId); if ($screenMetadata['client_id'] != $session->get('client/id')) { return new RedirectResponse('/general-settings/bad-link-access-denied'); } $position = $request->get('position'); $fieldId = $request->get('field_id'); if ($fieldId && $position) { $this->getRepository(Screen::class)->updatePositionForField($screenId, $fieldId, $position); return new RedirectResponse('/yongo/administration/screen/configure/' . $screenId); } $fields = $this->getRepository(Field::class)->getByClient($session->get('client/id')); if ($request->request->has('add_screen_field')) { $fieldId = Util::cleanRegularInputField($request->request->get('field')); if ($fieldId != -1) { $currentDate = Util::getServerCurrentDateTime(); $lastOrder = $this->getRepository(Screen::class)->getLastOrderNumber($screenId); $this->getRepository(Screen::class)->addData($screenId, $fieldId, $lastOrder + 1, $currentDate); $this->getLogger()->addInfo('UPDATE Yongo Screen Data ' . $screenMetadata['name'], $this->getLoggerContext()); return new RedirectResponse('/yongo/administration/screen/configure/' . $screenId); } } $screenData = $this->getRepository(Screen::class)->getDataById($screenId); $menuSelectedCategory = 'issue'; $source = $request->get('source'); $projectId = null; if ($source == 'project_screen' || $source == 'project_field') { $projectId = $request->get('project_id'); } $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_YONGO_NAME . ' / Update Screen'; return $this->render(__DIR__ . '/../../../Resources/views/administration/screen/Configure.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $calendarId = $request->get('id'); $calendar = $this->getRepository(UbirimiCalendar::class)->getById($calendarId); $defaultReminders = $this->getRepository(UbirimiCalendar::class)->getReminders($calendarId); if ($calendar['client_id'] != $session->get('client/id')) { return new RedirectResponse('/general-settings/bad-link-access-denied'); } if ($request->request->has('edit_calendar_settings')) { $date = Util::getServerCurrentDateTime(); $this->getRepository(UbirimiCalendar::class)->deleteReminders($calendarId); $this->getRepository(UbirimiCalendar::class)->deleteSharesByCalendarId($calendarId); // reminder information foreach ($request->request as $key => $value) { if (strpos($key, 'reminder_type_') !== false) { $indexReminder = str_replace('reminder_type_', '', $key); $reminderType = Util::cleanRegularInputField($request->request->get($key)); $reminderValue = $request->request->get('value_reminder_' . $indexReminder); $reminderPeriod = $request->request->get('reminder_period_' . $indexReminder); // add the reminder if (is_numeric($reminderValue)) { $this->getRepository(UbirimiCalendar::class)->addReminder($calendarId, $reminderType, $reminderPeriod, $reminderValue); } } } $this->getLogger()->addInfo('UPDATE Calendar Default Reminders ' . $calendar['name'], $this->getLoggerContext()); return new RedirectResponse('/calendar/calendars'); } $menuSelectedCategory = 'calendar'; $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_CALENDAR_NAME . ' / Calendar: ' . $calendar['name'] . ' / Settings'; return $this->render(__DIR__ . '/../Resources/views/Settings.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $emptyPriorityName = false; $priorityExists = false; if ($request->request->has('new_priority')) { $name = Util::cleanRegularInputField($request->request->get('name')); $description = Util::cleanRegularInputField($request->request->get('description')); $color = Util::cleanRegularInputField($request->request->get('color')); if (empty($name)) { $emptyPriorityName = true; } // check for duplication $priority = $this->getRepository(IssueSettings::class)->getByName($session->get('client/id'), 'priority', mb_strtolower($name)); if ($priority) { $priorityExists = true; } if (!$priorityExists && !$emptyPriorityName) { $iconName = 'generic.png'; $currentDate = Util::getServerCurrentDateTime(); $this->getRepository(IssueSettings::class)->create('issue_priority', $session->get('client/id'), $name, $description, $iconName, $color, $currentDate); $this->getLogger()->addInfo('ADD Yongo Issue Priority ' . $name, $this->getLoggerContext()); return new RedirectResponse('/yongo/administration/issue/priorities'); } } $menuSelectedCategory = 'issue'; $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_YONGO_NAME . ' / Create Issue Priority'; return $this->render(__DIR__ . '/../../../../Resources/views/administration/issue/priority/Add.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $smtpServerId = $request->get('id'); $smtpServer = $this->getRepository(SMTPServer::class)->getById($smtpServerId); $session->set('selected_product_id', -1); $menuSelectedCategory = 'general_mail'; $emptyName = false; $emptyFromAddress = false; $emptyEmailPrefix = false; $emptyHostname = false; if ($request->request->has('edit_smtp')) { $name = Util::cleanRegularInputField($request->request->get('name')); $description = Util::cleanRegularInputField($request->request->get('description')); $fromAddress = Util::cleanRegularInputField($request->request->get('from_address')); $emailPrefix = Util::cleanRegularInputField($request->request->get('email_prefix')); $protocol = Util::cleanRegularInputField($request->request->get('protocol')); $hostname = Util::cleanRegularInputField($request->request->get('hostname')); $port = Util::cleanRegularInputField($request->request->get('port')); $timeout = Util::cleanRegularInputField($request->request->get('timeout')); $tls = $request->request->has('tls') ? 1 : 0; $username = Util::cleanRegularInputField($request->request->get('username')); $password = Util::cleanRegularInputField($request->request->get('password')); $date = Util::getServerCurrentDateTime(); $this->getRepository(SMTPServer::class)->updateById($smtpServerId, $name, $description, $fromAddress, $emailPrefix, $protocol, $hostname, $port, $timeout, $tls, $username, $password, $date); $this->getLogger()->addInfo('UPDATE SMTP Server ' . $name, $this->getLoggerContext()); $session->set('client/settings/smtp', $this->getRepository(SMTPServer::class)->getById($smtpServerId)); return new RedirectResponse('/general-settings/smtp-settings'); } $sectionPageTitle = $session->get('client/settings/title_name') . ' / GeneralSettings Settings / Update SMTP Server Settings'; return $this->render(__DIR__ . '/../../Resources/views/smtp/Edit.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $menuSelectedCategory = 'issue'; $emptyName = false; $fields = $this->getRepository(Field::class)->getByClient($session->get('client/id')); if ($request->request->has('add_screen')) { $name = Util::cleanRegularInputField($request->request->get('name')); $description = Util::cleanRegularInputField($request->request->get('description')); $currentDate = Util::getServerCurrentDateTime(); if (empty($name)) { $emptyName = true; } if (!$emptyName) { $screen = new Screen($session->get('client/id'), $name, $description); $screenId = $screen->save($currentDate); $order = 0; foreach ($request->request as $key => $value) { if (substr($key, 0, 6) == 'field_') { $order++; $fieldId = str_replace('field_', '', $key); $this->getRepository(Screen::class)->addData($screenId, $fieldId, $order, $currentDate); } } $this->getLogger()->addInfo('ADD Yongo Screen ' . $name, $this->getLoggerContext()); return new RedirectResponse('/yongo/administration/screens'); } } $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_YONGO_NAME . ' / Create Screen'; return $this->render(__DIR__ . '/../../../Resources/views/administration/screen/Add.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $fieldConfigurationId = $request->get('field_configuration_id'); $fieldId = $request->get('id'); $fieldConfiguration = $this->getRepository(FieldConfiguration::class)->getMetaDataById($fieldConfigurationId); $field = $this->getRepository(Field::class)->getById($fieldId); $screens = $this->getRepository(Screen::class)->getAll($session->get('client/id')); if ($request->request->has('edit_field_configuration_screen')) { $currentDate = Util::getServerCurrentDateTime(); $this->getRepository(Screen::class)->deleteDataByFieldId($fieldId); foreach ($request->request as $key => $value) { if (substr($key, 0, 13) == 'field_screen_') { $data = str_replace('field_screen_', '', $key); $values = explode('_', $data); $fieldSelectedId = $values[0]; $screenSelectedId = $values[1]; $this->getRepository(Screen::class)->addData($screenSelectedId, $fieldSelectedId, null, $currentDate); } } return new RedirectResponse('/yongo/administration/field-configuration/edit/' . $fieldConfigurationId); } $menuSelectedCategory = 'issue'; $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_YONGO_NAME . ' / Update Field Configuration Screen'; return $this->render(__DIR__ . '/../../../../Resources/views/administration/field/configuration/EditScreen.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $projectId = $request->get('id'); $emptyName = false; $queueExists = false; $queues = $this->getRepository(Queue::class)->getByProjectId($projectId); $selectedQueueId = -1; if ($queues) { $firstQueue = $queues->fetch_array(MYSQLI_ASSOC); $selectedQueueId = $firstQueue['id']; } if ($request->request->has('new_queue')) { $name = Util::cleanRegularInputField($request->request->get('name')); $description = Util::cleanRegularInputField($request->request->get('description')); $queueDefinition = Util::cleanRegularInputField($request->request->get('definition')); if (empty($name)) { $emptyName = true; } // check for duplication $queue = $this->getRepository(Queue::class)->getByName($projectId, mb_strtolower($name)); if ($queue) { $queueExists = true; } if (!$queueExists && !$emptyName) { $currentDate = Util::getServerCurrentDateTime(); $defaultColumns = 'code#summary#priority#status#created#updated#reporter#assignee'; $queueId = $this->getRepository(Queue::class)->save($session->get('user/id'), $projectId, $name, $description, $queueDefinition, $defaultColumns, $currentDate); return new RedirectResponse('/helpdesk/queues/' . $projectId . '/' . $queueId); } } $menuSelectedCategory = 'issue'; $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_HELP_DESK_NAME . ' / Create Queue'; return $this->render(__DIR__ . '/../../Resources/views/queue/AddQueue.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $emptyName = false; $duplicateOrganization = false; $organizationId = $request->get('id'); $organization = $this->getRepository(Organization::class)->getById($organizationId); if ($request->request->has('edit_organization')) { $name = Util::cleanRegularInputField($request->request->get('name')); $description = Util::cleanRegularInputField($request->request->get('description')); if (empty($name)) { $emptyName = true; } $organizationDuplicate = $this->getRepository(Organization::class)->getByName($session->get('client/id'), mb_strtolower($name), $organizationId); if ($organizationDuplicate) { $duplicateOrganization = true; } if (!$emptyName && !$organizationDuplicate) { $currentDate = Util::getServerCurrentDateTime(); $this->getRepository(Organization::class)->updateById($organizationId, $name, $description, $currentDate); $this->getLogger()->addInfo('UPDATE Organization ' . $name, $this->getLoggerContext()); return new RedirectResponse('/helpdesk/administration/organizations'); } } $menuSelectedCategory = 'helpdesk_organizations'; $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_HELP_DESK_NAME . ' / Create Organization'; return $this->render(__DIR__ . '/../../../Resources/views/administration/organization/EditOrganization.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $clientId = UbirimiContainer::get()['session']->get('client/id'); $loggedInUserId = UbirimiContainer::get()['session']->get('user/id'); $workflowStepIdFrom = $request->request->get('step_id_from'); $workflowStepIdTo = $request->request->get('step_id_to'); $workflowId = $request->request->get('workflow_id'); $issueId = $request->request->get('issue_id'); $clientSettings = $this->getRepository(UbirimiClient::class)->getSettings($clientId); $workflowData = $this->getRepository(Workflow::class)->getDataByStepIdFromAndStepIdTo($workflowId, $workflowStepIdFrom, $workflowStepIdTo); $issue = $this->getRepository(Issue::class)->getByParameters(array('issue_id' => $issueId), $loggedInUserId); $canBeExecuted = $this->getRepository(Workflow::class)->checkConditionsByTransitionId($workflowData['id'], $loggedInUserId, $issue); if ($canBeExecuted) { $smtpSettings = $session->get('client/settings/smtp'); if ($smtpSettings) { Email::$smtpSettings = $smtpSettings; } $date = Util::getServerCurrentDateTime(); $this->getRepository(WorkflowFunction::class)->triggerPostFunctions($clientId, $issue, $workflowData, array(), $loggedInUserId, $date); // update the date_updated field $this->getRepository(Issue::class)->updateById($issueId, array('date_updated' => $date), $date); return new Response('success'); } else { return new Response('can_not_be_executed'); } }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $subTaskFlag = $request->query->has('type') ? 1 : 0; $emptyName = false; if ($request->request->has('new_type')) { $name = Util::cleanRegularInputField($request->request->get('name')); $description = Util::cleanRegularInputField($request->request->get('description')); if (empty($name)) { $emptyName = true; } if (!$emptyName) { $currentDate = Util::getServerCurrentDateTime(); $iconName = 'generic.png'; $newIssueTypeId = $this->getRepository(IssueSettings::class)->createIssueType($session->get('client/id'), $name, $description, $subTaskFlag, $iconName, $currentDate); $this->getLogger()->addInfo('ADD Yongo Issue Type ' . $name, $this->getLoggerContext()); if ($subTaskFlag) { return new RedirectResponse('/yongo/administration/issue-sub-tasks'); } return new RedirectResponse('/yongo/administration/issue-types'); } } $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_YONGO_NAME . ' / Create Issue Type'; return $this->render(__DIR__ . '/../../../../Resources/views/administration/issue/type/Add.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $emptyValue = false; $duplicateValue = false; $customFieldId = $request->get('id'); $field = $this->getRepository(Field::class)->getById($customFieldId); if ($request->request->has('new_custom_value')) { $value = Util::cleanRegularInputField($request->request->get('value')); if (empty($value)) { $emptyValue = true; } if (!$emptyValue) { $customValueExists = $this->getRepository(Field::class)->getDataByFieldIdAndValue($customFieldId, $value); if ($customValueExists) { $duplicateValue = true; } } if (!$emptyValue && !$duplicateValue) { $currentDate = Util::getServerCurrentDateTime(); $this->getRepository(Field::class)->addData($customFieldId, $value, $currentDate); $this->getLogger()->addInfo('ADD Field Custom Value ' . $value, $this->getLoggerContext()); return new RedirectResponse('/yongo/administration/custom-fields/define/' . $customFieldId); } } $menuSelectedCategory = 'issue'; $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_YONGO_NAME . ' / Add Custom Field Value'; return $this->render(__DIR__ . '/../../../../Resources/views/administration/field/custom/AddValue.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $menuSelectedCategory = 'calendars'; $emptyName = false; $duplicateName = false; if ($request->request->has('confirm_new_calendar')) { $name = Util::cleanRegularInputField($request->request->get('name')); $description = Util::cleanRegularInputField($request->request->get('description')); $color = Util::cleanRegularInputField($request->request->get('color')); if (empty($name)) { $emptyName = true; } $calendarSameName = $this->getRepository(UbirimiCalendar::class)->getByName($session->get('user/id'), $name); if ($calendarSameName) { $duplicateName = true; } if (!$emptyName && !$duplicateName) { $currentDate = Util::getServerCurrentDateTime(); $calendarId = $this->getRepository(UbirimiCalendar::class)->save($session->get('user/id'), $name, $description, $color, $currentDate); // add default reminders $this->getRepository(UbirimiCalendar::class)->addReminder($calendarId, ReminderType::REMINDER_EMAIL, ReminderPeriod::PERIOD_MINUTE, 30); $this->getLogger()->addInfo('ADD EVENTS calendar ' . $name, $this->getLoggerContext()); return new RedirectResponse('/calendar/calendars'); } } $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_CALENDAR_NAME . ' / Create Calendar'; return $this->render(__DIR__ . '/../Resources/views/Add.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $Id = $request->get('id'); $issueType = $this->getRepository(IssueType::class)->getById($Id); if ($issueType['client_id'] != $session->get('client/id')) { return new RedirectResponse('/general-settings/bad-link-access-denied'); } $emptyName = false; $typeExists = false; if ($request->request->has('edit_type')) { $name = Util::cleanRegularInputField($request->request->get('name')); $description = Util::cleanRegularInputField($request->request->get('description')); if (empty($name)) { $emptyName = true; } // check for duplication $type = $this->getRepository(IssueSettings::class)->getByName($session->get('client/id'), 'type', mb_strtolower($name), $Id); if ($type) { $typeExists = true; } if (!$typeExists && !$emptyName) { $currentDate = Util::getServerCurrentDateTime(); $this->getRepository(IssueType::class)->updateById($Id, $name, $description, $currentDate); $this->getLogger()->addInfo('UPDATE Yongo Issue Type ' . $name, $this->getLoggerContext()); return new RedirectResponse('/yongo/administration/issue-sub-tasks'); } } $menuSelectedCategory = 'issue'; $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_YONGO_NAME . ' / Update Issue Type'; return $this->render(__DIR__ . '/../../../../Resources/views/administration/issue/type/Edit.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $loggedInUserId = $session->get('user/id'); $workLogId = $request->request->get('id'); $issueId = $request->request->get('issue_id'); $remainingTime = $request->request->get('remaining'); $workLog = $this->getRepository(WorkLog::class)->getById($workLogId); $timeSpent = $workLog['time_spent']; $this->getRepository(WorkLog::class)->deleteById($workLogId); $issueQueryParameters = array('issue_id' => $issueId); $issue = $this->getRepository(Issue::class)->getByParameters($issueQueryParameters, $session->get('user/id')); $previousEstimate = $issue['remaining_estimate']; if ($remainingTime == 'automatic') { $remainingTime = '+' . $timeSpent; } $remainingTime = $this->getRepository(WorkLog::class)->adjustRemainingEstimate($issue, $timeSpent, $remainingTime, $session->get('yongo/settings/time_tracking_hours_per_day'), $session->get('yongo/settings/time_tracking_days_per_week'), $session->get('user/id')); $currentDate = Util::getServerCurrentDateTime(); $fieldChanges = array(array('time_spent', $workLog['time_spent'], 0), array('remaining_estimate', $previousEstimate, $remainingTime), array('worklog_time_spent', $workLog['time_spent'], null)); $this->getRepository(Issue::class)->updateHistory($issue['id'], $session->get('user/id'), $fieldChanges, $currentDate); // update the date_updated field $this->getRepository(Issue::class)->updateById($issueId, array('date_updated' => $currentDate), $currentDate); // send the email notification $project = $this->getRepository(YongoProject::class)->getById($issue['issue_project_id']); $issueEventData = array('user_id' => $loggedInUserId, 'remaining_estimate' => $remainingTime, 'time_spent' => $workLog['time_spent']); $issueEvent = new IssueEvent($issue, $project, IssueEvent::STATUS_UPDATE, $issueEventData); UbirimiContainer::get()['dispatcher']->dispatch(YongoEvents::YONGO_ISSUE_WORK_LOG_DELETED, $issueEvent); return new Response($remainingTime); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $emptyName = false; $allIssueTypes = $this->getRepository(IssueType::class)->getAll($session->get('client/id')); if ($request->request->has('new_issue_type_screen_scheme')) { $name = Util::cleanRegularInputField($request->request->get('name')); $description = Util::cleanRegularInputField($request->request->get('description')); if (empty($name)) { $emptyName = true; } if (!$emptyName) { $issueTypeScreenScheme = new IssueTypeScreenScheme($session->get('client/id'), $name, $description); $currentDate = Util::getServerCurrentDateTime(); $issueTypeScreenSchemeId = $issueTypeScreenScheme->save($currentDate); $issueTypes = $this->getRepository(IssueType::class)->getAll($session->get('client/id')); while ($issueType = $issueTypes->fetch_array(MYSQLI_ASSOC)) { $this->getRepository(IssueTypeScreenScheme::class)->addData($issueTypeScreenSchemeId, $issueType['id'], $currentDate); } $this->getLogger()->addInfo('ADD Yongo Issue Type Screen Scheme ' . $name, $this->getLoggerContext()); return new RedirectResponse('/yongo/administration/screens/issue-types'); } } $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_YONGO_NAME . ' / Create Issue Type Screen Scheme'; return $this->render(__DIR__ . '/../../../../Resources/views/administration/screen/issue_type_scheme/Add.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $permissionRoleId = $request->get('id'); $perm_role = $this->getRepository(Role::class)->getById($permissionRoleId); if ($perm_role['client_id'] != $session->get('client/id')) { return new RedirectResponse('/general-settings/bad-link-access-denied'); } $emptyName = false; $alreadyExists = false; if ($request->request->has('confirm_edit_perm_role')) { $name = Util::cleanRegularInputField($request->request->get('name')); $description = Util::cleanRegularInputField($request->request->get('description')); if (empty($name)) { $emptyName = true; } $role = $this->getRepository(Role::class)->getByName($session->get('client/id'), $name, $permissionRoleId); if ($role) { $alreadyExists = true; } if (!$emptyName && !$alreadyExists) { $date = Util::getServerCurrentDateTime(); $this->getRepository(Role::class)->updateById($permissionRoleId, $name, $description, $date); $this->getLogger()->addInfo('UPDATE Yongo Project Role ' . $name, $this->getLoggerContext()); return new RedirectResponse('/yongo/administration/roles'); } } $menuSelectedCategory = 'user'; $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_YONGO_NAME . ' / Update Project Role'; return $this->render(__DIR__ . '/../../../Resources/views/administration/role/Edit.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $loggedInUserId = $session->get('user/id'); $issueId = $request->request->get('id'); $timeSpentPost = trim(str_replace(" ", '', $request->request->get('time_spent'))); $dateStartedString = $request->request->get('date_started'); $remainingTime = $request->request->get('remaining'); $comment = $request->request->get('comment'); $dateStarted = \DateTime::createFromFormat('d-m-Y H:i', $dateStartedString); $dateStartedString = date_format($dateStarted, 'Y-m-d H:i'); if (is_numeric($timeSpentPost)) { $timeSpentPost = $timeSpentPost . $session->get('yongo/settings/time_tracking_default_unit'); } if ($timeSpentPost) { $currentDate = Util::getServerCurrentDateTime(); $issueQueryParameters = array('issue_id' => $issueId); $issue = $this->getRepository(Issue::class)->getByParameters($issueQueryParameters, $loggedInUserId); $this->getRepository(WorkLog::class)->addLog($issueId, $loggedInUserId, $timeSpentPost, $dateStartedString, $comment, $currentDate); $remainingTime = $this->getRepository(WorkLog::class)->adjustRemainingEstimate($issue, $timeSpentPost, $remainingTime, $session->get('yongo/settings/time_tracking_hours_per_day'), $session->get('yongo/settings/time_tracking_days_per_week'), $loggedInUserId); $fieldChanges = array(array('time_spent', null, $timeSpentPost), array('remaining_estimate', $issue['remaining_estimate'], $remainingTime)); $this->getRepository(Issue::class)->updateHistory($issue['id'], $loggedInUserId, $fieldChanges, $currentDate); // update the date_updated field $this->getRepository(Issue::class)->updateById($issueId, array('date_updated' => $currentDate), $currentDate); $project = $this->getRepository(YongoProject::class)->getById($issue['issue_project_id']); $issueEventData = array('user_id' => $loggedInUserId, 'comment' => $comment, 'date_started' => $dateStartedString, 'time_spent' => $timeSpentPost); $issueEvent = new IssueEvent($issue, $project, IssueEvent::STATUS_UPDATE, $issueEventData); UbirimiContainer::get()['dispatcher']->dispatch(YongoEvents::YONGO_ISSUE_WORK_LOGGED, $issueEvent); } if (null == $remainingTime || '' == $remainingTime) { $remainingTime = -1; } return new Response($remainingTime); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $clientId = $session->get('client/id'); $loggedInUserId = $session->get('user/id'); $stepPropertyId = $request->get('id'); $stepProperty = $this->getRepository(Workflow::class)->getStepPropertyById($stepPropertyId); $step = $this->getRepository(Workflow::class)->getStepById($stepProperty['workflow_step_id']); $stepId = $step['id']; $workflowId = $step['workflow_id']; $workflowMetadata = $this->getRepository(Workflow::class)->getMetaDataById($workflowId); $allProperties = $this->getRepository(Workflow::class)->getSystemWorkflowProperties(); $emptyValue = false; $duplicateKey = false; $value = $stepProperty['value']; if ($request->request->has('edit_property')) { $keyId = Util::cleanRegularInputField($request->request->get('key')); $value = Util::cleanRegularInputField($request->request->get('value')); if (empty($value)) { $emptyValue = true; } if (!$emptyValue) { $duplicateKey = $this->getRepository(Workflow::class)->getStepKeyByStepIdAndKeyId($stepId, $keyId, $stepProperty['id']); if (!$duplicateKey) { $currentDate = Util::getServerCurrentDateTime(); $this->getRepository(Workflow::class)->updateStepPropertyById($stepPropertyId, $keyId, $value, $currentDate); $this->getLogger()->addInfo('UPDATE Yongo Workflow Step Property', $this->getLoggerContext()); return new RedirectResponse('/yongo/administration/workflow/view-step-properties/' . $stepId); } } } $menuSelectedCategory = 'issue'; $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_YONGO_NAME . ' / Update Workflow Step Property'; return $this->render(__DIR__ . '/../../../../../Resources/views/administration/workflow/step/property/Edit.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $menuSelectedCategory = 'agile'; $projects = $this->getRepository(UbirimiClient::class)->getProjectsByPermission($session->get('client/id'), $session->get('user/id'), Permission::PERM_BROWSE_PROJECTS); $noProjectSelected = false; $emptyName = false; if ($request->request->has('confirm_new_board')) { $name = Util::cleanRegularInputField($request->request->get('name')); $description = Util::cleanRegularInputField($request->request->get('description')); $projectsInBoard = $request->request->get('project'); if (!$projectsInBoard) { $noProjectSelected = true; } if (empty($name)) { $emptyName = true; } if (!$emptyName && !$noProjectSelected) { $definitionData = 'project=' . implode('|', $projectsInBoard); $date = Util::getServerCurrentDateTime(); $filterId = $this->getRepository(IssueFilter::class)->save($session->get('user/id'), 'Filter for ' . $name, 'Filter created automatically for agile board ' . $name, $definitionData, $date); $board = new Board($session->get('client/id'), $filterId, $name, $description, $projectsInBoard); $currentDate = Util::getServerCurrentDateTime(); $boardId = $board->save($session->get('user/id'), $currentDate); $board->addDefaultColumnData($session->get('client/id'), $boardId); $this->getLogger()->addInfo('ADD Cheetah Agile Board ' . $name, $this->getLoggerContext()); return new RedirectResponse('/agile/boards'); } } $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_CHEETAH_NAME . ' / Create Board'; return $this->render(__DIR__ . '/../../Resources/views/board/Add.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $loggedInUserId = $session->get('user/id'); $issueId = $request->request->get('issue_id'); $attachIdsToBeKept = $request->request->get('attach_ids'); $comment = Util::cleanRegularInputField($request->request->get('comment')); if (!is_array($attachIdsToBeKept)) { $attachIdsToBeKept = array(); } Util::manageModalAttachments($issueId, $session->get('user/id'), $attachIdsToBeKept); if (!empty($comment)) { $currentDate = Util::getServerCurrentDateTime(); $this->getRepository(IssueComment::class)->add($issueId, $session->get('user/id'), $comment, $currentDate); } // send email notification $issueQueryParameters = array('issue_id' => $issueId); $issue = $this->getRepository(Issue::class)->getByParameters($issueQueryParameters, $loggedInUserId); $project = $this->getRepository(YongoProject::class)->getById($issue['issue_project_id']); $issueEventData = array('user_id' => $loggedInUserId, 'attachmentIds' => UbirimiContainer::get()['session']->get('added_attachments_in_screen'), 'comment' => $comment); $issueEvent = new IssueEvent($issue, $project, IssueEvent::STATUS_UPDATE, $issueEventData); UbirimiContainer::get()['dispatcher']->dispatch(YongoEvents::YONGO_ISSUE_ADD_ATTACHMENT, $issueEvent); UbirimiContainer::get()['session']->remove('added_attachments_in_screen'); return new Response(''); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $issueTypes = FieldType::getAll($session->get('client/id')); $projects = $this->getRepository(YongoProject::class)->getByClientId($session->get('client/id')); $fieldTypeCode = $request->get('type'); $emptyName = false; $duplicateName = false; if ($request->request->has('finish_custom_field')) { $name = Util::cleanRegularInputField($request->request->get('name')); $description = Util::cleanRegularInputField($request->request->get('description')); $issueType = $request->request->get('issue_type'); $project = $request->request->get('project'); $fieldType = $this->getRepository(FieldType::class)->getByCode($fieldTypeCode); $fieldTypeId = $fieldType['id']; if (empty($name)) { $emptyName = true; } else { // check for duplicate name $duplicateField = $this->getRepository(CustomField::class)->getByNameAndType($session->get('client/id'), $name, $fieldTypeId); if ($duplicateField) { $duplicateName = true; } } if (!$emptyName && !$duplicateName) { $date = Util::getServerCurrentDateTime(); $fieldId = CustomField::create($session->get('client/id'), $fieldTypeCode, $name, $description, $issueType, $project, $date); $this->getLogger()->addInfo('ADD Yongo Custom Field ' . $name, $this->getLoggerContext()); return new RedirectResponse('/yongo/administration/custom-field/edit-field-screen/' . $fieldId); } } $menuSelectedCategory = 'issue'; $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_YONGO_NAME . ' / Create Custom Field Data'; return $this->render(__DIR__ . '/../../../Resources/views/administration/field/AddData.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $emptyName = false; $duplicateName = false; if ($request->request->has('add_project_category')) { $name = Util::cleanRegularInputField($request->request->get('name')); $description = Util::cleanRegularInputField($request->request->get('description')); if (empty($name)) { $emptyName = true; } else { $data = $this->getRepository(ProjectCategory::class)->getByName($name, null, $session->get('client/id')); if ($data) { $duplicateName = true; } } if (!$emptyName && !$duplicateName) { $projectCategory = new ProjectCategory($session->get('client/id'), $name, $description); $currentDate = Util::getServerCurrentDateTime(); $projectCategory->save($currentDate); $this->getLogger()->addInfo('ADD Yongo Project Category ' . $name, $this->getLoggerContext()); return new RedirectResponse('/yongo/administration/project/categories'); } } $menuSelectedCategory = 'project'; $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_YONGO_NAME . ' / Create Project Category'; return $this->render(__DIR__ . '/../../../../Resources/views/administration/project/category/Add.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $menuSelectedCategory = 'system'; $emptyName = false; $eventId = $request->get('id'); $event = $this->getRepository(IssueEvent::class)->getById($eventId); if ($event['client_id'] != $session->get('client/id')) { return new RedirectResponse('/general-settings/bad-link-access-denied'); } if ($request->request->has('edit_event')) { $name = Util::cleanRegularInputField($request->request->get('name')); $description = Util::cleanRegularInputField($request->request->get('description')); if (empty($name)) { $emptyName = true; } if (!$emptyName) { $currentDate = Util::getServerCurrentDateTime(); $this->getRepository(IssueEvent::class)->updateById($eventId, $name, $description, $currentDate); $this->getLogger()->addInfo('UPDATE Yongo Event ' . $name, $this->getLoggerContext()); return new RedirectResponse('/yongo/administration/events'); } } $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_YONGO_NAME . ' / Update Event'; return $this->render(__DIR__ . '/../../../Resources/views/administration/event/edit.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $emptyName = false; $workflowExists = false; $workflowIssueTypeSchemes = $this->getRepository(IssueTypeScheme::class)->getByClientId($session->get('client/id'), 'workflow'); if ($request->request->has('new_workflow')) { $name = Util::cleanRegularInputField($request->request->get('name')); $description = Util::cleanRegularInputField($request->request->get('description')); if (empty($name)) { $emptyName = true; } $duplicateWorkflow = $this->getRepository(Workflow::class)->getByClientIdAndName($session->get('client/id'), mb_strtolower($name)); if ($duplicateWorkflow) { $workflowExists = true; } if (!$emptyName && !$workflowExists) { $workflowIssueTypeSchemeId = $request->request->get('workflow_issue_type_scheme'); $currentDate = $date = Util::getServerCurrentDateTime(); $workflowId = $this->getRepository(Workflow::class)->createNewMetaData($session->get('client/id'), $workflowIssueTypeSchemeId, $name, $description, $currentDate); $this->getRepository(Workflow::class)->createInitialData($session->get('client/id'), $workflowId); $this->getLogger()->addInfo('ADD Yongo Workflow ' . $name, $this->getLoggerContext()); return new RedirectResponse('/yongo/administration/workflows'); } } $menuSelectedCategory = 'issue'; $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_YONGO_NAME . ' / Create Workflow'; return $this->render(__DIR__ . '/../../../Resources/views/administration/workflow/Add.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $tagId = $request->get('id'); $tag = $this->getRepository(Tag::class)->getById($tagId); if ($tag['user_id'] != $session->get('user/id')) { return new RedirectResponse('/general-settings/bad-link-access-denied'); } $emptyName = false; $tagExists = false; if ($request->request->has('edit_tag')) { $name = Util::cleanRegularInputField($request->request->get('name')); $description = Util::cleanRegularInputField($request->request->get('description')); if (empty($name)) { $emptyName = true; } // check for duplication $tagDuplicate = $this->getRepository(Tag::class)->getByNameAndUserId($session->get('user/id'), mb_strtolower($name), $tagId); if ($tagDuplicate) { $tagExists = true; } if (!$tagExists && !$emptyName) { $date = Util::getServerCurrentDateTime(); $this->getRepository(Tag::class)->updateById($tagId, $name, $description, $date); $this->getLogger()->addInfo('UPDATE NOTEBOOK tag ' . $name, $this->getLoggerContext()); return new RedirectResponse('/quick-notes/tag/all'); } } $menuSelectedCategory = 'tags'; $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_QUICK_NOTES_NAME . ' / Notebook: ' . $tag['name'] . ' / Update'; return $this->render(__DIR__ . '/../../Resources/views/Tag/Edit.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $emptyName = false; $duplicateName = false; $name = Util::cleanRegularInputField($request->request->get('name')); $description = Util::cleanRegularInputField($request->request->get('description')); if (empty($name)) { $emptyName = true; } $notebookSameName = $this->getRepository(Notebook::class)->getByName($session->get('user/id'), $name); if ($notebookSameName) { $duplicateName = true; } if (!$emptyName && !$duplicateName) { $currentDate = Util::getServerCurrentDateTime(); $defaultFlag = 0; // get the default notebook $defaultNotebook = $this->getRepository(Notebook::class)->getDefaultByUserId($session->get('user/id')); if (!$defaultNotebook) { $defaultFlag = 1; } $notebookId = $this->getRepository(Notebook::class)->save($session->get('user/id'), $name, $description, $defaultFlag, $currentDate); $this->getLogger()->addInfo('ADD QUICK NOTES notebook ' . $name, $this->getLoggerContext()); } return new Response(''); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $projectId = $request->get('id'); $project = $this->getRepository(YongoProject::class)->getById($projectId); $emptyName = false; $alreadyExists = false; if ($request->request->has('confirm_new_release')) { $name = Util::cleanRegularInputField($request->request->get('name')); $description = Util::cleanRegularInputField($request->request->get('description')); if (empty($name)) { $emptyName = true; } $releasesDuplicate = $this->getRepository(YongoProject::class)->getVersionByName($projectId, $name); if ($releasesDuplicate) { $alreadyExists = true; } if (!$emptyName && !$alreadyExists) { $currentDate = Util::getServerCurrentDateTime(); $this->getRepository(YongoProject::class)->addVersion($projectId, $name, $description, $currentDate); $this->getLogger()->addInfo('ADD Project Version ' . $name, $this->getLoggerContext()); return new RedirectResponse('/yongo/administration/project/versions/' . $projectId); } } $menuSelectedCategory = 'project'; $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_YONGO_NAME . ' / Create Project Version'; return $this->render(__DIR__ . '/../../../../Resources/views/administration/project/version/Add.php', get_defined_vars()); }
public function indexAction(Request $request, SessionInterface $session) { Util::checkUserIsLoggedInAndRedirect(); $Id = $request->get('id'); $group = $this->getRepository(UbirimiGroup::class)->getMetadataById($Id); if ($group['client_id'] != $session->get('client/id')) { return new RedirectResponse('/general-settings/bad-link-access-denied'); } $name = $group['name']; $description = $group['description']; $emptyName = false; $duplicateName = false; if ($request->request->has('update_group')) { $name = Util::cleanRegularInputField($request->request->get('name')); $description = Util::cleanRegularInputField($request->request->get('description')); if (empty($name)) { $emptyName = true; } if (!$emptyName) { $groupAlreadyExists = $this->getRepository(UbirimiGroup::class)->getByNameAndProductId($session->get('client/id'), SystemProduct::SYS_PRODUCT_YONGO, mb_strtolower($name), $Id); if ($groupAlreadyExists) { $duplicateName = true; } } if (!$emptyName && !$duplicateName) { $currentDate = Util::getServerCurrentDateTime(); $this->getRepository(UbirimiGroup::class)->updateById($Id, $name, $description, $currentDate); $this->getLogger()->addInfo('UPDATE Yongo Group ' . $name, $this->getLoggerContext()); return new RedirectResponse('/yongo/administration/groups'); } } $menuSelectedCategory = 'user'; $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_YONGO_NAME . ' / Update Group'; return $this->render(__DIR__ . '/../../../Resources/views/administration/group/Edit.php', get_defined_vars()); }