コード例 #1
0
ファイル: Watcher.php プロジェクト: spiasecki/ubirimi
 public function deleteByIssueId($issueId)
 {
     $query = "delete from yongo_issue_watch where yongo_issue_id = ?";
     $stmt = UbirimiContainer::get()['db.connection']->prepare($query);
     $stmt->bind_param("i", $issueId);
     $stmt->execute();
 }
コード例 #2
0
 public function indexAction(Request $request, SessionInterface $session)
 {
     Util::checkUserIsLoggedInAndRedirect();
     $loggedInUserId = $session->get('user/id');
     $menuSelectedCategory = 'issue';
     $clientSettings = $session->get('client/settings');
     $issues = $this->getRepository(Issue::class)->getByParameters(array('issue_id' => UbirimiContainer::get()['session']->get('bulk_change_issue_ids'), $loggedInUserId));
     if ($request->request->has('confirm')) {
         if (UbirimiContainer::get()['session']->get('bulk_change_operation_type') == 'delete') {
             $issueIds = UbirimiContainer::get()['session']->get('bulk_change_issue_ids');
             for ($i = 0; $i < count($issueIds); $i++) {
                 if (UbirimiContainer::get()['session']->get('bulk_change_send_operation_email')) {
                     $issue = $this->getRepository(Issue::class)->getByParameters(array('issue_id' => $issueIds[$i]), $loggedInUserId);
                     $issueEvent = new IssueEvent($issue, null, IssueEvent::STATUS_DELETE);
                     $this->getLogger()->addInfo('DELETE Yongo issue ' . $issue['project_code'] . '-' . $issue['nr'], $this->getLoggerContext());
                     UbirimiContainer::get()['dispatcher']->dispatch(YongoEvents::YONGO_ISSUE_EMAIL, $issueEvent);
                 }
                 $this->getRepository(Issue::class)->deleteById($issueIds[$i]);
                 $this->getRepository(IssueAttachment::class)->deleteByIssueId($issueIds[$i]);
                 // also delete the substaks
                 $childrenIssues = $this->getRepository(Issue::class)->getByParameters(array('parent_id' => $issueIds[$i]), $loggedInUserId);
                 while ($childrenIssues && ($childIssue = $childrenIssues->fetch_array(MYSQLI_ASSOC))) {
                     $this->getRepository(Issue::class)->deleteById($childIssue['id']);
                     $this->getRepository(IssueAttachment::class)->deleteByIssueId($childIssue['id']);
                 }
             }
         }
         return new RedirectResponse('/yongo/issue/search?' . UbirimiContainer::get()['session']->get('bulk_change_choose_issue_query_url'));
     }
     $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_YONGO_NAME . ' / Bulk: Operation Confirmation';
     return $this->render(__DIR__ . '/../../../Resources/views/issue/bulk/OperationConfirmation.php', get_defined_vars());
 }
コード例 #3
0
 public function indexAction(Request $request, SessionInterface $session)
 {
     Util::checkUserIsLoggedInAndRedirect();
     $entityId = $session->get('current_edit_entity_id');
     $attachments = $this->getRepository(EntityAttachment::class)->getByEntityId($entityId);
     $html = '';
     $index = 0;
     if ($attachments) {
         $entity = $this->getRepository(Entity::class)->getById($entityId);
         $html .= '<div style="width: 100%; height: 500px; overflow-y: scroll">';
         while ($attachment = $attachments->fetch_array(MYSQLI_ASSOC)) {
             // todo: check if the attachment is an image
             // get the last revision
             $attachmentRevisions = $this->getRepository(Entity::class)->getRevisionsByAttachmentId($attachment['id']);
             $lastRevisionNumber = $attachmentRevisions->num_rows;
             $html .= '<img data="/assets' . UbirimiContainer::get()['asset.documentador_entity_attachments'] . $entity['space_id'] . '/' . $entityId . '/' . $attachment['id'] . '/' . $lastRevisionNumber . '/' . $attachment['name'] . '" id="entity_existing_image_' . $attachment['id'] . '" style="float: left; padding-right: 10px; width: 240px" src="/assets' . UbirimiContainer::get()['asset.documentador_entity_attachments'] . $entity['space_id'] . '/' . $entityId . '/' . $attachment['id'] . '/' . $lastRevisionNumber . '/' . $attachment['name'] . '" />';
             $index++;
             if ($index > 4) {
                 $index = 0;
                 $html .= '<br />';
             }
         }
         $html .= '</div>';
     } else {
         $html .= '<div class="infoBox">There are no images for this page</div>';
     }
     return new \Symfony\Component\HttpFoundation\Response($html);
 }
