Пример #1
0
function tickets_my_tasks_dropdown()
{
    echo '<li class="header"><a href="' . get_url('tickets', 'index') . '">' . lang('tickets') . '</a></li>';
    if (ProjectTicket::canAdd(logged_user(), active_project())) {
        echo '<li><a href="' . get_url('tickets', 'add_ticket') . '">' . lang('add ticket') . '</a></li>';
    }
    // if
}
 /**
  * Add ticket
  *
  * @access public
  * @param void
  * @return null
  */
 function add_ticket()
 {
     $this->setTemplate('add_ticket');
     if (!ProjectTicket::canAdd(logged_user(), active_project())) {
         flash_error(lang('no access permissions'));
         $this->redirectToReferer(get_url('tickets'));
     }
     // if
     $ticket = new ProjectTicket();
     $ticket->setProjectId(active_project()->getId());
     $ticket_data = array_var($_POST, 'ticket');
     if (!is_array($ticket_data)) {
         $ticket_data = array('is_private' => config_option('default_private', false));
         // array
     }
     tpl_assign('ticket', $ticket);
     tpl_assign('ticket_data', $ticket_data);
     if (is_array(array_var($_POST, 'ticket'))) {
         try {
             $uploaded_files = ProjectFiles::handleHelperUploads(active_project());
         } catch (Exception $e) {
             $uploaded_files = null;
         }
         // try
         try {
             $ticket->setFromAttributes($ticket_data);
             $assigned_to = explode(':', array_var($ticket_data, 'assigned_to', ''));
             $ticket->setAssignedToCompanyId(array_var($assigned_to, 0, 0));
             $ticket->setAssignedToUserId(array_var($assigned_to, 1, 0));
             // Options are reserved only for members of owner company
             if (!logged_user()->isMemberOfOwnerCompany()) {
                 $ticket->setIsPrivate(false);
             }
             // if
             DB::beginWork();
             $ticket->save();
             if (is_array($uploaded_files)) {
                 foreach ($uploaded_files as $uploaded_file) {
                     $ticket->attachFile($uploaded_file);
                     $uploaded_file->setIsPrivate($ticket->isPrivate());
                     $uploaded_file->setIsVisible(true);
                     $uploaded_file->setExpirationTime(EMPTY_DATETIME);
                     $uploaded_file->save();
                 }
                 // if
             }
             // if
             ApplicationLogs::createLog($ticket, active_project(), ApplicationLogs::ACTION_ADD);
             DB::commit();
             // Try to send notifications but don't break submission in case of an error
             try {
                 if ($ticket->getAssignedToUserId()) {
                     $ticket_data['notify_user_' . $ticket->getAssignedToUserId()] = 'checked';
                 }
                 $notify_people = array();
                 $project_companies = active_project()->getCompanies();
                 foreach ($project_companies as $project_company) {
                     $company_users = $project_company->getUsersOnProject(active_project());
                     if (is_array($company_users)) {
                         foreach ($company_users as $company_user) {
                             if (array_var($ticket_data, 'notify_company_' . $project_company->getId()) == 'checked' || array_var($ticket_data, 'notify_user_' . $company_user->getId())) {
                                 $ticket->subscribeUser($company_user);
                                 // subscribe
                                 $notify_people[] = $company_user;
                             }
                             // if
                         }
                         // if
                     }
                     // if
                 }
                 // if
                 Notifier::ticket($ticket, $notify_people, 'new_ticket', $ticket->getCreatedBy());
             } catch (Exception $e) {
             }
             // try
             flash_success(lang('success add ticket', $ticket->getSummary()));
             $this->redirectTo('tickets');
             // Error...
         } catch (Exception $e) {
             DB::rollback();
             if (is_array($uploaded_files)) {
                 foreach ($uploaded_files as $uploaded_file) {
                     $uploaded_file->delete();
                 }
                 // foreach
             }
             // if
             $ticket->setNew(true);
             tpl_assign('error', $e);
         }
         // try
     }
     // if
 }
 /**
  * Return array of ticket's changes
  *
  * @param ProjectTicket $ticket
  * @return array
  */
 static function getChangesByTicket(ProjectTicket $ticket)
 {
     return self::findAll(array('conditions' => array('`ticket_id` = ?', $ticket->getId()), 'order' => '`created_on`'));
     // array
 }
Пример #4
0
<?php

$canEdit = $ticket->canEdit(logged_user());
// Set page title and set crumbs to index
$title = $canEdit ? 'edit ticket' : 'view ticket';
set_page_title(lang($title));
project_tabbed_navigation(PROJECT_TAB_TICKETS);
if (ProjectTicket::canAdd(logged_user(), active_project())) {
    add_page_action(lang('delete ticket'), $ticket->getDeleteUrl());
}
$crumbs = array(array(lang('tickets'), get_url('tickets')));
if ($ticket->isClosed()) {
    $crumbs[] = array(lang('closed tickets'), ProjectTickets::getIndexUrl(true));
}
$crumbs[] = array(lang($title));
project_crumbs($crumbs);
add_stylesheet_to_page('project/tickets.css');
add_stylesheet_to_page('application_logs.css');
if ($ticket->isPrivate()) {
    ?>
    <div class="private" title="<?php 
    echo lang('private ticket');
    ?>
"><span><?php 
    echo lang('private ticket');
    ?>
</span></div>
<?php 
}
// if
?>
Пример #5
0
 /**
  * Send some files detached from ticket notification to ticket subscribers
  *
  * @param ProjectTicket $ticket
  * @param array $detached_files Files detached from ticket
  * @return boolean
  * @throws NotifierConnectionError
  */
 static function detachFilesFromTicket(ProjectTicket $ticket, $detached_files)
 {
     $all_subscribers = $ticket->getSubscribers();
     if (!is_array($all_subscribers)) {
         return true;
         // no subscribers
     }
     // if
     $recipients = array();
     foreach ($all_subscribers as $subscriber) {
         if ($subscriber->getId() == $ticket->getUpdatedById()) {
             continue;
             // skip comment author
         }
         // if
         $recipients[] = self::prepareEmailAddress($subscriber->getEmail(), $subscriber->getDisplayName());
     }
     // foreach
     if (!count($recipients)) {
         return true;
         // no recipients
     }
     // if
     tpl_assign('ticket', $ticket);
     tpl_assign('detached_files', $detached_files);
     return self::sendEmail($recipients, self::prepareEmailAddress($ticket->getUpdatedBy()->getEmail(), $ticket->getUpdatedBy()->getDisplayName()), $ticket->getProject()->getName() . ' - ' . $ticket->getSummary(), tpl_fetch(get_template_path('detach_files_ticket', 'notifier')));
     // send
 }
 /**
  * Clear subscriptions by ticket
  *
  * @param ProjectTicket $ticket
  * @return boolean
  */
 static function clearByTicket(ProjectTicket $ticket)
 {
     return ProjectTicketSubscriptions::delete('`ticket_id` = ' . DB::escape($ticket->getId()));
 }