コード例 #4
0
ファイル: SaveController.php プロジェクト: spiasecki/ubirimi
 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('');
 }
コード例 #5
0
ファイル: EventReminder.php プロジェクト: spiasecki/ubirimi
 public function deleteById($reminderId)
 {
     $query = "delete from cal_event_reminder where id = ? limit 1";
     $stmt = UbirimiContainer::get()['db.connection']->prepare($query);
     $stmt->bind_param("i", $reminderId);
     $stmt->execute();
 }
コード例 #6
0
ファイル: IssueHistory.php プロジェクト: spiasecki/ubirimi
 public function getByIssueIdAndUserId($issueId = null, $userId = null, $order = null, $resultType = null)
 {
     $query = '(select \'history_event\' as source, ' . 'issue_history.date_created, ' . 'issue_history.field as field, ' . 'issue_history.old_value as old_value, ' . 'issue_history.new_value as new_value, ' . 'issue_history.old_value_id as old_value_id, ' . 'issue_history.new_value_id as new_value_id, ' . 'null as content, ' . 'general_user.id as user_id, general_user.first_name, general_user.last_name, ' . 'yongo_issue.nr as nr, ' . 'project.code as code, ' . 'yongo_issue.id as issue_id ' . 'from issue_history ' . 'left join general_user on general_user.id = issue_history.by_user_id ' . 'left join yongo_issue on yongo_issue.id = issue_history.issue_id ' . 'left join project on project.id = yongo_issue.project_id ' . 'where ';
     if ($issueId) {
         $query .= ' issue_history.issue_id = ' . $issueId . ' ';
     }
     if ($userId) {
         $query .= ' issue_history.by_user_id = ' . $userId . ' ';
     }
     if (!$order) {
         $order = 'desc';
     }
     $query .= 'order by date_created ' . $order . ', user_id) ';
     $query .= ' UNION (select ' . "'event_commented' as source, " . 'issue_comment.date_created as date_created, ' . 'null as field, ' . 'null as old_value, ' . 'null as new_value, ' . 'null as old_value_id, ' . 'null as new_value_id, ' . 'null as content, ' . 'general_user.id as user_id, general_user.first_name, general_user.last_name, ' . 'yongo_issue.nr as nr, ' . 'project.code as code, ' . 'yongo_issue.id as issue_id ' . 'from yongo_issue ' . 'left join issue_comment on yongo_issue.id = issue_comment.issue_id ' . 'left join general_user on general_user.id = issue_comment.user_id ' . 'left join project on project.id = yongo_issue.project_id ' . 'where yongo_issue.id = ' . $issueId . ' ' . 'and issue_comment.issue_id is not null ' . 'order by date_created ' . $order . ', user_id) ';
     $stmt = UbirimiContainer::get()['db.connection']->prepare($query);
     $stmt->execute();
     $result = $stmt->get_result();
     if ($result->num_rows) {
         if ($resultType == 'array') {
             $resultArray = array();
             while ($data = $result->fetch_array(MYSQLI_ASSOC)) {
                 $resultArray[] = $data;
             }
             return $resultArray;
         } else {
             return $result;
         }
     } else {
         return null;
     }
 }
コード例 #7
0
ファイル: LogController.php プロジェクト: spiasecki/ubirimi
 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);
 }
コード例 #8
0
ファイル: SMTPServer.php プロジェクト: spiasecki/ubirimi
 public function deleteById($smtpServerId)
 {
     $query = 'delete from client_smtp_settings where id = ? limit 1';
     $stmt = UbirimiContainer::get()['db.connection']->prepare($query);
     $stmt->bind_param("i", $smtpServerId);
     $stmt->execute();
 }
コード例 #9
0
 public function indexAction(Request $request, SessionInterface $session)
 {
     Util::checkUserIsLoggedInAndRedirect();
     $menuSelectedCategory = 'svn';
     $userId = $request->query->get('id', $request->request->get('id'));
     $repoId = $request->query->get('repo_id', $request->request->get('repo_id'));
     $user = $this->getRepository(UbirimiUser::class)->getById($userId);
     $svnRepo = $this->getRepository(SvnRepository::class)->getById($repoId);
     $errors = array('empty_password' => false, 'password_mismatch' => false);
     if ($request->request->has('password') || $request->request->has('password_again')) {
         $password = Util::cleanRegularInputField($request->request->get('password'));
         $passwordAgain = Util::cleanRegularInputField($request->request->get('password_again'));
         if (empty($password)) {
             $errors['empty_password'] = true;
         }
         if ($password != $passwordAgain) {
             $errors['password_mismatch'] = true;
         }
         if (Util::hasNoErrors($errors)) {
             $this->getRepository(SvnRepository::class)->updateUserPassword($session->get('selected_svn_repo_id'), $userId, $password);
             $this->getRepository(SvnRepository::class)->updateHtpasswd($session->get('selected_svn_repo_id'), $session->get('client/company_domain'));
             $this->getRepository(SvnRepository::class)->updateAuthz();
             $svnEvent = new SvnHostingEvent($svnRepo['name'], $user, array('password' => $password));
             $this->getLogger()->addInfo(sprintf('SVN Change Password for [%s]', $svnRepo['name']), $this->getLoggerContext());
             UbirimiContainer::get()['dispatcher']->dispatch(SvnHostingEvents::PASSWORD_UPDATE, $svnEvent);
             return new Response('1');
         }
     }
     $menuSelectedCategory = 'svn';
     return $this->render(__DIR__ . '/../Resources/views/ChangePassword.php', get_defined_vars());
 }
コード例 #10
0
ファイル: IssueComponent.php プロジェクト: spiasecki/ubirimi
 public function getByIssueIdAndProjectId($issueId, $projectId, $resultType = null, $resultColumn = null)
 {
     $query = 'SELECT issue_component.id, project_component.name, project_component_id, parent_id ' . 'FROM issue_component ' . 'LEFT JOIN project_component on issue_component.project_component_id = project_component.id ' . 'WHERE issue_id = ? and project_component.project_id = ? ' . 'order by id asc';
     $stmt = UbirimiContainer::get()['db.connection']->prepare($query);
     $stmt->bind_param("ii", $issueId, $projectId);
     $stmt->execute();
     $result = $stmt->get_result();
     if ($result->num_rows) {
         if ($resultType == 'array') {
             $resultArray = array();
             while ($component = $result->fetch_array(MYSQLI_ASSOC)) {
                 if ($resultColumn) {
                     $resultArray[] = $component[$resultColumn];
                 } else {
                     $resultArray[] = $component;
                 }
             }
             return $resultArray;
         } else {
             return $result;
         }
     } else {
         return null;
     }
 }
コード例 #11
0
ファイル: WorkflowService.php プロジェクト: spiasecki/ubirimi
 public function hasEvent($clientId, $projectId, $issueTypeId)
 {
     $workflowUsed = UbirimiContainer::get()['repository']->get(YongoProject::class)->getWorkflowUsedForType($projectId, $issueTypeId);
     $creationData = UbirimiContainer::get()['repository']->get(Workflow::class)->getDataForCreation($workflowUsed['id']);
     $eventData = UbirimiContainer::get()['repository']->get(IssueEvent::class)->getByClientIdAndCode($clientId, IssueEvent::EVENT_ISSUE_CREATED_CODE);
     return UbirimiContainer::get()['repository']->get(WorkflowFunction::class)->hasEvent($creationData['id'], 'event=' . $eventData['id']);
 }
コード例 #12
0
 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');
     }
 }
コード例 #13
0
ファイル: PostController.php プロジェクト: spiasecki/ubirimi
 public function indexAction(Request $request, SessionInterface $session)
 {
     $timeTrackingDefaultUnit = $this->getRepository(UbirimiClient::class)->getYongoSetting($request->get('api_client_id'), 'time_tracking_default_unit');
     $clientSettings = $this->getRepository(UbirimiClient::class)->getSettings($request->get('api_client_id'));
     $issue = UbirimiContainer::get()['issue']->save(array('id' => $request->get('projectId')), array('resolution' => $request->get('resolution'), 'priority' => $request->get('priority'), 'type' => $request->get('type'), 'assignee' => $request->get('assignee'), 'summary' => $request->get('summary'), 'description' => $request->get('description'), 'environment' => $request->get('environment'), 'reporter' => $request->get('api_user_id'), 'due_date' => $request->get('due_date')), null, $timeTrackingDefaultUnit, $request->get('projectId'), array(), array(), $clientSettings, $request->get('api_user_id'), $request->get('api_client_id'));
     return new JsonResponse($issue);
 }
コード例 #14
0
 public function addConditionString($transitionId, $stringText)
 {
     $q = 'update workflow_condition_data set definition_data = CONCAT(definition_data, ?) where workflow_data_id = ? limit 1';
     $stmt = UbirimiContainer::get()['db.connection']->prepare($q);
     $stmt->bind_param("si", $stringText, $transitionId);
     $stmt->execute();
 }
コード例 #15
0
 public function indexAction(Request $request, SessionInterface $session)
 {
     if ($request->request->has('retrieve')) {
         $errorNotInClientDomain = false;
         $emailAddressNotExists = false;
         $httpHOST = Util::getHttpHost();
         $address = Util::cleanRegularInputField($request->request->get('address'));
         $exists = Util::checkEmailAddressExistence($address);
         if ($exists) {
             $baseURL = Util::getHttpHost();
             $userData = $this->getRepository(UbirimiUser::class)->getByEmailAddressAndBaseURL($address, $baseURL);
             if ($userData) {
                 $password = Util::updatePasswordForUserId($userData['id']);
                 $event = new UbirimiEvent(array('email' => $address, 'password' => $password));
                 UbirimiContainer::get()['dispatcher']->dispatch(UbirimiEvents::PASSWORD_RECOVER, $event);
                 return new RedirectResponse('/recover-password/response');
             } else {
                 $errorNotInClientDomain = true;
             }
         } else {
             $emailAddressNotExists = true;
         }
         return $this->render(__DIR__ . '/../Resources/views/_passwordRecoverForm.php', get_defined_vars());
     } else {
         if ($request->request->has('go_back')) {
             return new RedirectResponse('/');
         }
     }
 }
コード例 #16
0
ファイル: EmailService.php プロジェクト: spiasecki/ubirimi
 public function importUsers($repositoryName, $user)
 {
     if ($this->session->get('client/settings/smtp')) {
         Email::$smtpSettings = $this->session->get('client/settings/smtp');
         UbirimiContainer::get()['repository']->get(Email::class)->sendNewUserRepositoryNotificationEmail($this->session->get('client/id'), $user['first_name'], $user['last_name'], $user['username'], null, $user['email'], $repositoryName);
     }
 }
コード例 #17
0
 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);
 }
コード例 #18
0
 public function indexAction(Request $request, SessionInterface $session)
 {
     Util::checkUserIsLoggedInAndRedirect();
     $loggedInUserId = $session->get('user/id');
     $issuesPerPage = $session->get('user/issues_per_page');
     $searchParameters = array();
     $parseURLData = null;
     $getFilter = isset($_GET['filter']) ? $_GET['filter'] : null;
     $getPage = isset($_GET['page']) ? $_GET['page'] : 1;
     $getSortColumn = isset($_GET['sort']) ? $_GET['sort'] : 'created';
     $getSortOrder = isset($_GET['order']) ? $_GET['order'] : 'desc';
     $getSearchQuery = isset($_GET['search_query']) ? $_GET['search_query'] : null;
     $getSummaryFlag = isset($_GET['summary_flag']) ? $_GET['summary_flag'] : null;
     $getDescriptionFlag = isset($_GET['description_flag']) ? $_GET['description_flag'] : null;
     $getCommentsFlag = isset($_GET['comments_flag']) ? $_GET['comments_flag'] : null;
     $getProjectIds = isset($_GET['project']) ? explode('|', $_GET['project']) : null;
     $getAssigneeIds = isset($_GET['assignee']) ? explode('|', $_GET['assignee']) : null;
     $getReportedIds = isset($_GET['reporter']) ? explode('|', $_GET['reporter']) : null;
     $getIssueTypeIds = isset($_GET['type']) ? explode('|', $_GET['type']) : null;
     $getIssueStatusIds = isset($_GET['status']) ? explode('|', $_GET['status']) : null;
     $getIssuePriorityIds = isset($_GET['priority']) ? explode('|', $_GET['priority']) : null;
     $getProjectComponentIds = isset($_GET['component']) ? explode('|', $_GET['component']) : null;
     $getProjectVersionIds = isset($_GET['version']) ? explode('|', $_GET['version']) : null;
     $getIssueResolutionIds = isset($_GET['resolution']) ? explode('|', $_GET['resolution']) : null;
     // date filters
     $getDateDueAfter = isset($_GET['date_due_after']) ? $_GET['date_due_after'] : null;
     $getDateDueBefore = isset($_GET['date_due_before']) ? $_GET['date_due_before'] : null;
     $getDateCreatedAfter = isset($_GET['date_created_after']) ? $_GET['date_created_after'] : null;
     $getDateCreatedBefore = isset($_GET['date_created_before']) ? $_GET['date_created_before'] : null;
     $getSearchParameters = array('search_query' => $getSearchQuery, 'summary_flag' => $getSummaryFlag, 'description_flag' => $getDescriptionFlag, 'comments_flag' => $getCommentsFlag, 'project' => $getProjectIds, 'assignee' => $getAssigneeIds, 'reporter' => $getReportedIds, 'filter' => $getFilter, 'type' => $getIssueTypeIds, 'status' => $getIssueStatusIds, 'priority' => $getIssuePriorityIds, 'component' => $getProjectComponentIds, 'version' => $getProjectVersionIds, 'resolution' => $getIssueResolutionIds, 'sort' => $getSortColumn, 'sort_order' => $getSortOrder, 'render_checkbox' => true, 'checkbox_in_header' => true, 'date_due_after' => $getDateDueAfter, 'date_due_before' => $getDateDueBefore, 'date_created_after' => $getDateCreatedAfter, 'date_created_before' => $getDateCreatedBefore);
     $parseURLData = parse_url($_SERVER['REQUEST_URI']);
     if (isset($parseURLData['query'])) {
         UbirimiContainer::get()['session']->set('bulk_change_choose_issue_query_url', $parseURLData['query']);
         if (Util::searchQueryNotEmpty($getSearchParameters)) {
             $issues = $this->getRepository(Issue::class)->getByParameters($getSearchParameters, $loggedInUserId, null, $loggedInUserId);
             $issuesCount = $issues->num_rows;
             $getSearchParameters['link_to_page'] = '/yongo/issue/printable-list';
         }
     }
     $columns = array('code', 'summary', 'priority', 'status', 'created', 'updated', 'reporter', 'assignee');
     $menuSelectedCategory = 'issue';
     $errorNoIssuesSelected = false;
     if ($request->request->has('next_step_2')) {
         $issueIdsArray = array();
         foreach ($_POST as $key => $value) {
             if (substr($key, 0, 15) == "issue_checkbox_") {
                 $issueIdsArray[] = (int) str_replace("issue_checkbox_", "", $key);
             }
         }
         if (count($issueIdsArray)) {
             UbirimiContainer::get()['session']->set('bulk_change_issue_ids', $issueIdsArray);
             return new RedirectResponse('/yongo/issue/bulk-operation');
         } else {
             $errorNoIssuesSelected = true;
         }
     }
     $sectionPageTitle = $session->get('client/settings/title_name') . ' / ' . SystemProduct::SYS_PRODUCT_YONGO_NAME . ' / Bulk: Choose Issues';
     return $this->render(__DIR__ . '/../../../Resources/views/issue/bulk/ChooseIssue.php', get_defined_vars());
 }
コード例 #19
0
ファイル: Customer.php プロジェクト: spiasecki/ubirimi
 public function create($organizationId, $userId)
 {
     $query = "INSERT INTO help_customer(help_organization_id, user_id) VALUES (?, ?)";
     $stmt = UbirimiContainer::get()['db.connection']->prepare($query);
     $stmt->bind_param("ii", $organizationId, $userId);
     $stmt->execute();
     return UbirimiContainer::get()['db.connection']->insert_id;
 }
コード例 #20
0
 public function deleteByProjectId($projectId)
 {
     $components = UbirimiContainer::get()['repository']->get(YongoProject::class)->getComponents($projectId);
     while ($components && ($component = $components->fetch_array(MYSQLI_ASSOC))) {
         $componentId = $component['id'];
         ProjectComponent::deleteById($componentId);
     }
 }
コード例 #21
0
 public function addPosition($workflowId, $data)
 {
     for ($i = 0; $i < count($data); $i++) {
         $q = 'insert into workflow_position(workflow_id, workflow_step_id, top_position, left_position) ' . 'values(?, ?, ?, ?)';
         $stmt = UbirimiContainer::get()['db.connection']->prepare($q);
         $stmt->bind_param("iiii", $workflowId, $data[$i][0], $data[$i][1], $data[$i][2]);
         $stmt->execute();
     }
 }
コード例 #22
0
 public function indexAction(Request $request, SessionInterface $session)
 {
     Util::checkUserIsLoggedInAndRedirect();
     $clientId = UbirimiContainer::get()['session']->get('client/id');
     $issueId = $request->get('id');
     $users = UbirimiContainer::get()['repository']->get(UbirimiUser::class)->getByClientId($clientId, 0);
     $subdomain = Util::getSubdomain();
     return $this->render(__DIR__ . '/../../Resources/views/issue/ShareDialog.php', get_defined_vars());
 }
コード例 #23
0
 public function register(\Pimple $pimple)
 {
     $pimple['db.connection'] = $pimple->share(function () {
         $databaseConnector = new DatabaseConnectorService();
         return $databaseConnector->getConnection();
     });
     $pimple['repository'] = $pimple->share(function () {
         return new RepositoryService();
     });
     $pimple['api.auth'] = $pimple->share(function ($pimple) {
         $basicAuthenticationService = new BasicAuthenticationService();
         $basicAuthenticationService->setPasswordService($pimple['password']);
         return $basicAuthenticationService;
     });
     $pimple['password'] = $pimple->share(function () {
         return new PasswordService();
     });
     $pimple['dispatcher'] = $pimple->share(function () {
         return new EventDispatcher();
     });
     $pimple['logger'] = $pimple->share(function () {
         $logger = new Logger('ubirimi.activity');
         $IntrospectionProcessor = new IntrospectionProcessor();
         $webProcessor = new WebProcessor();
         $logger->pushHandler(new StreamHandler(UbirimiContainer::get()['log.path'], Logger::DEBUG));
         $logger->pushHandler(new \DbMonologHandler(), Logger::DEBUG);
         $logger->pushProcessor($IntrospectionProcessor);
         $logger->pushProcessor($webProcessor);
         return $logger;
     });
     $pimple['email'] = $pimple->share(function ($pimple) {
         return new EmailService($pimple['session']);
     });
     $pimple['client'] = $pimple->share(function ($pimple) {
         return new ClientService();
     });
     $pimple['user'] = $pimple->share(function ($pimple) {
         return new UserService($pimple['session']);
     });
     $pimple['login.time'] = $pimple->share(function ($pimple) {
         return new LoginTimeService();
     });
     $pimple['session'] = $pimple->share(function () {
         $lastDot = strrpos($_SERVER['SERVER_NAME'], '.');
         $secondToLastDot = strrpos($_SERVER['SERVER_NAME'], '.', $lastDot - strlen($_SERVER['SERVER_NAME']) - 1);
         $storage = new NativeSessionStorage(array('cookie_domain' => substr($_SERVER['SERVER_NAME'], $secondToLastDot)), new NativeFileSessionHandler());
         return new Session($storage, new NamespacedAttributeBag(), new AutoExpireFlashBag());
     });
     $pimple['warmup'] = $pimple->share(function ($pimple) {
         return new WarmUpService($pimple['session']);
     });
     $pimple['savant'] = $pimple->share(function () {
         return new \Savant3(array('template_path' => array(__DIR__ . '/../Yongo/Resources/views/email/', __DIR__ . '/../GeneralSettings/Resources/views/email/', __DIR__ . '/../Calendar/Resources/views/email/', __DIR__ . '/../SvnHosting/Resources/views/email/', __DIR__ . '/../Resources/views/email')));
     });
 }
コード例 #24
0
 public function indexAction(Request $request, SessionInterface $session)
 {
     Util::checkUserIsLoggedInAndRedirect();
     $clientId = $session->get('client/id');
     $session->set('selected_product_id', -1);
     $filterGroupId = $request->get('group_id');
     $users = UbirimiContainer::get()['repository']->get(UbirimiClient::class)->getUsers($clientId, $filterGroupId, null, 1);
     $menuSelectedCategory = 'general_user';
     $sectionPageTitle = $session->get('client/settings/title_name') . ' / GeneralSettings Settings / Users';
     return $this->render(__DIR__ . '/../Resources/views/ListUser.php', get_defined_vars());
 }
コード例 #25
0
ファイル: EmailService.php プロジェクト: spiasecki/ubirimi
 public function shareEvent($event, $userThatShares, $usersToShareWith, $noteContent)
 {
     $smtpSettings = UbirimiContainer::get()['session']->get('client/settings/smtp');
     if ($smtpSettings) {
         Email::$smtpSettings = $smtpSettings;
         for ($i = 0; $i < count($usersToShareWith); $i++) {
             $user = UbirimiContainer::get()['repository']->get(UbirimiUser::class)->getById($usersToShareWith[$i]);
             UbirimiContainer::get()['repository']->get(Email::class)->shareEvent($this->session->get('client/id'), $event, $userThatShares, $user['email'], $noteContent);
         }
     }
 }
コード例 #26
0
ファイル: ProjectVersion.php プロジェクト: spiasecki/ubirimi
 public function deleteById($versionId)
 {
     $query = 'delete from issue_version where project_version_id = ?';
     $stmt = UbirimiContainer::get()['db.connection']->prepare($query);
     $stmt->bind_param("i", $versionId);
     $stmt->execute();
     $query = 'delete from project_version where id = ?';
     $stmt = UbirimiContainer::get()['db.connection']->prepare($query);
     $stmt->bind_param("i", $versionId);
     $stmt->execute();
 }
コード例 #27
0
ファイル: ShareController.php プロジェクト: spiasecki/ubirimi
 public function indexAction(Request $request, SessionInterface $session)
 {
     Util::checkUserIsLoggedInAndRedirect();
     $issueId = $request->request->get('id');
     $noteContent = $request->request->get('note');
     $userIds = $request->request->get('user_id');
     $issueQueryParameters = array('issue_id' => $issueId);
     $issue = $this->getRepository(Issue::class)->getByParameters($issueQueryParameters);
     $issueEvent = new IssueEvent($issue, null, IssueEvent::STATUS_UPDATE, array('userIds' => $userIds, 'noteContent' => $noteContent));
     UbirimiContainer::get()['dispatcher']->dispatch(YongoEvents::YONGO_ISSUE_SHARE_EMAIL, $issueEvent);
 }
コード例 #28
0
ファイル: ProjectService.php プロジェクト: spiasecki/ubirimi
 public static function add(ProjectEntity $project, $userId)
 {
     $currentDate = $project->getDateCreated();
     $projectId = UbirimiContainer::get()['repository']->get(YongoProject::class)->add($project->getClientId(), $project->getIssueTypeSchemeId(), $project->getIssueTypeScreenSchemeId(), $project->getIssueTypeFieldConfigurationId(), $project->getWorkflowSchemeId(), $project->getPermissionSchemeId(), $project->getNotificationSchemeId(), $project->getLeadId(), $project->getName(), $project->getCode(), $project->getDescription(), $project->getProjectCategoryId(), $project->getHelpDeskEnabledFlag(), $project->getDateCreated());
     UbirimiContainer::get()['repository']->get(YongoProject::class)->addDefaultUsers($project->getClientId(), $projectId, $currentDate);
     UbirimiContainer::get()['repository']->get(YongoProject::class)->addDefaultGroups($project->getClientId(), $projectId, $currentDate);
     if ($project->getHelpDeskEnabledFlag()) {
         UbirimiContainer::get()['repository']->get(YongoProject::class)->addDefaultInitialDataForHelpDesk($project->getClientId(), $projectId, $userId, $currentDate);
     }
     return $projectId;
 }
コード例 #29
0
ファイル: SystemOperation.php プロジェクト: spiasecki/ubirimi
 public function getAll()
 {
     $query = "SELECT * " . "FROM sys_operation";
     $stmt = UbirimiContainer::get()['db.connection']->prepare($query);
     $stmt->execute();
     $result = $stmt->get_result();
     if ($result->num_rows) {
         return $result;
     } else {
         return null;
     }
 }
コード例 #30
0
ファイル: EmailQueue.php プロジェクト: spiasecki/ubirimi
 public function getAll()
 {
     $query = 'SELECT general_mail_queue.from_address, general_mail_queue.to_address, general_mail_queue.subject, general_mail_queue.content, general_mail_queue.date_created, ' . 'client.company_domain ' . 'FROM general_mail_queue ' . 'left join client on client.id = general_mail_queue.client_id';
     $stmt = UbirimiContainer::get()['db.connection']->prepare($query);
     $stmt->execute();
     $result = $stmt->get_result();
     if ($result->num_rows) {
         return $result;
     } else {
         return null;
     }
 }